Skip to content

Commit b4cc125

Browse files
committed
refactor: unify loading/error state in quizSlice, progressSlice, settingsSlice using baseSlice
1 parent bf75c75 commit b4cc125

File tree

3 files changed

+12
-3
lines changed

3 files changed

+12
-3
lines changed

app/store/progressSlice.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,16 @@ import { getProgress } from '@/app/actions/userProgress';
44
import { getSession } from 'next-auth/react';
55
import type { TextGeneratorState } from './textGeneratorStore';
66
import type { CEFRLevel } from '@/lib/domain/language-guidance';
7+
import type { BaseSlice } from './baseSlice';
8+
import { createBaseSlice } from './baseSlice';
79

810
const GetProgressResultSchema = z.object({
911
streak: z.number().optional().nullable(),
1012
currentLevel: z.string().optional().nullable(),
1113
error: z.string().optional().nullable(),
1214
});
1315

14-
export interface ProgressSlice {
16+
export interface ProgressSlice extends BaseSlice {
1517
isProgressLoading: boolean;
1618
userStreak: number | null;
1719
fetchUserProgress: () => Promise<void>;
@@ -23,6 +25,7 @@ export const createProgressSlice: StateCreator<
2325
[],
2426
ProgressSlice
2527
> = (set, get) => ({
28+
...createBaseSlice(set),
2629
isProgressLoading: false,
2730
userStreak: null,
2831

app/store/quizSlice.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ import {
99
GenerateExerciseResultSchema,
1010
SubmitAnswerResultSchema,
1111
} from '@/lib/domain/schemas';
12+
import type { BaseSlice } from './baseSlice';
13+
import { createBaseSlice } from './baseSlice';
1214

1315
interface NextQuizInfo {
1416
quizData: PartialQuizData;
@@ -17,7 +19,7 @@ interface NextQuizInfo {
1719

1820
export type HoverProgressionPhase = 'initial' | 'credits';
1921

20-
export interface QuizSlice {
22+
export interface QuizSlice extends BaseSlice {
2123
quizData: PartialQuizData | null;
2224
currentQuizId: number | null;
2325
selectedAnswer: string | null;
@@ -67,6 +69,7 @@ export const createQuizSlice: StateCreator<
6769
[],
6870
QuizSlice
6971
> = (set, get) => ({
72+
...createBaseSlice(set),
7073
quizData: null,
7174
currentQuizId: null,
7275
selectedAnswer: null,

app/store/settingsSlice.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@ import type { StateCreator } from 'zustand';
22
import { type LearningLanguage } from '@/lib/domain/language';
33
import { type CEFRLevel } from '@/lib/domain/language-guidance';
44
import type { Language, TextGeneratorState } from './textGeneratorStore';
5+
import type { BaseSlice } from './baseSlice';
6+
import { createBaseSlice } from './baseSlice';
57

6-
export interface SettingsSlice {
8+
export interface SettingsSlice extends BaseSlice {
79
passageLanguage: LearningLanguage;
810
generatedPassageLanguage: LearningLanguage | null;
911
generatedQuestionLanguage: Language | null;
@@ -20,6 +22,7 @@ export const createSettingsSlice: StateCreator<
2022
[],
2123
SettingsSlice
2224
> = (set, get) => ({
25+
...createBaseSlice(set),
2326
passageLanguage: 'en',
2427
generatedPassageLanguage: null,
2528
generatedQuestionLanguage: null,

0 commit comments

Comments
 (0)