fix(cloud): add missing oauth action bindings and validation status helper

This commit is contained in:
Draculabo committed 2026-04-11 16:49:10 +08:00
1 parent 4fa0a3c63d
commit 87c17a1ed0
2 files changed
+50 -3

No files matched your search

+24 -3
View File
@@ -2,7 +2,7 @@ import { ipc } from '@/ipc/manager';
import type { DeviceProfile } from '@/types/account';
import { isValidProxyUrl } from '@/utils/url';
export function addGoogleAccount(input: { authCode: string }) {
export function addGoogleAccount(input: { authCode: string; oauthClientKey?: string }) {
return ipc.client.cloud.addGoogleAccount(input);
}
@@ -39,8 +39,29 @@ export function syncLocalAccount() {
return ipc.client.cloud.syncLocalAccount();
}
export function startAuthFlow() {
return ipc.client.cloud.startAuthFlow();
export interface OAuthClientDescriptor {
key: string;
label: string;
client_id: string;
is_active: boolean;
is_builtin: boolean;
}
export function startAuthFlow(input?: { oauthClientKey?: string }) {
return ipc.client.cloud.startAuthFlow(input);
}
export function listOAuthClients() {
return ipc.client.cloud.listOAuthClients() as Promise<OAuthClientDescriptor[]>;
}
export async function getActiveOAuthClient() {
const response = await ipc.client.cloud.getActiveOAuthClient();
return response.client_key;
}
export function setActiveOAuthClient(input: { clientKey: string }) {
return ipc.client.cloud.setActiveOAuthClient(input);
}
export function getSwitchStatus() {
+26
View File
@@ -0,0 +1,26 @@
import type { TFunction } from 'i18next';
import { isOAuthReauthReason, isRateLimitReason } from '@/utils/account-status';
export function getValidationBlockedStatusLabel(
status: 'active' | 'rate_limited' | 'expired' | undefined,
reason: string | undefined,
t: TFunction,
): string | null {
const normalizedReason = (reason || '').toLowerCase();
const hasReason = normalizedReason !== '';
const isBlockedByStatus = status === 'rate_limited' || status === 'expired';
if (!isBlockedByStatus && !hasReason) {
return null;
}
if (status === 'rate_limited' || isRateLimitReason(normalizedReason)) {
return t('cloud.card.validationRiskControlled');
}
if (status === 'expired' || isOAuthReauthReason(normalizedReason)) {
return t('cloud.card.validationOAuthReauthRequired');
}
return t('cloud.card.validationRequired');
}