mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-13 21:05:19 +00:00
fix: patch refresh token logic (#1665)
This commit is contained in:
@@ -1,8 +1,11 @@
|
||||
import { toast } from '@affine/component';
|
||||
import type { MessageCode } from '@affine/datacenter';
|
||||
import { MessageCode } from '@affine/datacenter';
|
||||
import { messages } from '@affine/datacenter';
|
||||
import type React from 'react';
|
||||
import { useEffect } from 'react';
|
||||
import { memo, useEffect, useState } from 'react';
|
||||
|
||||
import { useOnGoogleLogout } from '../../../hooks/use-on-google-logout';
|
||||
import { apis } from '../../../shared/apis';
|
||||
|
||||
declare global {
|
||||
interface DocumentEventMap {
|
||||
@@ -12,20 +15,42 @@ declare global {
|
||||
}
|
||||
}
|
||||
|
||||
export const MessageCenter: React.FC = () => {
|
||||
export const MessageCenter: React.FC = memo(function MessageCenter() {
|
||||
const [popup, setPopup] = useState(false);
|
||||
const onLogout = useOnGoogleLogout();
|
||||
useEffect(() => {
|
||||
const listener = (
|
||||
event: CustomEvent<{
|
||||
code: MessageCode;
|
||||
}>
|
||||
) => {
|
||||
toast(messages[event.detail.code].message);
|
||||
// fixme: need refactor
|
||||
// - login and refresh refresh logic should be refactored
|
||||
// - error message should be refactored
|
||||
if (
|
||||
!popup &&
|
||||
(event.detail.code === MessageCode.refreshTokenError ||
|
||||
event.detail.code === MessageCode.loginError)
|
||||
) {
|
||||
setPopup(true);
|
||||
apis
|
||||
.signInWithGoogle()
|
||||
.then(() => {
|
||||
setPopup(false);
|
||||
})
|
||||
.catch(() => {
|
||||
setPopup(false);
|
||||
onLogout();
|
||||
});
|
||||
} else {
|
||||
toast(messages[event.detail.code].message);
|
||||
}
|
||||
};
|
||||
|
||||
document.addEventListener('affine-error', listener);
|
||||
return () => {
|
||||
document.removeEventListener('affine-error', listener);
|
||||
};
|
||||
}, []);
|
||||
}, [onLogout, popup]);
|
||||
return null;
|
||||
};
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user