From 18110d6821119a95af550c7e52a67cdfe15119f7 Mon Sep 17 00:00:00 2001 From: Ekaterina Vaartis Date: Tue, 14 Jan 2025 02:01:50 +0300 Subject: [PATCH 1/4] Add a way to upload new packs from URL/ZIP file --- changelog.d/emoji-upload.-zip.add | 1 + .../settings_modal/admin_tabs/emoji_tab.js | 48 +++++++++++++- .../settings_modal/admin_tabs/emoji_tab.vue | 62 ++++++++++++++++++- src/services/api/api.service.js | 14 +++++ 4 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 changelog.d/emoji-upload.-zip.add diff --git a/changelog.d/emoji-upload.-zip.add b/changelog.d/emoji-upload.-zip.add new file mode 100644 index 000000000..798720eef --- /dev/null +++ b/changelog.d/emoji-upload.-zip.add @@ -0,0 +1 @@ +Added a way to upload new packs from a URL or ZIP file via the admin-fe diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.js b/src/components/settings_modal/admin_tabs/emoji_tab.js index 7f575bcb4..e6327fb2f 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.js +++ b/src/components/settings_modal/admin_tabs/emoji_tab.js @@ -32,7 +32,10 @@ const EmojiTab = { newPackName: '', deleteModalVisible: false, remotePackInstance: '', - remotePackDownloadAs: '' + remotePackDownloadAs: '', + + remotePackURL: '', + remotePackFile: null } }, @@ -220,7 +223,7 @@ const EmojiTab = { .then(data => data.json()) .then(resp => { if (resp === 'ok') { - this.$refs.dlPackPopover.hidePopover() + this.$refs.downloadPackPopover.hidePopover() return this.refreshPackList() } else { @@ -232,6 +235,47 @@ const EmojiTab = { this.remotePackDownloadAs = '' }) }, + downloadRemoteURLPack () { + this.$store.state.api.backendInteractor.downloadRemoteEmojiPackZIP({ + url: this.remotePackURL, packName: this.newPackName + }) + .then(data => data.json()) + .then(resp => { + if (resp === 'ok') { + this.$refs.additionalRemotePopover.hidePopover() + + return this.refreshPackList() + } else { + this.displayError(resp.error) + return Promise.reject(resp) + } + }).then(_done => { + this.packName = this.newPackName + this.newPackName = '' + this.remotePackURL = '' + }) + }, + downloadRemoteFilePack () { + this.$store.state.api.backendInteractor.downloadRemoteEmojiPackZIP({ + file: this.remotePackFile[0], packName: this.newPackName + }) + .then(data => data.json()) + .then(resp => { + if (resp === 'ok') { + this.$refs.additionalRemotePopover.hidePopover() + + return this.refreshPackList() + } else { + this.displayError(resp.error) + return Promise.reject(resp) + } + }).then(_done => { + this.packName = this.newPackName + this.newPackName = '' + this.remotePackURL = '' + }) + }, + displayError (msg) { useInterfaceStore().pushGlobalNotice({ messageKey: 'admin_dash.emoji.error', diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.vue b/src/components/settings_modal/admin_tabs/emoji_tab.vue index 4bf64c921..333ff8b0e 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.vue +++ b/src/components/settings_modal/admin_tabs/emoji_tab.vue @@ -62,6 +62,64 @@ +

{{ $t('admin_dash.emoji.emoji_packs') }}

@@ -240,12 +298,12 @@ v-if="pack.remote !== undefined" class="button button-default btn" type="button" - @click="$refs.dlPackPopover.showPopover" + @click="$refs.downloadPackPopover.showPopover" > {{ $t('admin_dash.emoji.download_pack') }} `/api/v1/pleroma/emoji/packs?page=${page}&page_size=${pageSize}` const PLEROMA_EMOJI_PACK_URL = (name) => `/api/v1/pleroma/emoji/pack?name=${name}` const PLEROMA_EMOJI_PACKS_DL_REMOTE_URL = '/api/v1/pleroma/emoji/packs/download' +const PLEROMA_EMOJI_PACKS_DL_REMOTE_ZIP_URL = '/api/v1/pleroma/emoji/packs/download_zip' const PLEROMA_EMOJI_PACKS_LS_REMOTE_URL = (url, page, pageSize) => `/api/v1/pleroma/emoji/packs/remote?url=${url}&page=${page}&page_size=${pageSize}` const PLEROMA_EMOJI_UPDATE_FILE_URL = (name) => `/api/v1/pleroma/emoji/packs/files?name=${name}` @@ -1918,6 +1919,18 @@ const downloadRemoteEmojiPack = ({ instance, packName, as }) => { ) } +const downloadRemoteEmojiPackZIP = ({ url, packName, file }) => { + const data = new FormData() + if (file) data.set('file', file) + if (url) data.set('url', url) + data.set('name', packName) + + return fetch( + PLEROMA_EMOJI_PACKS_DL_REMOTE_ZIP_URL, + { method: 'POST', body: data } + ) +} + const saveEmojiPackMetadata = ({ name, newData }) => { return fetch( PLEROMA_EMOJI_PACK_URL(name), @@ -2123,6 +2136,7 @@ const apiService = { deleteEmojiFile, listRemoteEmojiPacks, downloadRemoteEmojiPack, + downloadRemoteEmojiPackZIP, fetchBookmarkFolders, createBookmarkFolder, updateBookmarkFolder, From 047dda5525cca0339caa0c187518ace2d20af867 Mon Sep 17 00:00:00 2001 From: HJ <30-hj@users.noreply.git.pleroma.social> Date: Sun, 10 Aug 2025 20:22:39 +0000 Subject: [PATCH 2/4] Apply 2 suggestion(s) to 1 file(s) --- src/components/settings_modal/admin_tabs/emoji_tab.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.js b/src/components/settings_modal/admin_tabs/emoji_tab.js index e6327fb2f..d1aac4bdc 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.js +++ b/src/components/settings_modal/admin_tabs/emoji_tab.js @@ -249,7 +249,7 @@ const EmojiTab = { this.displayError(resp.error) return Promise.reject(resp) } - }).then(_done => { + }).then(() => { this.packName = this.newPackName this.newPackName = '' this.remotePackURL = '' @@ -269,7 +269,7 @@ const EmojiTab = { this.displayError(resp.error) return Promise.reject(resp) } - }).then(_done => { + }).then((_done)) => { this.packName = this.newPackName this.newPackName = '' this.remotePackURL = '' From b80035cbb0c63400fcb76fbfe13ff1cc83cb21e5 Mon Sep 17 00:00:00 2001 From: HJ <30-hj@users.noreply.git.pleroma.social> Date: Sun, 10 Aug 2025 20:23:09 +0000 Subject: [PATCH 3/4] Apply 1 suggestion(s) to 1 file(s) --- src/components/settings_modal/admin_tabs/emoji_tab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.js b/src/components/settings_modal/admin_tabs/emoji_tab.js index d1aac4bdc..7caec48df 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.js +++ b/src/components/settings_modal/admin_tabs/emoji_tab.js @@ -269,7 +269,7 @@ const EmojiTab = { this.displayError(resp.error) return Promise.reject(resp) } - }).then((_done)) => { + }).then(()) => { this.packName = this.newPackName this.newPackName = '' this.remotePackURL = '' From 1d3b271e7c2099c3481a9b1f743a1c3519cbdc76 Mon Sep 17 00:00:00 2001 From: HJ <30-hj@users.noreply.git.pleroma.social> Date: Sun, 10 Aug 2025 20:30:24 +0000 Subject: [PATCH 4/4] Apply 1 suggestion(s) to 1 file(s) --- src/components/settings_modal/admin_tabs/emoji_tab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.js b/src/components/settings_modal/admin_tabs/emoji_tab.js index 7caec48df..a315756e8 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.js +++ b/src/components/settings_modal/admin_tabs/emoji_tab.js @@ -269,7 +269,7 @@ const EmojiTab = { this.displayError(resp.error) return Promise.reject(resp) } - }).then(()) => { + }).then(() => { this.packName = this.newPackName this.newPackName = '' this.remotePackURL = ''