A social knowledge tool for researchers built on ATProto

linting and formatting

+28 -16
+1 -1
.vscode/launch.json
··· 38 38 "name": "Launch All Services", 39 39 "configurations": [ 40 40 "Backend (dev:mock)", 41 - "Webapp Dev", 41 + "Webapp Dev", 42 42 "Webapp Extension Dev" 43 43 ], 44 44 "stopAll": true
+4 -4
src/webapp/app/auth/complete/page.tsx
··· 54 54 const handleExtensionTokenGeneration = async () => { 55 55 try { 56 56 setMessage('Generating extension tokens...'); 57 - 57 + 58 58 const tokens = await apiClient.generateExtensionTokens(); 59 59 await ExtensionService.sendTokensToExtension(tokens); 60 60 ExtensionService.clearExtensionTokensRequested(); 61 - 61 + 62 62 setMessage('Extension tokens generated successfully!'); 63 - 63 + 64 64 // Redirect to library after successful extension token generation 65 65 setTimeout(() => router.push('/library'), 1000); 66 66 } catch (extensionError: any) { 67 67 console.error('Failed to generate extension tokens:', extensionError); 68 68 ExtensionService.clearExtensionTokensRequested(); 69 69 setMessage('Login successful, but failed to generate extension tokens'); 70 - 70 + 71 71 // Still redirect to library after a delay 72 72 setTimeout(() => router.push('/library'), 2000); 73 73 }
+9 -7
src/webapp/content.ts
··· 7 7 8 8 if (event.data?.type === 'EXTENSION_TOKENS') { 9 9 // Forward tokens to background script 10 - chrome.runtime.sendMessage({ 11 - type: 'WEBAPP_TOKENS_RECEIVED', 12 - accessToken: event.data.accessToken, 13 - refreshToken: event.data.refreshToken 14 - }).catch((error) => { 15 - console.error('Failed to forward tokens to background script:', error); 16 - }); 10 + chrome.runtime 11 + .sendMessage({ 12 + type: 'WEBAPP_TOKENS_RECEIVED', 13 + accessToken: event.data.accessToken, 14 + refreshToken: event.data.refreshToken, 15 + }) 16 + .catch((error) => { 17 + console.error('Failed to forward tokens to background script:', error); 18 + }); 17 19 } 18 20 });
+4 -2
src/webapp/hooks/useExtensionAuth.tsx
··· 54 54 }); 55 55 }, []); 56 56 57 - const getStoredRefreshToken = useCallback(async (): Promise<string | null> => { 57 + const getStoredRefreshToken = useCallback(async (): Promise< 58 + string | null 59 + > => { 58 60 return new Promise((resolve) => { 59 61 if (typeof chrome !== 'undefined' && chrome.storage) { 60 62 chrome.storage.local.get(['refreshToken'], (result) => { ··· 130 132 131 133 if (typeof chrome !== 'undefined' && chrome.runtime?.onMessage) { 132 134 chrome.runtime.onMessage.addListener(handleAuthStateChange); 133 - 135 + 134 136 return () => { 135 137 chrome.runtime.onMessage.removeListener(handleAuthStateChange); 136 138 };
+10 -2
src/webapp/popup.tsx
··· 3 3 useExtensionAuth, 4 4 } from './hooks/useExtensionAuth'; 5 5 import { SaveCardPage } from './components/extension/SaveCardPage'; 6 - import { Card, MantineProvider, ScrollArea, Button, Text, Stack } from '@mantine/core'; 6 + import { 7 + Card, 8 + MantineProvider, 9 + ScrollArea, 10 + Button, 11 + Text, 12 + Stack, 13 + } from '@mantine/core'; 7 14 import '@mantine/core/styles.css'; 8 15 import { theme } from '@/styles/theme'; 9 16 ··· 20 27 21 28 if (!isAuthenticated) { 22 29 const handleSignIn = () => { 23 - const appUrl = process.env.PLASMO_PUBLIC_APP_URL || 'http://localhost:3000'; 30 + const appUrl = 31 + process.env.PLASMO_PUBLIC_APP_URL || 'http://localhost:3000'; 24 32 const loginUrl = `${appUrl}/login?extension-login=true`; 25 33 chrome.tabs.create({ url: loginUrl }); 26 34 window.close();