Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/spreed.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormarco <marcoambrosini@pm.me>2022-04-08 15:54:18 +0300
committerJoas Schilling <coding@schilljs.com>2022-04-13 17:14:20 +0300
commitf02889a6cfb1fa6bf910a42d52dd3ed6a70bad66 (patch)
tree4b0892f9099ac020fddeebc3b3082eef3b5deb46 /src
parent51da02f828ead24a56401ee0963d446192d887b7 (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.vue5
-rw-r--r--src/components/RightSidebar/SharedItems/SharedItemsTab.vue42
-rw-r--r--src/store/conversationSharedItemsStore.js30
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)
}