mirror of
https://github.com/invoke-ai/InvokeAI
synced 2024-08-30 20:32:17 +00:00
19 lines
472 B
TypeScript
19 lines
472 B
TypeScript
import { useEffect } from 'react';
|
|
import { assert } from 'tsafe';
|
|
|
|
const IDS = new Set<string>();
|
|
|
|
/**
|
|
* Asserts that there is only one instance of a singleton entity. It can be a hook or a component.
|
|
* @param id The ID of the singleton entity.
|
|
*/
|
|
export function useAssertSingleton(id: string) {
|
|
useEffect(() => {
|
|
assert(!IDS.has(id), `There should be only one instance of ${id}`);
|
|
IDS.add(id);
|
|
return () => {
|
|
IDS.delete(id);
|
|
};
|
|
}, [id]);
|
|
}
|