Skip to content

Commit aaf2d26

Browse files
committed
Handle account delete event from boost hub webview
1 parent d2e1fac commit aaf2d26

File tree

8 files changed

+93
-14
lines changed

8 files changed

+93
-14
lines changed

src/components/App.tsx

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ import {
4747
BoostHubTeamDeleteEvent,
4848
listenBoostHubTeamDeleteEvent,
4949
unlistenBoostHubTeamDeleteEvent,
50+
dispatchBoostHubLoginRequestEvent,
51+
listenBoostHubAccountDeleteEvent,
52+
unlistenBoostHubAccountDeleteEvent,
5053
} from '../lib/events'
5154
import {
5255
useCheckedFeatures,
@@ -160,14 +163,6 @@ const App = () => {
160163
}
161164
const { user, teams } = await fetchDesktopGlobalData()
162165
if (user == null) {
163-
setPreferences({
164-
'boosthub.user': undefined,
165-
})
166-
setGeneralStatus({
167-
boostHubTeams: [],
168-
})
169-
return
170-
// User's auth is invalidated. Should go to auth page
171166
messageBox({
172167
title: 'Boost Hub login is required',
173168
message: 'Your BoostHub session has been expired.',
@@ -176,6 +171,10 @@ const App = () => {
176171
iconType: DialogIconTypes.Warning,
177172
onClose: (value: number | null) => {
178173
if (value === 0) {
174+
push(`/app/boosthub/login`)
175+
setTimeout(() => {
176+
dispatchBoostHubLoginRequestEvent()
177+
}, 1000)
179178
return
180179
}
181180

@@ -269,6 +268,7 @@ const App = () => {
269268
}
270269

271270
const boostHubTeamDeleteEventHandler = (event: BoostHubTeamDeleteEvent) => {
271+
push(`/app`)
272272
const deletedTeam = event.detail.team
273273
setGeneralStatus((previousGeneralStatus) => {
274274
const teamMap =
@@ -281,18 +281,29 @@ const App = () => {
281281
boostHubTeams: [...teamMap.values()],
282282
}
283283
})
284+
}
285+
286+
const boostHubAccountDeleteEventHandler = () => {
284287
push(`/app`)
288+
setPreferences({
289+
'boosthub.user': undefined,
290+
})
291+
setGeneralStatus({
292+
boostHubTeams: [],
293+
})
285294
}
286295

287296
listenBoostHubTeamCreateEvent(boostHubTeamCreateEventHandler)
288297
listenBoostHubTeamUpdateEvent(boostHubTeamUpdateEventHandler)
289298
listenBoostHubTeamDeleteEvent(boostHubTeamDeleteEventHandler)
299+
listenBoostHubAccountDeleteEvent(boostHubAccountDeleteEventHandler)
290300
return () => {
291301
unlistenBoostHubTeamCreateEvent(boostHubTeamCreateEventHandler)
292302
unlistenBoostHubTeamUpdateEvent(boostHubTeamUpdateEventHandler)
293303
unlistenBoostHubTeamDeleteEvent(boostHubTeamDeleteEventHandler)
304+
unlistenBoostHubAccountDeleteEvent(boostHubAccountDeleteEventHandler)
294305
}
295-
}, [push, setGeneralStatus])
306+
}, [push, setPreferences, setGeneralStatus])
296307

297308
useBoostNoteProtocol()
298309

src/components/Router.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import WikiNotePage from './pages/WikiNotePage'
1111
import { values } from '../lib/db/utils'
1212
import BoostHubTeamsShowPage from './pages/BoostHubTeamsShowPage'
1313
import BoostHubTeamsCreatePage from './pages/BoostHubTeamsCreatePage'
14+
import BoostHubAccountDeletePage from './pages/BoostHubAccountDeletePage'
1415
import {
1516
BoostHubNavigateRequestEvent,
1617
listenBoostHubNavigateRequestEvent,
@@ -45,10 +46,15 @@ const Router = () => {
4546
openNew(url)
4647
return
4748
}
48-
const firstPathname = pathname!.slice(1).split('/')[0]
49-
switch (firstPathname) {
49+
const pathnameElements = pathname!.slice(1).split('/')
50+
const firstPathnameElement = pathnameElements[0]
51+
switch (firstPathnameElement) {
5052
case 'account':
51-
// TODO: Handle account delete
53+
if (pathnameElements[1] === 'delete') {
54+
push('/app/boosthub/account/delete')
55+
} else {
56+
openNew(url)
57+
}
5258
break
5359
case '':
5460
case 'api':
@@ -70,7 +76,7 @@ const Router = () => {
7076
openNew(url)
7177
break
7278
default:
73-
push(`/app/boosthub/teams/${firstPathname}`)
79+
push(`/app/boosthub/teams/${firstPathnameElement}`)
7480
break
7581
}
7682
}
@@ -115,6 +121,8 @@ function useContent(
115121
return <BoostHubLoginPage />
116122
case 'boosthub.teams.create':
117123
return <BoostHubTeamsCreatePage />
124+
case 'boosthub.account.delete':
125+
return <BoostHubAccountDeletePage />
118126
case 'boosthub.teams.show':
119127
return null
120128
case 'storages.notes':

src/components/atoms/BoostHubWebview.tsx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import {
2929
dispatchBoostHubTeamCreateEvent,
3030
dispatchBoostHubTeamUpdateEvent,
3131
dispatchBoostHubTeamDeleteEvent,
32+
dispatchBoostHubAccountDeleteEvent,
3233
} from '../../lib/events'
3334

3435
export interface WebviewControl {
@@ -139,6 +140,8 @@ const BoostHubWebview = ({
139140
break
140141
case 'team-delete':
141142
dispatchBoostHubTeamDeleteEvent({ team: event.args[0] })
143+
case 'account-delete':
144+
dispatchBoostHubAccountDeleteEvent()
142145
default:
143146
console.log('Unhandled ipc message event', event.channel, event.args)
144147
break

src/components/organisms/BoostHubIntroModal.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ const BoostHubIntroModal = () => {
2626
checkFeature(featureBoostHubIntro)
2727
push(`/app/boosthub/login`)
2828
setTimeout(() => {
29-
console.log('reqqq')
3029
dispatchBoostHubLoginRequestEvent()
3130
}, 1000)
3231
}, [checkFeature, push])
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import React from 'react'
2+
import { boostHubAccountDeletePageUrl } from '../../lib/boosthub'
3+
import PageDraggableHeader from '../atoms/PageDraggableHeader'
4+
import { mdiAccountGroup } from '@mdi/js'
5+
import styled from '../../lib/styled'
6+
import BoostHubWebview from '../atoms/BoostHubWebview'
7+
8+
const BoostHubAccountDeletePage = () => {
9+
return (
10+
<PageContainer>
11+
<PageDraggableHeader
12+
iconPath={mdiAccountGroup}
13+
label='Delete Boost Hub Account'
14+
/>
15+
<WebViewContainer>
16+
<BoostHubWebview src={boostHubAccountDeletePageUrl} />
17+
</WebViewContainer>
18+
</PageContainer>
19+
)
20+
}
21+
22+
export default BoostHubAccountDeletePage
23+
24+
const PageContainer = styled.div`
25+
display: flex;
26+
flex-direction: column;
27+
width: 100%;
28+
height: 100%;
29+
`
30+
31+
const WebViewContainer = styled.div`
32+
width: 100%;
33+
height: 100%;
34+
position: relative;
35+
`

src/lib/boosthub.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ export const boostHubWebViewUserAgent = `${navigator.userAgent} BoostNote ${proc
1414

1515
const boostHubDesktopLoginPageUrl = `${boostHubBaseUrl}/desktop/login`
1616

17+
export const boostHubAccountDeletePageUrl = `${boostHubBaseUrl}/account/delete`
18+
1719
export const boostHubLearnMorePageUrl = `${boostHubBaseUrl}/features`
1820

1921
export function openLoginPage(state: string) {

src/lib/events.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,11 @@ export const {
128128
} = createCustomEventHelper<BoostHubTeamDeleteEventDetail>(
129129
BoostHubTeamDeleteEventName
130130
)
131+
132+
const BoostHubAccountDeleteEventName = 'BoostHub:accountDelete'
133+
export type BoostHubAccountDeleteEvent = CustomEvent
134+
export const {
135+
dispatch: dispatchBoostHubAccountDeleteEvent,
136+
listen: listenBoostHubAccountDeleteEvent,
137+
unlisten: unlistenBoostHubAccountDeleteEvent,
138+
} = createCustomEventHelper(BoostHubAccountDeleteEventName)

src/lib/routeParams.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ export interface BoostHubTeamsCreateRouteParams extends BaseRouteParams {
4747
name: 'boosthub.teams.create'
4848
}
4949

50+
export interface BoostHubAccountDeleteRouteParams extends BaseRouteParams {
51+
name: 'boosthub.account.delete'
52+
}
53+
5054
export interface UnknownRouteParams extends BaseRouteParams {
5155
name: 'unknown'
5256
}
@@ -60,6 +64,7 @@ export type AllRouteParams =
6064
| UnknownRouteParams
6165
| BoostHubTeamsShowRouteParams
6266
| BoostHubTeamsCreateRouteParams
67+
| BoostHubAccountDeleteRouteParams
6368
| BoostHubLoginRouteParams
6469

6570
export const useRouteParams = () => {
@@ -73,6 +78,13 @@ export const useRouteParams = () => {
7378
return {
7479
name: 'boosthub.login',
7580
}
81+
case 'account':
82+
if (names[2] === 'delete') {
83+
return {
84+
name: 'boosthub.account.delete',
85+
}
86+
}
87+
break
7688
default:
7789
case 'teams':
7890
const domain = names[2]
@@ -198,6 +210,7 @@ export const useActiveStorageId = () => {
198210
switch (routeParams.name) {
199211
default:
200212
return routeParams.storageId
213+
case 'boosthub.account.delete':
201214
case 'boosthub.teams.create':
202215
case 'boosthub.teams.show':
203216
case 'boosthub.login':

0 commit comments

Comments
 (0)