mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-06-13 03:13:32 -07:00
61 lines
2.3 KiB
TypeScript
61 lines
2.3 KiB
TypeScript
import { createDestroyTrayHandler, createEnsureTrayHandler } from './tray-lifecycle';
|
|
import {
|
|
createBuildDestroyTrayMainDepsHandler,
|
|
createBuildEnsureTrayMainDepsHandler,
|
|
} from './app-runtime-main-deps';
|
|
import {
|
|
createBuildTrayMenuTemplateHandler,
|
|
createResolveTrayIconPathHandler,
|
|
} from './tray-main-actions';
|
|
import {
|
|
createBuildResolveTrayIconPathMainDepsHandler,
|
|
createBuildTrayMenuTemplateMainDepsHandler,
|
|
} from './tray-main-deps';
|
|
|
|
type ResolveTrayIconPathMainDeps = Parameters<
|
|
typeof createBuildResolveTrayIconPathMainDepsHandler
|
|
>[0];
|
|
type BuildTrayMenuTemplateMainDeps<TMenuItem> = Parameters<
|
|
typeof createBuildTrayMenuTemplateMainDepsHandler<TMenuItem>
|
|
>[0];
|
|
type EnsureTrayMainDeps<TTrayMenu> = Parameters<
|
|
typeof createBuildEnsureTrayMainDepsHandler<TrayLike, TTrayMenu, TrayIconLike>
|
|
>[0];
|
|
type TrayLike = NonNullable<ReturnType<Parameters<typeof createEnsureTrayHandler>[0]['getTray']>>;
|
|
type TrayIconLike = Parameters<Parameters<typeof createEnsureTrayHandler>[0]['createTray']>[0];
|
|
type DestroyTrayMainDeps = Parameters<typeof createBuildDestroyTrayMainDepsHandler<TrayLike>>[0];
|
|
|
|
export function createTrayRuntimeHandlers<TMenuItem, TMenu>(deps: {
|
|
resolveTrayIconPathDeps: ResolveTrayIconPathMainDeps;
|
|
buildTrayMenuTemplateDeps: BuildTrayMenuTemplateMainDeps<TMenuItem>;
|
|
ensureTrayDeps: Omit<EnsureTrayMainDeps<TMenu>, 'buildTrayMenu' | 'resolveTrayIconPath'>;
|
|
destroyTrayDeps: DestroyTrayMainDeps;
|
|
buildMenuFromTemplate: (template: TMenuItem[]) => TMenu;
|
|
}) {
|
|
const resolveTrayIconPath = createResolveTrayIconPathHandler(
|
|
createBuildResolveTrayIconPathMainDepsHandler(deps.resolveTrayIconPathDeps)(),
|
|
);
|
|
const buildTrayMenuTemplate = createBuildTrayMenuTemplateHandler(
|
|
createBuildTrayMenuTemplateMainDepsHandler(deps.buildTrayMenuTemplateDeps)(),
|
|
);
|
|
const buildTrayMenu = () => deps.buildMenuFromTemplate(buildTrayMenuTemplate());
|
|
|
|
const ensureTray = createEnsureTrayHandler(
|
|
createBuildEnsureTrayMainDepsHandler({
|
|
...deps.ensureTrayDeps,
|
|
buildTrayMenu: () => buildTrayMenu(),
|
|
resolveTrayIconPath: () => resolveTrayIconPath(),
|
|
})(),
|
|
);
|
|
const destroyTray = createDestroyTrayHandler(
|
|
createBuildDestroyTrayMainDepsHandler(deps.destroyTrayDeps)(),
|
|
);
|
|
|
|
return {
|
|
resolveTrayIconPath,
|
|
buildTrayMenu,
|
|
ensureTray,
|
|
destroyTray,
|
|
};
|
|
}
|