commit: ad7d47f44076b7b0e7234c1cc70fd350dac5d842
parent f9254e5fb77f5dfb3bbc9021618cfeeb09248fa1
Author: Sean King <seanking2919@protonmail.com>
Date:   Thu,  6 Apr 2023 17:59:12 -0600
Move reports module to store
Diffstat:
8 files changed, 64 insertions(+), 74 deletions(-)
diff --git a/src/components/account_actions/account_actions.js b/src/components/account_actions/account_actions.js
@@ -7,6 +7,7 @@ import { library } from '@fortawesome/fontawesome-svg-core'
 import {
   faEllipsisV
 } from '@fortawesome/free-solid-svg-icons'
+import { useReportsStore } from '../../stores/reports'
 
 library.add(
   faEllipsisV
@@ -73,7 +74,7 @@ const AccountActions = {
       this.hideConfirmRemoveUserFromFollowers()
     },
     reportUser () {
-      this.$store.dispatch('openUserReportingModal', { userId: this.user.id })
+      useReportsStore().openUserReportingModal({ userId: this.user.id })
     },
     openChat () {
       this.$router.push({
diff --git a/src/components/extra_buttons/extra_buttons.js b/src/components/extra_buttons/extra_buttons.js
@@ -18,6 +18,7 @@ import {
 } from '@fortawesome/free-regular-svg-icons'
 import { useEditStatusStore } from '../../stores/editStatus'
 import { useStatusHistoryStore } from '../../stores/statusHistory'
+import { useReportsStore } from '../../stores/reports'
 
 library.add(
   faEllipsisH,
@@ -105,7 +106,7 @@ const ExtraButtons = {
         .catch(err => this.$emit('onError', err.error.error))
     },
     reportStatus () {
-      this.$store.dispatch('openUserReportingModal', { userId: this.status.user.id, statusIds: [this.status.id] })
+      useReportsStore().openUserReportingModal({ userId: this.status.user.id, statusIds: [this.status.id] })
     },
     editStatus () {
       this.$store.dispatch('fetchStatusSource', { id: this.status.id })
diff --git a/src/components/report/report.js b/src/components/report/report.js
@@ -1,3 +1,4 @@
+import { useReportsStore } from '../../stores/reports'
 import Select from '../select/select.vue'
 import StatusContent from '../status_content/status_content.vue'
 import Timeago from '../timeago/timeago.vue'
@@ -14,7 +15,7 @@ const Report = {
   },
   computed: {
     report () {
-      return this.$store.state.reports.reports[this.reportId] || {}
+      return useReportsStore().reports[this.reportId] || {}
     },
     state: {
       get: function () { return this.report.state },
@@ -26,7 +27,7 @@ const Report = {
       return generateProfileLink(user.id, user.screen_name, this.$store.state.instance.restrictedNicknames)
     },
     setReportState (state) {
-      return this.$store.dispatch('setReportState', { id: this.report.id, state })
+      return useReportsStore().setReportState({ id: this.report.id, state })
     }
   }
 }
diff --git a/src/components/user_reporting_modal/user_reporting_modal.js b/src/components/user_reporting_modal/user_reporting_modal.js
@@ -3,6 +3,7 @@ import List from '../list/list.vue'
 import Checkbox from '../checkbox/checkbox.vue'
 import Modal from '../modal/modal.vue'
 import UserLink from '../user_link/user_link.vue'
+import { useReportsStore } from '../../stores/reports'
 
 const UserReportingModal = {
   components: {
@@ -23,7 +24,7 @@ const UserReportingModal = {
   },
   computed: {
     reportModal () {
-      return this.$store.state.reports.reportModal
+      return useReportsStore().reportModal
     },
     isLoggedIn () {
       return !!this.$store.state.users.currentUser
@@ -63,7 +64,7 @@ const UserReportingModal = {
       this.error = false
     },
     closeModal () {
-      this.$store.dispatch('closeUserReportingModal')
+      useReportsStore().closeUserReportingModal()
     },
     reportUser () {
       this.processing = true
diff --git a/src/main.js b/src/main.js
@@ -15,7 +15,6 @@ import serverSideStorageModule from './modules/serverSideStorage.js'
 import oauthModule from './modules/oauth.js'
 import authFlowModule from './modules/auth_flow.js'
 import oauthTokensModule from './modules/oauth_tokens.js'
-import reportsModule from './modules/reports.js'
 
 import chatsModule from './modules/chats.js'
 
@@ -75,7 +74,6 @@ const persistedStateOptions = {
       oauth: oauthModule,
       authFlow: authFlowModule,
       oauthTokens: oauthTokensModule,
-      reports: reportsModule,
       chats: chatsModule
     },
     plugins,
diff --git a/src/modules/reports.js b/src/modules/reports.js
@@ -1,65 +0,0 @@
-import filter from 'lodash/filter'
-import { useInterfaceStore } from '../stores/interface'
-
-const reports = {
-  state: {
-    reportModal: {
-      userId: null,
-      statuses: [],
-      preTickedIds: [],
-      activated: false
-    },
-    reports: {}
-  },
-  mutations: {
-    openUserReportingModal (state, { userId, statuses, preTickedIds }) {
-      state.reportModal.userId = userId
-      state.reportModal.statuses = statuses
-      state.reportModal.preTickedIds = preTickedIds
-      state.reportModal.activated = true
-    },
-    closeUserReportingModal (state) {
-      state.reportModal.activated = false
-    },
-    setReportState (reportsState, { id, state }) {
-      reportsState.reports[id].state = state
-    },
-    addReport (state, report) {
-      state.reports[report.id] = report
-    }
-  },
-  actions: {
-    openUserReportingModal ({ rootState, commit }, { userId, statusIds = [] }) {
-      const preTickedStatuses = statusIds.map(id => rootState.statuses.allStatusesObject[id])
-      const preTickedIds = statusIds
-      const statuses = preTickedStatuses.concat(
-        filter(rootState.statuses.allStatuses,
-          status => status.user.id === userId && !preTickedIds.includes(status.id)
-        )
-      )
-      commit('openUserReportingModal', { userId, statuses, preTickedIds })
-    },
-    closeUserReportingModal ({ commit }) {
-      commit('closeUserReportingModal')
-    },
-    setReportState ({ commit, dispatch, rootState }, { id, state }) {
-      const oldState = rootState.reports.reports[id].state
-      commit('setReportState', { id, state })
-      rootState.api.backendInteractor.setReportState({ id, state }).catch(e => {
-        console.error('Failed to set report state', e)
-        useInterfaceStore().pushGlobalNotice({
-          level: 'error',
-          messageKey: 'general.generic_error_message',
-          messageArgs: [e.message],
-          timeout: 5000
-        })
-        commit('setReportState', { id, state: oldState })
-      })
-    },
-    addReport ({ commit }, report) {
-      commit('addReport', report)
-    }
-  }
-}
-
-export default reports
diff --git a/src/modules/statuses.js b/src/modules/statuses.js
@@ -18,6 +18,7 @@ import {
   maybeShowNotification
 } from '../services/notification_utils/notification_utils.js'
 import apiService from '../services/api/api.service.js'
+import { useReportsStore } from '../stores/reports.js'
 
 const emptyTl = (userId = 0) => ({
   statuses: [],
@@ -341,7 +342,7 @@ const addNewNotifications = (state, { dispatch, notifications, older, visibleNot
     }
 
     if (notification.type === 'pleroma:report') {
-      dispatch('addReport', notification.report)
+      useReportsStore().addReport(notification.report)
     }
 
     if (notification.type === 'pleroma:emoji_reaction') {
diff --git a/src/stores/reports.js b/src/stores/reports.js
@@ -0,0 +1,52 @@
+import { defineStore } from 'pinia'
+
+import filter from 'lodash/filter'
+import { useInterfaceStore } from '../stores/interface'
+
+export const useReportsStore = defineStore('reports', {
+  state: () => ({
+    reportModal: {
+      userId: null,
+      statuses: [],
+      preTickedIds: [],
+      activated: false
+    },
+    reports: {}
+  }),
+  actions: {
+    openUserReportingModal ({ userId, statusIds = [] }) {
+      const preTickedStatuses = statusIds.map(id => window.vuex.state.statuses.allStatusesObject[id])
+      const preTickedIds = statusIds
+      const statuses = preTickedStatuses.concat(
+        filter(window.vuex.state.statuses.allStatuses,
+          status => status.user.id === userId && !preTickedIds.includes(status.id)
+        )
+      )
+
+      this.reportModal.userId = userId
+      this.reportModal.statuses = statuses
+      this.reportModal.preTickedIds = preTickedIds
+      this.reportModal.activated = true
+    },
+    closeUserReportingModal () {
+      this.reportModal.activated = false
+    },
+    setReportState ({ id, state }) {
+      const oldState = window.vuex.state.reports.reports[id].state
+      this.reports[id].state = state
+      window.vuex.state.api.backendInteractor.setReportState({ id, state }).catch(e => {
+        console.error('Failed to set report state', e)
+        useInterfaceStore().pushGlobalNotice({
+          level: 'error',
+          messageKey: 'general.generic_error_message',
+          messageArgs: [e.message],
+          timeout: 5000
+        })
+        this.reports[id].state = oldState
+      })
+    },
+    addReport (report) {
+      this.reports[report.id] = report
+    }
+  }
+})