aboutsummaryrefslogtreecommitdiff
path: root/src/actions/app.js
diff options
context:
space:
mode:
authorMichael Foiani <mfoiani2019@communityschoolnaples.org>2018-07-25 19:38:43 -0400
committerMichael Foiani <mfoiani2019@communityschoolnaples.org>2018-07-25 19:38:43 -0400
commit3c09a0a91488e182f521b0cd39017cb5bc781a83 (patch)
treebc26d401b97f13169f3becdfe03bba6fd0f34353 /src/actions/app.js
Initial commit. Added pwa starter kit to project for the application.
Diffstat (limited to 'src/actions/app.js')
-rw-r--r--src/actions/app.js93
1 files changed, 93 insertions, 0 deletions
diff --git a/src/actions/app.js b/src/actions/app.js
new file mode 100644
index 0000000..50d1529
--- /dev/null
+++ b/src/actions/app.js
@@ -0,0 +1,93 @@
+/**
+@license
+Copyright (c) 2018 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+*/
+
+export const UPDATE_PAGE = 'UPDATE_PAGE';
+export const UPDATE_OFFLINE = 'UPDATE_OFFLINE';
+export const UPDATE_DRAWER_STATE = 'UPDATE_DRAWER_STATE';
+export const OPEN_SNACKBAR = 'OPEN_SNACKBAR';
+export const CLOSE_SNACKBAR = 'CLOSE_SNACKBAR';
+
+export const navigate = (path) => (dispatch) => {
+ // Extract the page name from path.
+ const page = path === '/' ? 'view1' : path.slice(1);
+
+ // Any other info you might want to extract from the path (like page type),
+ // you can do here
+ dispatch(loadPage(page));
+
+ // Close the drawer - in case the *path* change came from a link in the drawer.
+ dispatch(updateDrawerState(false));
+};
+
+const loadPage = (page) => (dispatch) => {
+ switch(page) {
+ case 'view1':
+ import('../components/my-view1.js').then((module) => {
+ // Put code in here that you want to run every time when
+ // navigating to view1 after my-view1.js is loaded.
+ });
+ break;
+ case 'view2':
+ import('../components/my-view2.js');
+ break;
+ case 'view3':
+ import('../components/my-view3.js');
+ break;
+ default:
+ page = 'view404';
+ import('../components/my-view404.js');
+ }
+
+ dispatch(updatePage(page));
+};
+
+const updatePage = (page) => {
+ return {
+ type: UPDATE_PAGE,
+ page
+ };
+};
+
+let snackbarTimer;
+
+export const showSnackbar = () => (dispatch) => {
+ dispatch({
+ type: OPEN_SNACKBAR
+ });
+ clearTimeout(snackbarTimer);
+ snackbarTimer = setTimeout(() =>
+ dispatch({ type: CLOSE_SNACKBAR }), 3000);
+};
+
+export const updateOffline = (offline) => (dispatch, getState) => {
+ // Show the snackbar, unless this is the first load of the page.
+ if (getState().app.offline !== undefined) {
+ dispatch(showSnackbar());
+ }
+ dispatch({
+ type: UPDATE_OFFLINE,
+ offline
+ });
+};
+
+export const updateLayout = (wide) => (dispatch, getState) => {
+ if (getState().app.drawerOpened) {
+ dispatch(updateDrawerState(false));
+ }
+};
+
+export const updateDrawerState = (opened) => (dispatch, getState) => {
+ if (getState().app.drawerOpened !== opened) {
+ dispatch({
+ type: UPDATE_DRAWER_STATE,
+ opened
+ });
+ }
+};