tooot/src/stacks/common/relationshipsSlice.js

61 lines
1.4 KiB
JavaScript

import { createAsyncThunk, createSlice } from '@reduxjs/toolkit'
import { client } from 'src/api/client'
export const fetch = createAsyncThunk(
'relationships/fetch',
async ({ ids }, { getState }) => {
if (!ids.length) console.error('Relationships empty')
const instanceLocal = getState().instanceInfo.local + '/api/v1/'
const query = ids.map(id => ({
key: 'id[]',
value: id
}))
const header = {
headers: {
Authorization: `Bearer ${getState().instanceInfo.localToken}`
}
}
return await client.get(
`${instanceLocal}accounts/relationships`,
query,
header
)
}
)
const relationshipsInitState = {
relationships: [],
status: 'idle'
}
export const retrive = state => state.relationships
export const relationshipSlice = createSlice({
name: 'relationships',
initialState: {
relationships: [],
status: 'idle'
},
reducers: {
reset: () => relationshipsInitState
},
extraReducers: {
[fetch.pending]: state => {
state.status = 'loading'
},
[fetch.fulfilled]: (state, action) => {
state.status = 'succeeded'
state.relationships = action.payload
},
[fetch.rejected]: (state, action) => {
state.status = 'failed'
console.error(action.error.message)
}
}
})
export const { reset } = relationshipSlice.actions
export default relationshipSlice.reducer