UNPKG

@r/platform

Version:

A set of tools to enable easy universal rendering and page navigation on a React + Redux stack

89 lines (76 loc) 2.07 kB
import { METHODS } from './router'; export const SET_PAGE = 'PLATFORM__SET_PAGE'; export const SET_STATUS = 'PLATFORM__SET_STATUS'; export const GOTO_PAGE_INDEX = 'PLATFORM__GOTO_PAGE_INDEX'; export const NAVIGATE_TO_URL = 'PLATFORM__NAVIGATE_TO_URL'; export const SET_SHELL = 'PLATFORM__SET_SHELL'; export const REDIRECT = 'PLATFORM__REDIRECT'; export const REROUTE_PAGE = 'PLATFORM__REROUTE_PAGE'; // re-run the handlers for the page export const setPage = (url, { urlParams={}, queryParams={}, hashParams={}, referrer='' }={}) => ({ type: SET_PAGE, payload: { url, urlParams, queryParams, hashParams, referrer }, }); export const gotoPageIndex = ( pageIndex, pathName, { queryParams={}, hashParams={}, referrer='', }={} ) => ({ type: GOTO_PAGE_INDEX, payload: { pageIndex, pathName, queryParams, hashParams, referrer }, }); export const navigateToUrl = ( method, pathName, { queryParams={}, hashParams={}, bodyParams={}, referrer='', }={} ) => ({ type: NAVIGATE_TO_URL, payload: { method, pathName, queryParams, hashParams, bodyParams, referrer }, }); export const setShell = shell => ({ type: SET_SHELL, shell }); export const redirect = url => ({ type: REDIRECT, url }); export const reroutePage = () => async (dispatch, getState) => { const { currentPage } = getState().platform; dispatch(navigateToUrl( METHODS.GET, currentPage.url, { queryParams: currentPage.queryParams, hashParams: currentPage.hashParams, bodyParams: {}, referrer: currentPage.referrer, } )); }; export const activateClient = () => async (dispatch, getState) => { const { platform } = getState(); if (!platform.shell) { return; } dispatch(setShell(false)); dispatch(reroutePage()); }; export const setStatus = status => ({ type: SET_STATUS, payload: { status }, }); export default { SET_PAGE, SET_STATUS, GOTO_PAGE_INDEX, NAVIGATE_TO_URL, SET_SHELL, REROUTE_PAGE, setPage, setStatus, gotoPageIndex, navigateToUrl, setShell, reroutePage, };