From c27d53cbdd5360d966547fbc3a334998b0bdcbef Mon Sep 17 00:00:00 2001
From: Robin Singh
Date: Fri, 12 Mar 2021 20:58:55 +0530
Subject: [PATCH 1/6] added google auth and chatroom functionality
---
package-lock.json | 490 +++++++++++++++++++++++++++++++-----
package.json | 5 +-
src/App.css | 91 +------
src/App.js | 123 +++------
src/Messages.css | 48 ----
src/Messages.js | 68 -----
src/StateProvider.js | 12 +
src/components/Chatroom.css | 115 +++++++++
src/components/Chatroom.js | 104 ++++++++
src/components/Chats.css | 25 ++
src/components/Chats.js | 57 +++++
src/components/Login.css | 25 ++
src/components/Login.js | 41 +++
src/components/Sideroom.css | 60 +++++
src/components/Sideroom.js | 58 +++++
src/firebase.js | 10 +-
src/index.js | 4 +
src/reducer.js | 24 ++
18 files changed, 1002 insertions(+), 358 deletions(-)
delete mode 100644 src/Messages.css
delete mode 100644 src/Messages.js
create mode 100644 src/StateProvider.js
create mode 100644 src/components/Chatroom.css
create mode 100644 src/components/Chatroom.js
create mode 100644 src/components/Chats.css
create mode 100644 src/components/Chats.js
create mode 100644 src/components/Login.css
create mode 100644 src/components/Login.js
create mode 100644 src/components/Sideroom.css
create mode 100644 src/components/Sideroom.js
create mode 100644 src/reducer.js
diff --git a/package-lock.json b/package-lock.json
index 119493f..cd65aaa 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -2037,14 +2037,73 @@
}
}
},
+ "@mapbox/node-pre-gyp": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@mapbox/node-pre-gyp/-/node-pre-gyp-1.0.1.tgz",
+ "integrity": "sha512-CUBdThIZMoLEQQxACwhLsPg/puxBca0abTH3ixuvBQkhjJ80Hdp99jmVjxFCOa52/tZqN9d70IbGUf+OuKDHGA==",
+ "requires": {
+ "detect-libc": "^1.0.3",
+ "http-proxy-agent": "^4.0.1",
+ "make-dir": "^3.1.0",
+ "node-fetch": "^2.6.1",
+ "nopt": "^5.0.0",
+ "npmlog": "^4.1.2",
+ "rimraf": "^3.0.2",
+ "semver": "^7.3.4",
+ "tar": "^6.1.0"
+ },
+ "dependencies": {
+ "make-dir": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
+ "requires": {
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ }
+ }
+ },
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
+ },
+ "semver": {
+ "version": "7.3.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz",
+ "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==",
+ "requires": {
+ "lru-cache": "^6.0.0"
+ }
+ },
+ "tar": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.0.tgz",
+ "integrity": "sha512-DUCttfhsnLCjwoDoFcI+B2iJgYa93vBnDUATYEeRx6sntCTdN01VnqsIuTlALXla/LWooNg0yEGeB+Y8WdFxGA==",
+ "requires": {
+ "chownr": "^2.0.0",
+ "fs-minipass": "^2.0.0",
+ "minipass": "^3.0.0",
+ "minizlib": "^2.1.1",
+ "mkdirp": "^1.0.3",
+ "yallist": "^4.0.0"
+ }
+ }
+ }
+ },
"@material-ui/core": {
- "version": "4.11.2",
- "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.11.2.tgz",
- "integrity": "sha512-/D1+AQQeYX/WhT/FUk78UCRj8ch/RCglsQLYujYTIqPSJlwZHKcvHidNeVhODXeApojeXjkl0tWdk5C9ofwOkQ==",
+ "version": "4.11.3",
+ "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.11.3.tgz",
+ "integrity": "sha512-Adt40rGW6Uds+cAyk3pVgcErpzU/qxc7KBR94jFHBYretU4AtWZltYcNsbeMn9tXL86jjVL1kuGcIHsgLgFGRw==",
"requires": {
"@babel/runtime": "^7.4.4",
- "@material-ui/styles": "^4.11.2",
- "@material-ui/system": "^4.11.2",
+ "@material-ui/styles": "^4.11.3",
+ "@material-ui/system": "^4.11.3",
"@material-ui/types": "^5.1.0",
"@material-ui/utils": "^4.11.2",
"@types/react-transition-group": "^4.2.0",
@@ -2065,9 +2124,9 @@
}
},
"@material-ui/styles": {
- "version": "4.11.2",
- "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.2.tgz",
- "integrity": "sha512-xbItf8zkfD3FuGoD9f2vlcyPf9jTEtj9YTJoNNV+NMWaSAHXgrW6geqRoo/IwBuMjqpwqsZhct13e2nUyU9Ljw==",
+ "version": "4.11.3",
+ "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.3.tgz",
+ "integrity": "sha512-HzVzCG+PpgUGMUYEJ2rTEmQYeonGh41BYfILNFb/1ueqma+p1meSdu4RX6NjxYBMhf7k+jgfHFTTz+L1SXL/Zg==",
"requires": {
"@babel/runtime": "^7.4.4",
"@emotion/hash": "^0.8.0",
@@ -2076,21 +2135,21 @@
"clsx": "^1.0.4",
"csstype": "^2.5.2",
"hoist-non-react-statics": "^3.3.2",
- "jss": "^10.0.3",
- "jss-plugin-camel-case": "^10.0.3",
- "jss-plugin-default-unit": "^10.0.3",
- "jss-plugin-global": "^10.0.3",
- "jss-plugin-nested": "^10.0.3",
- "jss-plugin-props-sort": "^10.0.3",
- "jss-plugin-rule-value-function": "^10.0.3",
- "jss-plugin-vendor-prefixer": "^10.0.3",
+ "jss": "^10.5.1",
+ "jss-plugin-camel-case": "^10.5.1",
+ "jss-plugin-default-unit": "^10.5.1",
+ "jss-plugin-global": "^10.5.1",
+ "jss-plugin-nested": "^10.5.1",
+ "jss-plugin-props-sort": "^10.5.1",
+ "jss-plugin-rule-value-function": "^10.5.1",
+ "jss-plugin-vendor-prefixer": "^10.5.1",
"prop-types": "^15.7.2"
}
},
"@material-ui/system": {
- "version": "4.11.2",
- "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.11.2.tgz",
- "integrity": "sha512-BELFJEel5E+5DMiZb6XXT3peWRn6UixRvBtKwSxqntmD0+zwbbfCij6jtGwwdJhN1qX/aXrKu10zX31GBaeR7A==",
+ "version": "4.11.3",
+ "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.11.3.tgz",
+ "integrity": "sha512-SY7otguNGol41Mu2Sg6KbBP1ZRFIbFLHGK81y4KYbsV2yIcaEPOmsCK6zwWlp+2yTV3J/VwT6oSBARtGIVdXPw==",
"requires": {
"@babel/runtime": "^7.4.4",
"@material-ui/utils": "^4.11.2",
@@ -2558,6 +2617,11 @@
"@babel/runtime": "^7.12.5"
}
},
+ "@tootallnate/once": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz",
+ "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw=="
+ },
"@types/anymatch": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@types/anymatch/-/anymatch-1.3.1.tgz",
@@ -2722,25 +2786,26 @@
"integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug=="
},
"@types/react": {
- "version": "17.0.0",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.0.tgz",
- "integrity": "sha512-aj/L7RIMsRlWML3YB6KZiXB3fV2t41+5RBGYF8z+tAKU43Px8C3cYUZsDvf1/+Bm4FK21QWBrDutu8ZJ/70qOw==",
+ "version": "17.0.3",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.3.tgz",
+ "integrity": "sha512-wYOUxIgs2HZZ0ACNiIayItyluADNbONl7kt8lkLjVK8IitMH5QMyAh75Fwhmo37r1m7L2JaFj03sIfxBVDvRAg==",
"requires": {
"@types/prop-types": "*",
+ "@types/scheduler": "*",
"csstype": "^3.0.2"
},
"dependencies": {
"csstype": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz",
- "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ=="
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
+ "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g=="
}
}
},
"@types/react-transition-group": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.0.tgz",
- "integrity": "sha512-/QfLHGpu+2fQOqQaXh8MG9q03bFENooTb/it4jr5kKaZlDQfWvjqWZg48AwzPVMBHlRuTRAY7hRHCEOXz5kV6w==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.1.tgz",
+ "integrity": "sha512-vIo69qKKcYoJ8wKCJjwSgCTM+z3chw3g18dkrDfVX665tMH7tmbDxEAnPdey4gTlwZz5QuHGzd+hul0OVZDqqQ==",
"requires": {
"@types/react": "*"
}
@@ -2753,6 +2818,11 @@
"@types/node": "*"
}
},
+ "@types/scheduler": {
+ "version": "0.16.1",
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.1.tgz",
+ "integrity": "sha512-EaCxbanVeyxDRTQBkdLb3Bvl/HK7PBK6UJjsSixB0iHKoWxE5uu2Q/DgtpOhPIojN0Zl1whvOd7PoHs2P0s5eA=="
+ },
"@types/source-list-map": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz",
@@ -3089,6 +3159,11 @@
"resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz",
"integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q=="
},
+ "abbrev": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
+ },
"abort-controller": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz",
@@ -3239,6 +3314,39 @@
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
},
+ "are-we-there-yet": {
+ "version": "1.1.5",
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
+ "requires": {
+ "delegates": "^1.0.0",
+ "readable-stream": "^2.0.6"
+ },
+ "dependencies": {
+ "readable-stream": {
+ "version": "2.3.7",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
+ "requires": {
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~2.0.0",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.1.1",
+ "util-deprecate": "~1.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
+ }
+ }
+ }
+ },
"argparse": {
"version": "1.0.10",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
@@ -3937,6 +4045,15 @@
"resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz",
"integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY="
},
+ "bcrypt": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/bcrypt/-/bcrypt-5.0.1.tgz",
+ "integrity": "sha512-9BTgmrhZM2t1bNuDtrtIMVSmmxZBrJ71n8Wg+YgdjHuIWYF7SjjmCPZFB+/5i/o/PIeRpwVJR3P+NrpIItUjqw==",
+ "requires": {
+ "@mapbox/node-pre-gyp": "^1.0.0",
+ "node-addon-api": "^3.1.0"
+ }
+ },
"bcrypt-pbkdf": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
@@ -4042,6 +4159,11 @@
"resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
"integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24="
},
+ "bootstrap": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.0.tgz",
+ "integrity": "sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw=="
+ },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -4504,6 +4626,11 @@
"q": "^1.1.2"
}
},
+ "code-point-at": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
+ },
"collect-v8-coverage": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz",
@@ -4682,6 +4809,11 @@
"resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
"integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA=="
},
+ "console-control-strings": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
+ },
"constants-browserify": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
@@ -5188,9 +5320,9 @@
}
},
"csstype": {
- "version": "2.6.14",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.14.tgz",
- "integrity": "sha512-2mSc+VEpGPblzAxyeR+vZhJKgYg0Og0nnRi7pmRXFYYxSfnOnW8A5wwQb4n4cE2nIOzqKOAzLCaEX6aBmNEv8A=="
+ "version": "2.6.16",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.16.tgz",
+ "integrity": "sha512-61FBWoDHp/gRtsoDkq/B1nWrCUG/ok1E3tUrcNbZjsE9Cxd9yzUirjS3+nAATB8U4cTtaQmAHbNndoFz5L6C9Q=="
},
"cyclist": {
"version": "1.0.1",
@@ -5395,6 +5527,11 @@
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
},
+ "delegates": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
+ },
"depd": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
@@ -5414,6 +5551,11 @@
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz",
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
},
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
+ },
"detect-newline": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
@@ -5531,9 +5673,9 @@
},
"dependencies": {
"csstype": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz",
- "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ=="
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
+ "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g=="
}
}
},
@@ -7301,6 +7443,54 @@
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
"integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc="
},
+ "gauge": {
+ "version": "2.7.4",
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
+ "requires": {
+ "aproba": "^1.0.3",
+ "console-control-strings": "^1.0.0",
+ "has-unicode": "^2.0.0",
+ "object-assign": "^4.1.0",
+ "signal-exit": "^3.0.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.1",
+ "wide-align": "^1.1.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
+ "requires": {
+ "number-is-nan": "^1.0.0"
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
+ "requires": {
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+ "requires": {
+ "ansi-regex": "^2.0.0"
+ }
+ }
+ }
+ },
"gaxios": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/gaxios/-/gaxios-4.1.0.tgz",
@@ -7541,6 +7731,11 @@
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
"integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg=="
},
+ "has-unicode": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
+ },
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -7624,6 +7819,19 @@
"resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
"integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ=="
},
+ "history": {
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/history/-/history-4.10.1.tgz",
+ "integrity": "sha512-36nwAD620w12kuzPAsyINPWJqlNbij+hpK1k9XRloDtym8mxzGYl2c17LnV6IAGB2Dmg4tEa7G7DlawS0+qjew==",
+ "requires": {
+ "@babel/runtime": "^7.1.2",
+ "loose-envify": "^1.2.0",
+ "resolve-pathname": "^3.0.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0",
+ "value-equal": "^1.0.1"
+ }
+ },
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -7833,6 +8041,16 @@
"requires-port": "^1.0.0"
}
},
+ "http-proxy-agent": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz",
+ "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==",
+ "requires": {
+ "@tootallnate/once": "1",
+ "agent-base": "6",
+ "debug": "4"
+ }
+ },
"http-proxy-middleware": {
"version": "0.19.1",
"resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
@@ -10166,9 +10384,9 @@
}
},
"jss": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/jss/-/jss-10.5.0.tgz",
- "integrity": "sha512-B6151NvG+thUg3murLNHRPLxTLwQ13ep4SH5brj4d8qKtogOx/jupnpfkPGSHPqvcwKJaCLctpj2lEk+5yGwMw==",
+ "version": "10.5.1",
+ "resolved": "https://registry.npmjs.org/jss/-/jss-10.5.1.tgz",
+ "integrity": "sha512-hbbO3+FOTqVdd7ZUoTiwpHzKXIo5vGpMNbuXH1a0wubRSWLWSBvwvaq4CiHH/U42CmjOnp6lVNNs/l+Z7ZdDmg==",
"requires": {
"@babel/runtime": "^7.3.1",
"csstype": "^3.0.2",
@@ -10178,77 +10396,77 @@
},
"dependencies": {
"csstype": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.5.tgz",
- "integrity": "sha512-uVDi8LpBUKQj6sdxNaTetL6FpeCqTjOvAQuQUa/qAqq8oOd4ivkbhgnqayl0dnPal8Tb/yB1tF+gOvCBiicaiQ=="
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.0.7.tgz",
+ "integrity": "sha512-KxnUB0ZMlnUWCsx2Z8MUsr6qV6ja1w9ArPErJaJaF8a5SOWoHLIszeCTKGRGRgtLgYrs1E8CHkNSP1VZTTPc9g=="
}
}
},
"jss-plugin-camel-case": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.5.0.tgz",
- "integrity": "sha512-GSjPL0adGAkuoqeYiXTgO7PlIrmjv5v8lA6TTBdfxbNYpxADOdGKJgIEkffhlyuIZHlPuuiFYTwUreLUmSn7rg==",
+ "version": "10.5.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-camel-case/-/jss-plugin-camel-case-10.5.1.tgz",
+ "integrity": "sha512-9+oymA7wPtswm+zxVti1qiowC5q7bRdCJNORtns2JUj/QHp2QPXYwSNRD8+D2Cy3/CEMtdJzlNnt5aXmpS6NAg==",
"requires": {
"@babel/runtime": "^7.3.1",
"hyphenate-style-name": "^1.0.3",
- "jss": "10.5.0"
+ "jss": "10.5.1"
}
},
"jss-plugin-default-unit": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.5.0.tgz",
- "integrity": "sha512-rsbTtZGCMrbcb9beiDd+TwL991NGmsAgVYH0hATrYJtue9e+LH/Gn4yFD1ENwE+3JzF3A+rPnM2JuD9L/SIIWw==",
+ "version": "10.5.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-default-unit/-/jss-plugin-default-unit-10.5.1.tgz",
+ "integrity": "sha512-D48hJBc9Tj3PusvlillHW8Fz0y/QqA7MNmTYDQaSB/7mTrCZjt7AVRROExoOHEtd2qIYKOYJW3Jc2agnvsXRlQ==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.5.0"
+ "jss": "10.5.1"
}
},
"jss-plugin-global": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.5.0.tgz",
- "integrity": "sha512-FZd9+JE/3D7HMefEG54fEC0XiQ9rhGtDHAT/ols24y8sKQ1D5KIw6OyXEmIdKFmACgxZV2ARQ5pAUypxkk2IFQ==",
+ "version": "10.5.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-global/-/jss-plugin-global-10.5.1.tgz",
+ "integrity": "sha512-jX4XpNgoaB8yPWw/gA1aPXJEoX0LNpvsROPvxlnYe+SE0JOhuvF7mA6dCkgpXBxfTWKJsno7cDSCgzHTocRjCQ==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.5.0"
+ "jss": "10.5.1"
}
},
"jss-plugin-nested": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.5.0.tgz",
- "integrity": "sha512-ejPlCLNlEGgx8jmMiDk/zarsCZk+DV0YqXfddpgzbO9Toamo0HweCFuwJ3ZO40UFOfqKwfpKMVH/3HUXgxkTMg==",
+ "version": "10.5.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-nested/-/jss-plugin-nested-10.5.1.tgz",
+ "integrity": "sha512-xXkWKOCljuwHNjSYcXrCxBnjd8eJp90KVFW1rlhvKKRXnEKVD6vdKXYezk2a89uKAHckSvBvBoDGsfZrldWqqQ==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.5.0",
+ "jss": "10.5.1",
"tiny-warning": "^1.0.2"
}
},
"jss-plugin-props-sort": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.5.0.tgz",
- "integrity": "sha512-kTLRvrOetFKz5vM88FAhLNeJIxfjhCepnvq65G7xsAQ/Wgy7HwO1BS/2wE5mx8iLaAWC6Rj5h16mhMk9sKdZxg==",
+ "version": "10.5.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-props-sort/-/jss-plugin-props-sort-10.5.1.tgz",
+ "integrity": "sha512-t+2vcevNmMg4U/jAuxlfjKt46D/jHzCPEjsjLRj/J56CvP7Iy03scsUP58Iw8mVnaV36xAUZH2CmAmAdo8994g==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.5.0"
+ "jss": "10.5.1"
}
},
"jss-plugin-rule-value-function": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.5.0.tgz",
- "integrity": "sha512-jXINGr8BSsB13JVuK274oEtk0LoooYSJqTBCGeBu2cG/VJ3+4FPs1gwLgsq24xTgKshtZ+WEQMVL34OprLidRA==",
+ "version": "10.5.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-rule-value-function/-/jss-plugin-rule-value-function-10.5.1.tgz",
+ "integrity": "sha512-3gjrSxsy4ka/lGQsTDY8oYYtkt2esBvQiceGBB4PykXxHoGRz14tbCK31Zc6DHEnIeqsjMUGbq+wEly5UViStQ==",
"requires": {
"@babel/runtime": "^7.3.1",
- "jss": "10.5.0",
+ "jss": "10.5.1",
"tiny-warning": "^1.0.2"
}
},
"jss-plugin-vendor-prefixer": {
- "version": "10.5.0",
- "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.5.0.tgz",
- "integrity": "sha512-rux3gmfwDdOKCLDx0IQjTwTm03IfBa+Rm/hs747cOw5Q7O3RaTUIMPKjtVfc31Xr/XI9Abz2XEupk1/oMQ7zRA==",
+ "version": "10.5.1",
+ "resolved": "https://registry.npmjs.org/jss-plugin-vendor-prefixer/-/jss-plugin-vendor-prefixer-10.5.1.tgz",
+ "integrity": "sha512-cLkH6RaPZWHa1TqSfd2vszNNgxT1W0omlSjAd6hCFHp3KIocSrW21gaHjlMU26JpTHwkc+tJTCQOmE/O1A4FKQ==",
"requires": {
"@babel/runtime": "^7.3.1",
"css-vendor": "^2.0.8",
- "jss": "10.5.0"
+ "jss": "10.5.1"
}
},
"jsx-ast-utils": {
@@ -10653,6 +10871,15 @@
"resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz",
"integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg=="
},
+ "mini-create-react-context": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/mini-create-react-context/-/mini-create-react-context-0.4.1.tgz",
+ "integrity": "sha512-YWCYEmd5CQeHGSAKrYvXgmzzkrvssZcuuQDDeqkT+PziKGMgE+0MCCtcKbROzocGBG1meBLl2FotlRwf4gAzbQ==",
+ "requires": {
+ "@babel/runtime": "^7.12.1",
+ "tiny-warning": "^1.0.3"
+ }
+ },
"mini-css-extract-plugin": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.11.3.tgz",
@@ -10916,6 +11143,11 @@
}
}
},
+ "node-addon-api": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.1.0.tgz",
+ "integrity": "sha512-flmrDNB06LIl5lywUz7YlNGZH/5p0M7W28k8hzd9Lshtdh1wshD2Y+U4h9LD6KObOy1f+fEVdgprPrEymjM5uw=="
+ },
"node-fetch": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz",
@@ -11027,6 +11259,14 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.67.tgz",
"integrity": "sha512-V5QF9noGFl3EymEwUYzO+3NTDpGfQB4ve6Qfnzf3UNydMhjQRVPR1DZTuvWiLzaFJYw2fmDwAfnRNEVb64hSIg=="
},
+ "nopt": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz",
+ "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==",
+ "requires": {
+ "abbrev": "1"
+ }
+ },
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
@@ -11074,6 +11314,17 @@
"path-key": "^2.0.0"
}
},
+ "npmlog": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
+ "requires": {
+ "are-we-there-yet": "~1.1.2",
+ "console-control-strings": "~1.1.0",
+ "gauge": "~2.7.3",
+ "set-blocking": "~2.0.0"
+ }
+ },
"nth-check": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
@@ -11087,6 +11338,11 @@
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
"integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4="
},
+ "number-is-nan": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
+ },
"nwsapi": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz",
@@ -13122,6 +13378,52 @@
"resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.8.3.tgz",
"integrity": "sha512-X8jZHc7nCMjaCqoU+V2I0cOhNW+QMBwSUkeXnTi8IPe6zaRWfn60ZzvFDZqWPfmSJfjub7dDW1SP0jaHWLu/hg=="
},
+ "react-router": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/react-router/-/react-router-5.2.0.tgz",
+ "integrity": "sha512-smz1DUuFHRKdcJC0jobGo8cVbhO3x50tCL4icacOlcwDOEQPq4TMqwx3sY1TP+DvtTgz4nm3thuo7A+BK2U0Dw==",
+ "requires": {
+ "@babel/runtime": "^7.1.2",
+ "history": "^4.9.0",
+ "hoist-non-react-statics": "^3.1.0",
+ "loose-envify": "^1.3.1",
+ "mini-create-react-context": "^0.4.0",
+ "path-to-regexp": "^1.7.0",
+ "prop-types": "^15.6.2",
+ "react-is": "^16.6.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0"
+ },
+ "dependencies": {
+ "isarray": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+ "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+ },
+ "path-to-regexp": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-1.8.0.tgz",
+ "integrity": "sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA==",
+ "requires": {
+ "isarray": "0.0.1"
+ }
+ }
+ }
+ },
+ "react-router-dom": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-5.2.0.tgz",
+ "integrity": "sha512-gxAmfylo2QUjcwxI63RhQ5G85Qqt4voZpUXSEqCwykV0baaOTQDR1f0PmY8AELqIyVc0NEZUj0Gov5lNGcXgsA==",
+ "requires": {
+ "@babel/runtime": "^7.1.2",
+ "history": "^4.9.0",
+ "loose-envify": "^1.3.1",
+ "prop-types": "^15.6.2",
+ "react-router": "5.2.0",
+ "tiny-invariant": "^1.0.2",
+ "tiny-warning": "^1.0.0"
+ }
+ },
"react-scripts": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/react-scripts/-/react-scripts-4.0.1.tgz",
@@ -13609,6 +13911,11 @@
"resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
"integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
},
+ "resolve-pathname": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz",
+ "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng=="
+ },
"resolve-url": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
@@ -15269,6 +15576,11 @@
"resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
"integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q="
},
+ "tiny-invariant": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.1.0.tgz",
+ "integrity": "sha512-ytxQvrb1cPc9WBEI/HSeYYoGD0kWnGEOR8RY6KomWLBVhqz0RgTwVO9dLrGz7dC+nN9llyI7OKAgRq8Vq4ZBSw=="
+ },
"tiny-warning": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz",
@@ -15744,6 +16056,11 @@
"spdx-expression-parse": "^3.0.0"
}
},
+ "value-equal": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/value-equal/-/value-equal-1.0.1.tgz",
+ "integrity": "sha512-NOJ6JZCAWr0zlxZt+xqCHNTEKOsrks2HQd4MqhP1qy4z1SkbEP467eNx6TgDKXMvUOb+OENfJCZwM+16n7fRfw=="
+ },
"vary": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz",
@@ -16921,6 +17238,43 @@
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
+ "wide-align": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
+ "requires": {
+ "string-width": "^1.0.2 || 2"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg="
+ },
+ "is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+ },
+ "string-width": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz",
+ "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==",
+ "requires": {
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^4.0.0"
+ }
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "requires": {
+ "ansi-regex": "^3.0.0"
+ }
+ }
+ }
+ },
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
diff --git a/package.json b/package.json
index 7da34b3..6ebc58a 100644
--- a/package.json
+++ b/package.json
@@ -3,14 +3,17 @@
"version": "0.1.0",
"private": true,
"dependencies": {
- "@material-ui/core": "^4.11.2",
+ "@material-ui/core": "^4.11.3",
"@material-ui/icons": "^4.11.2",
"@testing-library/jest-dom": "^5.11.6",
"@testing-library/react": "^11.2.2",
"@testing-library/user-event": "^12.6.0",
+ "bcrypt": "^5.0.1",
+ "bootstrap": "^4.6.0",
"firebase": "^8.2.1",
"react": "^17.0.1",
"react-dom": "^17.0.1",
+ "react-router-dom": "^5.2.0",
"react-scripts": "4.0.1",
"web-vitals": "^0.2.4"
},
diff --git a/src/App.css b/src/App.css
index 88405cf..c40d4e4 100644
--- a/src/App.css
+++ b/src/App.css
@@ -1,83 +1,18 @@
-.App {
- text-align: center;
+* {
+ margin: 0;
}
-.Logo{
- width:50px;
- position:fixed;
- right:70px;
- top:25px;
+.app {
+ /* background-color: #e9e9e3; */
+ height: 100vh;
+ display: grid;
+ place-items: center;
}
-::placeholder{
- font-weight: bold;
- color:white;
- opacity:1;
-}
-
-.NavBar{
- background-color:#014293;
- width:100%;
- border-bottom:2px solid black;
- height:100px;
- position:fixed;
- top:0px;
-}
-
-input{
- background-color: black;
- line-height: 30px;
- width:250px;
-}
-
-.messenger{
- display:inline-block;
- position:fixed;
- top:0px;
- left:30px;
- font-weight: bold;
- font-size: 40px;
-}
-
-.dark{
-position:fixed;
-top:0px;
-right:-150px;
-outline: none;
-}
-
-footer{
- position: fixed;
- bottom:0;
- height:10%;
- width:100%;
- background-color: #014293;
- border-top:2px solid black;
-}
-
-.input{
-margin-top:10px;
-flex:1;
-}
-
-.blackName{
- color:white !important;
-}
-
-.BlackNavBar{
- background-color:black!important;
-}
-
-.dark_input{
- color:white;
-}
-
-.footer_dark{
- background-color: black;
-}
-
-
-.iconButton{
- top:10px;
- left:10px;
+.app__container {
+ box-shadow: -1px 4px 20px -6px rgba(0, 0, 0, 0.3);
+ display: flex;
+ width: 85vw;
+ height: 90vh;
+ background-color: rgb(250, 250, 250);
}
diff --git a/src/App.js b/src/App.js
index 56beff0..519893d 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,102 +1,41 @@
-import './App.css';
-import {useState,useEffect,useRef} from 'react';
-import {Button, Input,FormControl} from "@material-ui/core";
-import Brightness4Icon from "@material-ui/icons/Brightness4"
-import SendIcon from '@material-ui/icons/Send'
-import logo from './logo.png';
-import Messages from './Messages.js'
-import db from "./firebase.js"
-import firebase from "firebase";
+import React, { useState } from "react";
+import "./App.css";
+import Sideroom from "./components/Sideroom";
+import Chatroom from "./components/Chatroom";
+import { Switch, BrowserRouter as Router, Route } from "react-router-dom";
+import Login from "./components/Login";
+import { useStateValue } from "./StateProvider";
function App() {
-
- const [input,setInput]=useState("");
- const [messages,setMessages]=useState([]);
- const [username,setUsername]=useState("");
- const [dark,setDark]=useState(false);
- const messagesEndRef=useRef(null);
-
- useEffect(()=>{
- setUsername(prompt("Kindly Enter Your Name"));
- },[])
-
- useEffect(()=>{db.collection('messages').orderBy("timestamp","asc").onSnapshot(snapshot=>setMessages(snapshot.docs.map(doc=>doc.data())))},[])
-
- useEffect(() => { scrollToBottom() }, [messages]);
-
- const scrollToBottom = () => {
- messagesEndRef.current?.scrollIntoView({ behavior: "auto" })
- }
-
- const newMessage= (event)=>{
- event.preventDefault();
- //setMessages([...messages,{message:input,username:username}]);
- if(input!=="")
- {
- db.collection('messages').add({username:username,message:input,timestamp:firebase.firestore.FieldValue.serverTimestamp()})
- }
- setInput("");
- }
-
-
- const theme=(event)=>{
- if(dark===false)
- {
- document.body.classList.add('dark-bg');
- setDark(true);
- }
- else
- {
- document.body.classList.remove('dark-bg');
- setDark(false);
- }
- }
-
- let but;
- if(dark)
- {
- but=setInput(event.target.value)} />
- }
- else
- {
- but=setInput(event.target.value)} />
- }
+ const [{ user }, dispatch] = useStateValue();
return (
-
-
-
-
- {
- messages.map(message=>
)
- }
-
-
-
-
-
+
+ {!user ? (
+
+ ) : (
+
+ {/*
*/}
+
+ {/* sidebar */}
+
+
+
+ {/* chat */}
+
+
+
+
+ {/* Home Screen
*/}
+
+
+
+ {/*
*/}
+
+ )}
);
}
-// keys generator:- every new call to this function will give numbs like 0,1,2,3....
-const genKey = (function (){
- var keyCode = 0
- return function incKey(){
- return keyCode++;
- }
-})();
-
export default App;
diff --git a/src/Messages.css b/src/Messages.css
deleted file mode 100644
index 2a12705..0000000
--- a/src/Messages.css
+++ /dev/null
@@ -1,48 +0,0 @@
-.msgs{
- background-color:lightblue;
- border-radius:10px;
- max-width:60%;
- width: fit-content;
- height:fit-content;
- min-width: 200px;
- margin-top:10px;
- text-align: left;
- padding: 15px;
- font-family: 'Hind Madurai', sans-serif;
- font-weight:bold;
- font-size: 1.1rem;
-}
-
-.sender{
- font-family: 'Fjord One', serif;
- font-size: 1.2rem;
- text-align: left;
- margin-bottom:0;
- margin-top:25px;
- margin-left: 10px;
- text-transform: capitalize;
-}
-
-.senderDark{
- color:white !important;
-}
-
-.message_div{
- margin-top:25px;
-}
-
-.user{
- background-color: lightpink;
- margin-left:auto;
- margin-right: 10px;
-}
-
-.guest{
- margin-left: 10px;
-}
-
-.time-stamp{
- text-align: right;
- margin: 0;
- color: rgb(126, 126, 126)
-}
diff --git a/src/Messages.js b/src/Messages.js
deleted file mode 100644
index 5f0eea7..0000000
--- a/src/Messages.js
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import './Messages.css';
-
-function Messages(props){
- const isUser=props.messages.username===props.username;
- return (
-
-
{`${isUser?"":props.messages.username===null?"Unknown user":props.messages.username}`}
-
- {props.messages.message}
-
{giveTimePassed(props.messages.timestamp)}
-
-
- )
-}
-
-function giveTimePassed(timestamp){
- if(!timestamp){
- return "just now";
- }
- // time difference in millisec
- var timeDiff = new Date() - timestamp.toDate();
-
- // seconds
- timeDiff /= 1000;
- timeDiff = Math.floor(timeDiff)
- if(timeDiff < 5){
- return "just now"
- }
- if(timeDiff < 60){
- return `${timeDiff} second${timeDiff===1?"":"s"} ago`;
- }
-
- // minutes
- timeDiff /= 60;
- timeDiff = Math.floor(timeDiff)
- if(timeDiff < 60){
- return `${timeDiff} minute${timeDiff===1?"":"s"} ago`;
- }
-
- // hours
- timeDiff /= 60;
- timeDiff = Math.floor(timeDiff)
- if(timeDiff < 60){
- return `${timeDiff} hour${timeDiff===1?"":"s"} ago`;
- }
-
- // days
- timeDiff /= 24;
- timeDiff = Math.floor(timeDiff)
- if(timeDiff < 30){
- return `${timeDiff} day${timeDiff===1?"":"s"} ago`;
- }
-
- // months
- timeDiff /= 30;
- timeDiff = Math.floor(timeDiff)
- if(timeDiff < 12){
- return `${timeDiff} month${timeDiff===1?"":"s"} ago`;
- }
-
- // years
- timeDiff /= 12;
- timeDiff = Math.floor(timeDiff)
- return `${timeDiff} year${timeDiff===1?"":"s"} ago`;
-}
-
-export default Messages;
diff --git a/src/StateProvider.js b/src/StateProvider.js
new file mode 100644
index 0000000..0fccc6e
--- /dev/null
+++ b/src/StateProvider.js
@@ -0,0 +1,12 @@
+import React, { createContext, useReducer, useContext } from "react";
+
+export const StateContext = createContext();
+
+
+ export const StateProvider = ({ reducer, initialState, children }) => (
+
+ {children}
+
+);
+
+export const useStateValue = () => useContext(StateContext);
diff --git a/src/components/Chatroom.css b/src/components/Chatroom.css
new file mode 100644
index 0000000..f2fe1ad
--- /dev/null
+++ b/src/components/Chatroom.css
@@ -0,0 +1,115 @@
+.chatroom {
+ flex: 0.7;
+ /* background-color: lightsalmon; */
+ display: flex;
+ flex-direction: column;
+ }
+
+ .chatroom__header {
+ display: flex;
+ padding: 15px;
+ align-items: center;
+ /* justify-content: space-between; */
+ border-bottom: 1px solid rgb(241, 240, 240);
+ }
+
+ .chatroom__headerinfoleft {
+ flex: 1;
+ padding-left: 15px;
+ }
+
+ .chatroom__headerinfoleft > p {
+ color: gray;
+ }
+
+ .chatroom__header__inforight {
+ display: flex;
+ align-items: center;
+ min-width: 80px;
+ }
+
+ .chatroom__body {
+ flex: 1;
+ background-image: url("https://preview.redd.it/qwd83nc4xxf41.jpg?width=640&crop=smart&auto=webp&s=e82767fdf47158e80604f407ce4938e44afc6c25") !important;
+ background-repeat: repeat;
+ padding: 25px;
+ overflow-y: scroll;
+ background-position: center;
+ }
+
+ .chatroom__message {
+ position: relative;
+ font-size: 15px;
+ margin-bottom: 10px;
+ padding: 10px;
+ background-color: rgb(243, 240, 240);
+ border-radius: 15px;
+
+ width: fit-content;
+ margin-top: 25px;
+ }
+
+ .chatroom__username {
+ position: absolute;
+ top: -15px;
+ font-weight: bold;
+ font-size: xx-small;
+ }
+
+ .chatroom__messagetimestamp {
+ margin-left: 10px;
+ font-weight: bold;
+ font-size: xx-small;
+ color: black;
+ }
+
+ .chatroom__messagerecierver {
+ margin-left: auto;
+ background-color: rgb(139, 141, 253);
+ }
+
+ /* last div */
+ .chatroom__footer {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ height: 55px;
+ border-top: 1px solid rgb(223, 222, 222);
+ }
+
+ .chatroom__footer > form {
+ flex: 1;
+ display: flex;
+ }
+
+ .chatroom__footer > form > input {
+ flex: 1;
+ border-radius: 50px;
+ padding: 15px;
+ border: none;
+ width: 90%;
+ }
+
+ .chatroom__footer > form > button {
+ border: none;
+ background-color: rgb(88, 91, 255);
+ color: white;
+ padding: 10px;
+ border-radius: 50%;
+ }
+
+ .chatroom__footer > form > input:focus {
+ outline-width: 0;
+ }
+ .chatroom__footer > form > button:focus {
+ outline-width: 0;
+ }
+ /* .chatroom__footer > form > button {
+ display: none;
+ } */
+
+ .chatroom__footer > .MuiSvgIcon-root {
+ padding: 10px;
+ color: gray;
+ }
+
\ No newline at end of file
diff --git a/src/components/Chatroom.js b/src/components/Chatroom.js
new file mode 100644
index 0000000..17b12dd
--- /dev/null
+++ b/src/components/Chatroom.js
@@ -0,0 +1,104 @@
+import React, { useState, useEffect } from "react";
+import firebase from "firebase";
+import "./Chatroom.css";
+import { Avatar } from "@material-ui/core";
+import SearchIcon from "@material-ui/icons/Search";
+import SendIcon from "@material-ui/icons/Send";
+import AttachFileIcon from "@material-ui/icons/AttachFile";
+import MoreVertIcon from "@material-ui/icons/MoreVert";
+import SentimentVerySatisfiedIcon from "@material-ui/icons/SentimentVerySatisfied";
+import MicIcon from "@material-ui/icons/Mic";
+import { useParams } from "react-router-dom";
+import { database } from "../firebase";
+import { useStateValue } from "../StateProvider";
+function Chatroom() {
+ const [input, setinput] = useState("");
+ const { roomid } = useParams();
+ const [roomname, setroomname] = useState("");
+ const [message, setmessages] = useState([]);
+ const [{ user }, dispatch] = useStateValue();
+
+
+ useEffect(() => {
+ if (roomid) {
+ database
+ .collection("rooms")
+ .doc(roomid)
+ .onSnapshot((snapshot) => setroomname(snapshot.data().name));
+ database
+ .collection("rooms")
+ .doc(roomid)
+ .collection("messages")
+ .orderBy("timestamp", "asc")
+ .onSnapshot((snapshot) =>
+ setmessages(snapshot.docs.map((doc) => doc.data()))
+ );
+ }
+ }, [roomid]);
+
+ const SendMessage = (event) => {
+ event.preventDefault();
+
+ database.collection("rooms").doc(roomid).collection("messages").add({
+ message: input,
+ name: user.displayName,
+ timestamp: firebase.firestore.FieldValue.serverTimestamp(),
+
+ });
+ setinput("");
+ };
+
+ return (
+
+
+
+
+
{roomname}
+
+ last seen{" "}
+ {new Date(
+ message[message.length - 1]?.timestamp?.toDate()
+ ).toUTCString()}
+
+
+
+
+
+ {message.map((message) => (
+
+ {message.name}
+ {message.message}
+
+ {new Date(message.timestamp?.toDate()).toUTCString()}
+
+
+ ))}
+
+
+
+
+
+
+
+ );
+}
+
+export default Chatroom;
diff --git a/src/components/Chats.css b/src/components/Chats.css
new file mode 100644
index 0000000..91aa71d
--- /dev/null
+++ b/src/components/Chats.css
@@ -0,0 +1,25 @@
+.chats {
+ display: flex;
+ align-items: center;
+ padding: 20px;
+ cursor: pointer;
+ border: 1px solid rgb(250, 249, 249);
+ }
+
+ .chats:hover {
+ background-color: rgb(236, 233, 233);
+ }
+
+ .chats__info > h3 {
+ margin-bottom: 8px;
+ }
+
+ .chats__info {
+ margin-left: 10px;
+ }
+
+ a {
+ text-decoration: none !important;
+ color: black;
+ }
+
\ No newline at end of file
diff --git a/src/components/Chats.js b/src/components/Chats.js
new file mode 100644
index 0000000..df635ce
--- /dev/null
+++ b/src/components/Chats.js
@@ -0,0 +1,57 @@
+
+import React, { useEffect, useState } from "react";
+import "./Chats.css";
+import { Avatar } from "@material-ui/core";
+import { database } from "../firebase";
+import { Link } from "react-router-dom";
+
+function Chats({ addChat, id, name }) {
+ const [avatars, setavatars] = useState("");
+ const [messages, setmessages] = useState("");
+
+ useEffect(() => {
+ setavatars(Math.floor(Math.random() * 5000));
+ }, []);
+
+ useEffect(() => {
+ if (id) {
+ database
+ .collection("rooms")
+ .doc(id)
+ .collection("messages")
+ .orderBy("timestamp", "desc")
+ .onSnapshot((snapshot) =>
+ setmessages(snapshot.docs.map((doc) => doc.data()))
+ );
+ }
+ }, [id]);
+
+ const addnewChat = () => {
+ const chatName = prompt("Enter A name");
+
+ if (chatName) {
+ //Here this will add the new chat room doc
+ database.collection("rooms").add({
+ name: chatName,
+ });
+ }
+ };
+
+ return !addChat ? (
+
+
+
+
+
{name}
+
{messages[0]?.message}
+
+
+
+ ) : (
+
+
Add New Chat
+
+ );
+}
+
+export default Chats;
diff --git a/src/components/Login.css b/src/components/Login.css
new file mode 100644
index 0000000..92415b9
--- /dev/null
+++ b/src/components/Login.css
@@ -0,0 +1,25 @@
+.login__body {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ height: 100vh;
+ }
+
+ .login__body > img {
+ object-fit: contain;
+ width: 300px;
+ margin-bottom: 40px;
+ }
+
+ .login__body > button {
+ margin-top: 50px;
+ background-color: rgb(88, 91, 255);
+ text-transform: inherit;
+ }
+
+ .login__body > button:hover {
+ color: black;
+ background-color: white;
+ }
+
\ No newline at end of file
diff --git a/src/components/Login.js b/src/components/Login.js
new file mode 100644
index 0000000..21f7f79
--- /dev/null
+++ b/src/components/Login.js
@@ -0,0 +1,41 @@
+import React from "react";
+import "./Login.css";
+import { Button } from "@material-ui/core";
+import { authentication, provider } from "../firebase";
+import { useStateValue } from "../StateProvider";
+import { actionTypes } from "../reducer";
+
+function Login() {
+ const [{ user }, dispatch] = useStateValue();
+
+ const signIn = () => {
+ authentication
+ .signInWithPopup(provider)
+ .then((result) => {
+ dispatch({
+ type: actionTypes.SET_USER,
+ user: result.user,
+ });
+ })
+ .catch((error) => alert(error.message));
+ };
+
+ return (
+
+
+

+
+
Welcome To React Messenger
+
+
+
+
+
+
+ );
+}
+
+export default Login;
diff --git a/src/components/Sideroom.css b/src/components/Sideroom.css
new file mode 100644
index 0000000..56e9693
--- /dev/null
+++ b/src/components/Sideroom.css
@@ -0,0 +1,60 @@
+.sidebar {
+ flex: 0.3;
+ /* flex-direction: column; */
+ flex-direction: column;
+ display: flex;
+ }
+
+ .sidebar__header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ border-right: 1px solid lightgray;
+ background-color: rgb(88, 91, 255);
+ padding: 15px;
+ }
+
+ .sidebar__headerright {
+ display: flex;
+ /* align-items: center; */
+ cursor: pointer;
+ justify-content: space-between;
+ min-width: 7vw;
+ margin-left: 7px;
+ }
+
+ .siebar__search {
+ display: flex;
+ background-color: rgb(250, 243, 243);
+ height: 40px;
+ align-items: center;
+ padding: 10px;
+ }
+
+ .sidebar__searchcontainer {
+ display: flex;
+ background-color: white;
+ width: 100%;
+ height: 35px;
+ border-radius: 999px;
+ align-items: center;
+ }
+
+ .sidebar__searchcontainer > input {
+ width: 80%;
+ border: none;
+ margin-left: 15px;
+ color: gray;
+ }
+ .sidebar__searchcontainer > .MuiSvgIcon-root {
+ margin-left: 15px;
+ color: gray;
+ font-size: 18px !important;
+ }
+
+ .sidebar__chhatsGroups {
+ flex: 1;
+ background-color: white;
+ overflow-y: scroll;
+ }
+
\ No newline at end of file
diff --git a/src/components/Sideroom.js b/src/components/Sideroom.js
new file mode 100644
index 0000000..e2b8573
--- /dev/null
+++ b/src/components/Sideroom.js
@@ -0,0 +1,58 @@
+import React, { useState, useEffect } from "react";
+import "./Sideroom.css";
+import { Avatar } from "@material-ui/core";
+import ChatIcon from "@material-ui/icons/Chat";
+import DonutLargeIcon from "@material-ui/icons/DonutLarge";
+import MoreVertIcon from "@material-ui/icons/MoreVert";
+import SearchIcon from "@material-ui/icons/Search";
+import Chats from "./Chats";
+import { database } from "../firebase";
+import { useStateValue } from "../StateProvider";
+function Sideroom() {
+ const [rooms, setrooms] = useState([]);
+ const [{ user }, dispatch] = useStateValue();
+
+
+ useEffect(() => {
+ const unsubsctibe = database.collection("rooms").onSnapshot((snapshot) =>
+ setrooms(
+ snapshot.docs.map((doc) => ({
+ id: doc.id,
+ data: doc.data(),
+ }))
+ )
+ );
+
+ return () => {
+ unsubsctibe();
+ };
+ }, []);
+
+ return (
+
+
+
+
+
+
+ {rooms.map((room) => (
+
+ ))}
+
+
+ );
+}
+
+export default Sideroom;
diff --git a/src/firebase.js b/src/firebase.js
index 3ec82f8..ec17260 100644
--- a/src/firebase.js
+++ b/src/firebase.js
@@ -11,7 +11,11 @@ const firebaseConfig={
measurementId:"G-HVDGKL164W"
}
-const firebaseApp=firebase.initializeApp(firebaseConfig);
-const db=firebaseApp.firestore();
-export default db;
+
+const firebaseApp = firebase.initializeApp(firebaseConfig);
+const database = firebaseApp.firestore();
+const authentication = firebaseApp.auth();
+const provider = new firebase.auth.GoogleAuthProvider();
+
+export { database, authentication, provider };
diff --git a/src/index.js b/src/index.js
index ef2edf8..0eb9231 100644
--- a/src/index.js
+++ b/src/index.js
@@ -3,10 +3,14 @@ import ReactDOM from 'react-dom';
import './index.css';
import App from './App';
import reportWebVitals from './reportWebVitals';
+import { StateProvider } from './StateProvider';
+import reducer, { initialState } from './reducer';
ReactDOM.render(
+
+
,
document.getElementById('root')
);
diff --git a/src/reducer.js b/src/reducer.js
new file mode 100644
index 0000000..b29f513
--- /dev/null
+++ b/src/reducer.js
@@ -0,0 +1,24 @@
+export const initialState = {
+ user: null,
+ };
+
+ export const actionTypes = {
+ SET_USER: "SET_USER",
+ };
+
+ const reducer = (state, action) => {
+ console.log(action);
+ switch (action.type) {
+ case actionTypes.SET_USER:
+ return {
+ ...state,
+ user: action.user,
+ };
+
+ default:
+ return state;
+ }
+ };
+
+ export default reducer;
+
\ No newline at end of file
From 993e5bb355ac42e4809e687f73ba4ee0f3285df7 Mon Sep 17 00:00:00 2001
From: Robin Singh
Date: Fri, 12 Mar 2021 21:03:43 +0530
Subject: [PATCH 2/6] deleted comments
---
src/App.css | 1 -
src/App.js | 10 +++++-----
src/components/Chatroom.css | 6 ------
src/components/Chatroom.js | 9 ++-------
src/components/Chats.js | 1 -
src/components/Sideroom.js | 2 +-
6 files changed, 8 insertions(+), 21 deletions(-)
diff --git a/src/App.css b/src/App.css
index c40d4e4..1616abb 100644
--- a/src/App.css
+++ b/src/App.css
@@ -3,7 +3,6 @@
}
.app {
- /* background-color: #e9e9e3; */
height: 100vh;
display: grid;
place-items: center;
diff --git a/src/App.js b/src/App.js
index 519893d..38ee801 100644
--- a/src/App.js
+++ b/src/App.js
@@ -16,22 +16,22 @@ function App() {
) : (
- {/*
*/}
+
- {/* sidebar */}
+
- {/* chat */}
+
- {/* Home Screen
*/}
+
- {/*
*/}
+
)}
diff --git a/src/components/Chatroom.css b/src/components/Chatroom.css
index f2fe1ad..64b4814 100644
--- a/src/components/Chatroom.css
+++ b/src/components/Chatroom.css
@@ -1,6 +1,5 @@
.chatroom {
flex: 0.7;
- /* background-color: lightsalmon; */
display: flex;
flex-direction: column;
}
@@ -9,7 +8,6 @@
display: flex;
padding: 15px;
align-items: center;
- /* justify-content: space-between; */
border-bottom: 1px solid rgb(241, 240, 240);
}
@@ -68,7 +66,6 @@
background-color: rgb(139, 141, 253);
}
- /* last div */
.chatroom__footer {
display: flex;
align-items: center;
@@ -104,9 +101,6 @@
.chatroom__footer > form > button:focus {
outline-width: 0;
}
- /* .chatroom__footer > form > button {
- display: none;
- } */
.chatroom__footer > .MuiSvgIcon-root {
padding: 10px;
diff --git a/src/components/Chatroom.js b/src/components/Chatroom.js
index 17b12dd..66a16c6 100644
--- a/src/components/Chatroom.js
+++ b/src/components/Chatroom.js
@@ -2,10 +2,8 @@ import React, { useState, useEffect } from "react";
import firebase from "firebase";
import "./Chatroom.css";
import { Avatar } from "@material-ui/core";
-import SearchIcon from "@material-ui/icons/Search";
import SendIcon from "@material-ui/icons/Send";
-import AttachFileIcon from "@material-ui/icons/AttachFile";
-import MoreVertIcon from "@material-ui/icons/MoreVert";
+
import SentimentVerySatisfiedIcon from "@material-ui/icons/SentimentVerySatisfied";
import MicIcon from "@material-ui/icons/Mic";
import { useParams } from "react-router-dom";
@@ -62,15 +60,12 @@ function Chatroom() {
{message.map((message) => (
{rooms.map((room) => (
-
+
))}
From bb7fd21c23a09299dd69381d35e9142a0aa1812f Mon Sep 17 00:00:00 2001
From: Robin Singh
Date: Fri, 19 Mar 2021 09:51:01 +0530
Subject: [PATCH 3/6] removed sending button
---
src/components/Chatroom.css | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/components/Chatroom.css b/src/components/Chatroom.css
index 64b4814..270f4d9 100644
--- a/src/components/Chatroom.css
+++ b/src/components/Chatroom.css
@@ -93,6 +93,7 @@
color: white;
padding: 10px;
border-radius: 50%;
+ display: none;
}
.chatroom__footer > form > input:focus {
From 671087e4340bd9b45892b91b2f949c086afae976 Mon Sep 17 00:00:00 2001
From: Robin Singh
Date: Fri, 19 Mar 2021 09:51:34 +0530
Subject: [PATCH 4/6] removed sending button
---
src/components/Chatroom.js | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/src/components/Chatroom.js b/src/components/Chatroom.js
index 66a16c6..5fdc4d2 100644
--- a/src/components/Chatroom.js
+++ b/src/components/Chatroom.js
@@ -40,6 +40,7 @@ function Chatroom() {
database.collection("rooms").doc(roomid).collection("messages").add({
message: input,
name: user.displayName,
+ sendEmail:user.email,
timestamp: firebase.firestore.FieldValue.serverTimestamp(),
});
@@ -49,7 +50,7 @@ function Chatroom() {
return (
-
+
{roomname}
@@ -67,7 +68,7 @@ function Chatroom() {
{message.map((message) => (
{message.name}
From 285b49f19404db12c3f5703b8ab2a1fe24df2372 Mon Sep 17 00:00:00 2001
From: Robin Singh
Date: Fri, 19 Mar 2021 09:51:48 +0530
Subject: [PATCH 5/6] removed sending button
---
src/components/Chats.js | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/src/components/Chats.js b/src/components/Chats.js
index bfda3a6..fe1ff71 100644
--- a/src/components/Chats.js
+++ b/src/components/Chats.js
@@ -6,12 +6,9 @@ import { database } from "../firebase";
import { Link } from "react-router-dom";
function Chats({ addChat, id, name }) {
- const [avatars, setavatars] = useState("");
+
const [messages, setmessages] = useState("");
- useEffect(() => {
- setavatars(Math.floor(Math.random() * 5000));
- }, []);
useEffect(() => {
if (id) {
@@ -39,7 +36,7 @@ function Chats({ addChat, id, name }) {
return !addChat ? (
-
+
{name}
{messages[0]?.message}
From 4c80753ac638927a8121de7ee3a1f4d7e0ab90af Mon Sep 17 00:00:00 2001
From: Robin Singh
Date: Fri, 19 Mar 2021 09:51:55 +0530
Subject: [PATCH 6/6] removed sending button
---
src/components/Sideroom.css | 2 --
1 file changed, 2 deletions(-)
diff --git a/src/components/Sideroom.css b/src/components/Sideroom.css
index 56e9693..b1986e2 100644
--- a/src/components/Sideroom.css
+++ b/src/components/Sideroom.css
@@ -1,6 +1,5 @@
.sidebar {
flex: 0.3;
- /* flex-direction: column; */
flex-direction: column;
display: flex;
}
@@ -16,7 +15,6 @@
.sidebar__headerright {
display: flex;
- /* align-items: center; */
cursor: pointer;
justify-content: space-between;
min-width: 7vw;