From 278da7c537ee6e57135c76262095a5b44832cb27 Mon Sep 17 00:00:00 2001 From: darthmaim Date: Fri, 10 Jan 2025 00:31:03 +0100 Subject: [PATCH] Add some FedCM types --- .../(fed-cm)/fed-cm/login/SetLoginStatus.tsx | 4 ++-- apps/web/types.d.ts | 23 +++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/apps/web/app/(fed-cm)/fed-cm/login/SetLoginStatus.tsx b/apps/web/app/(fed-cm)/fed-cm/login/SetLoginStatus.tsx index 18017319..b7c5395e 100644 --- a/apps/web/app/(fed-cm)/fed-cm/login/SetLoginStatus.tsx +++ b/apps/web/app/(fed-cm)/fed-cm/login/SetLoginStatus.tsx @@ -5,11 +5,11 @@ import { useEffect, type FC } from 'react'; export const SetLoginStatus: FC = () => { useEffect(() => { if('login' in navigator) { - (navigator.login as { setStatus(status: string): void }).setStatus('logged-in'); + navigator.login.setStatus('logged-in'); } if('IdentityProvider' in window) { - (window.IdentityProvider as { close(): void }).close(); + window.IdentityProvider.close(); } }); diff --git a/apps/web/types.d.ts b/apps/web/types.d.ts index 16d8f9dc..a968ae9e 100644 --- a/apps/web/types.d.ts +++ b/apps/web/types.d.ts @@ -8,3 +8,26 @@ declare module '*.svg?svgr' { const SVG: React.VFC>; export default SVG; } + +interface Navigator { + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/Navigator/login) */ + login: NavigatorLogin +} + +/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLoginn) */ +interface NavigatorLogin { + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLogin/setStatus) */ + setStatus(status: 'logged-in' | 'logged-out'): Promise +} + +interface Window { + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/IdentityProvider) */ + IdentityProvider: IdentityProvider +} + +/** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/IdentityProvider) */ +interface IdentityProvider { + /** [MDN Reference](https://developer.mozilla.org/en-US/docs/Web/API/IdentityProvider/close_static) */ + close(): undefined +} +