notes on url middleware

This commit is contained in:
Colin Megill
2017-10-16 10:56:27 -07:00
parent d31dde7436
commit 8f3e7ddd79
2 changed files with 14 additions and 6 deletions
+6 -2
View File
@@ -15,8 +15,12 @@ const updateURLMiddleware = (store) => {
/************************************************************************ /************************************************************************
************************************************************************* *************************************************************************
1. The state just changed. Clear, and then update, the URL. 1. Redux app state just changed. Clear URL, and then update it.
1a. We get the whole state tree to construct the url from 1a. We get the whole state tree to construct the url!
1b. But (see reducers/url.js) we try to centralize it because...
1c. ...the back button / initial load case ('url changed' return above)
means that we have to listen for 'url changed' and construct state
from the browser
************************************************************************* *************************************************************************
************************************************************************/ ************************************************************************/
+8 -4
View File
@@ -2,17 +2,21 @@ import uri from "urijs";
/************************************************************************ /************************************************************************
************************************************************************* *************************************************************************
# This is all of the state that will be stored in the URL query params. 1. This is all of the state that will be stored in the URL query params.
# It is reasonably important it be kept in the same place, 1a. It is reasonably important it be kept in the same place,
because if initial load or back button etc, we'll hear about that because if initial load or back button etc, we'll hear about that
and manually reconstruct the state from the url, overriding whatever and manually reconstruct the state from the url, overriding whatever
we had. We could of course listen for the "url changed" type in another we had. We could of course listen for the "url changed" type in another
reducer, if this gets messy. reducer, if this gets messy.
1b. The data structures used here are constrained as well, as urijs
needs to be able to parse them
************************************************************************* *************************************************************************
************************************************************************/ ************************************************************************/
const url = ( const url = (
state = {}, state = {
selectedMetadata: {}
},
action action
) => { ) => {
switch (action.type) { switch (action.type) {
@@ -26,7 +30,7 @@ const url = (
return state; return state;
} }
case "category changed": { case "category changed": {
/* TODO catch categories here and store a representation of them */
return state; return state;
} }
default: default: