diff --git a/src/settings/settingsTab.ts b/src/settings/settingsTab.ts index 8babcc0..a323f2e 100644 --- a/src/settings/settingsTab.ts +++ b/src/settings/settingsTab.ts @@ -1,19 +1,19 @@ import { App, DropdownComponent, PluginSettingTab, Setting, SliderComponent, TextComponent, ToggleComponent, getLanguage } from 'obsidian'; import CFImageBedPlugin from '../../main'; import { I18n, resolveLanguage } from '../utils/i18n'; -import { UploadChannel } from '../types'; +import { UploadChannel, UPLOAD_CHANNELS, Language, LANGUAGES } from '../types'; import { extractHostname, formatDomainList, parseDomainList } from '../utils/domainUtils'; export class CFImageBedSettingTab extends PluginSettingTab { plugin: CFImageBedPlugin; private i18n: I18n; - private isLanguage(value: string): value is 'zh' | 'en' { - return value === 'zh' || value === 'en'; + private isLanguage(value: string): value is Language { + return (LANGUAGES as readonly string[]).includes(value); } private isUploadChannel(value: string): value is UploadChannel { - return value === 'telegram' || value === 'cfr2' || value === 's3' || value === 'discord' || value === 'huggingface'; + return (UPLOAD_CHANNELS as readonly string[]).includes(value); } constructor(app: App, plugin: CFImageBedPlugin) { @@ -151,6 +151,7 @@ export class CFImageBedSettingTab extends PluginSettingTab { .addOption('s3', this.i18n.t('settings.basic.uploadChannel.options.s3')) .addOption('discord', this.i18n.t('settings.basic.uploadChannel.options.discord')) .addOption('huggingface', this.i18n.t('settings.basic.uploadChannel.options.huggingface')) + .addOption('webdav', this.i18n.t('settings.basic.uploadChannel.options.webdav')) .setValue(this.plugin.settings.uploadChannel) .onChange(async (value: string) => { if (!this.isUploadChannel(value)) { diff --git a/src/types/index.ts b/src/types/index.ts index 328d59a..80be5e0 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -1,4 +1,8 @@ -export type UploadChannel = 'telegram' | 'cfr2' | 's3' | 'discord' | 'huggingface'; +export const UPLOAD_CHANNELS = ['telegram', 'cfr2', 's3', 'discord', 'huggingface', 'webdav'] as const; +export type UploadChannel = (typeof UPLOAD_CHANNELS)[number]; + +export const LANGUAGES = ['zh', 'en'] as const; +export type Language = (typeof LANGUAGES)[number]; export interface CFImageBedSettings { // 基础配置 @@ -45,7 +49,7 @@ export interface CFImageBedSettings { customReturnBaseUrl: string; // 语言配置 - language: 'zh' | 'en'; + language: Language; } export const DEFAULT_SETTINGS: CFImageBedSettings = { diff --git a/src/utils/i18n.ts b/src/utils/i18n.ts index 6b69680..b222237 100644 --- a/src/utils/i18n.ts +++ b/src/utils/i18n.ts @@ -42,7 +42,8 @@ const translations: Record = { cfr2: 'Cloudflare R2', s3: 'S3 兼容存储', discord: 'Discord', - huggingface: 'HuggingFace' + huggingface: 'HuggingFace', + webdav: 'WebDAV' } }, channelName: { @@ -292,7 +293,8 @@ const translations: Record = { cfr2: 'Cloudflare R2', s3: 'S3 compatible storage', discord: 'Discord', - huggingface: 'HuggingFace' + huggingface: 'HuggingFace', + webdav: 'WebDAV' } }, channelName: {