init commit
This commit is contained in:
54
src/store/index.ts
Normal file
54
src/store/index.ts
Normal file
@@ -0,0 +1,54 @@
|
||||
import { configureStore } from "@reduxjs/toolkit";
|
||||
import { createSlice } from "@reduxjs/toolkit";
|
||||
import { createAsyncThunk } from "@reduxjs/toolkit";
|
||||
import { callApi } from "@/api/api";
|
||||
import { type DepartureList } from "@/types/types";
|
||||
|
||||
const fetchTimetable = createAsyncThunk("timetable/phillipStreet", async () => {
|
||||
const hStreetStopId = 7000044;
|
||||
const pStreetStopId = 7000045;
|
||||
|
||||
const hStreetData = await callApi(hStreetStopId);
|
||||
const pStreetData = await callApi(pStreetStopId);
|
||||
|
||||
const hStreetJson = await hStreetData.json();
|
||||
const pStreetJson = await pStreetData.json();
|
||||
|
||||
return {
|
||||
hStreet: hStreetJson,
|
||||
pStreet: pStreetJson,
|
||||
};
|
||||
});
|
||||
|
||||
const timetableSlice = createSlice({
|
||||
name: "timetable",
|
||||
initialState: {
|
||||
hStreet: {
|
||||
departureList: [] as DepartureList[],
|
||||
},
|
||||
pStreet: {
|
||||
departureList: [] as DepartureList[],
|
||||
},
|
||||
},
|
||||
reducers: {},
|
||||
extraReducers: (builder) => {
|
||||
builder.addCase(fetchTimetable.fulfilled, (state, action) => {
|
||||
state.hStreet = action.payload.hStreet;
|
||||
state.pStreet = action.payload.pStreet;
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
const store = configureStore({
|
||||
reducer: {
|
||||
timetable: timetableSlice.reducer,
|
||||
},
|
||||
});
|
||||
|
||||
export { store, fetchTimetable };
|
||||
export default store;
|
||||
export type RootState = ReturnType<typeof store.getState>;
|
||||
export type AppState = ReturnType<typeof store.getState>;
|
||||
export type AppDispatch = typeof store.dispatch;
|
||||
export type ThunkDispatch = typeof store.dispatch;
|
||||
export type fetchTimetableType = typeof fetchTimetable;
|
||||
Reference in New Issue
Block a user