Unsubscribe on signout (#653)

Co-authored-by: ekzyis <ek@stacker.news>
This commit is contained in:
ekzyis 2023-11-25 21:29:42 +01:00 committed by GitHub
parent a7b5534b7d
commit 32403d0c29
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -26,6 +26,7 @@ import AnonIcon from '../svgs/spy-fill.svg'
import Hat from './hat' import Hat from './hat'
import HiddenWalletSummary from './hidden-wallet-summary' import HiddenWalletSummary from './hidden-wallet-summary'
import { clearNotifications } from '../lib/badge' import { clearNotifications } from '../lib/badge'
import { useServiceWorker } from './serviceworker'
function WalletSummary ({ me }) { function WalletSummary ({ me }) {
if (!me) return null if (!me) return null
@ -84,6 +85,7 @@ function NotificationBell () {
} }
function NavProfileMenu ({ me, dropNavKey }) { function NavProfileMenu ({ me, dropNavKey }) {
const { registration: swRegistration, togglePushSubscription } = useServiceWorker()
return ( return (
<div className='position-relative'> <div className='position-relative'>
<Dropdown className={styles.dropdown} align='end'> <Dropdown className={styles.dropdown} align='end'>
@ -122,7 +124,22 @@ function NavProfileMenu ({ me, dropNavKey }) {
</Link> </Link>
</div> </div>
<Dropdown.Divider /> <Dropdown.Divider />
<Dropdown.Item onClick={() => signOut({ callbackUrl: '/' })}>logout</Dropdown.Item> <Dropdown.Item
onClick={async () => {
try {
// order is important because we need to be logged in to delete push subscription on server
const pushSubscription = await swRegistration?.pushManager.getSubscription()
if (pushSubscription) {
await togglePushSubscription()
}
} catch (err) {
// don't prevent signout because of an unsubscription error
console.error(err)
}
await signOut({ callbackUrl: '/' })
}}
>logout
</Dropdown.Item>
</Dropdown.Menu> </Dropdown.Menu>
</Dropdown> </Dropdown>
{!me.bioId && {!me.bioId &&