diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b9e2a4..21bf7cd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,23 @@ # Changelog +## [0.2.3] - 2024-07-28 + +🎉 It's a new academic year, and here is a new version! 🎉 + +🍀 May this update bring you smooth sailing and great achievements ahead. 🍀 + +### Added + +- ✨ New parsing algorithm to support the updated format for 2024-25 academic year, backward compatibility is maintained. + +### Removed + +- 🔇 The startup notice regarding local storage data lost due to domain name change is removed. + +### Fixed + +- 👾 Fixed a bug where incorrectly formated local storage theme data causes error. + ## [0.2.2] - 2023-07-30 ### Added diff --git a/package-lock.json b/package-lock.json index 9a0f176..8ed5fdd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "hku-timetable-viewer", - "version": "0.2.1", + "version": "0.2.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "hku-timetable-viewer", - "version": "0.2.1", + "version": "0.2.3", "dependencies": { "@emotion/react": "^11.9.0", "@emotion/styled": "^11.8.1", @@ -2219,14 +2219,14 @@ "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" }, "node_modules/@emotion/react": { - "version": "11.9.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.3.tgz", - "integrity": "sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==", + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz", + "integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==", "dependencies": { "@babel/runtime": "^7.13.10", "@emotion/babel-plugin": "^11.7.1", - "@emotion/cache": "^11.9.3", - "@emotion/serialize": "^1.0.4", + "@emotion/cache": "^11.7.1", + "@emotion/serialize": "^1.0.3", "@emotion/utils": "^1.1.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" @@ -2262,14 +2262,14 @@ "integrity": "sha512-J3YPccVRMiTZxYAY0IOq3kd+hUP8idY8Kz6B/Cyo+JuXq52Ek+zbPbSQUrVQp95aJ+lsAW7DPL1P2Z+U1jGkKA==" }, "node_modules/@emotion/styled": { - "version": "11.9.3", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.9.3.tgz", - "integrity": "sha512-o3sBNwbtoVz9v7WB1/Y/AmXl69YHmei2mrVnK7JgyBJ//Rst5yqPZCecEJlMlJrFeWHp+ki/54uN265V2pEcXA==", + "version": "11.8.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.8.1.tgz", + "integrity": "sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==", "dependencies": { "@babel/runtime": "^7.13.10", "@emotion/babel-plugin": "^11.7.1", - "@emotion/is-prop-valid": "^1.1.3", - "@emotion/serialize": "^1.0.4", + "@emotion/is-prop-valid": "^1.1.2", + "@emotion/serialize": "^1.0.2", "@emotion/utils": "^1.1.0" }, "peerDependencies": { @@ -3112,18 +3112,18 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, "node_modules/@mui/base": { - "version": "5.0.0-alpha.90", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.90.tgz", - "integrity": "sha512-hNKwzr+RkiuGsGrakz8Q2i5ezr4Dz4b4Qsdipt9SiMrhuFAra/i501VSaEIzwec9LC4G+vtW4fE7yJBB0XaAYw==", + "version": "5.0.0-alpha.82", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.82.tgz", + "integrity": "sha512-WUVDjCGnLXzmGxrmfW31blhucg0sRX4YddK2Falq7FlVzwdJaPgWn/xzPZmdLL0+WXon0gQVnDrq2qvggE/GMg==", "dependencies": { "@babel/runtime": "^7.17.2", - "@emotion/is-prop-valid": "^1.1.3", - "@mui/types": "^7.1.4", - "@mui/utils": "^5.9.1", + "@emotion/is-prop-valid": "^1.1.2", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.8.0", "@popperjs/core": "^2.11.5", - "clsx": "^1.2.1", + "clsx": "^1.1.1", "prop-types": "^15.8.1", - "react-is": "^18.2.0" + "react-is": "^17.0.2" }, "engines": { "node": ">=12.0.0" @@ -3143,15 +3143,10 @@ } } }, - "node_modules/@mui/base/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, "node_modules/@mui/icons-material": { - "version": "5.8.4", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.4.tgz", - "integrity": "sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.0.tgz", + "integrity": "sha512-ScwLxa0q5VYV70Jfc60V/9VD0b9SvIeZ0Jddx2Dt2pBUFFO9vKdrbt9LYiT+4p21Au5NdYIb2XSHj46CLN1v3g==", "dependencies": { "@babel/runtime": "^7.17.2" }, @@ -3174,20 +3169,21 @@ } }, "node_modules/@mui/material": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.9.1.tgz", - "integrity": "sha512-c09SbaMm7Rl7Df9JRkXwPWNbnfrutmHERTJC46OJ9OMAM9+HGQihIbGln1k2Xj65jb3E+G498FZFAoSrrBDvwQ==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.1.tgz", + "integrity": "sha512-Vl3BHFzOcAT5TJfvzoQUyuo/Xckn+/NSRyJ8upM4Hbz6Y1egW6P8f1RCa4FdkEfPSd5wSSYdmPfAiEh8eI4rPg==", "dependencies": { "@babel/runtime": "^7.17.2", - "@mui/base": "5.0.0-alpha.90", - "@mui/system": "^5.9.1", - "@mui/types": "^7.1.4", - "@mui/utils": "^5.9.1", - "@types/react-transition-group": "^4.4.5", - "clsx": "^1.2.1", - "csstype": "^3.1.0", + "@mui/base": "5.0.0-alpha.82", + "@mui/system": "^5.8.1", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.8.0", + "@types/react-transition-group": "^4.4.4", + "clsx": "^1.1.1", + "csstype": "^3.0.11", + "hoist-non-react-statics": "^3.3.2", "prop-types": "^15.8.1", - "react-is": "^18.2.0", + "react-is": "^17.0.2", "react-transition-group": "^4.4.2" }, "engines": { @@ -3216,11 +3212,6 @@ } } }, - "node_modules/@mui/material/node_modules/react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - }, "node_modules/@mui/private-theming": { "version": "5.9.1", "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.9.1.tgz", @@ -3464,9 +3455,9 @@ } }, "node_modules/@popperjs/core": { - "version": "2.11.5", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", - "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==", + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -18670,14 +18661,14 @@ "integrity": "sha512-igX9a37DR2ZPGYtV6suZ6whr8pTFtyHL3K/oLUotxpSVO2ASaprmAe2Dkq7tBo7CRY7MMDrAa9nuQP9/YG8FxQ==" }, "@emotion/react": { - "version": "11.9.3", - "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.3.tgz", - "integrity": "sha512-g9Q1GcTOlzOEjqwuLF/Zd9LC+4FljjPjDfxSM7KmEakm+hsHXk+bYZ2q+/hTJzr0OUNkujo72pXLQvXj6H+GJQ==", + "version": "11.9.0", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.9.0.tgz", + "integrity": "sha512-lBVSF5d0ceKtfKCDQJveNAtkC7ayxpVlgOohLgXqRwqWr9bOf4TZAFFyIcNngnV6xK6X4x2ZeXq7vliHkoVkxQ==", "requires": { "@babel/runtime": "^7.13.10", "@emotion/babel-plugin": "^11.7.1", - "@emotion/cache": "^11.9.3", - "@emotion/serialize": "^1.0.4", + "@emotion/cache": "^11.7.1", + "@emotion/serialize": "^1.0.3", "@emotion/utils": "^1.1.0", "@emotion/weak-memoize": "^0.2.5", "hoist-non-react-statics": "^3.3.1" @@ -18701,14 +18692,14 @@ "integrity": "sha512-J3YPccVRMiTZxYAY0IOq3kd+hUP8idY8Kz6B/Cyo+JuXq52Ek+zbPbSQUrVQp95aJ+lsAW7DPL1P2Z+U1jGkKA==" }, "@emotion/styled": { - "version": "11.9.3", - "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.9.3.tgz", - "integrity": "sha512-o3sBNwbtoVz9v7WB1/Y/AmXl69YHmei2mrVnK7JgyBJ//Rst5yqPZCecEJlMlJrFeWHp+ki/54uN265V2pEcXA==", + "version": "11.8.1", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.8.1.tgz", + "integrity": "sha512-OghEVAYBZMpEquHZwuelXcRjRJQOVayvbmNR0zr174NHdmMgrNkLC6TljKC5h9lZLkN5WGrdUcrKlOJ4phhoTQ==", "requires": { "@babel/runtime": "^7.13.10", "@emotion/babel-plugin": "^11.7.1", - "@emotion/is-prop-valid": "^1.1.3", - "@emotion/serialize": "^1.0.4", + "@emotion/is-prop-valid": "^1.1.2", + "@emotion/serialize": "^1.0.2", "@emotion/utils": "^1.1.0" } }, @@ -19333,58 +19324,45 @@ "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==" }, "@mui/base": { - "version": "5.0.0-alpha.90", - "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.90.tgz", - "integrity": "sha512-hNKwzr+RkiuGsGrakz8Q2i5ezr4Dz4b4Qsdipt9SiMrhuFAra/i501VSaEIzwec9LC4G+vtW4fE7yJBB0XaAYw==", + "version": "5.0.0-alpha.82", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-alpha.82.tgz", + "integrity": "sha512-WUVDjCGnLXzmGxrmfW31blhucg0sRX4YddK2Falq7FlVzwdJaPgWn/xzPZmdLL0+WXon0gQVnDrq2qvggE/GMg==", "requires": { "@babel/runtime": "^7.17.2", - "@emotion/is-prop-valid": "^1.1.3", - "@mui/types": "^7.1.4", - "@mui/utils": "^5.9.1", + "@emotion/is-prop-valid": "^1.1.2", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.8.0", "@popperjs/core": "^2.11.5", - "clsx": "^1.2.1", + "clsx": "^1.1.1", "prop-types": "^15.8.1", - "react-is": "^18.2.0" - }, - "dependencies": { - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - } + "react-is": "^17.0.2" } }, "@mui/icons-material": { - "version": "5.8.4", - "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.4.tgz", - "integrity": "sha512-9Z/vyj2szvEhGWDvb+gG875bOGm8b8rlHBKOD1+nA3PcgC3fV6W1AU6pfOorPeBfH2X4mb9Boe97vHvaSndQvA==", + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.8.0.tgz", + "integrity": "sha512-ScwLxa0q5VYV70Jfc60V/9VD0b9SvIeZ0Jddx2Dt2pBUFFO9vKdrbt9LYiT+4p21Au5NdYIb2XSHj46CLN1v3g==", "requires": { "@babel/runtime": "^7.17.2" } }, "@mui/material": { - "version": "5.9.1", - "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.9.1.tgz", - "integrity": "sha512-c09SbaMm7Rl7Df9JRkXwPWNbnfrutmHERTJC46OJ9OMAM9+HGQihIbGln1k2Xj65jb3E+G498FZFAoSrrBDvwQ==", + "version": "5.8.1", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.8.1.tgz", + "integrity": "sha512-Vl3BHFzOcAT5TJfvzoQUyuo/Xckn+/NSRyJ8upM4Hbz6Y1egW6P8f1RCa4FdkEfPSd5wSSYdmPfAiEh8eI4rPg==", "requires": { "@babel/runtime": "^7.17.2", - "@mui/base": "5.0.0-alpha.90", - "@mui/system": "^5.9.1", - "@mui/types": "^7.1.4", - "@mui/utils": "^5.9.1", - "@types/react-transition-group": "^4.4.5", - "clsx": "^1.2.1", - "csstype": "^3.1.0", + "@mui/base": "5.0.0-alpha.82", + "@mui/system": "^5.8.1", + "@mui/types": "^7.1.3", + "@mui/utils": "^5.8.0", + "@types/react-transition-group": "^4.4.4", + "clsx": "^1.1.1", + "csstype": "^3.0.11", + "hoist-non-react-statics": "^3.3.2", "prop-types": "^15.8.1", - "react-is": "^18.2.0", + "react-is": "^17.0.2", "react-transition-group": "^4.4.2" - }, - "dependencies": { - "react-is": { - "version": "18.2.0", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", - "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" - } } }, "@mui/private-theming": { @@ -19500,9 +19478,9 @@ } }, "@popperjs/core": { - "version": "2.11.5", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.5.tgz", - "integrity": "sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==" + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==" }, "@rollup/plugin-babel": { "version": "5.3.1", diff --git a/package.json b/package.json index 08e7dc1..9e8872f 100644 --- a/package.json +++ b/package.json @@ -1,55 +1,55 @@ { - "name": "hku-timetable-viewer", - "version": "0.2.2", - "private": true, - "homepage": "http://lioqing.github.io/hku-timetable-viewer", - "dependencies": { - "@emotion/react": "^11.9.0", - "@emotion/styled": "^11.8.1", - "@mui/icons-material": "^5.8.0", - "@mui/material": "^5.8.1", - "@mui/x-data-grid": "^5.13.1", - "@testing-library/jest-dom": "^5.16.4", - "@testing-library/react": "^13.3.0", - "@testing-library/user-event": "^13.5.0", - "file-saver": "^2.0.5", - "lz-string": "^1.5.0", - "react": "^18.2.0", - "react-dom": "^18.2.0", - "react-scripts": "5.0.1", - "typescript": "^4.7.4", - "web-vitals": "^2.1.4", - "xlsx": "^0.18.5" - }, - "scripts": { - "start": "react-scripts start WATCHPACK_POLLING=true", - "build": "react-scripts build", - "test": "react-scripts test", - "eject": "react-scripts eject" - }, - "eslintConfig": { - "extends": [ - "react-app", - "react-app/jest" - ] - }, - "browserslist": { - "production": [ - ">0.2%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "devDependencies": { - "@types/file-saver": "^2.0.5", - "@types/jest": "^27.5.2", - "@types/node": "^16.11.45", - "@types/react": "^18.0.15", - "@types/react-dom": "^18.0.6" - } -} \ No newline at end of file + "name": "hku-timetable-viewer", + "version": "0.2.3", + "private": true, + "homepage": "http://lioqing.github.io/hku-timetable-viewer", + "dependencies": { + "@emotion/react": "^11.9.0", + "@emotion/styled": "^11.8.1", + "@mui/icons-material": "^5.8.0", + "@mui/material": "^5.8.1", + "@mui/x-data-grid": "^5.13.1", + "@testing-library/jest-dom": "^5.16.4", + "@testing-library/react": "^13.3.0", + "@testing-library/user-event": "^13.5.0", + "file-saver": "^2.0.5", + "lz-string": "^1.5.0", + "react": "^18.2.0", + "react-dom": "^18.2.0", + "react-scripts": "5.0.1", + "typescript": "^4.7.4", + "web-vitals": "^2.1.4", + "xlsx": "^0.18.5" + }, + "scripts": { + "start": "react-scripts start WATCHPACK_POLLING=true", + "build": "react-scripts build", + "test": "react-scripts test", + "eject": "react-scripts eject" + }, + "eslintConfig": { + "extends": [ + "react-app", + "react-app/jest" + ] + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "devDependencies": { + "@types/file-saver": "^2.0.5", + "@types/jest": "^27.5.2", + "@types/node": "^16.11.45", + "@types/react": "^18.0.15", + "@types/react-dom": "^18.0.6" + } +} diff --git a/src/App.tsx b/src/App.tsx index 3276c2d..9e5afc7 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -4,27 +4,11 @@ import Selection from './components/Selection'; import Timetable from './components/Timetable'; import TimetableProvider from './components/TimetableProvider'; import SettingsProvider from './components/SettingsProvider'; -import StartUpNotice from './components/StartUpNotice'; -import Typography from '@mui/material/Typography'; -import { Link } from '@mui/material'; const App = () => { return ( - - - Since 2023 September 1, all previous saved timetables on the browser's local storage - are lost due to domain name change, this issue has been known and hasn't been fixed - since 2016 on GitHub ( - - https://github.com/isaacs/github/issues/547 - - ).

- We are sincerely - sorry for the inconvenience caused. -
-
diff --git a/src/components/DownloadUpload.tsx b/src/components/DownloadUpload.tsx index 3d37324..671aee7 100644 --- a/src/components/DownloadUpload.tsx +++ b/src/components/DownloadUpload.tsx @@ -37,6 +37,9 @@ const LoadWorkbook = (buff: ArrayBuffer, timetable: Timetable) => { var courses: Map = new Map(); for (const row of json) { const data = row as any; + for (const key in data) { + data[key.trim()] = data[key]; + } const key: string = `${data['COURSE CODE']}-${data['CLASS SECTION']}`; const time = CourseTime.fromData(data); diff --git a/src/components/SettingsProvider.tsx b/src/components/SettingsProvider.tsx index 0e0093b..e01bae2 100644 --- a/src/components/SettingsProvider.tsx +++ b/src/components/SettingsProvider.tsx @@ -27,9 +27,6 @@ const themes = { palette: { mode: 'light', }, - transitions: { - - } }), [ThemeMode.Dark]: createTheme({ ...defaultTheme, diff --git a/src/utils/CourseTime.ts b/src/utils/CourseTime.ts index 05c4b30..6306b54 100644 --- a/src/utils/CourseTime.ts +++ b/src/utils/CourseTime.ts @@ -30,16 +30,33 @@ class CourseTime { } static fromData(data: any): CourseTime { + console.log(data); return new CourseTime( - new Date(data['START DATE']), - new Date(data['END DATE']), - new Date(`1970-01-01T${data['START TIME']}`), - new Date(`1970-01-01T${data['END TIME']}`), + CourseTime.dateFromExcel(data['START DATE']), + CourseTime.dateFromExcel(data['END DATE']), + CourseTime.timeFromExcel(data['START TIME']), + CourseTime.timeFromExcel(data['END TIME']), CourseTime.getDayBoolArray(data), data['VENUE'], ); } + static dateFromExcel(data: any): Date { + if (typeof data === 'number') { + return new Date((data - 25569) * 86400000); + } + return new Date(data); + } + + static timeFromExcel(data: any): Date { + if (typeof data === 'number') { + let date = new Date(1970, 1, 1); + date.setMilliseconds(data * 86400000); + return date; + } + return new Date(`1970-01-01T${data}`); + } + private static getDayBoolArray(days: any): boolean[] { const daysName = ['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN']; diff --git a/src/utils/Storage.ts b/src/utils/Storage.ts index cc12015..bf0106d 100644 --- a/src/utils/Storage.ts +++ b/src/utils/Storage.ts @@ -106,7 +106,7 @@ const loadSettings = (): Settings => { const item = localStorage.getItem('settings'); if (item === null) return { themeMode: ThemeMode.Light }; const settings = JSON.parse(item); - console.log(settings); + if (settings.themeMode === undefined) return { themeMode: ThemeMode.Light }; return settings; };