diff --git a/src/lang/en.js b/src/lang/en.js index 2ef9a89c..16ff35f2 100644 --- a/src/lang/en.js +++ b/src/lang/en.js @@ -475,6 +475,7 @@ export default { specifyShortcode: 'Specify a custom shortcode', specifyFilename: 'Specify a custom filename', copy: 'Copy', - copyToLocalPack: 'Copy to local pack' + copyToLocalPack: 'Copy to local pack', + emptyPack: 'This emoji pack is empty' } } diff --git a/src/store/modules/emojiPacks.js b/src/store/modules/emojiPacks.js index e4748c26..c809dbf1 100644 --- a/src/store/modules/emojiPacks.js +++ b/src/store/modules/emojiPacks.js @@ -4,6 +4,7 @@ import { deleteEmojiFile, deletePack, downloadFrom, + fetchPack, importFromFS, listPacks, listRemotePacks, @@ -30,6 +31,9 @@ const packs = { SET_LOCAL_PACKS: (state, packs) => { state.localPacks = packs }, + SET_PACK_FILES: (state, { name, files }) => { + state.localPacks = { ...state.localPacks, [name]: { ...state.localPacks[name], files }} + }, SET_REMOTE_INSTANCE: (state, name) => { state.remoteInstance = name }, @@ -99,6 +103,10 @@ const packs = { }) } }, + async FetchPack({ getters, commit }, name) { + const { data } = await fetchPack(name, getters.authHost, getters.token) + commit('SET_PACK_FILES', { name, files: data.files }) + }, async ImportFromFS({ getters }) { const result = await importFromFS(getters.authHost, getters.token) @@ -136,12 +144,17 @@ const packs = { commit('UPDATE_LOCAL_PACK_PACK', { name: packName, pack: result.data }) } }, - SetActiveCollapseItems({ commit, state }, activeItems) { + SetActiveCollapseItems({ commit }, activeItems) { commit('SET_ACTIVE_COLLAPSE_ITEMS', activeItems) }, async SetLocalEmojiPacks({ commit, getters }) { const { data } = await listPacks(getters.authHost) - commit('SET_LOCAL_PACKS', data) + const packs = Object.keys(data).reduce((acc, packName) => { + const { files, ...pack } = data[packName] + acc[packName] = pack + return acc + }, {}) + commit('SET_LOCAL_PACKS', packs) }, async SetRemoteEmojiPacks({ commit, getters }, { remoteInstance }) { const { data } = await listRemotePacks(getters.authHost, getters.token, remoteInstance) diff --git a/src/views/emojiPacks/components/LocalEmojiPack.vue b/src/views/emojiPacks/components/LocalEmojiPack.vue index 1cf4bdae..cdf9a5c5 100644 --- a/src/views/emojiPacks/components/LocalEmojiPack.vue +++ b/src/views/emojiPacks/components/LocalEmojiPack.vue @@ -38,19 +38,22 @@ - + - - + +
+ +
+ {{ $t('emoji.emptyPack') }}
@@ -101,6 +104,10 @@ export default { return '155px' } }, + sortedFiles() { + return Object.keys(this.pack.files).sort((a, b) => a.localeCompare(b)) + .map(key => [key, this.pack.files[key]]) + }, share: { get() { return this.pack.pack['share-files'] }, set(value) { @@ -170,6 +177,11 @@ export default { .then(() => this.$store.dispatch('SetLocalEmojiPacks')) }).catch(() => {}) }, + handleChange(openTabs, name) { + if (openTabs.includes('manageEmoji')) { + this.$store.dispatch('FetchPack', name) + } + }, savePackMetadata() { this.$store.dispatch('SavePackMetadata', { packName: this.name }) } diff --git a/src/views/emojiPacks/index.vue b/src/views/emojiPacks/index.vue index c9173f43..14811828 100644 --- a/src/views/emojiPacks/index.vue +++ b/src/views/emojiPacks/index.vue @@ -31,8 +31,8 @@ - - + + @@ -128,11 +128,6 @@ export default { this.$store.dispatch('ReloadEmoji') }) }, - sortPack(pack) { - const orderedFiles = Object.keys(pack.files).sort((a, b) => a.localeCompare(b)) - .map(key => [key, pack.files[key]]) - return { ...pack, files: orderedFiles } - }, refreshLocalPacks() { try { this.$store.dispatch('SetLocalEmojiPacks')