on master help sign in
Merge pull request #342 from urbit/close-window-invite

prevent users bailing midway through activate

commit47b92011b0e64ba80351d357fead476a89770592 authorFang <git@fang.io> dateFri 6 Dec 2019, 12:13 (7 years ago) parentf697a82566475e
3 files changed+23
src/lib/useBlockWindowClose.js+17 src/views/Activate/PassportTransfer.js+3 src/views/Admin/Reticket/ReticketExecute.js+3
src/lib/useBlockWindowClose.jsnew file+17
@@ -0,0 +1,17 @@
1+import { useEffect } from 'react';
2+
3+function onBeforeUnload(e) {
4+ e.preventDefault();
5+
6+ e.returnValue = '';
7+}
8+
9+export default function useBlockWindowClose() {
10+ return useEffect(() => {
11+ window.addEventListener('beforeunload', onBeforeUnload);
12+
13+ return function cleanup() {
14+ window.removeEventListener('beforeunload', onBeforeUnload);
15+ };
16+ });
17+}
src/views/Activate/PassportTransfer.js+3
@@ -8,6 +8,7 @@ import { usePointCursor } from 'store/pointCursor';
88
99import * as need from 'lib/need';
1010import useLifecycle from 'lib/useLifecycle';
11+import useBlockWindowClose from 'lib/useBlockWindowClose';
1112import {
1213 reticketPointBetweenWallets,
1314 TRANSACTION_PROGRESS,
@@ -60,6 +61,8 @@ export default function PassportTransfer({ className, resetActivateRouter }) {
6061 [replaceWith, names]
6162 );
6263
64+ useBlockWindowClose();
65+
6366 const goToRestart = useCallback(() => {
6467 // NOTE: because we're already on the ACTIVATE view in the history,
6568 // react (intelligently) doesn't trigger a re-render and that means the
src/views/Admin/Reticket/ReticketExecute.js+3
@@ -10,6 +10,7 @@ import * as need from 'lib/need';
1010import useLifecycle from 'lib/useLifecycle';
1111import { WALLET_TYPES } from 'lib/wallet';
1212import convertToInt from 'lib/convertToInt';
13+import useBlockWindowClose from 'lib/useBlockWindowClose';
1314
1415import { useNetwork } from 'store/network';
1516import { useWallet } from 'store/wallet';
@@ -52,6 +53,8 @@ export default function ReticketExecute({ newWallet, setNewWallet }) {
5253 const [needFunds, setNeedFunds] = useState();
5354 const isDone = progress >= 1.0;
5455
56+ useBlockWindowClose();
57+
5558 // start reticketing transactions on mount
5659 useLifecycle(() => {
5760 (async () => {