import generator , { Entity } from 'megalodon' ; import { Module , MutationTree , ActionTree } from 'vuex' ; import { RootState } from '@/store' ; export type ReportState = { modalOpen : boolean ; message : Entity . Status | null ; } ; const state = ( ) : ReportState => ( { modalOpen : false , message : null } ) ; export const MUTATION_TYPES = { CHANGE_MODAL_OPEN : 'changeModalOpen' , CHANGE_MESSAGE : 'changeMessage' } ; const mutations = { [ MUTATION_TYPES . CHANGE_MODAL_OPEN ] : ( state , value ) => { state . modalOpen = value ; } , [ MUTATION_TYPES . CHANGE_MESSAGE ] : ( state , message ) => { state . message = message ; } } ; const actions = { openReport : ( { commit } , message ) => { commit ( MUTATION_TYPES . CHANGE_MESSAGE , message ) ; commit ( MUTATION_TYPES . CHANGE_MODAL_OPEN , true ) ; } , submit : async ( { rootState } , { account_id , status_id , comment } ) => { const client = generator ( rootState . TimelineSpace . sns , rootState . TimelineSpace . account . baseURL , rootState . TimelineSpace . account . accessToken , rootState . App . userAgent ) ; return client . report ( account_id , comment , { status_ids : [ status_id ] } ) ; } } ; export default { namespaced : true , state : state , mutations : mutations , actions : actions } as Module < ReportState , RootState > ;