├── .babelrc
├── .gitignore
├── Old-alarm-clock-sound.mp3
├── README.md
├── background.js
├── manifest.json
├── notification128.png
├── notification16.png
├── notification32.png
├── package-lock.json
├── package.json
├── public
├── delete.svg
├── dist
│ ├── 0.bundle.js
│ ├── bundle.js
│ └── index.html
└── template.html
├── src
├── Utils
│ └── Logger.js
├── components
│ ├── App.js
│ ├── BottomNavigation.js
│ ├── Button.js
│ ├── Input.js
│ ├── InputSelect.js
│ ├── ScheduleAlarmContainer.js
│ ├── Select.js
│ └── TasksContainer.js
├── index.js
└── style.scss
└── webpack.config.js
/.babelrc:
--------------------------------------------------------------------------------
1 | {
2 | "presets": ["@babel/preset-env", "@babel/preset-react"],
3 | "plugins": ["@babel/plugin-syntax-dynamic-import"]
4 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .history
2 | /node_modules
--------------------------------------------------------------------------------
/Old-alarm-clock-sound.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geekyarjun/task-alarm-chrome-extension/85ce12f3715d72c7bef549872ae7909a4cf8be4f/Old-alarm-clock-sound.mp3
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Task-alarm-chrome-extension
2 | This is a simple chrome-extension, in which one can set alarm or reminder for tasks, and it will remind them of the task.
3 | ## How to install
4 | 1. First download or clone this repo.
5 | 2. If you have downloaded please extract the code somewhere and run ```npm i```
6 | 1. Now to install this you simply need to open Google Chrome Browser.
7 | 2. Click on menu i.e three dots on the top right corner.
8 | 3. Then click on ```More Tools``` and then you will see ```Extension``` option just click on it
9 | 4. Now extension page should open, show from top right corner turn on the ```Developer Mode``` if not already turned on.
10 | 5. You should see an option ```Load Unpacked``` click on it, and choose folder you have extracted, in step 2.
11 | 6. Now the extension should appear on you broswer's extension bar.
12 | 7. Go and play around it.
13 |
14 | Any suggestion and changes are welcome.
15 |
16 |
17 |
18 | The extension look as this:
19 |
--------------------------------------------------------------------------------
/background.js:
--------------------------------------------------------------------------------
1 |
2 | // listener for alarm, execute when an alarm has elasped
3 | chrome.alarms.onAlarm.addListener((alarm) => {
4 | console.log("alarm", alarm);
5 | chrome.notifications.create({
6 | type: 'basic',
7 | iconUrl: 'notification32.png',
8 | title: 'Alarm',
9 | message: alarm.name,
10 | buttons: [{
11 | title: 'Keep it Flowing.'
12 | }],
13 | priority: 0
14 | });
15 | const audio = new Audio('./Old-alarm-clock-sound.mp3');
16 | audio.play();
17 | })
18 |
19 | // chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
20 | // console.log('tabId, changeInfo, tab', tabId, changeInfo, tab);
21 | // chrome.storage.sync.get('alarmData', (storage) => {
22 | // console.log('storage', storage);
23 |
24 | // if (storage.alarmData.length) {
25 |
26 | // } else {
27 |
28 | // }
29 | // });
30 | // })
--------------------------------------------------------------------------------
/manifest.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "Task Alert",
3 | "description": "It is used for making notes/tasks with an alarm",
4 | "version": "0.0.1",
5 | "manifest_version": 2,
6 | "permissions": [
7 | "alarms",
8 | "notifications",
9 | "storage",
10 | "tabs"
11 | ],
12 | "browser_action": {
13 | "default_title": "Task Alarm",
14 | "default_popup": "public/dist/index.html"
15 | },
16 | "background": {
17 | "scripts": [
18 | "background.js"
19 | ],
20 | "persistent": false
21 | },
22 | "icons": {
23 | "16": "notification16.png",
24 | "32": "notification32.png",
25 | "128": "notification128.png"
26 | },
27 | "content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"
28 | }
--------------------------------------------------------------------------------
/notification128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geekyarjun/task-alarm-chrome-extension/85ce12f3715d72c7bef549872ae7909a4cf8be4f/notification128.png
--------------------------------------------------------------------------------
/notification16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geekyarjun/task-alarm-chrome-extension/85ce12f3715d72c7bef549872ae7909a4cf8be4f/notification16.png
--------------------------------------------------------------------------------
/notification32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/geekyarjun/task-alarm-chrome-extension/85ce12f3715d72c7bef549872ae7909a4cf8be4f/notification32.png
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "task-alert",
3 | "version": "0.0.1",
4 | "description": "It is an chrome-extension that will usefull for making tasks with alarm",
5 | "main": "background.js",
6 | "scripts": {
7 | "start": "webpack --mode development --watch",
8 | "build": "webpack --mode production",
9 | "test": "echo \"Error: no test specified\" && exit 1"
10 | },
11 | "keywords": [
12 | "task",
13 | "alert"
14 | ],
15 | "author": "Arjun Shrivastava",
16 | "license": "ISC",
17 | "dependencies": {},
18 | "devDependencies": {
19 | "@babel/core": "^7.3.4",
20 | "@babel/plugin-syntax-dynamic-import": "^7.2.0",
21 | "@babel/preset-env": "^7.3.4",
22 | "@babel/preset-react": "^7.0.0",
23 | "babel-loader": "^8.0.5",
24 | "css-loader": "^2.1.0",
25 | "html-webpack-plugin": "^3.2.0",
26 | "node-sass": "^4.11.0",
27 | "react": "^16.8.3",
28 | "react-dom": "^16.8.3",
29 | "sass-loader": "^7.1.0",
30 | "style-loader": "^0.23.1",
31 | "webpack": "^4.29.5",
32 | "webpack-cli": "^3.2.3"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/public/delete.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
45 |
--------------------------------------------------------------------------------
/public/dist/0.bundle.js:
--------------------------------------------------------------------------------
1 | (window["webpackJsonp"] = window["webpackJsonp"] || []).push([[0],{
2 |
3 | /***/ "./src/Utils/Logger.js":
4 | /*!*****************************!*\
5 | !*** ./src/Utils/Logger.js ***!
6 | \*****************************/
7 | /*! exports provided: default */
8 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
9 |
10 | "use strict";
11 | eval("__webpack_require__.r(__webpack_exports__);\nvar logger = function logger(text, values) {\n console.log(text, values);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (logger);\n\n//# sourceURL=webpack:///./src/Utils/Logger.js?");
12 |
13 | /***/ }),
14 |
15 | /***/ "./src/components/App.js":
16 | /*!*******************************!*\
17 | !*** ./src/components/App.js ***!
18 | \*******************************/
19 | /*! exports provided: default */
20 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
21 |
22 | "use strict";
23 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ScheduleAlarmContainer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ScheduleAlarmContainer */ \"./src/components/ScheduleAlarmContainer.js\");\n/* harmony import */ var _BottomNavigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./BottomNavigation */ \"./src/components/BottomNavigation.js\");\n/* harmony import */ var _TasksContainer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TasksContainer */ \"./src/components/TasksContainer.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\nvar App = function App() {\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])('Set Alarm'),\n _useState2 = _slicedToArray(_useState, 2),\n showAlarmsList = _useState2[0],\n setAlarmView = _useState2[1];\n\n console.log('showAlarmsList', showAlarmsList);\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"container\"\n }, showAlarmsList === 'Set Alarm' ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_ScheduleAlarmContainer__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null) : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_TasksContainer__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_BottomNavigation__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n links: ['Set Alarm', '|', 'Show Tasks'],\n className: \"bottomNavigation\",\n onClick: setAlarmView,\n active: showAlarmsList\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n id: \"snackbar\"\n }, \"Alarm set\"));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (App);\n\n//# sourceURL=webpack:///./src/components/App.js?");
24 |
25 | /***/ }),
26 |
27 | /***/ "./src/components/BottomNavigation.js":
28 | /*!********************************************!*\
29 | !*** ./src/components/BottomNavigation.js ***!
30 | \********************************************/
31 | /*! exports provided: default */
32 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
33 |
34 | "use strict";
35 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar addPipeBetweenLinks = function addPipeBetweenLinks(links, _onClick, active) {\n return links.map(function (link, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n key: index,\n onClick: function onClick(e) {\n e.preventDefault();\n\n _onClick(link === '|' ? active : link);\n },\n className: active === link ? 'activeBottomNav' : ''\n }, link); // if (index === links.length - 1) return {e.preventDefault(); onClick(link)}}>{link}\n // return {e.preventDefault(); onClick(link)}} className={active === link ? 'activeBottomNav' : ''}>{link}|\n });\n};\n\nvar BottomNavigation = function BottomNavigation(_ref) {\n var links = _ref.links,\n className = _ref.className,\n onClick = _ref.onClick,\n active = _ref.active;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: className\n }, addPipeBetweenLinks(links, onClick, active));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (BottomNavigation);\n\n//# sourceURL=webpack:///./src/components/BottomNavigation.js?");
36 |
37 | /***/ }),
38 |
39 | /***/ "./src/components/Button.js":
40 | /*!**********************************!*\
41 | !*** ./src/components/Button.js ***!
42 | \**********************************/
43 | /*! exports provided: default */
44 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
45 |
46 | "use strict";
47 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar Button = function Button(_ref) {\n var value = _ref.value,\n onClick = _ref.onClick,\n name = _ref.name,\n className = _ref.className;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"button\", {\n onClick: onClick,\n name: name,\n className: className\n }, value);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Button);\n\n//# sourceURL=webpack:///./src/components/Button.js?");
48 |
49 | /***/ }),
50 |
51 | /***/ "./src/components/Input.js":
52 | /*!*********************************!*\
53 | !*** ./src/components/Input.js ***!
54 | \*********************************/
55 | /*! exports provided: default */
56 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
57 |
58 | "use strict";
59 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nvar Input = react__WEBPACK_IMPORTED_MODULE_0___default.a.forwardRef(function (_ref, ref) {\n var type = _ref.type,\n placeholder = _ref.placeholder,\n value = _ref.value,\n _onChange = _ref.onChange,\n name = _ref.name,\n className = _ref.className;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"input\", {\n type: type,\n placeholder: placeholder,\n value: value,\n onChange: function onChange(e) {\n return _onChange(e.target.value);\n },\n name: name,\n className: className,\n ref: ref\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Input);\n\n//# sourceURL=webpack:///./src/components/Input.js?");
60 |
61 | /***/ }),
62 |
63 | /***/ "./src/components/InputSelect.js":
64 | /*!***************************************!*\
65 | !*** ./src/components/InputSelect.js ***!
66 | \***************************************/
67 | /*! exports provided: default */
68 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
69 |
70 | "use strict";
71 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Input__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Input */ \"./src/components/Input.js\");\n/* harmony import */ var _Select__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Select */ \"./src/components/Select.js\");\n\n\n\nvar InputSelect = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (_ref, ref) {\n var inputPlaceHolder = _ref.inputPlaceHolder,\n inputValue = _ref.inputValue,\n inputOnchange = _ref.inputOnchange,\n selectValue = _ref.selectValue,\n selectOnchange = _ref.selectOnchange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"inputSelect\",\n ref: ref\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Input__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n type: \"number\",\n placeholder: inputPlaceHolder,\n name: \"minsecTime\",\n value: inputValue,\n onChange: inputOnchange\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Select__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n name: \"minsec\",\n options: [\"s\", \"m\"],\n value: selectValue,\n onChange: selectOnchange\n }));\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (InputSelect);\n\n//# sourceURL=webpack:///./src/components/InputSelect.js?");
72 |
73 | /***/ }),
74 |
75 | /***/ "./src/components/ScheduleAlarmContainer.js":
76 | /*!**************************************************!*\
77 | !*** ./src/components/ScheduleAlarmContainer.js ***!
78 | \**************************************************/
79 | /*! exports provided: default */
80 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
81 |
82 | "use strict";
83 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Input__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Input */ \"./src/components/Input.js\");\n/* harmony import */ var _Select__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Select */ \"./src/components/Select.js\");\n/* harmony import */ var _Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Button */ \"./src/components/Button.js\");\n/* harmony import */ var _Utils_Logger__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Utils/Logger */ \"./src/Utils/Logger.js\");\n/* harmony import */ var _InputSelect__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./InputSelect */ \"./src/components/InputSelect.js\");\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\n\n\n\n\n\nvar ScheduleAlarmContainer = function ScheduleAlarmContainer() {\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n _useState2 = _slicedToArray(_useState, 2),\n task = _useState2[0],\n setTask = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])('Today'),\n _useState4 = _slicedToArray(_useState3, 2),\n day = _useState4[0],\n setDay = _useState4[1];\n\n var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n _useState6 = _slicedToArray(_useState5, 2),\n time = _useState6[0],\n setTime = _useState6[1];\n\n var _useState7 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n _useState8 = _slicedToArray(_useState7, 2),\n inputValue = _useState8[0],\n inputOnchange = _useState8[1];\n\n var _useState9 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])('s'),\n _useState10 = _slicedToArray(_useState9, 2),\n selectValue = _useState10[0],\n selectOnchange = _useState10[1];\n\n var _useState11 = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n _useState12 = _slicedToArray(_useState11, 2),\n showWarning = _useState12[0],\n setWarning = _useState12[1];\n\n var taskFieldRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef();\n var timeFieldRef = react__WEBPACK_IMPORTED_MODULE_0___default.a.createRef();\n var refs = {\n taskFieldRef: taskFieldRef,\n timeFieldRef: timeFieldRef\n };\n\n var handleSetAlarmbutton = function handleSetAlarmbutton() {\n console.log('inputValue, selectValue', inputValue, selectValue); // chrome.alarms.clearAll();\n\n if (day === 'Today' || day === 'Tomorrow') {\n if (!task || !time) {\n var state = {\n 'taskFieldRef': task,\n 'timeFieldRef': time\n };\n Object.keys(state).map(function (key) {\n if (!state[key]) {\n var existingClasses = refs[key].current.className;\n var classArray = existingClasses.split(' ');\n\n if (classArray.indexOf('warning-vibration-animation') >= 0) {\n classArray[classArray.indexOf('warning-vibration-animation')] = 'warning-vibration-animation-toggle'; // classArray.splice(classArray.indexOf('warning-vibration-animation'), 0, 'warning-vibration-animation-toggle');\n\n Object(_Utils_Logger__WEBPACK_IMPORTED_MODULE_4__[\"default\"])('classArray', classArray);\n refs[key].current.className = \"\".concat(classArray.join(' '));\n } else if (classArray.indexOf('warning-vibration-animation-toggle') >= 0) {\n classArray[classArray.indexOf('warning-vibration-animation-toggle')] = 'warning-vibration-animation'; // classArray.splice(classArray.indexOf('warning-vibration-animation-toggle'), 0, 'warning-vibration-animation');\n\n Object(_Utils_Logger__WEBPACK_IMPORTED_MODULE_4__[\"default\"])('classArray', classArray);\n refs[key].current.className = \"\".concat(classArray.join(' '));\n } else {\n refs[key].current.className = \"\".concat(classArray.join(' '), \" warning-vibration-animation\");\n }\n }\n });\n setTimeout(function () {\n taskFieldRef.current.className = 'taskInputField';\n timeFieldRef.current.className = 'inputTime';\n console.log(\"Removed\");\n }, 1000);\n return;\n } else if (day === 'Today') {\n var stringNewDate = String(new Date()); // it will return date as e.g Tue Feb 27 2019 11:10:45 GMT+0530 (India Standard Time)\n // to be made a function\n\n stringNewDate = stringNewDate.slice(0, stringNewDate.indexOf(new Date().getFullYear()) + 5) + time + ':00' + ' ' + stringNewDate.slice(stringNewDate.indexOf('GMT'));\n console.log('stringNewDate', stringNewDate);\n\n if (new Date(stringNewDate).getTime() < new Date().getTime()) {\n console.log(\"Dfdsfdsfdsfdsf\");\n return;\n }\n }\n } else if (day === 'Recurring') {\n console.log(\"timeFieldRef.current\", timeFieldRef.current);\n\n if (!task) {\n taskFieldRef.current.className = 'taskInputField warning-vibration-animation';\n setTimeout(function () {\n taskFieldRef.current.className = 'taskInputField';\n console.log(\"Removed\");\n }, 1000);\n return;\n }\n\n if (!inputValue) {\n timeFieldRef.current.className = 'inputSelect warning-vibration-animation';\n setTimeout(function () {\n timeFieldRef.current.className = 'inputSelect';\n console.log(\"Removed\");\n }, 1000);\n return;\n }\n\n if (inputValue < 5 && selectValue === 's') {\n setWarning(true);\n setTimeout(function () {\n setWarning(false);\n }, 2000);\n return;\n }\n }\n\n switch (day) {\n case 'Today':\n var _stringNewDate = String(new Date()); // it will return date as e.g Tue Feb 27 2019 11:10:45 GMT+0530 (India Standard Time)\n // to be made a function\n\n\n _stringNewDate = _stringNewDate.slice(0, _stringNewDate.indexOf(new Date().getFullYear()) + 5) + time + ':00' + ' ' + _stringNewDate.slice(_stringNewDate.indexOf('GMT'));\n console.log('newDate', _stringNewDate);\n chrome.alarms.create(task, {\n when: new Date(_stringNewDate).getTime()\n });\n break;\n\n case 'Tomorrow':\n var stringNextDayDate = String(new Date(Date.now() + 86400000)); // it will return date as e.g Tue Feb 27 2019 11:10:45 GMT+0530 (India Standard Time)\n // to be made a function\n\n stringNextDayDate = stringNextDayDate.slice(0, stringNextDayDate.indexOf(new Date().getFullYear()) + 5) + time + ':00' + ' ' + stringNextDayDate.slice(stringNextDayDate.indexOf('GMT'));\n console.log('nextDayDate', stringNextDayDate);\n chrome.alarms.create(task, {\n when: new Date(stringNextDayDate).getTime()\n });\n break;\n\n case 'Recurring':\n // console.log('selectValue', selectValue, inputValue, typeof inputValue);\n if (selectValue === 'm') {\n chrome.alarms.create(task, {\n periodInMinutes: Number(inputValue)\n });\n } else {\n chrome.alarms.create(task, {\n periodInMinutes: inputValue / 60\n });\n }\n\n break;\n\n /*\n case 'Everyday':\n chrome.alarms.create({\n })\n break; */\n }\n\n function showSnackBar() {\n var x = document.getElementById(\"snackbar\");\n x.className = \"show\";\n setTimeout(function () {\n x.className = x.className.replace(\"show\", \"\");\n }, 3000);\n }\n\n showSnackBar();\n };\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"scheduleAlarmContainer\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Input__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n type: \"text\",\n placeholder: \"Task\",\n name: \"task\",\n value: task,\n onChange: setTask,\n ref: taskFieldRef,\n className: \"taskInputField\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Select__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n name: \"day\",\n options: [\"Today\", \"Tomorrow\", \"Recurring\"],\n value: day,\n onChange: setDay,\n className: \"daySelect\"\n }), day === 'Recurring' ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_InputSelect__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n inputValue: inputValue,\n inputOnchange: inputOnchange,\n inputPlaceHolder: \"Time\",\n selectValue: selectValue,\n selectOnchange: selectOnchange,\n ref: timeFieldRef\n }) : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Input__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n type: \"time\",\n name: \"time\",\n value: time,\n onChange: setTime,\n className: \"inputTime\",\n ref: timeFieldRef\n }), showWarning ? react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"warningMessage\"\n }, \"Time should be greater than 5 Seconds\") : react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"warningMessage\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_Button__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n name: \"setAlarmButton\",\n value: \"Set Alarm\",\n className: \"setAlarmButton\",\n onClick: handleSetAlarmbutton\n }));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ScheduleAlarmContainer);\n\n//# sourceURL=webpack:///./src/components/ScheduleAlarmContainer.js?");
84 |
85 | /***/ }),
86 |
87 | /***/ "./src/components/Select.js":
88 | /*!**********************************!*\
89 | !*** ./src/components/Select.js ***!
90 | \**********************************/
91 | /*! exports provided: default */
92 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
93 |
94 | "use strict";
95 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar Select = function Select(_ref) {\n var name = _ref.name,\n value = _ref.value,\n _onChange = _ref.onChange,\n options = _ref.options,\n className = _ref.className;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"select\", {\n name: name,\n value: value,\n onChange: function onChange(e) {\n return _onChange(e.target.value);\n },\n className: className\n }, options.map(function (option, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"option\", {\n value: option,\n key: index\n }, option);\n }));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Select);\n\n//# sourceURL=webpack:///./src/components/Select.js?");
96 |
97 | /***/ }),
98 |
99 | /***/ "./src/components/TasksContainer.js":
100 | /*!******************************************!*\
101 | !*** ./src/components/TasksContainer.js ***!
102 | \******************************************/
103 | /*! exports provided: default */
104 | /***/ (function(module, __webpack_exports__, __webpack_require__) {
105 |
106 | "use strict";
107 | eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\n\n\nvar TasksContainer = function TasksContainer() {\n // let alarms = [];\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])([]),\n _useState2 = _slicedToArray(_useState, 2),\n alarms = _useState2[0],\n setAlarmsList = _useState2[1];\n\n Object(react__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n return console.log(\"IN COMPONENT DID MOUNT\");\n });\n chrome.alarms.getAll(function (alarmsList) {\n console.log('lalarms', alarmsList); // alarms = alarmsList;\n\n if (JSON.stringify(alarmsList) != JSON.stringify(alarms)) {\n setAlarmsList(alarmsList);\n }\n });\n\n var removeAlarm = function removeAlarm(name) {\n if (alarms.length) {\n setAlarmsList(alarms.filter(function (alarm) {\n return alarm.name !== name;\n }));\n chrome.alarms.clear(name);\n }\n };\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: \"tasks-container\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ul\", null, alarms.length ? alarms.map(function (alarm, index) {\n var scheduledTimeInMillS = alarm.scheduledTime;\n var date = String(new Date(scheduledTimeInMillS));\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", {\n key: index\n }, alarm.name, \" at \", date.slice(date.indexOf(new Date().getFullYear()) + 5, date.indexOf('GMT') - 1), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n src: \"../delete.svg\",\n onClick: function onClick(e) {\n e.preventDefault();\n removeAlarm(alarm.name);\n },\n className: \"cross-button\"\n })));\n }) : ''));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (TasksContainer);\n\n//# sourceURL=webpack:///./src/components/TasksContainer.js?");
108 |
109 | /***/ })
110 |
111 | }]);
112 | //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiIwLmJ1bmRsZS5qcyIsInNvdXJjZVJvb3QiOiIifQ==
--------------------------------------------------------------------------------
/public/dist/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |