mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-03-21 00:11:27 -07:00
30 lines
868 B
TypeScript
30 lines
868 B
TypeScript
import type { KikuFieldGroupingChoice } from '../../types';
|
|
|
|
type FieldGroupingResolver = ((choice: KikuFieldGroupingChoice) => void) | null;
|
|
|
|
export function createGetFieldGroupingResolverHandler(deps: {
|
|
getResolver: () => FieldGroupingResolver;
|
|
}) {
|
|
return (): FieldGroupingResolver => deps.getResolver();
|
|
}
|
|
|
|
export function createSetFieldGroupingResolverHandler(deps: {
|
|
setResolver: (resolver: FieldGroupingResolver) => void;
|
|
nextSequence: () => number;
|
|
getSequence: () => number;
|
|
}) {
|
|
return (resolver: FieldGroupingResolver): void => {
|
|
if (!resolver) {
|
|
deps.setResolver(null);
|
|
return;
|
|
}
|
|
|
|
const sequence = deps.nextSequence();
|
|
const wrappedResolver = (choice: KikuFieldGroupingChoice): void => {
|
|
if (sequence !== deps.getSequence()) return;
|
|
resolver(choice);
|
|
};
|
|
deps.setResolver(wrappedResolver);
|
|
};
|
|
}
|