Skip to content

Commit

Permalink
feat(core): ⚡ delivery oriented task fix
Browse files Browse the repository at this point in the history
delivery oriented task fix

Ref #183
  • Loading branch information
techoneel committed Mar 20, 2024
1 parent d06eb21 commit a807708
Show file tree
Hide file tree
Showing 10 changed files with 118 additions and 107 deletions.
55 changes: 29 additions & 26 deletions package/CoreApp.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { WrappidSyncer } from "@wrappid/styles";

import CoreAppDiv from "./components/layouts/CoreAppDiv";
import CoreNavigation from "./components/navigation/CoreNavigation";
import CoreAppStrictWrapper from "./CoreAppStrictWrapper";
import CoreRoutes from "./CoreRoutes";
import CoreProvider from "./store/CoreProvider";

Expand All @@ -28,31 +29,33 @@ export default function CoreApp(props) {
} = props;

return (
<WrappidSyncer data={{
config: applicationConfig,
themes: themesRegistry
}}>
<CoreProvider
applicationConfig={{ ...(applicationConfig || {}) }}
storage={storage}
appStyles={appStyles}
customIcons={customIcons}
applicationRegistry={applicationRegistry}
themesRegistry={themesRegistry}
routesRegistry={routesRegistry}
menusRegistry={menusRegistry}
componentsRegistry={componentsRegistry}
reducersRegistry={reducersRegistry}
resourcesRegistry={resourcesRegistry}
functionsRegistry={functionsRegistry}
validationsRegistry={validationsRegistry}
>
<CoreAppDiv>
<CoreNavigation>
<CoreRoutes />
</CoreNavigation>
</CoreAppDiv>
</CoreProvider>
</WrappidSyncer>
<CoreAppStrictWrapper>
<WrappidSyncer data={{
config: applicationConfig,
themes: themesRegistry
}}>
<CoreProvider
applicationConfig={{ ...(applicationConfig || {}) }}
storage={storage}
appStyles={appStyles}
customIcons={customIcons}
applicationRegistry={applicationRegistry}
themesRegistry={themesRegistry}
routesRegistry={routesRegistry}
menusRegistry={menusRegistry}
componentsRegistry={componentsRegistry}
reducersRegistry={reducersRegistry}
resourcesRegistry={resourcesRegistry}
functionsRegistry={functionsRegistry}
validationsRegistry={validationsRegistry}
>
<CoreAppDiv>
<CoreNavigation>
<CoreRoutes />
</CoreNavigation>
</CoreAppDiv>
</CoreProvider>
</WrappidSyncer>
</CoreAppStrictWrapper>
);
}
14 changes: 14 additions & 0 deletions package/CoreAppStrictWrapper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import React from "react";

// eslint-disable-next-line import/no-unresolved
import { WrappidDataContext } from "@wrappid/styles";

import { ENV_DEV_MODE } from "./config/constants";

function CoreAppStrictWrapper(props) {
let { config } = React.useContext(WrappidDataContext);

return config?.environment === ENV_DEV_MODE ? <React.StrictMode>{props?.children}</React.StrictMode> : props?.children;
}

export default CoreAppStrictWrapper;
60 changes: 38 additions & 22 deletions package/CoreRoutes.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ const DEFAULT_ROUTE = {
url : "defaultAppRoute"
};

export let globalAccessToken = null;
export let globalRefreshToken = null;
export let globalTokenRequested = null;
export let globalTokenRequestTimeStamp = null;

export default function CoreRoutes() {
const dispatch = useDispatch();
const routesRegistry = useContext(CoreRoutesContext);
Expand All @@ -34,27 +39,38 @@ export default function CoreRoutes() {
const { config } = React.useContext(WrappidDataContext);
const [defaultRoute, setDefaultRoute] = useState(DEFAULT_ROUTE);

React.useEffect(() => {
config?.backendUrl && dispatch(
apiRequestAction(
HTTP.GET,
`${!authenticated ? "/noauth/" : "/" }business/all/RoutePages`,
true,
{ _defaultFilter: encodeURIComponent(JSON.stringify({ authRequired: authenticated })) },
GET_ROUTE_SUCCESS,
GET_ROUTE_FAILURE
)
);

let defaultRouteName = authenticated ? config?.defaultAuthenticatedRoute : config?.defaultRoute;
const accessToken = useSelector((state) => state?.auth?.accessToken);
const refreshToken = useSelector((state) => state?.auth?.refreshToken);
const tokenRequested = useSelector((state) => state?.pendingRequests?.tokenRequested);
const tokenRequestTimeStamp = useSelector(
(state) => state?.pendingRequests?.tokenRequestTimeStamp
);

if (defaultRouteName) {
if (Object.keys(routesRegistry).includes(defaultRouteName)) {
setDefaultRoute(routesRegistry[defaultRouteName]);
} else if (routesFromStore?.filter((route) => route?.entityRef === defaultRouteName)?.length > 0) {
setDefaultRoute(routesFromStore?.filter((route) => route?.entityRef === defaultRouteName)[0]);
}
}
globalAccessToken = accessToken;
globalRefreshToken = refreshToken;
globalTokenRequested = tokenRequested;
globalTokenRequestTimeStamp = tokenRequestTimeStamp;

React.useEffect(() => {
// eslint-disable-next-line etc/no-commented-out-code
// config?.backendUrl && dispatch(
// apiRequestAction(
// HTTP.GET,
// `${!authenticated ? "/noauth/" : "/" }business/all/RoutePages`,
// true,
// { _defaultFilter: encodeURIComponent(JSON.stringify({ authRequired: authenticated })) },
// GET_ROUTE_SUCCESS,
// GET_ROUTE_FAILURE
// )
// );
// let defaultRouteName = authenticated ? config?.defaultAuthenticatedRoute : config?.defaultRoute;
// if (defaultRouteName) {
// if (Object.keys(routesRegistry).includes(defaultRouteName)) {
// setDefaultRoute(routesRegistry[defaultRouteName]);
// } else if (routesFromStore?.filter((route) => route?.entityRef === defaultRouteName)?.length > 0) {
// setDefaultRoute(routesFromStore?.filter((route) => route?.entityRef === defaultRouteName)[0]);
// }
// }
}, []);

React.useEffect(() => {
Expand All @@ -70,10 +86,10 @@ export default function CoreRoutes() {
)
);
}
}, [authenticated]);
}, [config, authenticated]);

useEffect(() => {
let defaultRouteName = /* authenticated ? config?.defaultAuthenticatedRoute : */ config?.defaultRoute;
let defaultRouteName = (authenticated ? config?.defaultAuthenticatedRoute : config?.defaultRoute) || config?.defaultRoute || DEFAULT_ROUTE;

if (defaultRouteName) {
if (Object.keys(routesRegistry).includes(defaultRouteName)) {
Expand Down
51 changes: 13 additions & 38 deletions package/components/layouts/_system/AppContainerLayout.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import React, { useState } from "react";
import React from "react";

// eslint-disable-next-line import/no-unresolved
import { NativeAppContainer, nativeUseLocation } from "@wrappid/native";
import { SMALL_WINDOW_WIDTH } from "@wrappid/styles";

Check failure on line 5 in package/components/layouts/_system/AppContainerLayout.js

View workflow job for this annotation

GitHub Actions / Validate code style

Unable to resolve path to module '@wrappid/styles'
import { useDispatch, useSelector } from "react-redux";

import {
Expand All @@ -10,8 +11,7 @@ import {
GET_USER_SETTINGS,
UPDATE_USER_SETTINGS
} from "../../../config/api";
import { HTTP, SMALL_WINDOW_WIDTH, userSettingsConstants } from "../../../config/constants";
import { CoreRouteRegistryContext } from "../../../config/contextHandler";
import { HTTP, userSettingsConstants } from "../../../config/constants";
import CoreLayoutPlaceholder from "../../../layout/CoreLayoutPlaceholder";
import ComponentsRegistry from "../../../registry/ComponentsRegistry";
import { apiRequestAction } from "../../../store/action/appActions";
Expand All @@ -37,28 +37,18 @@ import CoreAppBar from "../../surfaces/CoreAppBar";
import CoreDrawer from "../../surfaces/CoreDrawer";
import CoreFooter from "../../surfaces/CoreFooter";

export let globalAccessToken = null;
export let globalRefreshToken = null;
export let globalTokenRequested = null;
export let globalTokenRequestTimeStamp = null;

function AppContainerLayout() {
export default function AppContainerLayout() {
const windowWidth = window.innerWidth;
const leftMenuOpen = useSelector((state) => state?.menu?.leftMenuOpen);
const [leftMenuOpenSmallScreen, setLeftDrawerSmallScreen] = React.useState(false);
const _routes = useSelector((state) => state?.route?.routes);

const dispatch = useDispatch();
const location = nativeUseLocation();
const auth = useSelector((state) => state?.auth);
const accessToken = useSelector((state) => state?.auth?.accessToken);
const refreshToken = useSelector((state) => state?.auth?.refreshToken);
const tokenRequested = useSelector((state) => state?.pendingRequests?.tokenRequested);
const tokenRequestTimeStamp = useSelector(
(state) => state?.pendingRequests?.tokenRequestTimeStamp
);
const leftMenuOpen = useSelector((state) => state?.menu?.leftMenuOpen);
const [leftMenuOpenSmallScreen, setLeftDrawerSmallScreen] = useState(false);
const currentPendingRequest = useSelector((state) => state.pendingRequests.pendingRequest);
const recallState = useSelector((state) => state?.pendingRequests?.recall);
const _routes = useSelector((state) => state?.route?.routes);
const [routeRegistry, setRouteRegistry] = useState({});

// user settings
// const reload = useSelector((state) => state?.settings?.reload);
Expand Down Expand Up @@ -172,23 +162,12 @@ function AppContainerLayout() {
});
}, []);

React.useEffect(() => {
let registry = {};

for (let i = 0; i < _routes?.length; i++) {
registry[_routes[i].entityRef] = _routes[i].url;
}
setRouteRegistry(registry);
}, [_routes]);

const getAppBar = () => {
return auth?.uid ? <CoreAppBar handleDrawer={handleDrawer} routes={_routes} /> : null;
};

const getFooter = () => {
return <CoreFooter />;
};

const getLeftDrawer = () => {
return auth?.uid && auth?.accessToken ? (
<CoreDrawer
Expand All @@ -198,13 +177,9 @@ function AppContainerLayout() {
) : null;
};

globalAccessToken = accessToken;
globalRefreshToken = refreshToken;
globalTokenRequested = tokenRequested;
globalTokenRequestTimeStamp = tokenRequestTimeStamp;

return (
<CoreRouteRegistryContext.Provider value={{ ...routeRegistry }}>
<>
{/* eslint-disable-next-line etc/no-commented-out-code */}
<NativeAppContainer
appBar={getAppBar}
leftDrawer={getLeftDrawer}
Expand All @@ -215,11 +190,11 @@ function AppContainerLayout() {
<CoreRequestProgressBar />

<CoreLayoutPlaceholder id={AppContainerLayout.PLACEHOLDER.CONTENT} />

</NativeAppContainer>
</CoreRouteRegistryContext.Provider>

</>
);
}

export default AppContainerLayout;

AppContainerLayout.PLACEHOLDER = { CONTENT: "content" };
9 changes: 4 additions & 5 deletions package/components/layouts/_system/BlankLayout.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,10 @@ import CoreClasses from "../../../styles/CoreClasses";

export default function BlankLayout() {

// eslint-disable-next-line etc/no-commented-out-code
// React.useEffect(() => {
// // eslint-disable-next-line no-console
// console.log("BlankLayout::useEffect");
// }, []);
React.useEffect(() => {
// eslint-disable-next-line no-console
console.log("BlankLayout::useEffect");
}, []);

return (
<>
Expand Down
15 changes: 7 additions & 8 deletions package/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ import {
import CoreFormControlLabel from "./components/inputs/forms/CoreFormControlLabel";
import CoreFormGroup from "./components/inputs/forms/CoreFormGroup";
import ParentChildMap from "./components/inputs/ParentChildMap";
import AppContainerLayout from "./components/layouts/_system/AppContainerLayout";
import BlankLayout from "./components/layouts/_system/BlankLayout";
import CenteredBlankLayout from "./components/layouts/_system/CenteredBlankLayout";
import ComplexLayout from "./components/layouts/_system/ComplexLayout";
Expand Down Expand Up @@ -250,7 +251,7 @@ import {
} from "./utils/themeUtil";

export {
__EntityStatus, __IconTypes, apiRequestAction, APP_PLATFORM, AppService, BlankLayout, cancelFormEdit, CenteredBlankLayout, ChildMap, clearValidatePhoneEmail, ComplexLayout, ComponentNotFound, ComponentRegistryContext, config, CORE_DIALOG_TYPES, CoreAccordion,
__EntityStatus, __IconTypes, apiRequestAction, APP_PLATFORM, AppContainerLayout, AppService, BlankLayout, cancelFormEdit, CenteredBlankLayout, ChildMap, clearValidatePhoneEmail, ComplexLayout, ComponentNotFound, ComponentRegistryContext, config, CORE_DIALOG_TYPES, CoreAccordion,
CoreAccordionDetail,
CoreAccordionSummary, CoreAlert,
CoreAlertTitle, CoreApiVersion, CoreApp, CoreAppBar, CoreAsyncSelect,
Expand Down Expand Up @@ -295,15 +296,13 @@ export {
CoreList,
CoreListItem, CoreListItemAvatar, CoreListItemButton, CoreListItemIcon,
CoreListItemText, CoreListSubheader, CoreLoginDetails, CoreMarkdownViewer, CoreMedicineSelector, CoreMenu, CoreMenuItem,
CoreMenuList, CoreModal, CoreMultiTimeRangePicker, coreOpenUrl, CoreOtpInput,
CoreMenuList, CoreModal, CoreMultiTimeRangePicker, CoreNetworkStatus, coreOpenUrl, CoreOtpInput,
CoreOutlinedButton, CorePaper, CorePhone, CorePhoneLink, CorePopover, CoreProfilePopOver, CoreProvider, CoreRating, CoreReactSelectInput, CoreResourceContext, CoreResponsiveButton,
CoreRichTextEditor, CoreRightDrawer, CoreRouteRegistryContext, CoreRoutesContext, CoreScrollTop, CoreSection, CoreSelect, CoreSkeleton,
CoreSnackbar, CoreSpan, CoreSpeechToText, CoreStack, CoreSwitch, CoreTab, CoreTabHead, CoreTable,
CoreTableBody,
CoreTableBodyCell,
CoreTableCell,
CoreNetworkStatus,
CoreTableContainer,
CoreTableCell, CoreTableContainer,
CoreTableFooter,
CoreTableHead, CoreTableHeadCell, CoreTableHeadRow, CoreTablePagination,
CoreTableRow,
Expand Down Expand Up @@ -333,9 +332,9 @@ export {
/**
* Themes
*/
ThemeSelector, ThreeColumnLayout, toggleMenuItemState, toggleRightMenuState, TwoColumnLayout, urls, useDynamicRefs, UserChip, VCenteredBlankLayout, viewFormattedDate, WEB_PLATFORM, XLargeCoreStyles,
XXLargeCoreStyles,
ThemeSelector, ThreeColumnLayout, toggleMenuItemState, toggleRightMenuState, TwoColumnLayout, urls, useDynamicRefs,
// Network status custom hook
useNetworkStatus
useNetworkStatus, UserChip, VCenteredBlankLayout, viewFormattedDate, WEB_PLATFORM, XLargeCoreStyles,
XXLargeCoreStyles
};

3 changes: 2 additions & 1 deletion package/layout/PageContainer.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { WrappidDataContext } from "@wrappid/styles";
import { useDispatch, useSelector } from "react-redux";

import CoreDialog from "../components/feedback/CoreDialog";
import AppContainerLayout from "../components/layouts/_system/AppContainerLayout";
import BlankLayout from "../components/layouts/_system/BlankLayout";
import CoreModal from "../components/utils/CoreModal";
import CoreNetworkStatus from "../components/utils/CoreNetworkStatus";
Expand Down Expand Up @@ -125,7 +126,7 @@ export default function PageContainer(props) {
if (mergedComponentRegistry[route?.Page?.layout]?.layout) {
return route?.Page?.layout;
} else {
return (auth?.uid ? defaultAuthenticatedLayout : defaultLayout) || undefined;
return (auth?.uid ? (defaultAuthenticatedLayout || AppContainerLayout.name) : defaultLayout) || BlankLayout;
}
};
/**
Expand Down
2 changes: 1 addition & 1 deletion package/middleware/coreTokenProvider.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { globalAccessToken } from "../components/layouts/_system/AppContainerLayout";
import { globalAccessToken } from "../CoreRoutes";

async function getCoreAccessToken() {
try {
Expand Down
4 changes: 4 additions & 0 deletions package/registry/ComponentsRegistry.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// eslint-disable-next-line import/no-unresolved
import { NativeAppContainer } from "@wrappid/native";

import { coreComponentsRegistry } from "../components/CoreComponentsRegistry";
import PageLoader from "../components/PageLoader";
import ComponentNotFound from "../error/ComponentNotFound";
Expand All @@ -23,6 +26,7 @@ let ComponentsRegistry = {
Error404 : { comp: Error404 },
Error500 : { comp: Error500 },
LayoutMismatch : { comp: LayoutMismatch },
NativeAppContainer : { comp: NativeAppContainer },
PageLoader : { comp: PageLoader },
};

Expand Down
Loading

0 comments on commit a807708

Please sign in to comment.