MCPcopy Create free account
hub / github.com/DeepNotesApp/DeepNotes / tryRefreshTokens

Function tryRefreshTokens

apps/client/src/code/auth/refresh.ts:26–175  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

24const moduleLogger = mainLogger.sub('auth/refresh.client.ts');
25
26export async function tryRefreshTokens(): Promise<void> {
27 moduleLogger.info('Trying to refresh tokens');
28
29 if (!authStore().loggedIn) {
30 moduleLogger.info(
31 'authStore().loggedIn is false, skipping refresh request',
32 );
33 return;
34 }
35
36 // Logout if a requirement is not met
37
38 if (
39 !isClientTokenValid('refresh') ||
40 internals.storage.getItem('encryptedPrivateKeyring') == null ||
41 internals.storage.getItem('encryptedSymmetricKeyring') == null
42 ) {
43 moduleLogger.info('Requirements not met, logging out');
44 await logout();
45 return;
46 }
47
48 // Skip refresh if unnecessary
49
50 if (
51 internals.keyPair != null &&
52 internals.symmetricKeyring != null &&
53 !areClientTokensExpiring()
54 ) {
55 moduleLogger.info('Tokens are not expiring, skipping refresh request');
56 return;
57 }
58
59 // Try to refresh tokens
60
61 try {
62 let oldSessionKey: SymmetricKey;
63 let newSessionKey: SymmetricKey;
64
65 if (authStore().oldSessionKey && authStore().newSessionKey) {
66 moduleLogger.info(
67 'Tokens already refreshed on server, skipping refresh request',
68 );
69
70 oldSessionKey = wrapSymmetricKey(
71 base64ToBytes(authStore().oldSessionKey),
72 );
73 newSessionKey = wrapSymmetricKey(
74 base64ToBytes(authStore().newSessionKey),
75 );
76 } else {
77 moduleLogger.info('Sending refresh request');
78
79 const response = await trpcClient.sessions.refresh.mutate(undefined);
80
81 oldSessionKey = wrapSymmetricKey(response.oldSessionKey);
82 newSessionKey = wrapSymmetricKey(response.newSessionKey);
83 }

Callers 1

auth.client.tsFile · 0.90

Calls 15

isClientTokenValidFunction · 0.90
logoutFunction · 0.90
areClientTokensExpiringFunction · 0.90
wrapSymmetricKeyFunction · 0.90
base64ToBytesFunction · 0.90
createKeyringFunction · 0.90
base64ToBytesSafeFunction · 0.90
createPrivateKeyringFunction · 0.90
wrapKeyPairFunction · 0.90
createSymmetricKeyringFunction · 0.90
bytesToBase64Function · 0.90

Tested by

no test coverage detected