diff options
author | marco <marcoambrosini@pm.me> | 2022-04-08 15:54:18 +0300 |
---|---|---|
committer | Joas Schilling <coding@schilljs.com> | 2022-04-13 17:14:20 +0300 |
commit | f02889a6cfb1fa6bf910a42d52dd3ed6a70bad66 (patch) | |
tree | 4b0892f9099ac020fddeebc3b3082eef3b5deb46 /src | |
parent | 51da02f828ead24a56401ee0963d446192d887b7 (diff) |
Get shared items overview upon opening the tab
Signed-off-by: marco <marcoambrosini@pm.me>
Diffstat (limited to 'src')
-rw-r--r-- | src/components/RightSidebar/RightSidebar.vue | 5 | ||||
-rw-r--r-- | src/components/RightSidebar/SharedItems/SharedItemsTab.vue | 42 | ||||
-rw-r--r-- | src/store/conversationSharedItemsStore.js | 30 |
3 files changed, 52 insertions, 25 deletions
diff --git a/src/components/RightSidebar/RightSidebar.vue b/src/components/RightSidebar/RightSidebar.vue index dffe2ba68..f16347906 100644 --- a/src/components/RightSidebar/RightSidebar.vue +++ b/src/components/RightSidebar/RightSidebar.vue @@ -81,13 +81,14 @@ ref="sharedItemsTab" :order="4" icon="icon-details" - :name="t('spreed', 'Shared Items')"> + :name="t('spreed', 'Shared Items')" + @update:active="handleUpdateActive"> <template #icon> <FolderMultipleImage :size="20" decorative title="" /> </template> - <SharedItemsTab :conversation="conversation" /> + <SharedItemsTab :active="activeTab === 'shared-items'" /> </AppSidebarTab> </AppSidebar> </template> diff --git a/src/components/RightSidebar/SharedItems/SharedItemsTab.vue b/src/components/RightSidebar/SharedItems/SharedItemsTab.vue index 79b48bdfc..de396c96d 100644 --- a/src/components/RightSidebar/SharedItems/SharedItemsTab.vue +++ b/src/components/RightSidebar/SharedItems/SharedItemsTab.vue @@ -20,7 +20,7 @@ --> <template> - <div> + <div v-if="!loading && active"> <SharedItems title="Media"> some content </SharedItems> @@ -31,8 +31,8 @@ some content </SharedItems> <SharedItems title="Projects"> - <CollectionList v-if="getUserId && conversation.token" - :id="conversation.token" + <CollectionList v-if="getUserId && token" + :id="token" type="room" :name="conversation.displayName" /> </SharedItems> @@ -42,7 +42,6 @@ <script> import { CollectionList } from 'nextcloud-vue-collections' import SharedItems from './SharedItems' -import { EventBus } from '../../../services/EventBus' export default { @@ -54,8 +53,9 @@ export default { }, props: { - conversation: { - type: Object, + + active: { + type: Boolean, required: true, }, }, @@ -66,24 +66,28 @@ export default { }, token() { - return this.conversation.token + return this.$store.getters.getToken() }, - }, - beforeMount() { - EventBus.$on('route-change', this.getSharedItemsOverview) - }, + conversation() { + return this.$store.getters.conversation(this.token) + }, - /** - * mounted() { - if (this.token) { - this.getSharedItemsOverview() - } + loading() { + return !this.sharedItems + }, + + sharedItems() { + return this.$store.getters.sharedItems(this.token) + }, }, - */ - beforeDestroy() { - EventBus.$off('route-change', this.getSharedItemsOverview) + watch: { + active(newValue) { + if (newValue) { + this.getSharedItemsOverview() + } + }, }, methods: { diff --git a/src/store/conversationSharedItemsStore.js b/src/store/conversationSharedItemsStore.js index 612b70c21..88db08531 100644 --- a/src/store/conversationSharedItemsStore.js +++ b/src/store/conversationSharedItemsStore.js @@ -38,17 +38,35 @@ const state = () => ({ }) const getters = { - getterSharedItems: (state, token) => { - return state[token] + sharedItems: state => token => { + const sharedItems = {} + if (!state[token]) { + return {} + } + for (const type of Object.keys(state[token])) { + if (Object.keys(state[token][type]).length !== 0) { + sharedItems[type] = state[token][type] + } + } + return sharedItems }, } export const mutations = { - addSharedItem: (state, { token, type, response }) => { + addSharedItemsOverview: (state, { token, data }) => { if (!state[token]) { Vue.set(state, token, {}) } - Vue.set(state[token], type, response) + for (const type of Object.keys(data)) { + if (!state[token][type]) { + Vue.set(state[token], type, {}) + for (const message of data[type]) { + if (!state[token][type]?.[message.id]) { + Vue.set(state[token][type], message.id, message) + } + } + } + } }, } @@ -69,6 +87,10 @@ const actions = { async getSharedItemsOverview({ commit }, { token }) { try { const response = await getSharedItemsOverview(token, 10) + commit('addSharedItemsOverview', { + token, + data: response.data.ocs.data, + }) } catch (error) { console.debug(error) } |