diff --git a/src/components/settings_modal/admin_tabs/emoji_tab.js b/src/components/settings_modal/admin_tabs/emoji_tab.js index 6afd0be5c..115ef519b 100644 --- a/src/components/settings_modal/admin_tabs/emoji_tab.js +++ b/src/components/settings_modal/admin_tabs/emoji_tab.js @@ -12,7 +12,6 @@ import SharedComputedObject from '../helpers/shared_computed_object.js' import StringSetting from '../helpers/string_setting.vue' import { useInstanceStore } from 'src/stores/instance.js' -import { useEmojiStore } from 'src/stores/emoji.js' import { useInterfaceStore } from 'src/stores/interface.js' import { library } from '@fortawesome/fontawesome-svg-core' @@ -175,9 +174,51 @@ const EmojiTab = { this.sortPackFiles(packName) }, + loadPacksPaginated(listFunction) { + const pageSize = 25 + const allPacks = {} + + return listFunction({ + instance: this.remotePackInstance, + page: 1, + pageSize: 0, + }) + .then((data) => data.json()) + .then((data) => { + if (data.error !== undefined) { + return Promise.reject(data.error) + } + + let resultingPromise = Promise.resolve({}) + for (let i = 0; i < Math.ceil(data.count / pageSize); i++) { + resultingPromise = resultingPromise + .then(() => + listFunction({ + instance: this.remotePackInstance, + page: i, + pageSize, + }), + ) + .then((data) => data.json()) + .then((pageData) => { + if (pageData.error !== undefined) { + return Promise.reject(pageData.error) + } + + assign(allPacks, pageData.packs) + }) + } + + return resultingPromise + }) + .then(() => allPacks) + .catch((data) => { + this.displayError(data) + }) + }, + refreshPackList() { - useEmojiStore().getAdminPacks( - this.remotePackInstance, + this.loadPacksPaginated( this.$store.state.api.backendInteractor.listEmojiPacks, ).then((allPacks) => { this.knownLocalPacks = allPacks @@ -187,8 +228,7 @@ const EmojiTab = { }) }, listRemotePacks() { - useEmojiStore().getAdminPacks( - this.remotePackInstance, + this.loadPacksPaginated( this.$store.state.api.backendInteractor.listRemoteEmojiPacks, ) .then((allPacks) => { diff --git a/src/components/status/status.scss b/src/components/status/status.scss index f710088d6..a87897ec5 100644 --- a/src/components/status/status.scss +++ b/src/components/status/status.scss @@ -31,10 +31,10 @@ } .pin { + padding: var(--status-margin) var(--status-margin) 0; display: flex; align-items: center; justify-content: flex-end; - margin-right: 0.5em; } ._misclick-prevention & { @@ -229,6 +229,7 @@ display: flex; align-items: center; padding: 0.4em var(--status-margin); + border-bottom: 1px dotted var(--border); .repeater-avatar { flex: 0 0 1.5em; diff --git a/src/components/status/status.vue b/src/components/status/status.vue index a9312c8e6..e5e4bb75e 100644 --- a/src/components/status/status.vue +++ b/src/components/status/status.vue @@ -46,6 +46,16 @@ -