Files
youtube-music/providers/protocol-handler.ts
JellyBrick 82bcadcd64 feat: typescript part 1
Co-authored-by: Su-Yong <simssy2205@gmail.com>
2023-09-03 00:25:48 +09:00

46 lines
1.0 KiB
TypeScript

import path from 'node:path';
import { app, BrowserWindow } from 'electron';
import getSongControls from './song-controls';
export const APP_PROTOCOL = 'youtubemusic';
let protocolHandler: ((cmd: string) => void) | undefined;
export function setupProtocolHandler(win: BrowserWindow) {
if (process.defaultApp && process.argv.length >= 2) {
app.setAsDefaultProtocolClient(
APP_PROTOCOL,
process.execPath,
[path.resolve(process.argv[1])],
);
} else {
app.setAsDefaultProtocolClient(APP_PROTOCOL);
}
const songControls = getSongControls(win);
protocolHandler = ((cmd: keyof typeof songControls) => {
if (Object.keys(songControls).includes(cmd)) {
songControls[cmd]();
}
}) as (cmd: string) => void;
}
export function handleProtocol(cmd: string) {
protocolHandler?.(cmd);
}
export function changeProtocolHandler(f: (cmd: string) => void) {
protocolHandler = f;
}
export default {
APP_PROTOCOL,
setupProtocolHandler,
handleProtocol,
changeProtocolHandler,
};