init commit

This commit is contained in:
2025-07-24 02:21:21 +02:00
commit afd46715c2
23 changed files with 1337 additions and 0 deletions

54
src/store/index.ts Normal file
View 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;