45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { ActionContext, ActionTree } from 'vuex'
|
|
import { Mutations, MutationTypes } from './mutations'
|
|
import { State } from './index'
|
|
import { RootState } from '~/store/index'
|
|
|
|
export enum ActionTypes {
|
|
addData = 'addData',
|
|
removeData = 'removeData',
|
|
editData = 'editData'
|
|
}
|
|
|
|
type AppDataActionContext = {
|
|
commit<K extends keyof Mutations>(
|
|
key: K,
|
|
payload: Parameters<Mutations[K]>[1]
|
|
): ReturnType<Mutations[K]>
|
|
} & Omit<ActionContext<State, RootState>, 'commit'>
|
|
|
|
export interface Actions {
|
|
[ActionTypes.addData](
|
|
{ commit }: AppDataActionContext,
|
|
payload: any
|
|
): void
|
|
[ActionTypes.removeData](
|
|
{ commit }: AppDataActionContext,
|
|
payload: any
|
|
): void
|
|
[ActionTypes.editData](
|
|
{ commit }: AppDataActionContext,
|
|
payload: any
|
|
): void
|
|
}
|
|
|
|
export const actions: ActionTree<State, RootState> & Actions = {
|
|
[ActionTypes.addData]({ commit }, payload) {
|
|
commit(MutationTypes.addData, payload)
|
|
},
|
|
[ActionTypes.removeData]({ commit }, payload) {
|
|
commit(MutationTypes.removeData, payload)
|
|
},
|
|
[ActionTypes.editData]({ commit }, payload) {
|
|
commit(MutationTypes.editData, payload)
|
|
},
|
|
}
|