Skip to content

Commit

Permalink
Merge pull request e-mission#1048 from JGreenlee/fix-onboarding-routes
Browse files Browse the repository at this point in the history
fix permissions popup on 'summary' page; refactor
  • Loading branch information
shankari authored Oct 3, 2023
2 parents 6ed342e + a5bd54e commit 4336be5
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 20 deletions.
6 changes: 4 additions & 2 deletions www/js/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import MetricsTab from './metrics/MetricsTab';
import ProfileSettings from './control/ProfileSettings';
import useAppConfig from './useAppConfig';
import OnboardingStack from './onboarding/OnboardingStack';
import { OnboardingState, getPendingOnboardingState } from './onboarding/onboardingHelper';
import { OnboardingRoute, OnboardingState, getPendingOnboardingState } from './onboarding/onboardingHelper';
import { setServerConnSettings } from './config/serverConn';
import AppStatusModal from './control/AppStatusModal';

Expand Down Expand Up @@ -76,7 +76,9 @@ const App = () => {
:
<OnboardingStack />
}
{(pendingOnboardingState == null || pendingOnboardingState.route != 'welcome' && pendingOnboardingState.route != 'consent') &&
{ /* if onboarding is done (state == null), or if is in progress but we are past the
consent page (route > CONSENT), the permissions popup can show if needed */ }
{(pendingOnboardingState == null || pendingOnboardingState.route > OnboardingRoute.CONSENT) &&
<AppStatusModal permitVis={permissionsPopupVis} setPermitVis={setPermissionsPopupVis} />
}
</AppContext.Provider>
Expand Down
19 changes: 8 additions & 11 deletions www/js/onboarding/OnboardingStack.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,30 +6,27 @@ import ConsentPage from "./ConsentPage";
import SurveyPage from "./SurveyPage";
import SaveQrPage from "./SaveQrPage";
import SummaryPage from "./SummaryPage";
import { OnboardingRoute } from "./onboardingHelper";
import { displayErrorMsg } from "../plugin/logger";

// true if loading/undetermined
// 'welcome' if no config present
// 'consent' if config present, but not consented
// 'survey' if consented but intro not done
// null if intro done
const OnboardingStack = () => {

const { pendingOnboardingState } = useContext(AppContext);

console.debug('pendingOnboardingState in OnboardingStack', pendingOnboardingState);

if (pendingOnboardingState.route == 'welcome') {
if (pendingOnboardingState.route == OnboardingRoute.WELCOME) {
return <WelcomePage />;
} else if (pendingOnboardingState.route == 'summary') {
} else if (pendingOnboardingState.route == OnboardingRoute.SUMMARY) {
return <SummaryPage />;
} else if (pendingOnboardingState.route == 'consent') {
} else if (pendingOnboardingState.route == OnboardingRoute.CONSENT) {
return <ConsentPage />;
} else if (pendingOnboardingState.route == 'save-qr') {
} else if (pendingOnboardingState.route == OnboardingRoute.SAVE_QR) {
return <SaveQrPage />;
} else if (pendingOnboardingState.route == 'survey') {
} else if (pendingOnboardingState.route == OnboardingRoute.SURVEY) {
return <SurveyPage />;
} else {
return 'TODO'
displayErrorMsg('OnboardingStack: unknown route', pendingOnboardingState.route);
}
}

Expand Down
20 changes: 13 additions & 7 deletions www/js/onboarding/onboardingHelper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,13 @@ import { getConfig } from "../config/dynamicConfig";

export const INTRO_DONE_KEY = 'intro_done';

type OnboardingRoute = 'welcome' | 'summary' | 'consent' | 'survey' | 'save-qr' | false;
// state = null if onboarding is done
// route = WELCOME if no config present
// route = SUMMARY if config present, but not consented and summary not done
// route = CONSENT if config present, but not consented and summary done
// route = SAVE_QR if config present, consented, but save qr not done
// route = SURVEY if config present, consented and save qr done
export enum OnboardingRoute { WELCOME, SUMMARY, CONSENT, SAVE_QR, SURVEY, NONE };
export type OnboardingState = {
opcode: string,
route: OnboardingRoute,
Expand All @@ -22,17 +28,17 @@ export const setRegisterUserDone = (b) => registerUserDone = b;
export function getPendingOnboardingState(): Promise<OnboardingState> {
return Promise.all([getConfig(), readConsented(), readIntroDone()]).then(([config, isConsented, isIntroDone]) => {
if (isIntroDone) return null; // onboarding is done; no pending state
let route: OnboardingRoute = false;
let route: OnboardingRoute = OnboardingRoute.NONE;
if (!config) {
route = 'welcome';
route = OnboardingRoute.WELCOME;
} else if (!isConsented && !summaryDone) {
route = 'summary';
route = OnboardingRoute.SUMMARY;
} else if (!isConsented) {
route = 'consent';
route = OnboardingRoute.CONSENT;
} else if (!saveQrDone) {
route = 'save-qr';
route = OnboardingRoute.SAVE_QR;
} else {
route = 'survey';
route = OnboardingRoute.SURVEY;
}
return { route, opcode: config?.joined?.opcode };
});
Expand Down

0 comments on commit 4336be5

Please sign in to comment.