refactor oauth repo interface

This commit is contained in:
Ramnique Singh 2026-02-21 22:58:38 +05:30
parent 937c9be891
commit a358ae7051
5 changed files with 35 additions and 88 deletions

View file

@ -84,7 +84,7 @@ async function getProviderConfiguration(provider: string, clientIdOverride?: str
return clientIdOverride;
}
const oauthRepo = getOAuthRepo();
const clientId = await oauthRepo.getClientId(provider);
const { clientId } = await oauthRepo.read(provider);
if (clientId) {
return clientId;
}
@ -212,11 +212,11 @@ export async function connectProvider(provider: string, clientId?: string): Prom
// Save tokens
console.log(`[OAuth] Token exchange successful for ${provider}`);
await oauthRepo.saveTokens(provider, tokens);
await oauthRepo.upsert(provider, { tokens });
if (provider === 'google' && clientId) {
await oauthRepo.setClientId(provider, clientId);
await oauthRepo.upsert(provider, { clientId });
}
await oauthRepo.clearError(provider);
await oauthRepo.upsert(provider, { error: null });
// Trigger immediate sync for relevant providers
if (provider === 'google') {
@ -281,7 +281,7 @@ export async function connectProvider(provider: string, clientId?: string): Prom
export async function disconnectProvider(provider: string): Promise<{ success: boolean }> {
try {
const oauthRepo = getOAuthRepo();
await oauthRepo.clearTokens(provider);
await oauthRepo.delete(provider);
return { success: true };
} catch (error) {
console.error('OAuth disconnect failed:', error);
@ -297,7 +297,7 @@ export async function getAccessToken(provider: string): Promise<string | null> {
try {
const oauthRepo = getOAuthRepo();
let tokens = await oauthRepo.getTokens(provider);
const { tokens } = await oauthRepo.read(provider);
if (!tokens) {
return null;
}
@ -306,7 +306,7 @@ export async function getAccessToken(provider: string): Promise<string | null> {
if (oauthClient.isTokenExpired(tokens)) {
if (!tokens.refresh_token) {
// No refresh token, need to reconnect
await oauthRepo.setError(provider, 'Missing refresh token. Please reconnect.');
await oauthRepo.upsert(provider, { error: 'Missing refresh token. Please reconnect.' });
return null;
}
@ -316,11 +316,11 @@ export async function getAccessToken(provider: string): Promise<string | null> {
// Refresh token, preserving existing scopes
const existingScopes = tokens.scopes;
tokens = await oauthClient.refreshTokens(config, tokens.refresh_token, existingScopes);
await oauthRepo.saveTokens(provider, tokens);
const refreshedTokens = await oauthClient.refreshTokens(config, tokens.refresh_token, existingScopes);
await oauthRepo.upsert(provider, { tokens });
} catch (error) {
const message = error instanceof Error ? error.message : 'Token refresh failed';
await oauthRepo.setError(provider, message);
await oauthRepo.upsert(provider, { error: message });
console.error('Token refresh failed:', error);
return null;
}