mirror of
https://gitlab.com/mbugroup/lti-web-client.git
synced 2026-05-20 21:41:57 +00:00
refactor(FE-316): Extract uniformity slice and add types
This commit is contained in:
@@ -0,0 +1,58 @@
|
|||||||
|
import { StateCreator } from 'zustand';
|
||||||
|
import { VerifyUniformityResponse } from '@/types/api/uniformity/uniformity';
|
||||||
|
|
||||||
|
export type UniformityStep = 'preview' | 'result';
|
||||||
|
|
||||||
|
export type UniformityFormData = {
|
||||||
|
date: string;
|
||||||
|
week: number;
|
||||||
|
project_flock_kandang_id: number;
|
||||||
|
file: File | null;
|
||||||
|
fileName: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type UniformitySlice = {
|
||||||
|
// State
|
||||||
|
uniformityStep: UniformityStep;
|
||||||
|
verifyUniformityResult: VerifyUniformityResponse | null;
|
||||||
|
uniformityFormData: UniformityFormData | null;
|
||||||
|
isSuccess: boolean;
|
||||||
|
|
||||||
|
// Actions
|
||||||
|
setUniformityStep: (step: UniformityStep) => void;
|
||||||
|
setVerifyUniformityResult: (result: VerifyUniformityResponse | null) => void;
|
||||||
|
setUniformityFormData: (data: UniformityFormData | null) => void;
|
||||||
|
setIsSuccess: (success: boolean) => void;
|
||||||
|
resetUniformity: () => void;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const createUniformitySlice: StateCreator<
|
||||||
|
UniformitySlice,
|
||||||
|
[],
|
||||||
|
[],
|
||||||
|
UniformitySlice
|
||||||
|
> = (set) => ({
|
||||||
|
// Initial state
|
||||||
|
uniformityStep: 'preview',
|
||||||
|
verifyUniformityResult: null,
|
||||||
|
uniformityFormData: null,
|
||||||
|
isSuccess: false,
|
||||||
|
|
||||||
|
// Actions
|
||||||
|
setUniformityStep: (step) => set({ uniformityStep: step }),
|
||||||
|
|
||||||
|
setVerifyUniformityResult: (result) =>
|
||||||
|
set({ verifyUniformityResult: result }),
|
||||||
|
|
||||||
|
setUniformityFormData: (data) => set({ uniformityFormData: data }),
|
||||||
|
|
||||||
|
setIsSuccess: (success) => set({ isSuccess: success }),
|
||||||
|
|
||||||
|
resetUniformity: () =>
|
||||||
|
set({
|
||||||
|
uniformityStep: 'preview',
|
||||||
|
verifyUniformityResult: null,
|
||||||
|
uniformityFormData: null,
|
||||||
|
isSuccess: false,
|
||||||
|
}),
|
||||||
|
});
|
||||||
@@ -1,58 +1,18 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
import { devtools } from 'zustand/middleware';
|
import { devtools } from 'zustand/middleware';
|
||||||
import { VerifyUniformityResponse } from '@/types/api/uniformity/uniformity';
|
import {
|
||||||
|
createUniformitySlice,
|
||||||
|
UniformitySlice,
|
||||||
|
} from '@/stores/uniformity/slices/uniformity.slice';
|
||||||
|
|
||||||
export type UniformityStep = 'preview' | 'result';
|
export type UniformityStore = UniformitySlice;
|
||||||
|
|
||||||
export type UniformityFormData = {
|
export const useUniformityStore = create<UniformityStore>()(
|
||||||
date: string;
|
|
||||||
week: number;
|
|
||||||
project_flock_kandang_id: number;
|
|
||||||
file: File | null;
|
|
||||||
fileName: string;
|
|
||||||
};
|
|
||||||
|
|
||||||
type UniformityState = {
|
|
||||||
// State
|
|
||||||
uniformityStep: UniformityStep;
|
|
||||||
verifyUniformityResult: VerifyUniformityResponse | null;
|
|
||||||
uniformityFormData: UniformityFormData | null;
|
|
||||||
isSuccess: boolean;
|
|
||||||
|
|
||||||
// Actions
|
|
||||||
setUniformityStep: (step: UniformityStep) => void;
|
|
||||||
setVerifyUniformityResult: (result: VerifyUniformityResponse | null) => void;
|
|
||||||
setUniformityFormData: (data: UniformityFormData | null) => void;
|
|
||||||
setIsSuccess: (success: boolean) => void;
|
|
||||||
resetUniformity: () => void;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useUniformityStore = create<UniformityState>()(
|
|
||||||
devtools(
|
devtools(
|
||||||
(set) => ({
|
(...args) => ({
|
||||||
// Initial state
|
...createUniformitySlice(...args),
|
||||||
uniformityStep: 'preview',
|
|
||||||
verifyUniformityResult: null,
|
|
||||||
uniformityFormData: null,
|
|
||||||
isSuccess: false,
|
|
||||||
|
|
||||||
// Actions
|
|
||||||
setUniformityStep: (step) => set({ uniformityStep: step }),
|
|
||||||
|
|
||||||
setVerifyUniformityResult: (result) =>
|
|
||||||
set({ verifyUniformityResult: result }),
|
|
||||||
|
|
||||||
setUniformityFormData: (data) => set({ uniformityFormData: data }),
|
|
||||||
|
|
||||||
setIsSuccess: (success) => set({ isSuccess: success }),
|
|
||||||
|
|
||||||
resetUniformity: () =>
|
|
||||||
set({
|
|
||||||
uniformityStep: 'preview',
|
|
||||||
verifyUniformityResult: null,
|
|
||||||
uniformityFormData: null,
|
|
||||||
isSuccess: false,
|
|
||||||
}),
|
|
||||||
}),
|
}),
|
||||||
{
|
{
|
||||||
name: 'UniformityStore',
|
name: 'UniformityStore',
|
||||||
|
|||||||
Vendored
+24
@@ -46,3 +46,27 @@ type ProductionStandardFormSlice = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export type FormStore = ProductionStandardFormSlice;
|
export type FormStore = ProductionStandardFormSlice;
|
||||||
|
|
||||||
|
type UniformityStep = 'preview' | 'result';
|
||||||
|
|
||||||
|
type UniformityFormData = {
|
||||||
|
date: string;
|
||||||
|
week: number;
|
||||||
|
project_flock_kandang_id: number;
|
||||||
|
file: File | null;
|
||||||
|
fileName: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
type UniformitySlice = {
|
||||||
|
uniformityStep: UniformityStep;
|
||||||
|
verifyUniformityResult: VerifyUniformityResponse | null;
|
||||||
|
uniformityFormData: UniformityFormData | null;
|
||||||
|
isSuccess: boolean;
|
||||||
|
setUniformityStep: (step: UniformityStep) => void;
|
||||||
|
setVerifyUniformityResult: (result: VerifyUniformityResponse | null) => void;
|
||||||
|
setUniformityFormData: (data: UniformityFormData | null) => void;
|
||||||
|
setIsSuccess: (success: boolean) => void;
|
||||||
|
resetUniformity: () => void;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type UniformityStore = UniformitySlice;
|
||||||
|
|||||||
Reference in New Issue
Block a user