From b17165805e1ec678467cde28b6ac4c0aae86c6fd Mon Sep 17 00:00:00 2001 From: david Date: Wed, 8 May 2024 19:48:35 +0900 Subject: [PATCH 1/4] migrate: migrate common reducers --- src/actions/common/track.ts | 2 +- src/reducers/common/{index.js => index.ts} | 1 + src/reducers/common/media.js | 18 --------------- src/reducers/common/media.ts | 20 ++++++++++++++++ src/reducers/common/semester.js | 18 --------------- src/reducers/common/semester.ts | 21 +++++++++++++++++ src/reducers/common/track.js | 18 --------------- src/reducers/common/track.ts | 20 ++++++++++++++++ src/reducers/common/{user.js => user.ts} | 27 +++++++++++----------- 9 files changed, 77 insertions(+), 68 deletions(-) rename src/reducers/common/{index.js => index.ts} (83%) delete mode 100644 src/reducers/common/media.js create mode 100644 src/reducers/common/media.ts delete mode 100644 src/reducers/common/semester.js create mode 100644 src/reducers/common/semester.ts delete mode 100644 src/reducers/common/track.js create mode 100644 src/reducers/common/track.ts rename src/reducers/common/{user.js => user.ts} (52%) diff --git a/src/actions/common/track.ts b/src/actions/common/track.ts index cb3503b..a1af9c5 100644 --- a/src/actions/common/track.ts +++ b/src/actions/common/track.ts @@ -6,7 +6,7 @@ import GeneralTrack from '@/shapes/model/graduation/GeneralTrack'; import MajorTrack from '@/shapes/model/graduation/MajorTrack'; import AdditionalTrack from '@/shapes/model/graduation/AdditionalTrack'; -interface TracksProps { +export interface TracksProps { general: GeneralTrack[]; major: MajorTrack[]; additional: AdditionalTrack[]; diff --git a/src/reducers/common/index.js b/src/reducers/common/index.ts similarity index 83% rename from src/reducers/common/index.js rename to src/reducers/common/index.ts index a3cb827..76bf73f 100644 --- a/src/reducers/common/index.js +++ b/src/reducers/common/index.ts @@ -11,4 +11,5 @@ const CombinedReducer = combineReducers({ media: media, }); +export type CommonState = ReturnType; export default CombinedReducer; diff --git a/src/reducers/common/media.js b/src/reducers/common/media.js deleted file mode 100644 index aecca3a..0000000 --- a/src/reducers/common/media.js +++ /dev/null @@ -1,18 +0,0 @@ -import { SET_IS_PORTRAIT } from '../../actions/common/media'; - -const initialState = { - isPortrait: false, -}; - -export const reducer = (state = initialState, action) => { - switch (action.type) { - case SET_IS_PORTRAIT: - return Object.assign({}, state, { - isPortrait: action.isPortrait, - }); - default: - return state; - } -}; - -export default reducer; diff --git a/src/reducers/common/media.ts b/src/reducers/common/media.ts new file mode 100644 index 0000000..484a27e --- /dev/null +++ b/src/reducers/common/media.ts @@ -0,0 +1,20 @@ +import { MediaAction, SET_IS_PORTRAIT } from '../../actions/common/media'; + +interface MediaState { + isPortrait: boolean; +} + +const initialState: MediaState = { + isPortrait: false, +}; + +export const reducer = (state = initialState, action: MediaAction): MediaState => { + switch (action.type) { + case SET_IS_PORTRAIT: + return { ...state, isPortrait: action.isPortrait }; + default: + return state; + } +}; + +export default reducer; diff --git a/src/reducers/common/semester.js b/src/reducers/common/semester.js deleted file mode 100644 index a4829b0..0000000 --- a/src/reducers/common/semester.js +++ /dev/null @@ -1,18 +0,0 @@ -import { SET_SEMESTERS } from '../../actions/common/semester'; - -const initialState = { - semesters: null, -}; - -export const reducer = (state = initialState, action) => { - switch (action.type) { - case SET_SEMESTERS: - return Object.assign({}, state, { - semesters: action.semesters, - }); - default: - return state; - } -}; - -export default reducer; diff --git a/src/reducers/common/semester.ts b/src/reducers/common/semester.ts new file mode 100644 index 0000000..9614384 --- /dev/null +++ b/src/reducers/common/semester.ts @@ -0,0 +1,21 @@ +import { SET_SEMESTERS, SemesterAction } from '../../actions/common/semester'; +import Semester from '@/shapes/model/subject/Semester'; + +interface SemesterState { + semesters: Semester[] | null; +} + +const initialState: SemesterState = { + semesters: null, +}; + +export const reducer = (state = initialState, action: SemesterAction): SemesterState => { + switch (action.type) { + case SET_SEMESTERS: + return { ...state, semesters: action.semesters }; + default: + return state; + } +}; + +export default reducer; diff --git a/src/reducers/common/track.js b/src/reducers/common/track.js deleted file mode 100644 index a3ecf84..0000000 --- a/src/reducers/common/track.js +++ /dev/null @@ -1,18 +0,0 @@ -import { SET_TRACKS } from '../../actions/common/track'; - -const initialState = { - tracks: null, -}; - -export const reducer = (state = initialState, action) => { - switch (action.type) { - case SET_TRACKS: - return Object.assign({}, state, { - tracks: action.tracks, - }); - default: - return state; - } -}; - -export default reducer; diff --git a/src/reducers/common/track.ts b/src/reducers/common/track.ts new file mode 100644 index 0000000..2bc713e --- /dev/null +++ b/src/reducers/common/track.ts @@ -0,0 +1,20 @@ +import { SET_TRACKS, TrackAction, TracksProps } from '../../actions/common/track'; + +interface TrackState { + tracks: TracksProps | null; +} + +const initialState: TrackState = { + tracks: null, +}; + +export const reducer = (state = initialState, action: TrackAction): TrackState => { + switch (action.type) { + case SET_TRACKS: + return { ...state, tracks: action.tracks }; + default: + return state; + } +}; + +export default reducer; diff --git a/src/reducers/common/user.js b/src/reducers/common/user.ts similarity index 52% rename from src/reducers/common/user.js rename to src/reducers/common/user.ts index a65f34c..263724a 100644 --- a/src/reducers/common/user.js +++ b/src/reducers/common/user.ts @@ -1,17 +1,23 @@ -import { SET_USER, UPDATE_USER_REVIEW } from '../../actions/common/user'; +import User from '@/shapes/model/session/User'; +import { SET_USER, UPDATE_USER_REVIEW, UserAction } from '../../actions/common/user'; -const initialState = { +interface UserState { + user?: User; +} + +const initialState: UserState = { user: undefined, }; -export const reducer = (state = initialState, action) => { +export const reducer = (state = initialState, action: UserAction): UserState => { switch (action.type) { case SET_USER: - return Object.assign({}, state, { - user: action.user, - }); + return { ...state, user: action.user }; case UPDATE_USER_REVIEW: { - const originalReviews = state.user.reviews; + if (state.user === undefined) { + return state; + } + const originalReviews = state.user?.reviews || []; const { review } = action; const foundIndex = originalReviews.findIndex((r) => r.id === review.id); const newReviews = @@ -22,12 +28,7 @@ export const reducer = (state = initialState, action) => { ...originalReviews.slice(foundIndex + 1, originalReviews.length), ] : [...originalReviews.slice(), review]; - return Object.assign({}, state, { - user: { - ...state.user, - reviews: newReviews, - }, - }); + return { ...state, user: { reviews: newReviews } }; } default: return state; From dfab3ba361c2865121ddab24902106e43ddecd87 Mon Sep 17 00:00:00 2001 From: david Date: Wed, 8 May 2024 20:06:39 +0900 Subject: [PATCH 2/4] fix: fixed incomplete migration in user.ts --- src/reducers/common/user.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/reducers/common/user.ts b/src/reducers/common/user.ts index 263724a..370fde4 100644 --- a/src/reducers/common/user.ts +++ b/src/reducers/common/user.ts @@ -28,7 +28,7 @@ export const reducer = (state = initialState, action: UserAction): UserState => ...originalReviews.slice(foundIndex + 1, originalReviews.length), ] : [...originalReviews.slice(), review]; - return { ...state, user: { reviews: newReviews } }; + return { ...state, user: { ...state.user, reviews: newReviews } }; } default: return state; From 6250578067c805eb36246a768dad664212af2b8e Mon Sep 17 00:00:00 2001 From: david Date: Wed, 15 May 2024 18:23:02 +0900 Subject: [PATCH 3/4] fix: fix according to reviews --- src/actions/common/track.ts | 4 ++-- src/reducers/common/track.ts | 4 ++-- src/reducers/common/user.ts | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/actions/common/track.ts b/src/actions/common/track.ts index a1af9c5..5e3909d 100644 --- a/src/actions/common/track.ts +++ b/src/actions/common/track.ts @@ -6,13 +6,13 @@ import GeneralTrack from '@/shapes/model/graduation/GeneralTrack'; import MajorTrack from '@/shapes/model/graduation/MajorTrack'; import AdditionalTrack from '@/shapes/model/graduation/AdditionalTrack'; -export interface TracksProps { +export interface Tracks { general: GeneralTrack[]; major: MajorTrack[]; additional: AdditionalTrack[]; } -export function setTracks(tracks: TracksProps) { +export function setTracks(tracks: Tracks) { return { type: SET_TRACKS, tracks: tracks, diff --git a/src/reducers/common/track.ts b/src/reducers/common/track.ts index 2bc713e..466871b 100644 --- a/src/reducers/common/track.ts +++ b/src/reducers/common/track.ts @@ -1,7 +1,7 @@ -import { SET_TRACKS, TrackAction, TracksProps } from '../../actions/common/track'; +import { SET_TRACKS, TrackAction, Tracks } from '../../actions/common/track'; interface TrackState { - tracks: TracksProps | null; + tracks: Tracks | null; } const initialState: TrackState = { diff --git a/src/reducers/common/user.ts b/src/reducers/common/user.ts index 370fde4..ea1322d 100644 --- a/src/reducers/common/user.ts +++ b/src/reducers/common/user.ts @@ -2,11 +2,11 @@ import User from '@/shapes/model/session/User'; import { SET_USER, UPDATE_USER_REVIEW, UserAction } from '../../actions/common/user'; interface UserState { - user?: User; + user: User | null; } const initialState: UserState = { - user: undefined, + user: null, }; export const reducer = (state = initialState, action: UserAction): UserState => { @@ -14,10 +14,10 @@ export const reducer = (state = initialState, action: UserAction): UserState => case SET_USER: return { ...state, user: action.user }; case UPDATE_USER_REVIEW: { - if (state.user === undefined) { + if (!state.user) { return state; } - const originalReviews = state.user?.reviews || []; + const originalReviews = state.user.reviews; const { review } = action; const foundIndex = originalReviews.findIndex((r) => r.id === review.id); const newReviews = From 6564ebc54b13ec03d8390c9df78f08adc1f0861d Mon Sep 17 00:00:00 2001 From: Seungbin Oh Date: Thu, 16 May 2024 21:03:10 +0900 Subject: [PATCH 4/4] chore: remove export and rename reducers in common --- src/reducers/common/media.ts | 4 ++-- src/reducers/common/semester.ts | 4 ++-- src/reducers/common/track.ts | 4 ++-- src/reducers/common/user.ts | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/reducers/common/media.ts b/src/reducers/common/media.ts index 484a27e..f373bfc 100644 --- a/src/reducers/common/media.ts +++ b/src/reducers/common/media.ts @@ -8,7 +8,7 @@ const initialState: MediaState = { isPortrait: false, }; -export const reducer = (state = initialState, action: MediaAction): MediaState => { +const media = (state = initialState, action: MediaAction): MediaState => { switch (action.type) { case SET_IS_PORTRAIT: return { ...state, isPortrait: action.isPortrait }; @@ -17,4 +17,4 @@ export const reducer = (state = initialState, action: MediaAction): MediaState = } }; -export default reducer; +export default media; diff --git a/src/reducers/common/semester.ts b/src/reducers/common/semester.ts index 9614384..537f42f 100644 --- a/src/reducers/common/semester.ts +++ b/src/reducers/common/semester.ts @@ -9,7 +9,7 @@ const initialState: SemesterState = { semesters: null, }; -export const reducer = (state = initialState, action: SemesterAction): SemesterState => { +const semester = (state = initialState, action: SemesterAction): SemesterState => { switch (action.type) { case SET_SEMESTERS: return { ...state, semesters: action.semesters }; @@ -18,4 +18,4 @@ export const reducer = (state = initialState, action: SemesterAction): SemesterS } }; -export default reducer; +export default semester; diff --git a/src/reducers/common/track.ts b/src/reducers/common/track.ts index 466871b..6b4b350 100644 --- a/src/reducers/common/track.ts +++ b/src/reducers/common/track.ts @@ -8,7 +8,7 @@ const initialState: TrackState = { tracks: null, }; -export const reducer = (state = initialState, action: TrackAction): TrackState => { +const track = (state = initialState, action: TrackAction): TrackState => { switch (action.type) { case SET_TRACKS: return { ...state, tracks: action.tracks }; @@ -17,4 +17,4 @@ export const reducer = (state = initialState, action: TrackAction): TrackState = } }; -export default reducer; +export default track; diff --git a/src/reducers/common/user.ts b/src/reducers/common/user.ts index ea1322d..b36bc94 100644 --- a/src/reducers/common/user.ts +++ b/src/reducers/common/user.ts @@ -9,7 +9,7 @@ const initialState: UserState = { user: null, }; -export const reducer = (state = initialState, action: UserAction): UserState => { +const user = (state = initialState, action: UserAction): UserState => { switch (action.type) { case SET_USER: return { ...state, user: action.user }; @@ -35,4 +35,4 @@ export const reducer = (state = initialState, action: UserAction): UserState => } }; -export default reducer; +export default user;