feat: issues
This commit is contained in:
@@ -8,6 +8,10 @@ import {
|
||||
loadNewsError,
|
||||
loadNewsSuccess,
|
||||
loadNews,
|
||||
loadGiteaIssueError,
|
||||
loadGiteaIssueSuccess,
|
||||
loadGiteaIssue,
|
||||
setSelectedLocation,
|
||||
} from './consts'
|
||||
|
||||
import {
|
||||
@@ -20,6 +24,10 @@ import {
|
||||
type LoadNewsError,
|
||||
type LoadNewsSuccess,
|
||||
type LoadNews,
|
||||
type LoadGiteaIssueError,
|
||||
type LoadGiteaIssueSuccess,
|
||||
type LoadGiteaIssue,
|
||||
type SetSelectedLocation,
|
||||
} from './types';
|
||||
|
||||
export const actions = {
|
||||
@@ -59,4 +67,20 @@ export const actions = {
|
||||
type: loadWeatherError,
|
||||
...args
|
||||
} as LoadWeatherError),
|
||||
loadGiteaIssue: (args: Omit<LoadGiteaIssue, "type">) => ({
|
||||
type: loadGiteaIssue,
|
||||
...args
|
||||
} as LoadGiteaIssue),
|
||||
loadGiteaIssueSuccess: (args: Omit<LoadGiteaIssueSuccess, "type">) => ({
|
||||
type: loadGiteaIssueSuccess,
|
||||
...args
|
||||
} as LoadGiteaIssueSuccess),
|
||||
loadGiteaIssueError: (args: Omit<LoadGiteaIssueError, "type">) => ({
|
||||
type: loadGiteaIssueError,
|
||||
...args
|
||||
} as LoadGiteaIssueError),
|
||||
setSelectedLocation: (args: Omit<SetSelectedLocation, "type">) => ({
|
||||
type: setSelectedLocation,
|
||||
...args
|
||||
} as SetSelectedLocation),
|
||||
}
|
||||
|
||||
@@ -11,3 +11,9 @@ export const loadNewsError: ActionType = 'loadNewsError';
|
||||
export const loadWeather: ActionType = 'loadWeather';
|
||||
export const loadWeatherSuccess: ActionType = 'loadWeatherSuccess';
|
||||
export const loadWeatherError: ActionType = 'loadWeatherError';
|
||||
|
||||
export const loadGiteaIssue: ActionType = 'loadGiteaIssue';
|
||||
export const loadGiteaIssueSuccess: ActionType = 'loadGiteaIssueSuccess';
|
||||
export const loadGiteaIssueError: ActionType = 'loadGiteaIssueError';
|
||||
|
||||
export const setSelectedLocation: ActionType = 'setSelectedLocation';
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
export type ActionType = string;
|
||||
|
||||
import type {Station} from '../../types';
|
||||
import type {Article} from '../../types/article';
|
||||
import type {IssuesResponse} from '../../types/issues';
|
||||
import type { DepartureType } from '../../types/liveboard';
|
||||
import type {WeatherData} from '../../types/weather';
|
||||
import {
|
||||
@@ -13,6 +15,10 @@ import {
|
||||
loadWeather,
|
||||
loadWeatherError,
|
||||
loadWeatherSuccess,
|
||||
loadGiteaIssueSuccess,
|
||||
loadGiteaIssueError,
|
||||
loadGiteaIssue,
|
||||
setSelectedLocation,
|
||||
} from './consts'
|
||||
|
||||
export type Action = {
|
||||
@@ -25,7 +31,8 @@ export type LoadTrainSchedule = {
|
||||
|
||||
export type LoadTrainScheduleSuccess = {
|
||||
type: typeof loadTrainScheduleSuccess,
|
||||
departures: DepartureType[]
|
||||
departures: DepartureType[],
|
||||
stations: Station[]
|
||||
}
|
||||
|
||||
export type LoadTrainScheduleError = {
|
||||
@@ -62,3 +69,22 @@ export type LoadWeatherError = {
|
||||
error: Error
|
||||
}
|
||||
|
||||
export type LoadGiteaIssue = {
|
||||
type: typeof loadGiteaIssue,
|
||||
}
|
||||
|
||||
export type LoadGiteaIssueSuccess = {
|
||||
type: typeof loadGiteaIssueSuccess,
|
||||
data: IssuesResponse
|
||||
}
|
||||
|
||||
export type LoadGiteaIssueError = {
|
||||
type: typeof loadGiteaIssueError,
|
||||
error: Error
|
||||
}
|
||||
|
||||
export type SetSelectedLocation = {
|
||||
type: typeof setSelectedLocation,
|
||||
location: string,
|
||||
}
|
||||
|
||||
|
||||
@@ -10,4 +10,9 @@ export const initialState: State = {
|
||||
weather: undefined,
|
||||
weatherError: undefined,
|
||||
weatherLoading: false,
|
||||
issues: undefined,
|
||||
issuesError: undefined,
|
||||
issuesLoading: false,
|
||||
stations: undefined,
|
||||
selectedLocation: 'Nivelles'
|
||||
};
|
||||
|
||||
@@ -17,6 +17,13 @@ import {
|
||||
type LoadWeatherSuccess,
|
||||
type LoadNewsError,
|
||||
type LoadNewsSuccess,
|
||||
loadGiteaIssueSuccess,
|
||||
loadGiteaIssue,
|
||||
type LoadGiteaIssueSuccess,
|
||||
loadGiteaIssueError,
|
||||
type LoadGiteaIssueError,
|
||||
setSelectedLocation,
|
||||
type SetSelectedLocation,
|
||||
} from './actions';
|
||||
|
||||
|
||||
@@ -34,6 +41,7 @@ export const reducerInner = (state: State, action: Action): State => {
|
||||
return {
|
||||
...state,
|
||||
departures: (action as LoadTrainScheduleSuccess).departures,
|
||||
stations: (action as LoadTrainScheduleSuccess).stations,
|
||||
trainScheduleLoading: false,
|
||||
}
|
||||
}
|
||||
@@ -85,6 +93,33 @@ export const reducerInner = (state: State, action: Action): State => {
|
||||
weatherError: (action as LoadWeatherError).error,
|
||||
weatherLoading: false,
|
||||
}
|
||||
}
|
||||
else if(action.type === loadGiteaIssue) {
|
||||
return {
|
||||
...state,
|
||||
issuesError: undefined,
|
||||
issuesLoading: true,
|
||||
}
|
||||
}
|
||||
else if(action.type === loadGiteaIssueSuccess) {
|
||||
return {
|
||||
...state,
|
||||
issues: (action as LoadGiteaIssueSuccess).data,
|
||||
issuesLoading: false,
|
||||
}
|
||||
}
|
||||
else if(action.type === loadGiteaIssueError) {
|
||||
return {
|
||||
...state,
|
||||
issuesLoading: false,
|
||||
issuesError: (action as LoadGiteaIssueError).error,
|
||||
}
|
||||
}
|
||||
else if(action.type === setSelectedLocation) {
|
||||
return {
|
||||
...state,
|
||||
selectedLocation: (action as SetSelectedLocation).location,
|
||||
}
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import type {Station} from "../types";
|
||||
import type { Article } from "../types/article";
|
||||
import type {IssuesResponse} from "../types/issues";
|
||||
import type { DepartureType } from "../types/liveboard";
|
||||
import type { WeatherData } from "../types/weather";
|
||||
|
||||
@@ -14,4 +16,11 @@ export type State = {
|
||||
news: Article[] | undefined,
|
||||
newsLoading: boolean,
|
||||
newsError: Error | undefined,
|
||||
|
||||
issues: IssuesResponse | undefined,
|
||||
issuesLoading: boolean,
|
||||
issuesError: Error | undefined,
|
||||
|
||||
stations: undefined | Station[],
|
||||
selectedLocation: string,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user