Skip to content

Commit fdfc528

Browse files
authored
fix: mf-6741 handle missing x-oauth token and show error snackbar (#12297)
1 parent e12eedf commit fdfc528

File tree

12 files changed

+59
-18
lines changed

12 files changed

+59
-18
lines changed

packages/mask/dashboard/pages/CreateMaskWallet/FireflyWallet/index.tsx

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import Services from '#services'
22
import { Trans } from '@lingui/react/macro'
33
import { Icons } from '@masknet/icons'
44
import { PopupRoutes } from '@masknet/shared-base'
5-
import { makeStyles } from '@masknet/theme'
5+
import { makeStyles, useCustomSnackbar } from '@masknet/theme'
66
import { Button, Dialog, DialogActions, DialogContent, DialogTitle, Typography } from '@mui/material'
77
import { memo, useState } from 'react'
88
import { useAsyncFn, useAsyncRetry } from 'react-use'
@@ -113,31 +113,47 @@ const useStyles = makeStyles()((theme) => ({
113113
export const Component = memo(function CreateWalletForm() {
114114
const { classes, cx } = useStyles()
115115
const [open, setOpen] = useState(false)
116+
const { showSnackbar } = useCustomSnackbar()
116117

117-
const { retry, value: hasPermission } = useAsyncRetry(() => {
118-
const hasPermission = browser.permissions.contains({
118+
const {
119+
retry,
120+
loading: loadingPermissions,
121+
value: hasPermission,
122+
} = useAsyncRetry(async () => {
123+
const hasPermission = await browser.permissions.contains({
119124
origins: XOAuthRequestOrigins,
120125
})
121126
setOpen(!hasPermission)
122127
return hasPermission
123128
}, [])
124129

125-
const [{ loading }, request] = useAsyncFn(async () => {
130+
const [{ loading: requesting }, request] = useAsyncFn(async () => {
126131
if (!hasPermission) {
127132
setOpen(true)
128133
return
129134
}
130135
try {
131-
const data = await Services.Helper.loginFireflyViaTwitter()
132-
if (!data) return
133-
await Services.Helper.openPopupWindow(PopupRoutes.CreateWallet, {
134-
creatingFireflyWallet: true,
135-
})
136+
await Services.Helper.loginFireflyViaTwitter()
136137
} catch (err) {
137-
console.error('Failed to login firefly', err)
138+
if ((err as Error).message === 'X OAuth token not found') {
139+
const result = await Services.Helper.requestXOAuthToken()
140+
if (result) await Services.Helper.loginFireflyViaTwitter()
141+
} else {
142+
showSnackbar(<Trans>Failed to login firefly</Trans>, {
143+
variant: 'error',
144+
content: (err as Error).message,
145+
})
146+
console.error('Failed to login firefly', err)
147+
}
138148
}
149+
await Services.Helper.openPopupWindow(PopupRoutes.CreateWallet, {
150+
creatingFireflyWallet: true,
151+
})
152+
window.close()
139153
}, [hasPermission])
140154

155+
const loading = requesting || loadingPermissions
156+
141157
return (
142158
<div className={classes.container}>
143159
<Typography className={cx(classes.title, classes.bold)}>

packages/mask/dashboard/pages/SetupPersona/Welcome/index.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,25 +63,25 @@ export const Component = memo(function Welcome() {
6363
Services.Settings.setTelemetryEnabled(true)
6464
}
6565
setAgreed(true)
66-
const from = params.get('from')
67-
const hasRedirect = from && from !== DashboardRoutes.Personas
68-
if (hasRedirect) {
69-
const search = params.get('search') || ''
70-
navigate(from + search)
71-
return
72-
}
7366

7467
try {
7568
const granted = await requestPermissionFromExtensionPage(
7669
[...definedSiteAdaptors.values()].flatMap((x) => x.declarativePermissions.origins),
7770
)
7871
if (!granted) return
7972
if (!userGuideStatus[EnhanceableSite.Twitter].value) userGuideStatus[EnhanceableSite.Twitter].value = '1'
80-
navigate(DashboardRoutes.SignUpPersona, { replace: true })
8173
} catch (err) {
8274
snackbar.showSnackbar(t`Failed to get permissions`, { variant: 'error' })
8375
throw err
8476
}
77+
const from = params.get('from')
78+
const hasRedirect = from && from !== DashboardRoutes.Personas
79+
if (hasRedirect) {
80+
const search = params.get('search') || ''
81+
navigate(from + search)
82+
return
83+
}
84+
navigate(DashboardRoutes.SignUpPersona, { replace: true })
8585
}, [params, allowedToCollect])
8686

8787
return (

packages/mask/shared-ui/locale/en-US.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mask/shared-ui/locale/en-US.po

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mask/shared-ui/locale/ja-JP.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mask/shared-ui/locale/ja-JP.po

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mask/shared-ui/locale/ko-KR.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mask/shared-ui/locale/ko-KR.po

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mask/shared-ui/locale/zh-CN.json

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/mask/shared-ui/locale/zh-CN.po

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)