Files
SubMiner/src/main/runtime/character-dictionary-manager-gate.ts
T

40 lines
1.3 KiB
TypeScript

export type CharacterDictionaryManagerNotificationType = 'osd' | 'system' | 'both' | 'none';
export const CHARACTER_DICTIONARY_MANAGER_DISABLED_MESSAGE =
'Enable Name Match in Settings to use the character dictionary manager.';
export interface CharacterDictionaryManagerGateDeps {
isCharacterDictionaryEnabled: () => boolean;
getNotificationType: () => CharacterDictionaryManagerNotificationType;
openManager: () => void;
showOsd: (message: string) => void;
showDesktopNotification: (title: string, options: { body: string }) => void;
logWarn?: (message: string, error?: unknown) => void;
}
function notifyManagerDisabled(deps: CharacterDictionaryManagerGateDeps): void {
const type = deps.getNotificationType();
if (type === 'osd' || type === 'both') {
deps.showOsd(CHARACTER_DICTIONARY_MANAGER_DISABLED_MESSAGE);
}
if (type === 'system' || type === 'both') {
try {
deps.showDesktopNotification('SubMiner', {
body: CHARACTER_DICTIONARY_MANAGER_DISABLED_MESSAGE,
});
} catch (error) {
deps.logWarn?.('Unable to show character dictionary manager notification.', error);
}
}
}
export function openCharacterDictionaryManagerWithConfigGate(
deps: CharacterDictionaryManagerGateDeps,
): void {
if (deps.isCharacterDictionaryEnabled()) {
deps.openManager();
return;
}
notifyManagerDisabled(deps);
}