From 61ad142bec7b5f04e3e18b4531d6abfdc1eac707 Mon Sep 17 00:00:00 2001 From: delphi Date: Wed, 15 Apr 2026 08:02:35 +0800 Subject: [PATCH] feat: handle API key errors in sync process --- src/cuboxApi.ts | 11 +++++++++++ src/cuboxSetting.ts | 2 +- src/main.ts | 6 +++++- 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/cuboxApi.ts b/src/cuboxApi.ts index b1f7a97..2a69b2f 100644 --- a/src/cuboxApi.ts +++ b/src/cuboxApi.ts @@ -51,6 +51,13 @@ interface ListResponse { data: CuboxArticle[]; } +export class CuboxApiKeyMissingError extends Error { + constructor(message = 'Cubox API key is missing or invalid.') { + super(message); + this.name = 'CuboxApiKeyMissingError'; + } +} + interface ContentResponse { code: number; message: string; @@ -183,6 +190,10 @@ export class CuboxApi { method: 'POST', body: JSON.stringify(requestBody) }) as ListResponse; + + if (response.code === -1100) { + throw new CuboxApiKeyMissingError(response.message || 'API key not found'); + } const articles = response.data ?? []; const hasMore = articles && articles.length >= pageSize; diff --git a/src/cuboxSetting.ts b/src/cuboxSetting.ts index f114270..2c6f53d 100644 --- a/src/cuboxSetting.ts +++ b/src/cuboxSetting.ts @@ -490,7 +490,7 @@ export class CuboxSyncSettingTab extends PluginSettingTab { textComponent.inputEl.disabled = true; } else { // 已选择域名,更新描述和链接 - const url = `https://${domain}/my/settings/extensions`; + const url = `https://${domain}/web/settings/extensions`; const descEl = this.apiKeySetting.descEl; // 清空现有描述 diff --git a/src/main.ts b/src/main.ts index 697fc9f..942e826 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,5 +1,5 @@ import { addIcon, Notice, Plugin, TFile, TFolder } from 'obsidian'; -import { CuboxApi } from './cuboxApi'; +import { CuboxApi, CuboxApiKeyMissingError } from './cuboxApi'; import { TemplateProcessor } from './templateProcessor'; import { formatDateTime } from './utils'; import { CuboxSyncSettingTab, CuboxSyncSettings, DEFAULT_SETTINGS } from './cuboxSetting'; @@ -211,6 +211,10 @@ export default class CuboxSyncPlugin extends Plugin { new Notice(message); } catch (error) { console.error('同步 Cubox 数据失败:', error); + if (error instanceof CuboxApiKeyMissingError) { + new Notice('Cubox API Key not found. Please set your API Key in plugin settings and try again.'); + return; + } new Notice('Cubox sync failed. Please check settings or network.'); } finally { this.settings.syncing = false;