fix: clean up OAuth token cache on provider deletion (#7908)
Signed-off-by: Vincenzo Palazzo <vincenzopalazzodev@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -2655,6 +2655,34 @@ export type ProvidersResponses = {
|
||||
|
||||
export type ProvidersResponse2 = ProvidersResponses[keyof ProvidersResponses];
|
||||
|
||||
export type CleanupProviderCacheData = {
|
||||
body?: never;
|
||||
path: {
|
||||
/**
|
||||
* Provider name (e.g., githubcopilot)
|
||||
*/
|
||||
name: string;
|
||||
};
|
||||
query?: never;
|
||||
url: '/config/providers/{name}/cleanup';
|
||||
};
|
||||
|
||||
export type CleanupProviderCacheErrors = {
|
||||
/**
|
||||
* Internal server error
|
||||
*/
|
||||
500: unknown;
|
||||
};
|
||||
|
||||
export type CleanupProviderCacheResponses = {
|
||||
/**
|
||||
* Provider cache cleaned up successfully
|
||||
*/
|
||||
200: string;
|
||||
};
|
||||
|
||||
export type CleanupProviderCacheResponse = CleanupProviderCacheResponses[keyof CleanupProviderCacheResponses];
|
||||
|
||||
export type GetProviderModelsData = {
|
||||
body?: never;
|
||||
path: {
|
||||
|
||||
@@ -17,7 +17,12 @@ import { providerConfigSubmitHandler } from './subcomponents/handlers/DefaultSub
|
||||
import { useConfig } from '../../../ConfigContext';
|
||||
import { useModelAndProvider } from '../../../ModelAndProviderContext';
|
||||
import { AlertTriangle, LogIn } from 'lucide-react';
|
||||
import { ProviderDetails, removeCustomProvider, configureProviderOauth } from '../../../../api';
|
||||
import {
|
||||
ProviderDetails,
|
||||
removeCustomProvider,
|
||||
configureProviderOauth,
|
||||
cleanupProviderCache,
|
||||
} from '../../../../api';
|
||||
import { Button } from '../../../../components/ui/button';
|
||||
import { errorMessage } from '../../../../utils/conversionUtils';
|
||||
|
||||
@@ -153,6 +158,13 @@ export default function ProviderConfigurationModal({
|
||||
return;
|
||||
}
|
||||
|
||||
// Clean up provider-specific cache files (e.g., OAuth tokens) before removing config
|
||||
try {
|
||||
await cleanupProviderCache({ path: { name: provider.name } });
|
||||
} catch {
|
||||
// Cleanup is best-effort — proceed with deletion even if it fails
|
||||
}
|
||||
|
||||
const isCustomProvider = provider.provider_type === 'Custom';
|
||||
|
||||
if (isCustomProvider) {
|
||||
|
||||
Reference in New Issue
Block a user