From c8a4f16549357489700fc4699718bebd405f6e64 Mon Sep 17 00:00:00 2001 From: uzFer <109243682+uzFer@users.noreply.github.com> Date: Tue, 10 Jan 2023 23:07:07 -0500 Subject: [PATCH 01/15] Deployed Website --- package-lock.json | 328 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 6 + 2 files changed, 334 insertions(+) diff --git a/package-lock.json b/package-lock.json index a41453c..852a479 100644 --- a/package-lock.json +++ b/package-lock.json @@ -24,6 +24,9 @@ "react-scripts": "^5.0.1", "reactjs-popup": "^2.0.5", "web-vitals": "^2.1.4" + }, + "devDependencies": { + "gh-pages": "^4.0.0" } }, "node_modules/@adobe/css-tools": { @@ -5634,6 +5637,15 @@ "node": ">=8" } }, + "node_modules/array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/array.prototype.flat": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", @@ -7546,6 +7558,12 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, + "node_modules/email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, "node_modules/emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", @@ -8740,6 +8758,32 @@ "node": ">=10" } }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/filesize": { "version": "8.0.7", "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", @@ -9245,6 +9289,103 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gh-pages": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-4.0.0.tgz", + "integrity": "sha512-p8S0T3aGJc68MtwOcZusul5qPSNZCalap3NWbhRUZYu1YOdp+EjZ+4kPmRM8h3NNRdqw00yuevRjlkuSzCn7iQ==", + "dev": true, + "dependencies": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/gh-pages/node_modules/array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gh-pages/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/gh-pages/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/gh-pages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/gh-pages/node_modules/globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "dependencies": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gh-pages/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/gh-pages/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -13418,6 +13559,27 @@ "node": ">=0.10.0" } }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -16431,6 +16593,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/style-loader": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", @@ -16856,6 +17030,18 @@ "node": ">=8" } }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/tryer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", @@ -22216,6 +22402,12 @@ "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", + "dev": true + }, "array.prototype.flat": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", @@ -23614,6 +23806,12 @@ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==" }, + "email-addresses": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", + "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", + "dev": true + }, "emittery": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", @@ -24509,6 +24707,23 @@ } } }, + "filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true + }, + "filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "requires": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + } + }, "filesize": { "version": "8.0.7", "resolved": "https://registry.npmjs.org/filesize/-/filesize-8.0.7.tgz", @@ -24860,6 +25075,86 @@ "get-intrinsic": "^1.1.1" } }, + "gh-pages": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-4.0.0.tgz", + "integrity": "sha512-p8S0T3aGJc68MtwOcZusul5qPSNZCalap3NWbhRUZYu1YOdp+EjZ+4kPmRM8h3NNRdqw00yuevRjlkuSzCn7iQ==", + "dev": true, + "requires": { + "async": "^2.6.1", + "commander": "^2.18.0", + "email-addresses": "^3.0.1", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^8.1.0", + "globby": "^6.1.0" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "globby": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", + "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + } + } + }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -27876,6 +28171,21 @@ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, "pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", @@ -29889,6 +30199,15 @@ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" }, + "strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "style-loader": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.1.tgz", @@ -30200,6 +30519,15 @@ "punycode": "^2.1.1" } }, + "trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.2" + } + }, "tryer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", diff --git a/package.json b/package.json index 432c6d9..fc244a7 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "homepage": "http://uzFer.github.io/tidey", "name": "tidey", "version": "0.1.0", "private": true, @@ -22,6 +23,8 @@ }, "scripts": { "start": "react-scripts start", + "predeploy": "npm run build", + "deploy": "gh-pages -d build", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" @@ -43,5 +46,8 @@ "last 1 firefox version", "last 1 safari version" ] + }, + "devDependencies": { + "gh-pages": "^4.0.0" } } From 3ed10aec3ae3b6c1138cbb52509df402df9a3d78 Mon Sep 17 00:00:00 2001 From: uzFer <109243682+uzFer@users.noreply.github.com> Date: Wed, 11 Jan 2023 21:22:25 -0500 Subject: [PATCH 02/15] routing issue --- src/App.js | 23 +++++++++-------- src/CourseDetails.js | 11 ++------ src/CourseList.js | 2 +- src/Courses.js | 8 +++--- src/Create.js | 7 +++-- src/Home.js | 20 +++++++-------- src/Login.js | 4 +-- src/Navbar.js | 61 +++++--------------------------------------- src/NotFound.js | 2 +- src/SignUp.js | 2 +- src/Tabs.js | 10 ++++---- src/Workload.js | 50 +----------------------------------- 12 files changed, 46 insertions(+), 154 deletions(-) diff --git a/src/App.js b/src/App.js index eaf1052..af24c7f 100644 --- a/src/App.js +++ b/src/App.js @@ -10,7 +10,7 @@ import CourseCalculator from './CourseCalculator'; import Workload from './Workload'; import NotFound from './NotFound'; import Tabs from './Tabs'; -import {db} from './Firebase'; +import { db } from './Firebase'; import { BrowserRouter as Router, Routes, Route } from "react-router-dom"; @@ -24,16 +24,17 @@ const App = () => {
- } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> - } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> + } /> } />
diff --git a/src/CourseDetails.js b/src/CourseDetails.js index 5816ad4..e42d76a 100644 --- a/src/CourseDetails.js +++ b/src/CourseDetails.js @@ -60,10 +60,6 @@ const CourseDetails = () => { getCourses(); getCurrentCourse(); - - - - }, []); @@ -74,7 +70,7 @@ const CourseDetails = () => { const docRef = doc(db, "courses", id); await deleteDoc(docRef); - navigate("../Courses") + navigate("../tidey/Courses") listAll(fileListRef).then((response) => { response.items.forEach((item) => { @@ -92,7 +88,7 @@ const CourseDetails = () => { const docRef = doc(db, "courses", id); await updateDoc( docRef , {courseCode: courseCode, courseName: courseName}); setEditShow(false); - navigate("../Courses"); + navigate("../tidey/Courses"); }; @@ -179,9 +175,6 @@ const CourseDetails = () => { - - - ) } diff --git a/src/CourseList.js b/src/CourseList.js index 4a13615..9c7e574 100644 --- a/src/CourseList.js +++ b/src/CourseList.js @@ -87,7 +87,7 @@ const CourseList = () => {
- +

{ course.courseCode }

diff --git a/src/Courses.js b/src/Courses.js index 0635285..9290b39 100644 --- a/src/Courses.js +++ b/src/Courses.js @@ -1,9 +1,7 @@ import CourseList from './CourseList'; -import useFetch from './UseFetch'; import { Link } from "react-router-dom"; + const Courses = () => { - - {/*const { data: courses, isPending, error } = useFetch('http://localhost:8000/courses');*/} return (
@@ -18,7 +16,7 @@ const Courses = () => {
- Add a new course + Add a new course
@@ -29,4 +27,4 @@ const Courses = () => { ); } -export default Courses; +export default Courses; \ No newline at end of file diff --git a/src/Create.js b/src/Create.js index 2ede344..1980eb7 100644 --- a/src/Create.js +++ b/src/Create.js @@ -1,8 +1,9 @@ import { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import {db} from './Firebase'; -import {collection, getDocs, addDoc, doc, updateDoc, setDoc} from 'firebase/firestore'; +import {collection, doc, setDoc} from 'firebase/firestore'; import { getAuth, onAuthStateChanged } from "firebase/auth"; + const Create = () => { const [courseCode, setCourseCode] = useState(''); const [courseName, setCourseName] = useState(''); @@ -22,8 +23,6 @@ const Create = () => { } }); - - const createCourse = async (e) => { e.preventDefault() const docRef = new doc(coursesCollectionRef); @@ -36,7 +35,7 @@ const Create = () => { id: docRef.id, userID: userID }); - navigate(-1); + navigate("../tidey/Courses"); } return ( diff --git a/src/Home.js b/src/Home.js index d33515a..27cf5f0 100644 --- a/src/Home.js +++ b/src/Home.js @@ -1,12 +1,11 @@ -import { Link } from "react-router-dom"; -import { auth } from "./Firebase"; +import { Link, useNavigate } from "react-router-dom"; import { useState } from 'react'; import { getAuth, onAuthStateChanged } from "firebase/auth"; const Home = () => { const [ userID, setUserID ] = useState(); const auth = getAuth(); - + const navigate = useNavigate(); onAuthStateChanged(auth, (user) => { if (user) { setUserID(user.uid) @@ -14,11 +13,11 @@ const Home = () => { }); const handleAlert = () => { - console.log(userID); - if(!userID) + if(!userID){ alert("To save your courses, you can log in or sign up!"); - else - return; + } else{ + navigate("../tidey/Courses"); + } } return ( @@ -48,13 +47,13 @@ const Home = () => {
- +
Course dashboard - +
- + Calculate grades
@@ -62,7 +61,6 @@ const Home = () => {
- ); } diff --git a/src/Login.js b/src/Login.js index cbce446..782aa6a 100644 --- a/src/Login.js +++ b/src/Login.js @@ -34,7 +34,7 @@ const Login = () => { ); alert('You are logged in'); - navigate("./"); + navigate("../tidey/"); } catch(error) { console.log(error.message); } @@ -49,7 +49,7 @@ const Login = () => { localStorage.setItem("name", name); alert('You are logged in'); if((localStorage.getItem("email") !== "undefined")){ - navigate("../"); + navigate("../tidey/"); } }) .catch((error) => { diff --git a/src/Navbar.js b/src/Navbar.js index 16bac00..30ca37d 100644 --- a/src/Navbar.js +++ b/src/Navbar.js @@ -5,55 +5,6 @@ import { auth } from "./Firebase"; import Modal from 'react-bootstrap/Modal'; import HamburgerMenu from './HamburgerMenu'; -const modalStyle = { - position: "fixed", - fontFamily: "'Quicksand', sans-serif", - zIndex: "100", - top: "10%", - left: "50%", - width: "500px", - marginLeft: "-260px", - backgroundColor: 'white', - border: "1px solid #999", - borderRadius: "6px", - boxShadow: "0 3px 7px rgba(0,0,0,0.3))", - outline: "none", - fontWeight: "bold" -} - -const modalHeaderStyle = { - padding: "9px 15px", - borderBottom: "1px solid #eee", -} - -const modalBodyStyle = { - position: "relative", - overflowY: "auto", - maxHeight: "400px", - padding: "15px" -} - -const modalFooterStyle = { - padding: "14px 15px 15px", - marginBottom: "0", - textAlign: "right", - backgroundColor: "#f5f5f5", - borderTop: "1px solid #ddd", - borderRadius: "0 0 6px 6px", - boxShadow: "inset 0 1px 0 @white", -} - -const modalBtn = { - background: "#2596be", - fontWeight: "bold", - color: "#fff", - border: "0", - padding: "8px", - borderRadius: "8px", - cursor: "pointer", - marginRight: "20px" -} - const Navbar = () => { const [ isLoggedIn, setIsLoggedIn ] = useState(); const [ showModal, setShowModal ] = useState(false); @@ -72,7 +23,7 @@ const Navbar = () => { localStorage.setItem("email", "undefined"); setShowModal(false); setIsLoggedIn(false); - navigate("./"); + navigate("../tidey/"); } onAuthStateChanged(auth, (currentUser) => { @@ -91,7 +42,7 @@ const Navbar = () => { return (
@@ -194,7 +177,7 @@ const Calculator = () => { onClick = {() => { handleErrorCheck() - if(errorState == false){ + if(errorState === false){ handleGradeCalculation() } else{ @@ -207,11 +190,6 @@ const Calculator = () => {

Calculate Grade!

- -
- - -
); diff --git a/src/CourseCalculator.js b/src/CourseCalculator.js index a8d2ea3..0cc6049 100644 --- a/src/CourseCalculator.js +++ b/src/CourseCalculator.js @@ -1,15 +1,10 @@ import { useState } from 'react'; -import { useEffect, useLayoutEffect} from 'react'; +import { useEffect } from 'react'; import { useParams } from 'react-router-dom'; -import { Link } from "react-router-dom"; -import Popup from 'reactjs-popup'; -import {PlusCircle} from 'react-feather'; -import useFetch from './UseFetch'; +import { PlusCircle } from 'react-feather'; import Tabs from './Tabs'; -import { Tab } from 'bootstrap'; - -import {db} from "./Firebase"; -import {collection, getDocs, addDoc, doc, getDoc, deleteDoc, updateDoc} from 'firebase/firestore'; +import { db} from "./Firebase"; +import { collection, doc, getDoc, updateDoc } from 'firebase/firestore'; @@ -21,8 +16,6 @@ const CourseCalculator = () => { const [targetGrade, setTargetGrade] = useState(100); const [additionalGrade, setAdditionalGrade] = useState(0); const [errorState, setErrorState] = useState(false); - const [courses, setCourses] = useState(); - const coursesCollectionRef = collection(db, "courses"); const [currentCourse, setCurrentCourse] = useState(); const [changesSaved, setChangesSaved] = useState(false); @@ -40,8 +33,6 @@ const CourseCalculator = () => { const newList = [...gradeList]; newList[index][element] = e.target.value; setGradeList(newList); - /*handleDatabaseUpdate();*/ - } const handleGradeCalculation = () => { @@ -73,11 +64,11 @@ const CourseCalculator = () => { let oneNumberError = false; for (let i = 0; i < gradeList.length; i++) { - if(gradeList[i].weight != 0){ + if(gradeList[i].weight !== 0){ zeroWeightError = false; noInfoError = false; } - if(gradeList[i].grade != 0){ + if(gradeList[i].grade !== 0){ noInfoError = false; } if((!gradeList[i].grade && gradeList[i].weight) || @@ -97,16 +88,6 @@ const CourseCalculator = () => { } } - - - const getCourses = async () => { - - const data = await getDocs(coursesCollectionRef); - setCourses(data.docs.map((doc) => ({...doc.data(), id: doc.id}))); - - - }; - const getCurrentCourse = async () =>{ const docRef = doc(db, "courses", id); const docSnap = await getDoc(docRef); @@ -121,10 +102,7 @@ const CourseCalculator = () => { } useEffect(() => { - - getCourses(); getCurrentCourse(); - }, []); useEffect(() => { @@ -155,7 +133,6 @@ const CourseCalculator = () => { return ( -
@@ -229,23 +206,14 @@ const CourseCalculator = () => {

Add Row

- )} - - + )}
- - - ))} - - - - - +

Enter Target Grade (%): { onClick = {() => { handleErrorCheck() - if(errorState == false){ + if(errorState === false){ handleGradeCalculation() } else{ alert("Please enter valid Grades/Weights"); } - - }} >Calculate/Save Grade!

- ); diff --git a/src/CourseDetails.js b/src/CourseDetails.js index e42d76a..42ee92b 100644 --- a/src/CourseDetails.js +++ b/src/CourseDetails.js @@ -1,13 +1,12 @@ import { useNavigate, useParams } from "react-router-dom"; -import useFetch from './UseFetch'; import Tabs from './Tabs'; import Modal from 'react-bootstrap/Modal'; import { updateDoc } from "firebase/firestore"; -import {db} from "./Firebase"; -import {useState, useEffect} from 'react'; -import {collection, getDocs, addDoc, doc, getDoc, deleteDoc} from 'firebase/firestore'; +import { db } from "./Firebase"; +import { useState, useEffect } from 'react'; +import { collection, getDocs, doc, getDoc, deleteDoc } from 'firebase/firestore'; import { getAuth, onAuthStateChanged } from "firebase/auth"; -import { ref, uploadBytes, listAll, getDownloadURL, deleteObject } from "firebase/storage"; +import { ref, listAll, getDownloadURL, deleteObject } from "firebase/storage"; import { storage } from './Firebase'; const CourseDetails = () => { @@ -15,14 +14,12 @@ const CourseDetails = () => { const navigate = useNavigate(); const [ courseCode, setCourseCode] = useState( "New Course Code"); const [ courseName, setCourseName] = useState("New Course Name"); - const [ showDeleteModal, setDeleteShow ] = useState(false); const [ showEditModal, setEditShow ] = useState(false); - const handleClose = () => setDeleteShow(false); const handleShow = () => setDeleteShow(true); const handleEditShow = () => setEditShow(true); - const handleEditCancel= () => setEditShow(false); + const handleEditCancel= () => setEditShow(false); const [courses, setCourses] = useState(); const coursesCollectionRef = collection(db, "courses"); diff --git a/src/CourseList.js b/src/CourseList.js index 9c7e574..cc65bc4 100644 --- a/src/CourseList.js +++ b/src/CourseList.js @@ -1,27 +1,29 @@ import { Link } from 'react-router-dom'; import { db } from './Firebase'; -import {useState, useEffect} from 'react'; -import {collection, getDocs, addDoc} from 'firebase/firestore'; +import { useState, useEffect } from 'react'; +import { collection, getDocs } from 'firebase/firestore'; import { getAuth, onAuthStateChanged } from "firebase/auth"; -import {animationControls, motion, useAnimation} from 'framer-motion'; -import {useRef} from "react"; -import {ChevronsLeft, ChevronsRight} from 'react-feather'; +import { motion, useAnimation } from 'framer-motion'; +import { useRef } from "react"; +import { ChevronsLeft, ChevronsRight } from 'react-feather'; + const courseStyle = { textDecoration: "none", color: 'white' } const CourseList = () => { - const [courses, setCourses] = useState(); + const [ courses, setCourses ] = useState(); const coursesCollectionRef = collection(db, "courses"); - const [userID, setUserID] = useState(''); - const [carouselWidth, setCarouselWidth] = useState(); + const [ userID, setUserID ] = useState(''); + const [ carouselWidth, setCarouselWidth ] = useState(); const carousel = useRef(); const auth = getAuth(); - const swipeString = "<<< SWIPE" const dragRef = useRef(null); const xPos = useRef(0); const animation = useAnimation(); + + onAuthStateChanged(auth, (user) => { if (user) { setUserID(user.uid) @@ -29,45 +31,42 @@ const CourseList = () => { } }); + const handleLeftSwipe = () => { const newXPosition = xPos.current + 300; - animation.start({ x: newXPosition > (carouselWidth * 1.1) ? (carouselWidth * 1.1): newXPosition, }); } + const handleRightSwipe = () => { const newXPosition = xPos.current - 300; - animation.start({ x: newXPosition > -(carouselWidth * 1.1) ? -(carouselWidth * 1.1) : newXPosition, }); } + const onUpdate = (latest) => { xPos.current = latest.x; } + useEffect(() => { - - const getCourses = async () => { - + const getCourses = async () => { const data = await getDocs(coursesCollectionRef); - setCourses(data.docs.map((doc) => ({...doc.data()}))); - //id: doc.id - }; - getCourses(); }, []); + + useEffect(() => { setCarouselWidth(carousel.current.scrollWidth - carousel.current.offsetWidth); - - }, [courses]) + return ( @@ -83,33 +82,26 @@ const CourseList = () => { return( {course.userID === userID && -
-

{ course.courseCode }

-

{ course.courseName }

-
- +
- }
); })} -
+
-

SWIPE

-
); diff --git a/src/Home.js b/src/Home.js index 27cf5f0..6e2ab1a 100644 --- a/src/Home.js +++ b/src/Home.js @@ -1,11 +1,13 @@ import { Link, useNavigate } from "react-router-dom"; -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import { getAuth, onAuthStateChanged } from "firebase/auth"; const Home = () => { + const [windowHeight, setWindowHeight] = useState(window.innerHeight); const [ userID, setUserID ] = useState(); const auth = getAuth(); const navigate = useNavigate(); + onAuthStateChanged(auth, (user) => { if (user) { setUserID(user.uid) @@ -20,24 +22,39 @@ const Home = () => { } } + useEffect(() => { + const handleWindowResize = () => { + setWindowHeight(window.innerHeight); + }; + + window.addEventListener('resize', handleWindowResize); + + return () => { + window.removeEventListener('resize', handleWindowResize); + }; + }); + return (
{/* Waves Container*/} -
- - - - - - - - - - - -
+ {windowHeight >= 750 && + ( +
+ + + + + + + + + + + +
+ )} {/**/}
diff --git a/src/Login.js b/src/Login.js index 782aa6a..e202168 100644 --- a/src/Login.js +++ b/src/Login.js @@ -17,6 +17,7 @@ const Login = () => { const [ loginEmail, setLoginEmail ] = useState(""); const [ loginPassword, setLoginPassword ] = useState(""); const [ user, setUser ] = useState({}); + const [ windowHeight, setWindowHeight ] = useState(window.innerHeight); onAuthStateChanged(auth, (currentUser) => { setUser(currentUser); @@ -57,15 +58,26 @@ const Login = () => { }) }; - useEffect(() => { +useEffect(() => { + const handleWindowResize = () => { + setWindowHeight(window.innerHeight); + }; - }, []) + window.addEventListener('resize', handleWindowResize); + + return () => { + window.removeEventListener('resize', handleWindowResize); + }; + }); return (
+ {/* Waves Container*/} -
+ {windowHeight >= 750 && + ( +
@@ -79,6 +91,9 @@ const Login = () => {
+ )} + {/* Waves End */} +

Log in to your account

diff --git a/src/SignUp.js b/src/SignUp.js index 34112cc..c2d1dd1 100644 --- a/src/SignUp.js +++ b/src/SignUp.js @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import { createUserWithEmailAndPassword, onAuthStateChanged } from 'firebase/auth'; import { useNavigate } from 'react-router-dom'; import { auth } from "./Firebase"; @@ -16,6 +16,7 @@ const SignUp = () => { const [ registerPassword, setRegisterPassword ] = useState(""); const navigate = useNavigate(); const [ user, setUser ] = useState({}); + const [windowHeight, setWindowHeight] = useState(window.innerHeight); onAuthStateChanged(auth, (currentUser) => { setUser(currentUser); @@ -38,25 +39,41 @@ const SignUp = () => { } } + useEffect(() => { + const handleWindowResize = () => { + setWindowHeight(window.innerHeight); + }; + + window.addEventListener('resize', handleWindowResize); + + return () => { + window.removeEventListener('resize', handleWindowResize); + }; + }); + return ( -
{/* Waves Container*/} -
- - - - - - - - - - - -
+ {windowHeight >= 750 && + ( +
+ + + + + + + + + + + +
+ )} + {/* Waves End */ } +

Create a new Tidey account

diff --git a/src/index.css b/src/index.css index 62b8a43..bb1889d 100644 --- a/src/index.css +++ b/src/index.css @@ -678,9 +678,10 @@ input[type=target] { .addGrade-btn { margin: 2rem 1rem 1rem 1rem; padding: 3px; + align-items: center; justify-content: center; text-align: center; - display:grid; + display: flex; width: calc(200px + 2vmin); grid-template-columns: 0.1fr 1fr; text-decoration: none; From 280fbcdbf87819c2bc46dbefd2dceba5c7ff89fb Mon Sep 17 00:00:00 2001 From: uzFer <109243682+uzFer@users.noreply.github.com> Date: Wed, 11 Jan 2023 22:22:17 -0500 Subject: [PATCH 04/15] logging in edits and taking out warnings --- src/Calculator.js | 4 ++-- src/CourseCalculator.js | 2 +- src/CourseDetails.js | 4 ++-- src/Create.js | 3 +-- src/Firebase.js | 2 -- src/HamburgerMenu.js | 8 ++------ src/Login.js | 11 ++++++++--- src/Navbar.js | 6 +++--- src/SignUp.js | 22 ++++++++++++++++++++- src/Workload.js | 35 ++++++++-------------------------- src/index.css | 42 ++++++++++++++++++++++++++++++++++++++++- 11 files changed, 89 insertions(+), 50 deletions(-) diff --git a/src/Calculator.js b/src/Calculator.js index 2f24a6c..bfc5fd0 100644 --- a/src/Calculator.js +++ b/src/Calculator.js @@ -96,11 +96,11 @@ const Calculator = () => {
-

Grade Calculator

+

Grade Calculator

- + {gradeList.map((singleRow, index) => ( diff --git a/src/CourseCalculator.js b/src/CourseCalculator.js index 0cc6049..83835d2 100644 --- a/src/CourseCalculator.js +++ b/src/CourseCalculator.js @@ -153,7 +153,7 @@ const CourseCalculator = () => {
- + {gradeList.map((singleRow, index) => ( diff --git a/src/CourseDetails.js b/src/CourseDetails.js index 42ee92b..d378a2f 100644 --- a/src/CourseDetails.js +++ b/src/CourseDetails.js @@ -141,7 +141,7 @@ const CourseDetails = () => { Fill in the inputs with your changes { /> { const [gradeList, setGradeList] = useState([{ desc: "", weight: "", grade: ""}]); const [fileNameList, setFileNameList] = useState(['']); const [targetGrade, setTargetGrade] = useState(0); - const [isPending, setIsPending] = useState(false); const coursesCollectionRef = collection(db, "courses"); const [userID, setUserID] = useState(''); const navigate = useNavigate(); diff --git a/src/Firebase.js b/src/Firebase.js index f5ea9df..3348b01 100644 --- a/src/Firebase.js +++ b/src/Firebase.js @@ -1,5 +1,4 @@ import { initializeApp } from "firebase/app"; -import { getAnalytics } from "firebase/analytics"; import { getFirestore } from "@firebase/firestore"; import { getAuth, GoogleAuthProvider, signInWithPopup } from 'firebase/auth'; import { getStorage } from "firebase/storage"; @@ -16,7 +15,6 @@ const firebaseConfig = { // Initialize Firebase const app = initializeApp(firebaseConfig); -const analytics = getAnalytics(app); export const db = getFirestore(app); export const auth = getAuth(app); export const storage = getStorage(app); \ No newline at end of file diff --git a/src/HamburgerMenu.js b/src/HamburgerMenu.js index ec094d6..5930022 100644 --- a/src/HamburgerMenu.js +++ b/src/HamburgerMenu.js @@ -1,5 +1,3 @@ -import { useState, useEffect} from 'react'; - export default function Hamburger({ isOpen }){ return( <> @@ -171,10 +169,8 @@ export default function Hamburger({ isOpen }){ cursor: pointer; } } - - - `} - + + `} ) } \ No newline at end of file diff --git a/src/Login.js b/src/Login.js index e202168..5aec899 100644 --- a/src/Login.js +++ b/src/Login.js @@ -11,7 +11,6 @@ const headingStyle = { paddingTop: "30px" } - const Login = () => { const navigate = useNavigate(); const [ loginEmail, setLoginEmail ] = useState(""); @@ -19,11 +18,13 @@ const Login = () => { const [ user, setUser ] = useState({}); const [ windowHeight, setWindowHeight ] = useState(window.innerHeight); + onAuthStateChanged(auth, (currentUser) => { setUser(currentUser); localStorage.setItem("email", user?.email); }) + const login = async (e) => { e.preventDefault() @@ -41,8 +42,10 @@ const Login = () => { } } + const provider = new GoogleAuthProvider(); + const signInWithGoogle = () => { signInWithPopup(auth, provider) .then((result) => { @@ -58,7 +61,8 @@ const Login = () => { }) }; -useEffect(() => { + + useEffect(() => { const handleWindowResize = () => { setWindowHeight(window.innerHeight); }; @@ -70,6 +74,7 @@ useEffect(() => { }; }); + return (
@@ -120,4 +125,4 @@ useEffect(() => { ); } -export default Login; +export default Login; \ No newline at end of file diff --git a/src/Navbar.js b/src/Navbar.js index 30ca37d..617534e 100644 --- a/src/Navbar.js +++ b/src/Navbar.js @@ -6,7 +6,7 @@ import Modal from 'react-bootstrap/Modal'; import HamburgerMenu from './HamburgerMenu'; const Navbar = () => { - const [ isLoggedIn, setIsLoggedIn ] = useState(); + const [ isLoggedIn, setIsLoggedIn ] = useState(false); const [ showModal, setShowModal ] = useState(false); const handleClose = () => setShowModal(false); const handleShow = () => setShowModal(true); @@ -27,10 +27,10 @@ const Navbar = () => { } onAuthStateChanged(auth, (currentUser) => { - if(localStorage.getItem("email") !== "undefined"){ + if(localStorage.token !== null && localStorage.getItem("email") !== "undefined"){ setIsLoggedIn(true); } - else{ + else { setIsLoggedIn(false); } }) diff --git a/src/SignUp.js b/src/SignUp.js index c2d1dd1..0c7bbc3 100644 --- a/src/SignUp.js +++ b/src/SignUp.js @@ -1,5 +1,5 @@ import { useState, useEffect } from 'react'; -import { createUserWithEmailAndPassword, onAuthStateChanged } from 'firebase/auth'; +import { createUserWithEmailAndPassword, onAuthStateChanged, signInWithEmailAndPassword, GoogleAuthProvider, signInWithPopup } from 'firebase/auth'; import { useNavigate } from 'react-router-dom'; import { auth } from "./Firebase"; @@ -39,6 +39,25 @@ const SignUp = () => { } } + + const provider = new GoogleAuthProvider(); + + const signInWithGoogle = () => { + signInWithPopup(auth, provider) + .then((result) => { + const name = result.user.displayName; + localStorage.setItem("name", name); + alert('You are logged in'); + if((localStorage.getItem("email") !== "undefined")){ + navigate("../tidey/"); + } + }) + .catch((error) => { + console.log(error); + }) + }; + + useEffect(() => { const handleWindowResize = () => { setWindowHeight(window.innerHeight); @@ -77,6 +96,7 @@ const SignUp = () => {

Create a new Tidey account

+ diff --git a/src/Workload.js b/src/Workload.js index 4276a47..0016473 100644 --- a/src/Workload.js +++ b/src/Workload.js @@ -8,15 +8,14 @@ import { ref, uploadBytes, listAll, getDownloadURL, deleteObject } from "firebas import { v4 } from 'uuid'; import { getAuth, onAuthStateChanged } from "firebase/auth"; import { collection, getDocs } from 'firebase/firestore'; -import { isReactNative } from '@firebase/util'; -import { addDoc, doc, getDoc, deleteDoc, updateDoc} from 'firebase/firestore'; -import {FileMinus} from 'react-feather'; -import { calcLength } from 'framer-motion'; +import { doc, getDoc, updateDoc} from 'firebase/firestore'; +import { FileMinus } from 'react-feather'; const Workload = () => { const [ fileUpload, setFileUpload ] = useState(null); const [ showDeleteModal, setShowDeleteModal ] = useState(false); + const handleClose = () => setShowDeleteModal(false); const handleShow = () => setShowDeleteModal(true); @@ -25,17 +24,17 @@ const Workload = () => { const [ fileNameList, setFileNameList] = useState([]); const [ userID, setUserID ] = useState(); const [changesSaved, setChangesSaved] = useState(false); - const [ firstFile, setFirstFile ] = useState(true); + const [ firstUpdate, setFirstUpdate ] = useState(false); const [ currentURL, setCurrentURL] = useState("https://firebasestorage.googleapis.com/v0/b/tidey-db.appspot.com/o/DefaultTideyPDF.pdf?alt=media&token=668d2fd8-62dc-42d1-a9e1-a1687b45c213"); const [ newFileName, setNewFileName ] = useState(''); const [courses, setCourses] = useState(); + const coursesCollectionRef = collection(db, "courses"); const [currentCourse, setCurrentCourse] = useState(); - const [isFirstFile, setIsFirstFile] = useState(true); - - const auth = getAuth(); + const fileListRef = ref(storage, `${userID}/${id}`); + onAuthStateChanged(auth, (user) => { if (user) { @@ -43,12 +42,7 @@ const Workload = () => { } }); - const fileListRef = ref(storage, `${userID}/${id}`); - - - const uploadFile = () => { - if(fileUpload === null) { alert("Choose a file"); return; @@ -60,26 +54,13 @@ const Workload = () => { console.log(newFileName); const fileRef = ref(storage, `${userID}/${id}/${fileUpload.name + v4()}`); - - - /* WHY DOES THI SNOT WORK */ - setFileNameList((prev) => [...prev, newFileName]) - - - - - - console.log(fileNameList); - uploadBytes(fileRef, fileUpload).then((snapshot) => { getDownloadURL(snapshot.ref).then((url) => { setFileList((prev) => [...prev, url]) }) }) - - }; @@ -109,7 +90,7 @@ const Workload = () => { /* SETTING THE FILE NAME LIST NEW */ useEffect(() => { - if(currentCourse && currentCourse[0] != ''){ + if(currentCourse && currentCourse[0] !== ''){ setFileNameList(currentCourse.fileNameList); } }, [currentCourse]); diff --git a/src/index.css b/src/index.css index bb1889d..f2c85d8 100644 --- a/src/index.css +++ b/src/index.css @@ -592,12 +592,19 @@ code { display: flex; } +.grades-heading { + text-align: left; + padding-left: 50px; + display: block; + font-size: 20px; + font-family: 'Quicksand'; +} + label { text-align: left; display: block; font-size: 20px; font-family: 'Quicksand'; - padding-left: 50px; } input[type=course] { @@ -616,6 +623,24 @@ input[type=text] { border-radius: 7px; } +input[type=edit] { + font-family:'Courier New', Courier, monospace; + font-size: calc(2px + 2vmin); + color:rgb(19, 19, 19); + width: calc(190px + 2vmin); + border-radius: 7px; +} + +@media screen and (min-width: 394px) { + input[type=edit] { + font-family:'Courier New', Courier, monospace; + font-size: calc(2px + 2vmin); + color:rgb(19, 19, 19); + width: calc(120px + 2vmin); + border-radius: 7px; + } +} + input[type=description] { font-family:'Courier New', Courier, monospace; font-size: calc(2px + 2vmin); @@ -811,6 +836,11 @@ input[type=target] { font-size: calc(8px + 2vmin); } + .grades-heading { + padding-left: 18px; + font-size: calc(8px + 2vmin); + } + input[type=description] { font-size: calc(1px + 2vmin); width: 80px; @@ -927,6 +957,11 @@ input[type=target] { font-size: calc(8px + 2vmin); } + .grades-heading { + padding-left: 18px; + font-size: calc(8px + 2vmin); + } + input[type=description] { font-size: calc(1px + 2vmin); width: 100px; @@ -1045,6 +1080,11 @@ input[type=target] { font-size: calc(8px + 2vmin); } + .grades-heading { + padding-left: 18px; + font-size: calc(8px + 2vmin); + } + input[type=description] { font-size: calc(1px + 2vmin); width: 100px; From 7bc854050184f4a6887bc3f3ee20a45fdfef6292 Mon Sep 17 00:00:00 2001 From: uzFer <109243682+uzFer@users.noreply.github.com> Date: Wed, 11 Jan 2023 22:51:53 -0500 Subject: [PATCH 05/15] Deployed Website --- src/Navbar.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Navbar.js b/src/Navbar.js index 617534e..18812e0 100644 --- a/src/Navbar.js +++ b/src/Navbar.js @@ -27,7 +27,7 @@ const Navbar = () => { } onAuthStateChanged(auth, (currentUser) => { - if(localStorage.token !== null && localStorage.getItem("email") !== "undefined"){ + if(localStorage.getItem("email") !== null && localStorage.getItem("email") !== "undefined"){ setIsLoggedIn(true); } else { From 455f85d1760df050e497f1d67bf17bd2a92c4112 Mon Sep 17 00:00:00 2001 From: uzFer <109243682+uzFer@users.noreply.github.com> Date: Wed, 11 Jan 2023 23:18:26 -0500 Subject: [PATCH 06/15] Deployed Website --- src/Navbar.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Navbar.js b/src/Navbar.js index 18812e0..ef0b9ed 100644 --- a/src/Navbar.js +++ b/src/Navbar.js @@ -27,7 +27,7 @@ const Navbar = () => { } onAuthStateChanged(auth, (currentUser) => { - if(localStorage.getItem("email") !== null && localStorage.getItem("email") !== "undefined"){ + if(localStorage.email !== null && localStorage.getItem("email") !== "undefined"){ setIsLoggedIn(true); } else { @@ -36,8 +36,9 @@ const Navbar = () => { }) useEffect(() => { - console.log(isLoggedIn); - }, [isLoggedIn]) + if(!localStorage.email) + localStorage.setItem("email", "undefined"); + }, []) return (