forked from AkkomaGang/admin-fe
Fetch local pack's files only after opening collapse item to manage emojis
This commit is contained in:
parent
d8299972b5
commit
c2fc99bce0
4 changed files with 41 additions and 20 deletions
|
@ -475,6 +475,7 @@ export default {
|
||||||
specifyShortcode: 'Specify a custom shortcode',
|
specifyShortcode: 'Specify a custom shortcode',
|
||||||
specifyFilename: 'Specify a custom filename',
|
specifyFilename: 'Specify a custom filename',
|
||||||
copy: 'Copy',
|
copy: 'Copy',
|
||||||
copyToLocalPack: 'Copy to local pack'
|
copyToLocalPack: 'Copy to local pack',
|
||||||
|
emptyPack: 'This emoji pack is empty'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,6 +4,7 @@ import {
|
||||||
deleteEmojiFile,
|
deleteEmojiFile,
|
||||||
deletePack,
|
deletePack,
|
||||||
downloadFrom,
|
downloadFrom,
|
||||||
|
fetchPack,
|
||||||
importFromFS,
|
importFromFS,
|
||||||
listPacks,
|
listPacks,
|
||||||
listRemotePacks,
|
listRemotePacks,
|
||||||
|
@ -30,6 +31,9 @@ const packs = {
|
||||||
SET_LOCAL_PACKS: (state, packs) => {
|
SET_LOCAL_PACKS: (state, packs) => {
|
||||||
state.localPacks = packs
|
state.localPacks = packs
|
||||||
},
|
},
|
||||||
|
SET_PACK_FILES: (state, { name, files }) => {
|
||||||
|
state.localPacks = { ...state.localPacks, [name]: { ...state.localPacks[name], files }}
|
||||||
|
},
|
||||||
SET_REMOTE_INSTANCE: (state, name) => {
|
SET_REMOTE_INSTANCE: (state, name) => {
|
||||||
state.remoteInstance = 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 }) {
|
async ImportFromFS({ getters }) {
|
||||||
const result = await importFromFS(getters.authHost, getters.token)
|
const result = await importFromFS(getters.authHost, getters.token)
|
||||||
|
|
||||||
|
@ -136,12 +144,17 @@ const packs = {
|
||||||
commit('UPDATE_LOCAL_PACK_PACK', { name: packName, pack: result.data })
|
commit('UPDATE_LOCAL_PACK_PACK', { name: packName, pack: result.data })
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
SetActiveCollapseItems({ commit, state }, activeItems) {
|
SetActiveCollapseItems({ commit }, activeItems) {
|
||||||
commit('SET_ACTIVE_COLLAPSE_ITEMS', activeItems)
|
commit('SET_ACTIVE_COLLAPSE_ITEMS', activeItems)
|
||||||
},
|
},
|
||||||
async SetLocalEmojiPacks({ commit, getters }) {
|
async SetLocalEmojiPacks({ commit, getters }) {
|
||||||
const { data } = await listPacks(getters.authHost)
|
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 }) {
|
async SetRemoteEmojiPacks({ commit, getters }, { remoteInstance }) {
|
||||||
const { data } = await listRemotePacks(getters.authHost, getters.token, remoteInstance)
|
const { data } = await listRemotePacks(getters.authHost, getters.token, remoteInstance)
|
||||||
|
|
|
@ -38,19 +38,22 @@
|
||||||
</el-link>
|
</el-link>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<el-collapse v-model="showPackContent" class="contents-collapse">
|
<el-collapse v-model="showPackContent" class="contents-collapse" @change="handleChange($event, name)">
|
||||||
<el-collapse-item v-if="isLocal" :title=" $t('emoji.addNewEmoji')" name="addEmoji" class="no-background">
|
<el-collapse-item v-if="isLocal" :title=" $t('emoji.addNewEmoji')" name="addEmoji" class="no-background">
|
||||||
<new-emoji-uploader :pack-name="name"/>
|
<new-emoji-uploader :pack-name="name"/>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
<el-collapse-item v-if="pack.files.length > 0" :title=" $t('emoji.manageEmoji')" name="manageEmoji" class="no-background">
|
<el-collapse-item :title=" $t('emoji.manageEmoji')" name="manageEmoji" class="no-background">
|
||||||
|
<div v-if="pack.files && sortedFiles.length > 0">
|
||||||
<single-emoji-editor
|
<single-emoji-editor
|
||||||
v-for="[shortcode, file] in pack.files"
|
v-for="[shortcode, file] in sortedFiles"
|
||||||
:key="shortcode"
|
:key="shortcode"
|
||||||
:host="host"
|
:host="host"
|
||||||
:pack-name="name"
|
:pack-name="name"
|
||||||
:shortcode="shortcode"
|
:shortcode="shortcode"
|
||||||
:file="file"
|
:file="file"
|
||||||
:is-local="isLocal" />
|
:is-local="isLocal" />
|
||||||
|
</div>
|
||||||
|
<span v-else class="expl">{{ $t('emoji.emptyPack') }}</span>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
</el-collapse>
|
</el-collapse>
|
||||||
</el-collapse-item>
|
</el-collapse-item>
|
||||||
|
@ -101,6 +104,10 @@ export default {
|
||||||
return '155px'
|
return '155px'
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
sortedFiles() {
|
||||||
|
return Object.keys(this.pack.files).sort((a, b) => a.localeCompare(b))
|
||||||
|
.map(key => [key, this.pack.files[key]])
|
||||||
|
},
|
||||||
share: {
|
share: {
|
||||||
get() { return this.pack.pack['share-files'] },
|
get() { return this.pack.pack['share-files'] },
|
||||||
set(value) {
|
set(value) {
|
||||||
|
@ -170,6 +177,11 @@ export default {
|
||||||
.then(() => this.$store.dispatch('SetLocalEmojiPacks'))
|
.then(() => this.$store.dispatch('SetLocalEmojiPacks'))
|
||||||
}).catch(() => {})
|
}).catch(() => {})
|
||||||
},
|
},
|
||||||
|
handleChange(openTabs, name) {
|
||||||
|
if (openTabs.includes('manageEmoji')) {
|
||||||
|
this.$store.dispatch('FetchPack', name)
|
||||||
|
}
|
||||||
|
},
|
||||||
savePackMetadata() {
|
savePackMetadata() {
|
||||||
this.$store.dispatch('SavePackMetadata', { packName: this.name })
|
this.$store.dispatch('SavePackMetadata', { packName: this.name })
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,8 +31,8 @@
|
||||||
</div>
|
</div>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item v-if="Object.keys(localPacks).length > 0" :label="$t('emoji.packs')">
|
<el-form-item v-if="Object.keys(localPacks).length > 0" :label="$t('emoji.packs')">
|
||||||
<el-collapse v-for="(pack, name) in localPacks" :key="name" v-model="activeLocalPack">
|
<el-collapse v-for="(pack, name) in localPacks" :key="name" v-model="activeLocalPack" @change="setActiveCollapseItems">
|
||||||
<local-emoji-pack :name="name" :pack="sortPack(pack)" :host="$store.getters.authHost" :is-local="true" />
|
<local-emoji-pack :name="name" :pack="pack" :host="$store.getters.authHost" :is-local="true" />
|
||||||
</el-collapse>
|
</el-collapse>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-divider class="divider"/>
|
<el-divider class="divider"/>
|
||||||
|
@ -128,11 +128,6 @@ export default {
|
||||||
this.$store.dispatch('ReloadEmoji')
|
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() {
|
refreshLocalPacks() {
|
||||||
try {
|
try {
|
||||||
this.$store.dispatch('SetLocalEmojiPacks')
|
this.$store.dispatch('SetLocalEmojiPacks')
|
||||||
|
|
Loading…
Reference in a new issue