Adds GSheet read&write API

This commit is contained in:
forceoranj
2021-10-23 03:34:19 +02:00
parent 3398f4f42d
commit 2616b109d7
17 changed files with 881 additions and 17754 deletions

57
src/store/envieList.ts Normal file
View File

@@ -0,0 +1,57 @@
import { PayloadAction, createSlice } from "@reduxjs/toolkit"
import { Envie, getEnvieList } from "../services/envies"
import { AppThunk, AppState } from "."
interface EnvieList {
readyStatus: string
items: Envie[]
error: string | null
}
export const initialState: EnvieList = {
readyStatus: "invalid",
items: [],
error: null,
}
const envieList = createSlice({
name: "envieList",
initialState,
reducers: {
getRequesting: (state: EnvieList) => {
state.readyStatus = "request"
},
getSuccess: (state, { payload }: PayloadAction<Envie[]>) => {
state.readyStatus = "success"
state.items = payload
},
getFailure: (state, { payload }: PayloadAction<string>) => {
state.readyStatus = "failure"
state.error = payload
},
},
})
export default envieList.reducer
export const { getRequesting, getSuccess, getFailure } = envieList.actions
export const fetchEnvieList = (): AppThunk => async (dispatch) => {
dispatch(getRequesting())
const { error, data } = await getEnvieList()
if (error) {
dispatch(getFailure(error.message))
} else {
dispatch(getSuccess(data as Envie[]))
}
}
const shouldFetchEnvieList = (state: AppState) => state.envieList.readyStatus !== "success"
export const fetchEnvieListIfNeed = (): AppThunk => (dispatch, getState) => {
if (shouldFetchEnvieList(getState())) return dispatch(fetchEnvieList())
return null
}

View File

@@ -4,6 +4,7 @@ import { connectRouter } from "connected-react-router"
import userList from "./userList"
import userData from "./userData"
import jeuxJavList from "./jeuxJavList"
import envieList from "./envieList"
// Use inferred return type for making correctly Redux types
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
@@ -11,6 +12,7 @@ export default (history: History) => ({
userList,
userData,
jeuxJavList,
envieList,
router: connectRouter(history) as any,
// Register more reducers...
})