From ac215112366934a0185877da6bcf94b063bbbe5c Mon Sep 17 00:00:00 2001
From: AkiraFukushima
Date: Thu, 11 Apr 2019 00:15:12 +0900
Subject: [PATCH] refs #850 Replace Report with typescript
---
src/renderer/store/TimelineSpace/Modals.ts | 5 +-
.../store/TimelineSpace/Modals/Report.js | 34 ------------
.../store/TimelineSpace/Modals/Report.ts | 52 +++++++++++++++++++
3 files changed, 55 insertions(+), 36 deletions(-)
delete mode 100644 src/renderer/store/TimelineSpace/Modals/Report.js
create mode 100644 src/renderer/store/TimelineSpace/Modals/Report.ts
diff --git a/src/renderer/store/TimelineSpace/Modals.ts b/src/renderer/store/TimelineSpace/Modals.ts
index 5c0392ae..11b31bb9 100644
--- a/src/renderer/store/TimelineSpace/Modals.ts
+++ b/src/renderer/store/TimelineSpace/Modals.ts
@@ -5,7 +5,7 @@ import ListMembership, { ListMembershipState } from './Modals/ListMembership'
import AddListMember, { AddListMemberState } from './Modals/AddListMember'
import MuteConfirm, { MuteConfirmState } from './Modals/MuteConfirm'
import Shortcut from './Modals/Shortcut'
-import Report from './Modals/Report'
+import Report, { ReportState } from './Modals/Report'
import { Module, GetterTree } from 'vuex'
import { RootState } from '@/store/index'
@@ -17,7 +17,8 @@ export interface ModalsModuleState extends ModalsState {
ImageViewer: ImageViewerState,
ListMembership: ListMembershipState,
MuteConfirm: MuteConfirmState,
- NewToot: NewTootModuleState
+ NewToot: NewTootModuleState,
+ Report: ReportState
}
const state = (): ModalsState => ({})
diff --git a/src/renderer/store/TimelineSpace/Modals/Report.js b/src/renderer/store/TimelineSpace/Modals/Report.js
deleted file mode 100644
index 73a526f6..00000000
--- a/src/renderer/store/TimelineSpace/Modals/Report.js
+++ /dev/null
@@ -1,34 +0,0 @@
-import Mastodon from 'megalodon'
-
-export default {
- namespaced: true,
- state: {
- modalOpen: false,
- message: {}
- },
- mutations: {
- changeModalOpen (state, value) {
- state.modalOpen = value
- },
- changeMessage (state, value) {
- state.message = value
- }
- },
- actions: {
- openReport ({ commit }, message) {
- commit('changeMessage', message)
- commit('changeModalOpen', true)
- },
- submit ({ rootState }, payload) {
- const client = new Mastodon(
- rootState.TimelineSpace.account.accessToken,
- rootState.TimelineSpace.account.baseURL + '/api/v1'
- )
- return client.post(`/reports`, {
- account_id: payload.account_id,
- status_ids: [payload.status_id],
- comment: payload.comment
- })
- }
- }
-}
diff --git a/src/renderer/store/TimelineSpace/Modals/Report.ts b/src/renderer/store/TimelineSpace/Modals/Report.ts
new file mode 100644
index 00000000..0fa77a50
--- /dev/null
+++ b/src/renderer/store/TimelineSpace/Modals/Report.ts
@@ -0,0 +1,52 @@
+import Mastodon, { Status } from 'megalodon'
+import { Module, MutationTree, ActionTree } from 'vuex'
+import { RootState } from '@/store'
+
+export interface ReportState {
+ modalOpen: boolean,
+ message: Status | null
+}
+
+const state = (): ReportState => ({
+ modalOpen: false,
+ message: null
+})
+
+export const MUTATION_TYPES = {
+ CHANGE_MODAL_OPEN: 'changeModalOpen',
+ CHANGE_MESSAGE: 'changeMessage'
+}
+
+const mutations: MutationTree = {
+ [MUTATION_TYPES.CHANGE_MODAL_OPEN]: (state, value: boolean) => {
+ state.modalOpen = value
+ },
+ [MUTATION_TYPES.CHANGE_MESSAGE]: (state, message: Status) => {
+ state.message = message
+ }
+}
+
+const actions: ActionTree = {
+ openReport: ({ commit }, message: Status) => {
+ commit(MUTATION_TYPES.CHANGE_MESSAGE, message)
+ commit(MUTATION_TYPES.CHANGE_MODAL_OPEN, true)
+ },
+ submit: async ({ rootState }, { account_id, status_id, comment }) => {
+ const client = new Mastodon(
+ rootState.TimelineSpace.account.accessToken!,
+ rootState.TimelineSpace.account.baseURL + '/api/v1'
+ )
+ return client.post<{}>(`/reports`, {
+ account_id: account_id,
+ status_ids: [status_id],
+ comment: comment
+ })
+ }
+}
+
+export default {
+ namespaced: true,
+ state: state,
+ mutations: mutations,
+ actions: actions
+} as Module