From a08df92ccc7172aaa0ee8422104107f118a20c8f Mon Sep 17 00:00:00 2001
From: Angelina Filippova <linakirsanova@gmail.com>
Date: Fri, 5 Jun 2020 03:05:58 +0300
Subject: [PATCH] Sort emojis alphabetically

---
 src/views/emojiPacks/components/LocalEmojiPack.vue  | 4 ++--
 src/views/emojiPacks/components/RemoteEmojiPack.vue | 4 ++--
 src/views/emojiPacks/index.vue                      | 9 +++++++--
 3 files changed, 11 insertions(+), 6 deletions(-)

diff --git a/src/views/emojiPacks/components/LocalEmojiPack.vue b/src/views/emojiPacks/components/LocalEmojiPack.vue
index c03ba580..1cf4bdae 100644
--- a/src/views/emojiPacks/components/LocalEmojiPack.vue
+++ b/src/views/emojiPacks/components/LocalEmojiPack.vue
@@ -42,9 +42,9 @@
       <el-collapse-item v-if="isLocal" :title=" $t('emoji.addNewEmoji')" name="addEmoji" class="no-background">
         <new-emoji-uploader :pack-name="name"/>
       </el-collapse-item>
-      <el-collapse-item v-if="Object.keys(pack.files).length > 0" :title=" $t('emoji.manageEmoji')" name="manageEmoji" class="no-background">
+      <el-collapse-item v-if="pack.files.length > 0" :title=" $t('emoji.manageEmoji')" name="manageEmoji" class="no-background">
         <single-emoji-editor
-          v-for="(file, shortcode) in pack.files"
+          v-for="[shortcode, file] in pack.files"
           :key="shortcode"
           :host="host"
           :pack-name="name"
diff --git a/src/views/emojiPacks/components/RemoteEmojiPack.vue b/src/views/emojiPacks/components/RemoteEmojiPack.vue
index 0f31d88c..3ae2af5d 100644
--- a/src/views/emojiPacks/components/RemoteEmojiPack.vue
+++ b/src/views/emojiPacks/components/RemoteEmojiPack.vue
@@ -34,9 +34,9 @@
         </el-form-item>
       </el-form>
       <el-collapse v-model="showPackContent" class="contents-collapse">
-        <el-collapse-item v-if="Object.keys(pack.files).length > 0" :title=" $t('emoji.manageEmoji')" name="manageEmoji" class="no-background">
+        <el-collapse-item v-if="pack.files.length > 0" :title=" $t('emoji.manageEmoji')" name="manageEmoji" class="no-background">
           <single-emoji-editor
-            v-for="(file, shortcode) in pack.files"
+            v-for="[shortcode, file] in pack.files"
             :key="shortcode"
             :host="host"
             :pack-name="name"
diff --git a/src/views/emojiPacks/index.vue b/src/views/emojiPacks/index.vue
index 52568b01..c9173f43 100644
--- a/src/views/emojiPacks/index.vue
+++ b/src/views/emojiPacks/index.vue
@@ -32,7 +32,7 @@
       </el-form-item>
       <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">
-          <local-emoji-pack :name="name" :pack="pack" :host="$store.getters.authHost" :is-local="true" />
+          <local-emoji-pack :name="name" :pack="sortPack(pack)" :host="$store.getters.authHost" :is-local="true" />
         </el-collapse>
       </el-form-item>
       <el-divider class="divider"/>
@@ -52,7 +52,7 @@
       </el-form-item>
       <el-form-item v-if="Object.keys(remotePacks).length > 0" :label="$t('emoji.packs')">
         <el-collapse v-for="(pack, name) in remotePacks" :key="name" v-model="activeRemotePack" @change="setActiveCollapseItems">
-          <remote-emoji-pack :name="name" :pack="pack" :host="$store.getters.authHost" :is-local="false" />
+          <remote-emoji-pack :name="name" :pack="sortPack(pack)" :host="$store.getters.authHost" :is-local="false" />
         </el-collapse>
       </el-form-item>
     </el-form>
@@ -128,6 +128,11 @@ 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')
-- 
GitLab