mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-08-06 19:21:31 -07:00
refactor(renderer): extract modal registry for open/dismiss/active queries (#166)
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
export type ModalDescriptor<TId extends string> = {
|
||||
id: TId;
|
||||
isOpen: () => boolean;
|
||||
close: () => void;
|
||||
suppressesSubtitles: boolean;
|
||||
};
|
||||
|
||||
export function createModalRegistry<TId extends string>(
|
||||
descriptors: readonly ModalDescriptor<TId>[],
|
||||
) {
|
||||
return {
|
||||
isAnyOpen: (): boolean => descriptors.some((descriptor) => descriptor.isOpen()),
|
||||
isAnySuppressingSubtitlesOpen: (): boolean =>
|
||||
descriptors.some((descriptor) => descriptor.suppressesSubtitles && descriptor.isOpen()),
|
||||
getActive: (): TId | null => descriptors.find((descriptor) => descriptor.isOpen())?.id ?? null,
|
||||
dismissOpen: (): void => {
|
||||
for (const descriptor of descriptors) {
|
||||
if (descriptor.isOpen()) {
|
||||
descriptor.close();
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user