From bc212aae98e157b3289abd724ea22edee23c7977 Mon Sep 17 00:00:00 2001 From: yaleiyale Date: Thu, 23 Nov 2023 13:44:59 +0800 Subject: [PATCH] =?UTF-8?q?=20:recycle:=20replace=20=E2=80=98switch?= =?UTF-8?q?=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- src/main.ts | 42 +++++++++++------------------------------- 2 files changed, 12 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 84e3508..70ad35f 100644 --- a/README.md +++ b/README.md @@ -58,7 +58,7 @@ Want to support more platforms? If you want to contribute and don't want to make - Use your *parms* interface. In `config.ts`, add parameter configurations about your *uploader* to provide choices and act as constructors for *uploader* at run time. - Implement your *uploader* and *settings panel* by adding files to `src/Uploader, src/Fragment`. - In `settings-tab.ts`,add your *fragment* to show and set parameters in the setting-tab. -- Add your *uploader* to the switch judgment block in `main.ts`. +- Add your *uploader* to the *UploaderMap* in `main.ts`. - Test it. It's done! 😽 diff --git a/src/main.ts b/src/main.ts index 8c2cc19..247a114 100644 --- a/src/main.ts +++ b/src/main.ts @@ -60,38 +60,18 @@ export default class Emo extends Plugin { startUpload (files: FileList, evt: Event, editor: Editor): void { let uploader: EmoUploader if (files.length > 0) { - switch (this.config.choice) { - case HostingProvider.Github: - uploader = new GithubUploader(this.config.github_parms) - break - case HostingProvider.ImgURL: - uploader = new ImgurlUploader(this.config.imgurl_parms) - break - case HostingProvider.Cloudinary: - uploader = new CloudinaryUploader(this.config.cloudinary_parms) - break - case HostingProvider.Smms: - uploader = new SmmsUploader(this.config.smms_parms) - break - case HostingProvider.Imgbb: - uploader = new ImgbbUploader(this.config.imgbb_parms) - break - case HostingProvider.Imgur: - uploader = new ImgurUploader(this.config.imgur_parms) - break - case HostingProvider.Catbox: - uploader = new CatboxUploader(this.config.catbox_parms) - break - case HostingProvider.Chevereto: - uploader = new CheveretoUploader(this.config.chevereto_parms) - break - case HostingProvider.Alist: - uploader = new AlistUploader(this.config.alist_parms) - break - default: - console.log(new Notice(t('broken'), 2000)) - return + const UploaderMap = { + [HostingProvider.Github]: () => new GithubUploader(this.config.github_parms), + [HostingProvider.ImgURL]: () => new ImgurlUploader(this.config.imgurl_parms), + [HostingProvider.Cloudinary]: () => new CloudinaryUploader(this.config.cloudinary_parms), + [HostingProvider.Smms]: () => new SmmsUploader(this.config.smms_parms), + [HostingProvider.Imgbb]: () => new ImgbbUploader(this.config.imgbb_parms), + [HostingProvider.Imgur]: () => new ImgurUploader(this.config.imgur_parms), + [HostingProvider.Catbox]: () => new CatboxUploader(this.config.catbox_parms), + [HostingProvider.Chevereto]: () => new CheveretoUploader(this.config.chevereto_parms), + [HostingProvider.Alist]: () => new AlistUploader(this.config.alist_parms) } + uploader = UploaderMap[this.config.choice]() if (uploader.isValid()) { // check the necessary parameters evt.preventDefault() for (const file of files) {