From 01ead39b38bca29b212ab850a846fdc626f6742b Mon Sep 17 00:00:00 2001 From: Pham Hai Duong Date: Wed, 1 Apr 2020 12:49:02 +0700 Subject: [PATCH] fix: #568 add more config to scaffolder (#775) Changes - Add config to config.json of scaffolder - Fix check isFetching or not in private route wrapper --- packages/react-app-scaffolder/app/index.js | 2 +- .../app/templates/_config.example.json | 3 ++- .../app/templates/_config.json | 3 ++- .../base-is-not-sass/src/scripts/webpack-dev.js | 2 ++ .../base-is-sass/src/scripts/webpack-dev.js | 2 ++ .../app/templates/base/src/core/app.tsx | 10 +++++----- .../src/context/__mocks__/mock-context.tsx | 1 + .../no-redux/src/core/private-route-wrapper.tsx | 15 +++++++++------ .../app/templates/no-redux/src/hooks/use-auth.ts | 4 +++- 9 files changed, 27 insertions(+), 15 deletions(-) diff --git a/packages/react-app-scaffolder/app/index.js b/packages/react-app-scaffolder/app/index.js index 9908919e53..9936b402cb 100644 --- a/packages/react-app-scaffolder/app/index.js +++ b/packages/react-app-scaffolder/app/index.js @@ -276,7 +276,7 @@ module.exports = class extends Generator { * else current path */ if (this.answers.isFoundation) { - this.packagePath = path.resolve(__dirname, `../../${this.answers.name}`) + this.packagePath = path.resolve(__dirname, '../..', this.answers.name) /** * create directory if not */ diff --git a/packages/react-app-scaffolder/app/templates/_config.example.json b/packages/react-app-scaffolder/app/templates/_config.example.json index 81bda3e45a..692adaf253 100644 --- a/packages/react-app-scaffolder/app/templates/_config.example.json +++ b/packages/react-app-scaffolder/app/templates/_config.example.json @@ -4,5 +4,6 @@ "cognitoClientId": "<%= clientId %>", "googleAnalyticsKey": "", "cognitoOAuthUrl": "https://dev.connect.reapit.cloud", - "cognitoUserPoolId": "" + "cognitoUserPoolId": "eu-west-2_hbt0B7yys", + "platformApiUrl": "https://dev.platform.reapit.cloud" } diff --git a/packages/react-app-scaffolder/app/templates/_config.json b/packages/react-app-scaffolder/app/templates/_config.json index 81bda3e45a..692adaf253 100644 --- a/packages/react-app-scaffolder/app/templates/_config.json +++ b/packages/react-app-scaffolder/app/templates/_config.json @@ -4,5 +4,6 @@ "cognitoClientId": "<%= clientId %>", "googleAnalyticsKey": "", "cognitoOAuthUrl": "https://dev.connect.reapit.cloud", - "cognitoUserPoolId": "" + "cognitoUserPoolId": "eu-west-2_hbt0B7yys", + "platformApiUrl": "https://dev.platform.reapit.cloud" } diff --git a/packages/react-app-scaffolder/app/templates/base-is-not-sass/src/scripts/webpack-dev.js b/packages/react-app-scaffolder/app/templates/base-is-not-sass/src/scripts/webpack-dev.js index 860f16980e..4f6c84aef3 100644 --- a/packages/react-app-scaffolder/app/templates/base-is-not-sass/src/scripts/webpack-dev.js +++ b/packages/react-app-scaffolder/app/templates/base-is-not-sass/src/scripts/webpack-dev.js @@ -7,6 +7,7 @@ const ResolveTSPathsToWebpackAlias = require('ts-paths-to-webpack-alias') const {PATHS} = require('./constants') module.exports = { + mode: 'development', context: process.cwd(), entry: PATHS.entryWeb, output: { @@ -86,6 +87,7 @@ module.exports = { open: true, clientLogLevel: 'warning', historyApiFallback: true, + disableHostCheck: true, stats: { cached: false, cachedAssets: false, diff --git a/packages/react-app-scaffolder/app/templates/base-is-sass/src/scripts/webpack-dev.js b/packages/react-app-scaffolder/app/templates/base-is-sass/src/scripts/webpack-dev.js index 3c5ddd6943..99992384f9 100644 --- a/packages/react-app-scaffolder/app/templates/base-is-sass/src/scripts/webpack-dev.js +++ b/packages/react-app-scaffolder/app/templates/base-is-sass/src/scripts/webpack-dev.js @@ -6,6 +6,7 @@ const FaviconsWebpackPlugin = require('favicons-webpack-plugin') const ResolveTSPathsToWebpackAlias = require('ts-paths-to-webpack-alias') module.exports = { + mode: 'development', context: process.cwd(), entry: './src/core/index.tsx', output: { @@ -132,6 +133,7 @@ module.exports = { open: true, clientLogLevel: 'warning', historyApiFallback: true, + disableHostCheck: true, stats: { cached: false, cachedAssets: false, diff --git a/packages/react-app-scaffolder/app/templates/base/src/core/app.tsx b/packages/react-app-scaffolder/app/templates/base/src/core/app.tsx index 6587fe95a5..d0be38424b 100644 --- a/packages/react-app-scaffolder/app/templates/base/src/core/app.tsx +++ b/packages/react-app-scaffolder/app/templates/base/src/core/app.tsx @@ -35,21 +35,21 @@ import globalCss from 'raw-loader!sass-loader!@reapit/elements/dist/index.css' const App = () => { <% if (!redux && !graphql) { %> - const { loginSession, refreshParams, getLoginSession, ...rest } = useAuth() - if (!loginSession && refreshParams) { + const { loginSession, refreshParams, getLoginSession, isFetchSession, ...rest } = useAuth() + if (!loginSession && refreshParams && !isFetchSession) { getLoginSession(refreshParams) } <% } %> <% if (graphql) { %> - const { loginSession, refreshParams, getLoginSession, ...rest } = useAuth() - if (!loginSession && refreshParams) { + const { loginSession, refreshParams, getLoginSession, isFetchSession, ...rest } = useAuth() + if (!loginSession && refreshParams && !isFetchSession) { getLoginSession(refreshParams) } const accessToken = loginSession?.accessToken || '' <% } %> return ( <% if (!redux) { %> - + <% } %> <% if (graphql) { %> diff --git a/packages/react-app-scaffolder/app/templates/no-redux/src/context/__mocks__/mock-context.tsx b/packages/react-app-scaffolder/app/templates/no-redux/src/context/__mocks__/mock-context.tsx index 2dc073c171..9d80f0f292 100644 --- a/packages/react-app-scaffolder/app/templates/no-redux/src/context/__mocks__/mock-context.tsx +++ b/packages/react-app-scaffolder/app/templates/no-redux/src/context/__mocks__/mock-context.tsx @@ -20,6 +20,7 @@ export const mockContext = { cognitoClientId: '123', refreshToken: 'mockRefreshToken', }, + isFetchSession: false, logout: jest.fn(), getLoginSession: jest.fn(), refreshParams: null, diff --git a/packages/react-app-scaffolder/app/templates/no-redux/src/core/private-route-wrapper.tsx b/packages/react-app-scaffolder/app/templates/no-redux/src/core/private-route-wrapper.tsx index 9af526fe57..85b9d0839c 100644 --- a/packages/react-app-scaffolder/app/templates/no-redux/src/core/private-route-wrapper.tsx +++ b/packages/react-app-scaffolder/app/templates/no-redux/src/core/private-route-wrapper.tsx @@ -1,10 +1,9 @@ import * as React from 'react' -import { withRouter, RouteComponentProps, Redirect } from 'react-router-dom' +import { withRouter, RouteComponentProps } from 'react-router-dom' import Menu from '@/components/ui/menu' import { Loader, AppNavContainer, Section } from '@reapit/elements' import { redirectToOAuth } from '@reapit/cognito-auth' import { AuthContext } from '@/context' -import Routes from '@/constants/routes' const { Suspense } = React @@ -13,14 +12,14 @@ export type PrivateRouteWrapperProps = RouteComponentProps & { } export const PrivateRouteWrapper: React.FunctionComponent = ({ children }) => { - const { loginSession, refreshParams, getLoginSession } = React.useContext(AuthContext) + const { loginSession, refreshParams, getLoginSession, isFetchSession } = React.useContext(AuthContext) if (!loginSession && !refreshParams) { redirectToOAuth(window.reapit.config.cognitoClientId) return null } - if (!loginSession && refreshParams) { + if (!loginSession && refreshParams && !isFetchSession) { getLoginSession(refreshParams) } @@ -28,8 +27,12 @@ export const PrivateRouteWrapper: React.FunctionComponent + if (isFetchSession) { + return ( +
+ +
+ ) } return ( diff --git a/packages/react-app-scaffolder/app/templates/no-redux/src/hooks/use-auth.ts b/packages/react-app-scaffolder/app/templates/no-redux/src/hooks/use-auth.ts index 004d60504a..1ecbc9e5be 100644 --- a/packages/react-app-scaffolder/app/templates/no-redux/src/hooks/use-auth.ts +++ b/packages/react-app-scaffolder/app/templates/no-redux/src/hooks/use-auth.ts @@ -15,6 +15,7 @@ export type AuthHook = { logout: () => void getLoginSession: (refreshParams: RefreshParams | null) => Promise refreshParams?: RefreshParams | null + isFetchSession: boolean } export const useAuth = (): AuthHook => { @@ -22,7 +23,7 @@ export const useAuth = (): AuthHook => { const [loginSession, setLoginSession] = React.useState(null) const urlParams: RefreshParams | null = getTokenFromQueryString( window.location.search, - window.reapit.config.cognitoClientId + window.reapit.config.cognitoClientId, ) const cookieParams = getSessionCookie(COOKIE_SESSION_KEY) const refreshParams = cookieParams ? cookieParams : urlParams @@ -51,6 +52,7 @@ export const useAuth = (): AuthHook => { loginSession, logout, getLoginSession, + isFetchSession, } }