51 lines
1.1 KiB
TypeScript
Raw Normal View History

2024-09-15 13:45:13 +08:00
export function saveRedirectTo (redirectTo: string) {
localStorage.setItem('redirectTo', redirectTo);
}
2024-09-15 13:45:13 +08:00
export function getRedirectTo () {
return localStorage.getItem('redirectTo');
}
2024-09-15 13:45:13 +08:00
export function clearRedirectTo () {
localStorage.removeItem('redirectTo');
}
export const AUTH_CALLBACK_PATH = '/auth/callback';
export const AUTH_CALLBACK_URL = `${window.location.origin}${AUTH_CALLBACK_PATH}`;
2024-09-15 13:45:13 +08:00
export function withSignIn () {
return function (
// eslint-disable-next-line
_target: any,
_propertyKey: string,
2024-09-15 13:45:13 +08:00
descriptor: PropertyDescriptor,
) {
const originalMethod = descriptor.value;
// eslint-disable-next-line
descriptor.value = async function (args: { redirectTo: string }) {
const redirectTo = args.redirectTo;
saveRedirectTo(redirectTo);
try {
await originalMethod.apply(this, [args]);
} catch (e) {
console.error(e);
return Promise.reject(e);
}
};
return descriptor;
};
}
2024-09-15 13:45:13 +08:00
export function afterAuth () {
const redirectTo = getRedirectTo();
if (redirectTo) {
clearRedirectTo();
window.location.href = redirectTo;
}
}