on master help sign in
fix: disclaimer freezing because of incorrect router and mount order
7446bf6Matt Condon (shrugs)
src/Bridge.js+9−6
@@ -48,12 +48,15 @@ function useInitialRoutes() {
48 ];
48 ];
49 }
49 }
50
50
51− return hasImpliedTicket
51+ if (hasImpliedTicket) {
52− ? [{ key: ROUTE_NAMES.ACTIVATE }]
52+ return [{ key: ROUTE_NAMES.ACTIVATE }];
53− : [
53+ }
54− { key: ROUTE_NAMES.LOGIN },
54+
55+ if (!hasDisclaimed) {
55− ...(!hasDisclaimed ? [{ key: ROUTE_NAMES.DISCLAIMER }] : []),
56+ return [{ key: ROUTE_NAMES.DISCLAIMER, data: { next: ROUTE_NAMES.LOGIN } }];
56− ];
57+ }
58+
59+ return [{ key: ROUTE_NAMES.LOGIN }];
57}
60}
58
61
59function Bridge() {
62function Bridge() {
src/views/Activate/ActivateCode.js+3−3
@@ -64,10 +64,10 @@ export default function ActivateCode() {
64 ]);
64 ]);
65
65
66 const goToPassport = useCallback(() => {
66 const goToPassport = useCallback(() => {
67− push(names.PASSPORT);
68−
69 if (!hasDisclaimed) {
67 if (!hasDisclaimed) {
70− push(names.DISCLAIMER);
68+ push(names.DISCLAIMER, { next: names.PASSPORT });
69+ } else {
70+ push(names.PASSPORT);
71 }
71 }
72 }, [hasDisclaimed, names.DISCLAIMER, names.PASSPORT, push]);
72 }, [hasDisclaimed, names.DISCLAIMER, names.PASSPORT, push]);
73
73
src/views/Disclaimer.js+10−6
@@ -2,8 +2,8 @@ import React, { useCallback, useMemo } from 'react';
2import cn from 'classnames';
2import cn from 'classnames';
3import { Grid, H3, B, Text, CheckboxInput } from 'indigo-react';
3import { Grid, H3, B, Text, CheckboxInput } from 'indigo-react';
4
4
5−import { useHistory } from 'store/history';
6import useHasDisclaimed from 'lib/useHasDisclaimed';
5import useHasDisclaimed from 'lib/useHasDisclaimed';
6+import { useLocalRouter } from 'lib/LocalRouter';
7
7
8import View from 'components/View';
8import View from 'components/View';
9import WarningBox from 'components/WarningBox';
9import WarningBox from 'components/WarningBox';
@@ -14,7 +14,7 @@ import { composeValidator, buildCheckboxValidator } from 'form/validators';
14const TEXT_STYLE = 'f5';
14const TEXT_STYLE = 'f5';
15
15
16export default function ActivateDisclaimer() {
16export default function ActivateDisclaimer() {
17− const { pop } = useHistory();
17+ const { pop, popAndPush, data } = useLocalRouter();
18 const [, setHasDisclaimed] = useHasDisclaimed();
18 const [, setHasDisclaimed] = useHasDisclaimed();
19
19
20 const validate = useMemo(
20 const validate = useMemo(
@@ -24,10 +24,14 @@ export default function ActivateDisclaimer() {
24
24
25 const initialValues = useMemo(() => ({ checkbox: false }), []);
25 const initialValues = useMemo(() => ({ checkbox: false }), []);
26
26
27− const goBack = useCallback(async () => {
27+ const goNext = useCallback(async () => {
28 setHasDisclaimed(true);
28 setHasDisclaimed(true);
29+ if (data.next) {
30+ popAndPush(data.next);
31+ } else {
29− pop();
32+ pop();
33+ }
30− }, [pop, setHasDisclaimed]);
34+ }, [data, pop, popAndPush, setHasDisclaimed]);
31
35
32 return (
36 return (
33 <View>
37 <View>
@@ -81,7 +85,7 @@ export default function ActivateDisclaimer() {
81 </Grid.Item>
85 </Grid.Item>
82 <BridgeForm
86 <BridgeForm
83 validate={validate}
87 validate={validate}
84− afterSubmit={goBack}
88+ afterSubmit={goNext}
85 initialValues={initialValues}>
89 initialValues={initialValues}>
86 {({ handleSubmit }) => (
90 {({ handleSubmit }) => (
87 <>
91 <>