2020-03-15 09:47:56 +01:00
|
|
|
import generator, { Entity } from 'megalodon'
|
2019-05-12 07:34:34 +02:00
|
|
|
import { Module, MutationTree, ActionTree } from 'vuex'
|
|
|
|
import { RootState } from '@/store'
|
|
|
|
|
2019-06-06 16:44:50 +02:00
|
|
|
export type FollowRequestsState = {
|
2020-03-15 09:47:56 +01:00
|
|
|
requests: Array<Entity.Account>
|
2019-05-12 07:34:34 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
const state = (): FollowRequestsState => ({
|
|
|
|
requests: []
|
|
|
|
})
|
|
|
|
|
|
|
|
export const MUTATION_TYPES = {
|
|
|
|
UPDATE_REQUESTS: 'updateRequests'
|
|
|
|
}
|
|
|
|
|
|
|
|
const mutations: MutationTree<FollowRequestsState> = {
|
2020-03-15 09:47:56 +01:00
|
|
|
[MUTATION_TYPES.UPDATE_REQUESTS]: (state, accounts: Array<Entity.Account>) => {
|
2019-05-12 07:34:34 +02:00
|
|
|
state.requests = accounts
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const actions: ActionTree<FollowRequestsState, RootState> = {
|
2020-03-15 09:47:56 +01:00
|
|
|
fetchRequests: async ({ commit, rootState }): Promise<Array<Entity.Account>> => {
|
|
|
|
const client = generator(
|
|
|
|
rootState.TimelineSpace.sns,
|
|
|
|
rootState.TimelineSpace.account.baseURL,
|
|
|
|
rootState.TimelineSpace.account.accessToken,
|
2020-06-30 17:07:55 +02:00
|
|
|
rootState.App.userAgent
|
2019-10-27 06:41:03 +01:00
|
|
|
)
|
2020-03-15 09:47:56 +01:00
|
|
|
const res = await client.getFollowRequests()
|
2019-05-12 07:34:34 +02:00
|
|
|
commit(MUTATION_TYPES.UPDATE_REQUESTS, res.data)
|
|
|
|
return res.data
|
|
|
|
},
|
2020-03-15 09:47:56 +01:00
|
|
|
acceptRequest: async ({ dispatch, rootState }, user: Entity.Account) => {
|
|
|
|
const client = generator(
|
|
|
|
rootState.TimelineSpace.sns,
|
|
|
|
rootState.TimelineSpace.account.baseURL,
|
|
|
|
rootState.TimelineSpace.account.accessToken,
|
2020-06-30 17:07:55 +02:00
|
|
|
rootState.App.userAgent
|
2019-10-27 06:41:03 +01:00
|
|
|
)
|
2020-03-15 09:47:56 +01:00
|
|
|
const res = await client.acceptFollowRequest(user.id)
|
2019-06-17 14:35:32 +02:00
|
|
|
await dispatch('fetchRequests')
|
2019-05-12 07:34:34 +02:00
|
|
|
dispatch('TimelineSpace/SideMenu/fetchFollowRequests', rootState.TimelineSpace.account, { root: true })
|
|
|
|
return res.data
|
|
|
|
},
|
2020-03-15 09:47:56 +01:00
|
|
|
rejectRequest: async ({ dispatch, rootState }, user: Entity.Account) => {
|
|
|
|
const client = generator(
|
|
|
|
rootState.TimelineSpace.sns,
|
|
|
|
rootState.TimelineSpace.account.baseURL,
|
|
|
|
rootState.TimelineSpace.account.accessToken,
|
2020-06-30 17:07:55 +02:00
|
|
|
rootState.App.userAgent
|
2019-10-27 06:41:03 +01:00
|
|
|
)
|
2020-03-15 09:47:56 +01:00
|
|
|
const res = await client.rejectFollowRequest(user.id)
|
2019-06-17 14:35:32 +02:00
|
|
|
await dispatch('fetchRequests')
|
2019-05-12 07:34:34 +02:00
|
|
|
dispatch('TimelineSpace/SideMenu/fetchFollowRequests', rootState.TimelineSpace.account, { root: true })
|
|
|
|
return res.data
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const FollowRequests: Module<FollowRequestsState, RootState> = {
|
|
|
|
namespaced: true,
|
|
|
|
state: state,
|
|
|
|
mutations: mutations,
|
|
|
|
actions: actions
|
|
|
|
}
|
|
|
|
|
|
|
|
export default FollowRequests
|