Repository: Pong420/google-tasks-desktop Branch: master Commit: 100dedb61e77 Files: 185 Total size: 266.3 KB Directory structure: gitextract_58hd8j73/ ├── .eslintcache ├── .eslintignore ├── .gitignore ├── .prettierrc ├── LICENSE ├── Procfile ├── README.md ├── common.d.ts ├── config-overrides.js ├── electron/ │ ├── electron.d.ts │ ├── main.ts │ ├── menu.ts │ ├── preload/ │ │ ├── index.ts │ │ └── theme.ts │ ├── storage.ts │ └── tsconfig.json ├── mock-fs.js ├── package.json ├── public/ │ ├── icon/ │ │ └── icon.icns │ ├── index.html │ └── manifest.json ├── scripts/ │ ├── component.js │ ├── electron-wait-react.js │ ├── redux.js │ ├── template/ │ │ ├── store/ │ │ │ ├── actions.tmpl │ │ │ ├── epics.tmpl │ │ │ ├── reducers.tmpl │ │ │ └── store.tmpl │ │ └── useActions.tmpl │ └── type.js ├── src/ │ ├── App.tsx │ ├── components/ │ │ ├── AppRegion/ │ │ │ ├── AppRegion.scss │ │ │ ├── AppRegion.tsx │ │ │ ├── WindowsTitleBar.tsx │ │ │ └── index.ts │ │ ├── KeyboardShortcuts/ │ │ │ ├── KeyboardShortcuts.scss │ │ │ ├── KeyboardShortcuts.tsx │ │ │ ├── index.ts │ │ │ └── shortcuts.json │ │ ├── Mui/ │ │ │ ├── DeleteIcon.tsx │ │ │ ├── Dialog/ │ │ │ │ ├── ConfirmDialog.tsx │ │ │ │ ├── Dialog.scss │ │ │ │ ├── FormDialog.tsx │ │ │ │ ├── FullScreenDialog.tsx │ │ │ │ └── index.ts │ │ │ ├── Dropdown/ │ │ │ │ ├── Dropdown.scss │ │ │ │ ├── Dropdown.tsx │ │ │ │ └── index.ts │ │ │ ├── EditIcon.tsx │ │ │ ├── IconButton/ │ │ │ │ ├── IconButton.scss │ │ │ │ ├── IconButton.tsx │ │ │ │ └── index.ts │ │ │ ├── Input/ │ │ │ │ ├── Input.scss │ │ │ │ ├── Input.tsx │ │ │ │ └── index.ts │ │ │ ├── Menu/ │ │ │ │ ├── Menu.scss │ │ │ │ ├── Menu.tsx │ │ │ │ ├── MenuItem.tsx │ │ │ │ ├── index.ts │ │ │ │ └── useMuiMenu.ts │ │ │ ├── Tooltip.tsx │ │ │ └── index.ts │ │ ├── Preferences/ │ │ │ ├── AccentColor.tsx │ │ │ ├── Preferences.scss │ │ │ ├── Preferences.tsx │ │ │ ├── Storage.tsx │ │ │ ├── ThemeSelector.tsx │ │ │ ├── TitleBarSelector.tsx │ │ │ └── index.ts │ │ ├── PrivateRoute.tsx │ │ └── Switch/ │ │ ├── Switch.scss │ │ ├── Switch.tsx │ │ └── index.ts │ ├── constants/ │ │ ├── index.ts │ │ └── paths.json │ ├── date.d.ts │ ├── hooks/ │ │ ├── crud-reducer/ │ │ │ ├── bindDispatch.ts │ │ │ ├── crudAction.ts │ │ │ ├── crudReducer.ts │ │ │ ├── crudSelector.ts │ │ │ ├── index.ts │ │ │ ├── useActions.ts │ │ │ └── useCRUDReducer.ts │ │ ├── useActions.ts │ │ ├── useBoolean.ts │ │ └── useMouseTrap.ts │ ├── index.scss │ ├── index.tsx │ ├── pages/ │ │ ├── Auth/ │ │ │ ├── Auth.scss │ │ │ ├── Auth.tsx │ │ │ ├── FileUpload.tsx │ │ │ └── index.ts │ │ └── TaskList/ │ │ ├── CompletedTaskList/ │ │ │ ├── CompletedTaskList.scss │ │ │ ├── CompletedTaskList.tsx │ │ │ └── index.ts │ │ ├── NewTask/ │ │ │ ├── NewTask.scss │ │ │ ├── NewTask.tsx │ │ │ └── index.ts │ │ ├── Task/ │ │ │ ├── CompletedTask.tsx │ │ │ ├── DatePicker/ │ │ │ │ ├── DatePicker.scss │ │ │ │ ├── DatePicker.tsx │ │ │ │ └── index.ts │ │ │ ├── DateTimeDialog/ │ │ │ │ ├── DateTimeDialog.scss │ │ │ │ ├── DateTimeDialog.tsx │ │ │ │ └── index.ts │ │ │ ├── Task.scss │ │ │ ├── Task.tsx │ │ │ ├── TaskInput.tsx │ │ │ ├── TodoTask/ │ │ │ │ ├── TodoTask.scss │ │ │ │ ├── TodoTask.tsx │ │ │ │ ├── TodoTaskMenu.tsx │ │ │ │ └── index.ts │ │ │ ├── TodoTaskDetails/ │ │ │ │ ├── DateTimeButton.tsx │ │ │ │ ├── TodoTaskDetails.scss │ │ │ │ ├── TodoTaskDetails.tsx │ │ │ │ └── index.ts │ │ │ ├── ToggleCompleted.tsx │ │ │ └── index.ts │ │ ├── TaskList.scss │ │ ├── TaskList.tsx │ │ ├── TaskListDropdown/ │ │ │ ├── TaskListDropdown.scss │ │ │ ├── TaskListDropdown.tsx │ │ │ ├── TaskListDropdownItem.tsx │ │ │ └── index.ts │ │ ├── TaskListHeader/ │ │ │ ├── TaskListHeader.scss │ │ │ ├── TaskListHeader.tsx │ │ │ └── index.ts │ │ ├── TaskListMenu.tsx │ │ ├── TodoTaskList/ │ │ │ ├── TodoTaskList.scss │ │ │ ├── TodoTaskList.tsx │ │ │ ├── TodoTaskListByDate.tsx │ │ │ └── index.ts │ │ └── index.ts │ ├── react-app-env.d.ts │ ├── scss/ │ │ ├── _functions.scss │ │ ├── _mixins.scss │ │ ├── _platform.scss │ │ ├── _theme.scss │ │ ├── _variables.scss │ │ ├── index.scss │ │ └── mixins/ │ │ ├── _animation.scss │ │ ├── _background.scss │ │ ├── _border.scss │ │ ├── _electron.scss │ │ ├── _flex.scss │ │ ├── _font.scss │ │ ├── _position.scss │ │ ├── _size.scss │ │ ├── _textHighlight.scss │ │ └── _textOverflow.scss │ ├── service/ │ │ ├── auth.ts │ │ ├── index.ts │ │ ├── task.ts │ │ └── tasksList.ts │ ├── serviceWorker.ts │ ├── store/ │ │ ├── actions/ │ │ │ ├── auth.ts │ │ │ ├── index.ts │ │ │ ├── preferences.ts │ │ │ ├── task.ts │ │ │ └── taskList.ts │ │ ├── epics/ │ │ │ ├── auth.ts │ │ │ ├── index.ts │ │ │ ├── preferences.ts │ │ │ ├── task.ts │ │ │ └── taskList.ts │ │ ├── index.ts │ │ ├── reducers/ │ │ │ ├── auth.ts │ │ │ ├── index.ts │ │ │ ├── preferences.ts │ │ │ ├── task.ts │ │ │ └── taskList.ts │ │ └── selectors/ │ │ ├── index.ts │ │ ├── preferences.ts │ │ ├── task.ts │ │ └── taskList.ts │ ├── theme.ts │ ├── typings/ │ │ └── index.ts │ └── utils/ │ ├── date.ts │ ├── form/ │ │ ├── form.ts │ │ ├── index.ts │ │ ├── typings.ts │ │ └── validators.ts │ ├── nprogress.ts │ └── uuid.ts └── tsconfig.json ================================================ FILE CONTENTS ================================================ ================================================ FILE: .eslintcache ================================================ [{"/Users/Pong/Desktop/google-tasks-desktop/src/index.tsx":"1","/Users/Pong/Desktop/google-tasks-desktop/src/theme.ts":"2","/Users/Pong/Desktop/google-tasks-desktop/src/serviceWorker.ts":"3","/Users/Pong/Desktop/google-tasks-desktop/src/utils/date.ts":"4","/Users/Pong/Desktop/google-tasks-desktop/src/App.tsx":"5","/Users/Pong/Desktop/google-tasks-desktop/src/store/index.ts":"6","/Users/Pong/Desktop/google-tasks-desktop/src/components/PrivateRoute.tsx":"7","/Users/Pong/Desktop/google-tasks-desktop/src/components/AppRegion/index.ts":"8","/Users/Pong/Desktop/google-tasks-desktop/src/constants/index.ts":"9","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/index.ts":"10","/Users/Pong/Desktop/google-tasks-desktop/src/pages/Auth/index.ts":"11","/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/index.ts":"12","/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/index.ts":"13","/Users/Pong/Desktop/google-tasks-desktop/src/store/selectors/index.ts":"14","/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/index.ts":"15","/Users/Pong/Desktop/google-tasks-desktop/src/components/AppRegion/AppRegion.tsx":"16","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskList.tsx":"17","/Users/Pong/Desktop/google-tasks-desktop/src/pages/Auth/Auth.tsx":"18","/Users/Pong/Desktop/google-tasks-desktop/src/store/selectors/task.ts":"19","/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/auth.ts":"20","/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/taskList.ts":"21","/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/preferences.ts":"22","/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/task.ts":"23","/Users/Pong/Desktop/google-tasks-desktop/src/store/selectors/preferences.ts":"24","/Users/Pong/Desktop/google-tasks-desktop/src/store/selectors/taskList.ts":"25","/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/preferences.ts":"26","/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/auth.ts":"27","/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/taskList.ts":"28","/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/task.ts":"29","/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/preferences.ts":"30","/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/taskList.ts":"31","/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/task.ts":"32","/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/auth.ts":"33","/Users/Pong/Desktop/google-tasks-desktop/src/components/AppRegion/WindowsTitleBar.tsx":"34","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTask/TodoTaskMenu.tsx":"35","/Users/Pong/Desktop/google-tasks-desktop/src/utils/nprogress.ts":"36","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/CompletedTaskList/index.ts":"37","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TodoTaskList/index.ts":"38","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/index.ts":"39","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/NewTask/index.ts":"40","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListHeader/index.ts":"41","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTaskDetails/index.ts":"42","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/DateTimeDialog/index.ts":"43","/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/index.ts":"44","/Users/Pong/Desktop/google-tasks-desktop/src/pages/Auth/FileUpload.tsx":"45","/Users/Pong/Desktop/google-tasks-desktop/src/service/index.ts":"46","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/DeleteIcon.tsx":"47","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/DateTimeDialog/DateTimeDialog.tsx":"48","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTaskDetails/TodoTaskDetails.tsx":"49","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Tooltip.tsx":"50","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListHeader/TaskListHeader.tsx":"51","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/NewTask/NewTask.tsx":"52","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/EditIcon.tsx":"53","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TodoTaskList/TodoTaskList.tsx":"54","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/CompletedTaskList/CompletedTaskList.tsx":"55","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Input/index.ts":"56","/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/bindDispatch.ts":"57","/Users/Pong/Desktop/google-tasks-desktop/src/hooks/useBoolean.ts":"58","/Users/Pong/Desktop/google-tasks-desktop/src/service/auth.ts":"59","/Users/Pong/Desktop/google-tasks-desktop/src/service/tasksList.ts":"60","/Users/Pong/Desktop/google-tasks-desktop/src/service/task.ts":"61","/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/useCRUDReducer.ts":"62","/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/useActions.ts":"63","/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/crudSelector.ts":"64","/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/crudReducer.ts":"65","/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/crudAction.ts":"66","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Menu/index.ts":"67","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/IconButton/index.ts":"68","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dropdown/index.ts":"69","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dialog/index.ts":"70","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListMenu.tsx":"71","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTaskDetails/DateTimeButton.tsx":"72","/Users/Pong/Desktop/google-tasks-desktop/src/utils/uuid.ts":"73","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Input/Input.tsx":"74","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TodoTaskList/TodoTaskListByDate.tsx":"75","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Menu/useMuiMenu.ts":"76","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/index.ts":"77","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListDropdown/index.ts":"78","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Menu/MenuItem.tsx":"79","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dialog/FormDialog.tsx":"80","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dialog/FullScreenDialog.tsx":"81","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dialog/ConfirmDialog.tsx":"82","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dropdown/Dropdown.tsx":"83","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/IconButton/IconButton.tsx":"84","/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Menu/Menu.tsx":"85","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/DatePicker/index.ts":"86","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/CompletedTask.tsx":"87","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/Task.tsx":"88","/Users/Pong/Desktop/google-tasks-desktop/src/components/KeyboardShortcuts/index.ts":"89","/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/index.ts":"90","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListDropdown/TaskListDropdown.tsx":"91","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/DatePicker/DatePicker.tsx":"92","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTask/index.ts":"93","/Users/Pong/Desktop/google-tasks-desktop/src/components/KeyboardShortcuts/KeyboardShortcuts.tsx":"94","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TaskInput.tsx":"95","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/ToggleCompleted.tsx":"96","/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/Preferences.tsx":"97","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListDropdown/TaskListDropdownItem.tsx":"98","/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/Storage.tsx":"99","/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/TitleBarSelector.tsx":"100","/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/AccentColor.tsx":"101","/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/ThemeSelector.tsx":"102","/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTask/TodoTask.tsx":"103","/Users/Pong/Desktop/google-tasks-desktop/src/utils/form/index.ts":"104","/Users/Pong/Desktop/google-tasks-desktop/src/components/Switch/index.ts":"105","/Users/Pong/Desktop/google-tasks-desktop/src/hooks/useMouseTrap.ts":"106","/Users/Pong/Desktop/google-tasks-desktop/src/utils/form/validators.ts":"107","/Users/Pong/Desktop/google-tasks-desktop/src/utils/form/typings.ts":"108","/Users/Pong/Desktop/google-tasks-desktop/src/utils/form/form.ts":"109","/Users/Pong/Desktop/google-tasks-desktop/src/components/Switch/Switch.tsx":"110"},{"size":1110,"mtime":1592723488168,"results":"111","hashOfConfig":"112"},{"size":464,"mtime":1592723488209,"results":"113","hashOfConfig":"112"},{"size":5201,"mtime":1583162203748,"results":"114","hashOfConfig":"112"},{"size":6372,"mtime":1596981268283,"results":"115","hashOfConfig":"112"},{"size":637,"mtime":1602170576947,"results":"116","hashOfConfig":"112"},{"size":1495,"mtime":1592723488204,"results":"117","hashOfConfig":"112"},{"size":411,"mtime":1592723488156,"results":"118","hashOfConfig":"112"},{"size":109,"mtime":1592723488144,"results":"119","hashOfConfig":"112"},{"size":49,"mtime":1583162203742,"results":"120","hashOfConfig":"112"},{"size":105,"mtime":1592723488194,"results":"121","hashOfConfig":"112"},{"size":89,"mtime":1592723488170,"results":"122","hashOfConfig":"112"},{"size":298,"mtime":1592723488203,"results":"123","hashOfConfig":"112"},{"size":591,"mtime":1592723488206,"results":"124","hashOfConfig":"112"},{"size":83,"mtime":1602160477461,"results":"125","hashOfConfig":"112"},{"size":107,"mtime":1602241962356,"results":"126","hashOfConfig":"112"},{"size":944,"mtime":1603281840712,"results":"127","hashOfConfig":"112"},{"size":1803,"mtime":1602253317901,"results":"128","hashOfConfig":"112"},{"size":1882,"mtime":1596635930990,"results":"129","hashOfConfig":"112"},{"size":2086,"mtime":1592723488208,"results":"130","hashOfConfig":"112"},{"size":418,"mtime":1603022608231,"results":"131","hashOfConfig":"112"},{"size":1773,"mtime":1603022632549,"results":"132","hashOfConfig":"112"},{"size":501,"mtime":1603022622282,"results":"133","hashOfConfig":"112"},{"size":3465,"mtime":1603025000505,"results":"134","hashOfConfig":"112"},{"size":280,"mtime":1603198543118,"results":"135","hashOfConfig":"112"},{"size":1035,"mtime":1592723488208,"results":"136","hashOfConfig":"112"},{"size":594,"mtime":1602247007353,"results":"137","hashOfConfig":"112"},{"size":483,"mtime":1596981267967,"results":"138","hashOfConfig":"112"},{"size":2116,"mtime":1603026502618,"results":"139","hashOfConfig":"112"},{"size":6780,"mtime":1603199415382,"results":"140","hashOfConfig":"112"},{"size":2578,"mtime":1603198543117,"results":"141","hashOfConfig":"112"},{"size":3438,"mtime":1603024786959,"results":"142","hashOfConfig":"112"},{"size":9421,"mtime":1603023706197,"results":"143","hashOfConfig":"112"},{"size":917,"mtime":1592723488202,"results":"144","hashOfConfig":"112"},{"size":1437,"mtime":1613657053795,"results":"145","hashOfConfig":"112"},{"size":2267,"mtime":1602163027639,"results":"146","hashOfConfig":"112"},{"size":278,"mtime":1592723488210,"results":"147","hashOfConfig":"112"},{"size":141,"mtime":1592723488174,"results":"148","hashOfConfig":"112"},{"size":121,"mtime":1592723488194,"results":"149","hashOfConfig":"112"},{"size":218,"mtime":1602249256395,"results":"150","hashOfConfig":"112"},{"size":101,"mtime":1592723488175,"results":"151","hashOfConfig":"112"},{"size":129,"mtime":1592723488191,"results":"152","hashOfConfig":"112"},{"size":133,"mtime":1592723488185,"results":"153","hashOfConfig":"112"},{"size":129,"mtime":1592723488178,"results":"154","hashOfConfig":"112"},{"size":189,"mtime":1603021063330,"results":"155","hashOfConfig":"112"},{"size":2226,"mtime":1598365016422,"results":"156","hashOfConfig":"112"},{"size":77,"mtime":1592723488198,"results":"157","hashOfConfig":"112"},{"size":414,"mtime":1592723488146,"results":"158","hashOfConfig":"112"},{"size":1866,"mtime":1592723488178,"results":"159","hashOfConfig":"112"},{"size":4456,"mtime":1603281875394,"results":"160","hashOfConfig":"112"},{"size":1019,"mtime":1602252141332,"results":"161","hashOfConfig":"112"},{"size":1741,"mtime":1592723488191,"results":"162","hashOfConfig":"112"},{"size":924,"mtime":1592723488175,"results":"163","hashOfConfig":"112"},{"size":439,"mtime":1592723488150,"results":"164","hashOfConfig":"112"},{"size":2678,"mtime":1602165733249,"results":"165","hashOfConfig":"112"},{"size":1222,"mtime":1603198551652,"results":"166","hashOfConfig":"112"},{"size":93,"mtime":1592723488152,"results":"167","hashOfConfig":"112"},{"size":529,"mtime":1603021069621,"results":"168","hashOfConfig":"112"},{"size":333,"mtime":1592584359292,"results":"169","hashOfConfig":"112"},{"size":1231,"mtime":1592723488198,"results":"170","hashOfConfig":"112"},{"size":515,"mtime":1603022578891,"results":"171","hashOfConfig":"112"},{"size":1577,"mtime":1603023631481,"results":"172","hashOfConfig":"112"},{"size":1304,"mtime":1603021063330,"results":"173","hashOfConfig":"112"},{"size":389,"mtime":1603021063330,"results":"174","hashOfConfig":"112"},{"size":783,"mtime":1603021063330,"results":"175","hashOfConfig":"112"},{"size":5623,"mtime":1603026628327,"results":"176","hashOfConfig":"112"},{"size":4455,"mtime":1603026549170,"results":"177","hashOfConfig":"112"},{"size":147,"mtime":1592723488154,"results":"178","hashOfConfig":"112"},{"size":113,"mtime":1592723488151,"results":"179","hashOfConfig":"112"},{"size":105,"mtime":1592723488150,"results":"180","hashOfConfig":"112"},{"size":124,"mtime":1592723488149,"results":"181","hashOfConfig":"112"},{"size":4687,"mtime":1603024406906,"results":"182","hashOfConfig":"112"},{"size":782,"mtime":1592723488183,"results":"183","hashOfConfig":"112"},{"size":196,"mtime":1592723488210,"results":"184","hashOfConfig":"112"},{"size":536,"mtime":1602248414255,"results":"185","hashOfConfig":"112"},{"size":1442,"mtime":1592723488193,"results":"186","hashOfConfig":"112"},{"size":1736,"mtime":1592723488154,"results":"187","hashOfConfig":"112"},{"size":150,"mtime":1592723488186,"results":"188","hashOfConfig":"112"},{"size":137,"mtime":1592723488190,"results":"189","hashOfConfig":"112"},{"size":1270,"mtime":1592723488153,"results":"190","hashOfConfig":"112"},{"size":1797,"mtime":1592723488148,"results":"191","hashOfConfig":"112"},{"size":1991,"mtime":1606554789272,"results":"192","hashOfConfig":"112"},{"size":1528,"mtime":1603281840713,"results":"193","hashOfConfig":"112"},{"size":1618,"mtime":1592723488150,"results":"194","hashOfConfig":"112"},{"size":1054,"mtime":1592723488151,"results":"195","hashOfConfig":"112"},{"size":824,"mtime":1592723488153,"results":"196","hashOfConfig":"112"},{"size":113,"mtime":1592723488177,"results":"197","hashOfConfig":"112"},{"size":747,"mtime":1592723488176,"results":"198","hashOfConfig":"112"},{"size":1354,"mtime":1603198978400,"results":"199","hashOfConfig":"112"},{"size":141,"mtime":1592723488145,"results":"200","hashOfConfig":"112"},{"size":117,"mtime":1592723488155,"results":"201","hashOfConfig":"112"},{"size":2306,"mtime":1600613861713,"results":"202","hashOfConfig":"112"},{"size":3926,"mtime":1592723488176,"results":"203","hashOfConfig":"112"},{"size":105,"mtime":1592723488182,"results":"204","hashOfConfig":"112"},{"size":1158,"mtime":1606554168813,"results":"205","hashOfConfig":"112"},{"size":1292,"mtime":1592723488179,"results":"206","hashOfConfig":"112"},{"size":1347,"mtime":1603198986682,"results":"207","hashOfConfig":"112"},{"size":6039,"mtime":1606554168828,"results":"208","hashOfConfig":"112"},{"size":680,"mtime":1600613251466,"results":"209","hashOfConfig":"112"},{"size":445,"mtime":1602247724151,"results":"210","hashOfConfig":"112"},{"size":2056,"mtime":1603281840714,"results":"211","hashOfConfig":"112"},{"size":696,"mtime":1603198543110,"results":"212","hashOfConfig":"112"},{"size":685,"mtime":1603198543112,"results":"213","hashOfConfig":"112"},{"size":6951,"mtime":1603198952197,"results":"214","hashOfConfig":"112"},{"size":119,"mtime":1602247007354,"results":"215","hashOfConfig":"112"},{"size":97,"mtime":1592723488157,"results":"216","hashOfConfig":"112"},{"size":591,"mtime":1592723488167,"results":"217","hashOfConfig":"112"},{"size":3097,"mtime":1602247007355,"results":"218","hashOfConfig":"112"},{"size":1869,"mtime":1602247007355,"results":"219","hashOfConfig":"112"},{"size":8074,"mtime":1602249855641,"results":"220","hashOfConfig":"112"},{"size":697,"mtime":1592723488157,"results":"221","hashOfConfig":"112"},{"filePath":"222","messages":"223","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"b11wxz",{"filePath":"224","messages":"225","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"226","messages":"227","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"228","messages":"229","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"230","messages":"231","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"232","messages":"233","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"234","messages":"235","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"236","messages":"237","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"238","messages":"239","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"240","messages":"241","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"242","messages":"243","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"244","messages":"245","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"246","messages":"247","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"248","messages":"249","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"250","messages":"251","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"252","messages":"253","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"254","messages":"255","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"256","messages":"257","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"258","messages":"259","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"260","messages":"261","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"262","messages":"263","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"264","messages":"265","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"266","messages":"267","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"268","messages":"269","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"270","messages":"271","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"272","messages":"273","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"274","messages":"275","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"276","messages":"277","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"278","messages":"279","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"280","messages":"281","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"282","messages":"283","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"284","messages":"285","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"286","messages":"287","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"288","messages":"289","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"290","messages":"291","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"292","messages":"293","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"294","messages":"295","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"296","messages":"297","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"298","messages":"299","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"300","messages":"301","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"302","messages":"303","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"304","messages":"305","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"306","messages":"307","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"308","messages":"309","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"310","messages":"311","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"312","messages":"313","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"314","messages":"315","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"316","messages":"317","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"318","messages":"319","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"320","messages":"321","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"322","messages":"323","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"324","messages":"325","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"326","messages":"327","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"328","messages":"329","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"330","messages":"331","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"332","messages":"333","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"334","messages":"335","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"336","messages":"337","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"338","messages":"339","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"340","messages":"341","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"342","messages":"343","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"344","messages":"345","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"346","messages":"347","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"348","messages":"349","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"350","messages":"351","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"352","messages":"353","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"354","messages":"355","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"356","messages":"357","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"358","messages":"359","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"360","messages":"361","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"362","messages":"363","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"364","messages":"365","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"366","messages":"367","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"368","messages":"369","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"370","messages":"371","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"372","messages":"373","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"374","messages":"375","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"376","messages":"377","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"378","messages":"379","errorCount":0,"warningCount":1,"fixableErrorCount":0,"fixableWarningCount":0,"source":null},{"filePath":"380","messages":"381","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"382","messages":"383","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"384","messages":"385","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"386","messages":"387","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"388","messages":"389","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"390","messages":"391","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"392","messages":"393","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"394","messages":"395","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"396","messages":"397","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"398","messages":"399","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"400","messages":"401","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"402","messages":"403","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"404","messages":"405","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"406","messages":"407","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"408","messages":"409","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"410","messages":"411","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"412","messages":"413","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"414","messages":"415","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"416","messages":"417","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"418","messages":"419","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"420","messages":"421","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"422","messages":"423","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"424","messages":"425","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"426","messages":"427","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"428","messages":"429","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"430","messages":"431","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"432","messages":"433","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"434","messages":"435","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"436","messages":"437","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"438","messages":"439","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"440","messages":"441","errorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Users/Pong/Desktop/google-tasks-desktop/src/index.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/theme.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/serviceWorker.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/utils/date.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/App.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/PrivateRoute.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/AppRegion/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/constants/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/Auth/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/selectors/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/AppRegion/AppRegion.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskList.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/Auth/Auth.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/selectors/task.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/auth.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/taskList.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/preferences.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/actions/task.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/selectors/preferences.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/selectors/taskList.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/preferences.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/auth.ts",["442"],"/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/taskList.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/reducers/task.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/preferences.ts",["443"],"/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/taskList.ts",["444"],"/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/task.ts",["445"],"/Users/Pong/Desktop/google-tasks-desktop/src/store/epics/auth.ts",["446"],"/Users/Pong/Desktop/google-tasks-desktop/src/components/AppRegion/WindowsTitleBar.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTask/TodoTaskMenu.tsx",["447"],"/Users/Pong/Desktop/google-tasks-desktop/src/utils/nprogress.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/CompletedTaskList/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TodoTaskList/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/NewTask/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListHeader/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTaskDetails/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/DateTimeDialog/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/Auth/FileUpload.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/service/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/DeleteIcon.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/DateTimeDialog/DateTimeDialog.tsx",["448"],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTaskDetails/TodoTaskDetails.tsx",["449"],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Tooltip.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListHeader/TaskListHeader.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/NewTask/NewTask.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/EditIcon.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TodoTaskList/TodoTaskList.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/CompletedTaskList/CompletedTaskList.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Input/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/bindDispatch.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/hooks/useBoolean.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/service/auth.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/service/tasksList.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/service/task.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/useCRUDReducer.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/useActions.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/crudSelector.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/crudReducer.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/hooks/crud-reducer/crudAction.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Menu/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/IconButton/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dropdown/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dialog/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListMenu.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTaskDetails/DateTimeButton.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/utils/uuid.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Input/Input.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TodoTaskList/TodoTaskListByDate.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Menu/useMuiMenu.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListDropdown/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Menu/MenuItem.tsx",["450"],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dialog/FormDialog.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dialog/FullScreenDialog.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dialog/ConfirmDialog.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Dropdown/Dropdown.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/IconButton/IconButton.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Mui/Menu/Menu.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/DatePicker/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/CompletedTask.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/Task.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/KeyboardShortcuts/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListDropdown/TaskListDropdown.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/DatePicker/DatePicker.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTask/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/KeyboardShortcuts/KeyboardShortcuts.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TaskInput.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/ToggleCompleted.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/Preferences.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/TaskListDropdown/TaskListDropdownItem.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/Storage.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/TitleBarSelector.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/AccentColor.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Preferences/ThemeSelector.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/pages/TaskList/Task/TodoTask/TodoTask.tsx",[],"/Users/Pong/Desktop/google-tasks-desktop/src/utils/form/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Switch/index.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/hooks/useMouseTrap.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/utils/form/validators.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/utils/form/typings.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/utils/form/form.ts",[],"/Users/Pong/Desktop/google-tasks-desktop/src/components/Switch/Switch.tsx",[],{"ruleId":"451","severity":1,"message":"452","line":11,"column":1,"nodeType":"453","endLine":28,"endColumn":2},{"ruleId":"451","severity":1,"message":"454","line":83,"column":1,"nodeType":"453","endLine":83,"endColumn":52},{"ruleId":"451","severity":1,"message":"454","line":107,"column":1,"nodeType":"453","endLine":114,"endColumn":3},{"ruleId":"451","severity":1,"message":"454","line":320,"column":1,"nodeType":"453","endLine":329,"endColumn":3},{"ruleId":"451","severity":1,"message":"454","line":32,"column":1,"nodeType":"453","endLine":32,"endColumn":39},{"ruleId":"455","severity":1,"message":"456","line":33,"column":7,"nodeType":"457","messageId":"458","endLine":33,"endColumn":14},{"ruleId":"455","severity":1,"message":"456","line":33,"column":7,"nodeType":"457","messageId":"458","endLine":33,"endColumn":14},{"ruleId":"455","severity":1,"message":"456","line":46,"column":14,"nodeType":"457","messageId":"458","endLine":46,"endColumn":21},{"ruleId":"459","severity":1,"message":"460","line":45,"column":10,"nodeType":"457","endLine":45,"endColumn":21},"import/no-anonymous-default-export","Unexpected default export of anonymous function","ExportDefaultDeclaration","Assign array to a variable before exporting as module default","@typescript-eslint/no-redeclare","'Context' is already defined.","Identifier","redeclared","react-hooks/exhaustive-deps","React Hook useCallback received a function whose dependencies are unknown. Pass an inline function instead."] ================================================ FILE: .eslintignore ================================================ # Logs logs *.log # Runtime data pids *.pid *.seed # Directory for instrumented libs generated by jscoverage/JSCover lib-cov # Coverage directory used by tools like istanbul coverage # Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) .grunt # node-waf configuration .lock-wscript # Compiled binary addons (http://nodejs.org/api/addons.html) build/Release .eslintcache # Dependency directory # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git node_modules # OSX .DS_Store # flow-typed flow-typed/npm/* !flow-typed/npm/module_vx.x.x.js # App packaged release build electron/*.js .idea npm-debug.log.* __snapshots__ # Package.json package.json .travis.yml ================================================ FILE: .gitignore ================================================ # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. # dependencies /node_modules /.pnp .pnp.js # testing /coverage # production /build # misc .DS_Store .env.local .env.development.local .env.test.local .env.production.local npm-debug.log* yarn-debug.log* yarn-error.log* release electron/**/**/*.js electron/**/**/*.js.map *.tsbuildinfo ================================================ FILE: .prettierrc ================================================ { "overrides": [ { "files": [".prettierrc", ".babelrc", ".eslintrc", ".stylelintrc"], "options": { "parser": "json" } } ], "singleQuote": true, "trailingComma": "none", "arrowParens": "avoid" } ================================================ FILE: LICENSE ================================================ The MIT License (MIT) Copyright (c) 2015-present C. T. Lin Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: Procfile ================================================ react: npm run app:dev electron: node scripts/electron-wait-react.js && yarn electron:dev ================================================ FILE: README.md ================================================ ## Google Tasks Desktop > Unofficial google tasks desktop application. Using React and google tasks api
And the `oAuth.json` looks like this
```json
{
"installed": {
"client_id": "...",
"project_id": "...",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "...",
"redirect_uris": ["urn:ietf:wg:oauth:2.0:oob", "http://localhost"]
}
}
```
3. Start and drag the `oAuth.json` into the application.
4. Enable [Google Tasks API](https://console.developers.google.com/apis/library/tasks.googleapis.com)
5. Click on the `Get Code` button and will require authentication. Just ignore the `This app isn't verified` warning and continue because you are the app owner.
6. Paste the code into the input filed and click the `Confirm` button.
### Development
```
yarn dev
```
### Packaging
To package apps for the local platform:
```
yarn package
```
First, refer to the [Multi Platform Build docs](https://www.electron.build/multi-platform-build) for dependencies. Then,
```
yarn package-all
```
### TODO
- [x] Support Window & Linux
- [x] Keyboard shortcuts
- [x] Dark Theme
- [x] Add Note
- [x] Add Date
- [x] Animation
- [x] Sync data periodically
- [x] Move task to another list
- [x] Improve / check performace
- [ ] Subtask
- [ ] Error handling
### Known issue
- Add time / repeat is not supported as API limitation
- Tasks sorting type (My order / Date) is not synced to the official platform (Web/App)
- The position of the task which marks as complete to incomplete may be different after refresh
================================================
FILE: common.d.ts
================================================
type Theme = 'light' | 'dark';
type AccentColor = 'red' | 'blue' | 'amber' | 'green' | 'purple' | 'grey';
type TitleBar = 'native' | 'frameless';
interface Schema$Storage