mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-22 03:07:04 +02:00
feat: migrate compare store
This commit is contained in:
1 parent
f423f8f797
commit
8b70aa12e4
8 files changed
+115
-92
No files matched your search
@@ -1,52 +0,0 @@
|
||||
import { produce } from 'immer';
|
||||
import { merge } from 'lodash';
|
||||
import { create } from 'zustand';
|
||||
import { persist, subscribeWithSelector } from 'zustand/middleware';
|
||||
import { DuelMember } from './duel';
|
||||
|
||||
export interface CompareMember extends DuelMember {
|
||||
key: string;
|
||||
}
|
||||
|
||||
export interface CompareTemporary {
|
||||
crewSkills: Record<string, number>;
|
||||
members: CompareMember[];
|
||||
sorting?: {
|
||||
direction: 'ascending' | 'descending';
|
||||
by: string;
|
||||
};
|
||||
}
|
||||
|
||||
export type DeltaMode = 'none' | 'percentage' | 'absolute';
|
||||
export interface ComparePersistent {
|
||||
deltaMode: DeltaMode;
|
||||
}
|
||||
|
||||
export const useCompareTemporary = create<CompareTemporary>()(() => ({
|
||||
crewSkills: {},
|
||||
members: [],
|
||||
}));
|
||||
|
||||
export const useComparePersistent = create<ComparePersistent>()(
|
||||
persist(
|
||||
subscribeWithSelector<ComparePersistent>(() => ({
|
||||
deltaMode: 'none',
|
||||
})),
|
||||
{
|
||||
name: 'compare',
|
||||
merge: (a, b) => merge(b, a),
|
||||
},
|
||||
),
|
||||
);
|
||||
|
||||
export function mutateCompareTemporary(
|
||||
recipe: (draft: CompareTemporary) => void,
|
||||
) {
|
||||
useCompareTemporary.setState(produce(recipe));
|
||||
}
|
||||
|
||||
export function mutateComparePersistent(
|
||||
recipe: (draft: ComparePersistent) => void,
|
||||
) {
|
||||
useComparePersistent.setState(produce(recipe));
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
'use client';
|
||||
|
||||
import { create } from 'zustand';
|
||||
import { createNextSafeStore } from '../core/zustand/createNextSafeStore';
|
||||
import { DuelMember } from './duel';
|
||||
|
||||
export interface CompareMember extends DuelMember {
|
||||
key: string;
|
||||
}
|
||||
|
||||
export interface CompareEphemeral {
|
||||
crewSkills: Record<string, number>;
|
||||
members: CompareMember[];
|
||||
sorting?: {
|
||||
direction: 'ascending' | 'descending';
|
||||
by: string;
|
||||
};
|
||||
}
|
||||
|
||||
export const { Provider, use, useMutation, useStore } = createNextSafeStore(
|
||||
() =>
|
||||
create<CompareEphemeral>()(() => ({
|
||||
crewSkills: {},
|
||||
members: [],
|
||||
})),
|
||||
);
|
||||
@@ -0,0 +1,26 @@
|
||||
'use client';
|
||||
|
||||
import { merge } from 'lodash';
|
||||
import { create } from 'zustand';
|
||||
import { persist, subscribeWithSelector } from 'zustand/middleware';
|
||||
import { createNextSafeStore } from '../core/zustand/createNextSafeStore';
|
||||
|
||||
export type DeltaMode = 'none' | 'percentage' | 'absolute';
|
||||
export interface ComparePersistent {
|
||||
deltaMode: DeltaMode;
|
||||
}
|
||||
|
||||
export const { Provider, use, useMutation, useStore } = createNextSafeStore(
|
||||
() =>
|
||||
create<ComparePersistent>()(
|
||||
persist(
|
||||
subscribeWithSelector<ComparePersistent>(() => ({
|
||||
deltaMode: 'none',
|
||||
})),
|
||||
{
|
||||
name: 'compare',
|
||||
merge: (a, b) => merge(b, a),
|
||||
},
|
||||
),
|
||||
),
|
||||
);
|
||||
@@ -1,3 +1,5 @@
|
||||
'use client';
|
||||
|
||||
import { merge } from 'lodash';
|
||||
import { create } from 'zustand';
|
||||
import { persist } from 'zustand/middleware';
|
||||
|
||||
Reference in new issue
Block a user