54 lines
1.3 KiB
TypeScript
54 lines
1.3 KiB
TypeScript
import { create } from "zustand";
|
||
|
||
export enum EvaluateScene {
|
||
list,
|
||
publish,
|
||
detail,
|
||
user,
|
||
userEdit,
|
||
share,
|
||
}
|
||
|
||
export interface EvaluateCallback {
|
||
type: EvaluateScene | "";
|
||
// flag是用来区分跳转ntrp测试后的操作和直接修改ntrp水平成功后的操作
|
||
// score是用在加入球局前判断是否满足球局要求的返回值,限定为必传
|
||
// next有两个地方调用:ntrp结果页handleGoon、ntrp弹窗(NTRPEvaluatePopup)直接修改点击保存按钮时
|
||
next: ({ flag, score }: { flag?: boolean; score: string }) => void;
|
||
onCancel: () => void;
|
||
}
|
||
|
||
export interface EvaluateCallbackType extends EvaluateCallback {
|
||
setCallback: (options: {
|
||
type: EvaluateScene | "";
|
||
next: ({ flag, score }: { flag?: boolean; score: string }) => void;
|
||
onCancel: () => void;
|
||
}) => void;
|
||
clear: () => void;
|
||
}
|
||
|
||
export const useEvaluateCallback = create<EvaluateCallbackType>()((set) => ({
|
||
type: "",
|
||
next: () => { },
|
||
onCancel: () => { },
|
||
setCallback: ({ type, next, onCancel }) => {
|
||
set({
|
||
type,
|
||
next,
|
||
onCancel,
|
||
});
|
||
},
|
||
clear: () => {
|
||
set({ type: "", next: () => { }, onCancel: () => { } });
|
||
},
|
||
}));
|
||
|
||
export const useEvaluate = () =>
|
||
useEvaluateCallback(({ type, next, onCancel, setCallback, clear }) => ({
|
||
type,
|
||
next,
|
||
onCancel,
|
||
setCallback,
|
||
clear,
|
||
}));
|