diff options
| author | Michael Foiani <mfoiani2019@communityschoolnaples.org> | 2018-07-25 19:38:43 -0400 |
|---|---|---|
| committer | Michael Foiani <mfoiani2019@communityschoolnaples.org> | 2018-07-25 19:38:43 -0400 |
| commit | 3c09a0a91488e182f521b0cd39017cb5bc781a83 (patch) | |
| tree | bc26d401b97f13169f3becdfe03bba6fd0f34353 /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.js | 93 |
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 + }); + } +}; |
