|
@@ -6,6 +6,8 @@ const routes = {
|
|
|
|
|
|
}
|
|
|
|
|
|
+export const addRoute = ({name, path, props}) => routes[name || path] = {...props, path}
|
|
|
+
|
|
|
export const NamedRoute = ({name, routeName, query, pendingQueryComponent:P, errorQueryComponent:E, errorQueryComponentErrorProp="error", componentQueryResultProp='data', path, component, render, ...props}) => {
|
|
|
name ||= routeName
|
|
|
routes[name || path] = {...props, path}
|
|
@@ -22,12 +24,11 @@ export const NamedRoute = ({name, routeName, query, pendingQueryComponent:P, err
|
|
|
|
|
|
useEffect(() => {
|
|
|
if (query && typeof query === 'function'){
|
|
|
- if (typeof query.getQueryPubBranch === 'function'){ //if it's queryPub query function
|
|
|
+ if (typeof query.getQueryPubBranch === 'function'){
|
|
|
query(paramsRef.current)
|
|
|
- //flushCache don't affect refresh here, but it must
|
|
|
const [queryPub, key] = query.getQueryPubBranch(paramsRef.current)
|
|
|
const pubToState = () => {
|
|
|
- console.log(queryPub, key, queryPub[key], queryPub[key].invalidated)
|
|
|
+ //console.log(queryPub, key, queryPub[key], queryPub[key].invalidated)
|
|
|
if (!queryPub[key]){
|
|
|
if (queryError || queryResult){
|
|
|
setQueryError()
|
|
@@ -108,7 +109,8 @@ export const NamedLink = ({routeName, name, params, to,...props}) => {
|
|
|
to = generatePath(pattern, params)
|
|
|
}
|
|
|
else {
|
|
|
- console.log('no route, hnyk', routes, to)
|
|
|
+ throw new Error(`Route "${name}"not registered`)
|
|
|
+ //console.log('no route, hnyk', routes, to, props)
|
|
|
}
|
|
|
return <Link to={to} {...props} />
|
|
|
}
|
|
@@ -148,12 +150,14 @@ export const createPrivateRoute = (getUserRoles:GetUserRolesFunc, defaultFallbac
|
|
|
fallback ||= defaultFallback
|
|
|
roles:Array<string> ||= defaultRouteRoles
|
|
|
|
|
|
- const userRoles:Array<string> = getUserRoles()
|
|
|
+ const userRoles:Array<string> = getUserRoles() || []
|
|
|
|
|
|
if (!fallback){
|
|
|
throw new ReferenceError('fallback or defaultFallback are mandatory for Private Route')
|
|
|
}
|
|
|
|
|
|
+ console.log('PRIVATE ROUTING', roles, userRoles)
|
|
|
+
|
|
|
if (!intersectArrays(roles, userRoles)){
|
|
|
if (typeof fallback === 'string')
|
|
|
props.history.push(fallback)
|
|
@@ -170,6 +174,7 @@ export const createPrivateRoute = (getUserRoles:GetUserRolesFunc, defaultFallbac
|
|
|
throw new ReferenceError('getUserRoles are mandatory for Private Routing and it should be a function')
|
|
|
}
|
|
|
|
|
|
+
|
|
|
return <RouteComponent {...props} component={ComponentWrapper}/>
|
|
|
}
|
|
|
|