From 2fe28cf126f76cdb0d609d3e7b48cd01b27576be Mon Sep 17 00:00:00 2001 From: JellyBrick Date: Mon, 27 Nov 2023 19:26:45 +0900 Subject: [PATCH] clean code --- src/index.ts | 4 ++-- src/loader/main.ts | 7 ++++--- src/loader/menu.ts | 5 ++--- src/loader/preload.ts | 9 +++++---- src/loader/renderer.ts | 10 +++++----- src/menu.ts | 3 ++- src/plugins/discord/menu.ts | 5 +++-- src/plugins/downloader/main/index.ts | 3 ++- src/plugins/in-app-menu/main.ts | 4 ++-- src/plugins/skip-silences/renderer.ts | 3 +-- src/preload.ts | 4 ++-- src/providers/app-controls.ts | 8 +++----- src/providers/song-info-front.ts | 6 +++--- src/providers/song-info.ts | 4 ++-- src/reset.d.ts | 6 +++--- src/tray.ts | 3 ++- 16 files changed, 43 insertions(+), 41 deletions(-) diff --git a/src/index.ts b/src/index.ts index 85c1f131..86097cb0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -23,7 +23,7 @@ import { parse } from 'node-html-parser'; import { deepmerge } from 'deepmerge-ts'; import { deepEqual } from 'fast-equals'; -import { mainPlugins } from 'virtual:plugins'; +import { allPlugins, mainPlugins } from 'virtual:plugins'; import config from '@/config'; @@ -116,7 +116,7 @@ const initHook = (win: BrowserWindow) => { 'get-config', (_, id: string) => deepmerge( - mainPlugins[id].config, + allPlugins[id].config, config.get(`plugins.${id}`) ?? {}, ) as PluginConfig, ); diff --git a/src/loader/main.ts b/src/loader/main.ts index a3a0100d..53db6fc5 100644 --- a/src/loader/main.ts +++ b/src/loader/main.ts @@ -3,11 +3,12 @@ import { BrowserWindow, ipcMain } from 'electron'; import { deepmerge } from 'deepmerge-ts'; import { mainPlugins } from 'virtual:plugins'; -import { PluginConfig, PluginDef } from '@/types/plugins'; -import { BackendContext } from '@/types/contexts'; import config from '@/config'; import { startPlugin, stopPlugin } from '@/utils'; +import type { PluginConfig, PluginDef } from '@/types/plugins'; +import type { BackendContext } from '@/types/contexts'; + const loadedPluginMap: Record> = {}; const createContext = (id: string, win: BrowserWindow): BackendContext => ({ @@ -122,7 +123,7 @@ export const loadAllMainPlugins = async (win: BrowserWindow) => { export const unloadAllMainPlugins = (win: BrowserWindow) => { for (const id of Object.keys(loadedPluginMap)) { - forceUnloadMainPlugin(id as keyof PluginBuilderList, win); + forceUnloadMainPlugin(id, win); } }; diff --git a/src/loader/menu.ts b/src/loader/menu.ts index 873af06b..4230eec9 100644 --- a/src/loader/menu.ts +++ b/src/loader/menu.ts @@ -1,12 +1,11 @@ import { deepmerge } from 'deepmerge-ts'; import { allPlugins } from 'virtual:plugins'; -import { BrowserWindow, MenuItemConstructorOptions } from 'electron'; - -import { MenuContext } from '@/types/contexts'; import config from '@/config'; import { setApplicationMenu } from '@/menu'; +import type { MenuContext } from '@/types/contexts'; +import type { BrowserWindow, MenuItemConstructorOptions } from 'electron'; import type { PluginConfig } from '@/types/plugins'; const menuTemplateMap: Record = {}; diff --git a/src/loader/preload.ts b/src/loader/preload.ts index 13da90b3..7d3e3778 100644 --- a/src/loader/preload.ts +++ b/src/loader/preload.ts @@ -1,12 +1,13 @@ import { deepmerge } from 'deepmerge-ts'; import { preloadPlugins } from 'virtual:plugins'; -import type { PluginConfig, PluginDef } from '@/types/plugins'; -import { type PreloadContext } from '@/types/contexts'; import { startPlugin, stopPlugin } from '@/utils'; import config from '@/config'; +import type { PreloadContext } from '@/types/contexts'; +import type { PluginConfig, PluginDef } from '@/types/plugins'; + const loadedPluginMap: Record> = {}; const createContext = (id: string): PreloadContext => ({ getConfig: () => config.plugins.getOptions(id), @@ -52,7 +53,7 @@ export const loadAllPreloadPlugins = () => { const pluginConfigs = config.plugins.getPlugins(); for (const [pluginId, pluginDef] of Object.entries(preloadPlugins)) { - const config = deepmerge(pluginDef.config, pluginConfigs[pluginId] ?? {}) as PluginConfig; + const config = deepmerge(pluginDef.config, pluginConfigs[pluginId] ?? {}) ; if (config.enabled) { forceLoadPreloadPlugin(pluginId); @@ -66,7 +67,7 @@ export const loadAllPreloadPlugins = () => { export const unloadAllPreloadPlugins = () => { for (const id of Object.keys(loadedPluginMap)) { - forceUnloadPreloadPlugin(id as keyof PluginBuilderList); + forceUnloadPreloadPlugin(id); } }; diff --git a/src/loader/renderer.ts b/src/loader/renderer.ts index df339831..637a2ced 100644 --- a/src/loader/renderer.ts +++ b/src/loader/renderer.ts @@ -2,16 +2,16 @@ import { deepmerge } from 'deepmerge-ts'; import { rendererPlugins } from 'virtual:plugins'; -import { RendererContext } from '@/types/contexts'; - -import { PluginConfig, PluginDef } from '@/types/plugins'; import { startPlugin, stopPlugin } from '@/utils'; +import type { RendererContext } from '@/types/contexts'; +import type { PluginConfig, PluginDef } from '@/types/plugins'; + const unregisterStyleMap: Record void)[]> = {}; const loadedPluginMap: Record> = {}; export const createContext = (id: string): RendererContext => ({ - getConfig: () => window.mainConfig.plugins.getOptions(id), + getConfig: async () => window.ipcRenderer.invoke('get-config', id), setConfig: async (newConfig) => { await window.ipcRenderer.invoke('set-config', id, newConfig); }, @@ -80,7 +80,7 @@ export const loadAllRendererPlugins = () => { const pluginConfigs = window.mainConfig.plugins.getPlugins(); for (const [pluginId, pluginDef] of Object.entries(rendererPlugins)) { - const config = deepmerge(pluginDef.config, pluginConfigs[pluginId] ?? {}) as PluginConfig; + const config = deepmerge(pluginDef.config, pluginConfigs[pluginId] ?? {}) ; if (config.enabled) { forceLoadRendererPlugin(pluginId); diff --git a/src/menu.ts b/src/menu.ts index 35bcb21a..69338d8c 100644 --- a/src/menu.ts +++ b/src/menu.ts @@ -11,8 +11,9 @@ import prompt from 'custom-electron-prompt'; import { allPlugins } from 'virtual:plugins'; -import { restart } from './providers/app-controls'; import config from './config'; + +import { restart } from './providers/app-controls'; import { startingPages } from './providers/extracted-data'; import promptOptions from './providers/prompt-options'; diff --git a/src/plugins/discord/menu.ts b/src/plugins/discord/menu.ts index 0e82afc4..29e3793d 100644 --- a/src/plugins/discord/menu.ts +++ b/src/plugins/discord/menu.ts @@ -5,8 +5,9 @@ import { clear, connect, isConnected, registerRefresh } from './main'; import { singleton } from '@/providers/decorators'; import promptOptions from '@/providers/prompt-options'; import { setMenuOptions } from '@/config/plugins'; -import { MenuContext } from '@/types/contexts'; -import { DiscordPluginConfig } from '@/plugins/discord/index'; + +import type { MenuContext } from '@/types/contexts'; +import type { DiscordPluginConfig } from './index'; import type { MenuTemplate } from '@/menu'; diff --git a/src/plugins/downloader/main/index.ts b/src/plugins/downloader/main/index.ts index 7be07ce1..e3824738 100644 --- a/src/plugins/downloader/main/index.ts +++ b/src/plugins/downloader/main/index.ts @@ -33,12 +33,13 @@ import { isEnabled } from '@/config/plugins'; import { cleanupName, getImage, SongInfo } from '@/providers/song-info'; import { getNetFetchAsFetch } from '@/plugins/utils/main'; import { cache } from '@/providers/decorators'; -import { BackendContext } from '@/types/contexts'; import { YoutubeFormatList, type Preset, DefaultPresetList } from '../types'; import { defaultConfig, type DownloaderPluginConfig } from '../index'; +import type { BackendContext } from '@/types/contexts'; + import type { FormatOptions } from 'youtubei.js/dist/src/types/FormatUtils'; import type PlayerErrorMessage from 'youtubei.js/dist/src/parser/classes/PlayerErrorMessage'; import type { Playlist } from 'youtubei.js/dist/src/parser/ytmusic'; diff --git a/src/plugins/in-app-menu/main.ts b/src/plugins/in-app-menu/main.ts index 41b4a332..6719e4d6 100644 --- a/src/plugins/in-app-menu/main.ts +++ b/src/plugins/in-app-menu/main.ts @@ -2,8 +2,8 @@ import { register } from 'electron-localshortcut'; import { BrowserWindow, Menu, MenuItem, ipcMain, nativeImage } from 'electron'; -import { BackendContext } from '@/types/contexts'; -import { InAppMenuConfig } from '@/plugins/in-app-menu/index'; +import type { BackendContext } from '@/types/contexts'; +import type { InAppMenuConfig } from './index'; export const onMainLoad = ({ window: win, ipc: { handle, send } }: BackendContext) => { win.on('close', () => { diff --git a/src/plugins/skip-silences/renderer.ts b/src/plugins/skip-silences/renderer.ts index 6e202ae4..c8c74061 100644 --- a/src/plugins/skip-silences/renderer.ts +++ b/src/plugins/skip-silences/renderer.ts @@ -1,5 +1,4 @@ -import { RendererContext } from '@/types/contexts'; - +import type { RendererContext } from '@/types/contexts'; import type { SkipSilencesPluginConfig } from './index'; let config: SkipSilencesPluginConfig; diff --git a/src/preload.ts b/src/preload.ts index 8efd2442..0baa020b 100644 --- a/src/preload.ts +++ b/src/preload.ts @@ -11,10 +11,10 @@ import { loadAllPreloadPlugins(); -ipcRenderer.on('plugin:unload', (_, id: keyof PluginBuilderList) => { +ipcRenderer.on('plugin:unload', (_, id: string) => { forceUnloadPreloadPlugin(id); }); -ipcRenderer.on('plugin:enable', (_, id: keyof PluginBuilderList) => { +ipcRenderer.on('plugin:enable', (_, id: string) => { forceLoadPreloadPlugin(id); }); diff --git a/src/providers/app-controls.ts b/src/providers/app-controls.ts index 6137871e..93f08f56 100644 --- a/src/providers/app-controls.ts +++ b/src/providers/app-controls.ts @@ -1,12 +1,10 @@ import path from 'node:path'; -import { app, BrowserWindow, ipcMain, ipcRenderer } from 'electron'; +import { app, BrowserWindow, ipcMain } from 'electron'; -import config from '../config'; +import config from '@/config'; -export const restart = () => { - process.type === 'browser' ? restartInternal() : ipcRenderer.send('restart'); -}; +export const restart = () => restartInternal(); export const setupAppControls = () => { ipcMain.on('restart', restart); diff --git a/src/providers/song-info-front.ts b/src/providers/song-info-front.ts index 57b91a91..4c535fd7 100644 --- a/src/providers/song-info-front.ts +++ b/src/providers/song-info-front.ts @@ -1,8 +1,8 @@ import { singleton } from './decorators'; -import type { YoutubePlayer } from '../types/youtube-player'; -import type { GetState } from '../types/datahost-get-state'; -import type { VideoDataChangeValue } from '../types/player-api-events'; +import type { YoutubePlayer } from '@/types/youtube-player'; +import type { GetState } from '@/types/datahost-get-state'; +import type { VideoDataChangeValue } from '@/types/player-api-events'; import type { SongInfo } from './song-info'; diff --git a/src/providers/song-info.ts b/src/providers/song-info.ts index 83cfa6ca..51db27dc 100644 --- a/src/providers/song-info.ts +++ b/src/providers/song-info.ts @@ -2,9 +2,9 @@ import { BrowserWindow, ipcMain, nativeImage, net } from 'electron'; import { cache } from './decorators'; -import config from '../config'; +import config from '@/config'; -import type { GetPlayerResponse } from '../types/get-player-response'; +import type { GetPlayerResponse } from '@/types/get-player-response'; export interface SongInfo { title: string; diff --git a/src/reset.d.ts b/src/reset.d.ts index b19fea09..83de5773 100644 --- a/src/reset.d.ts +++ b/src/reset.d.ts @@ -1,9 +1,9 @@ import '@total-typescript/ts-reset'; -import { ipcRenderer as electronIpcRenderer } from 'electron'; -import is from 'electron-is'; +import type { ipcRenderer as electronIpcRenderer } from 'electron'; +import type is from 'electron-is'; -import config from './config'; +import type config from './config'; declare global { interface Compressor { diff --git a/src/tray.ts b/src/tray.ts index 22cc7c0a..ced00e7d 100644 --- a/src/tray.ts +++ b/src/tray.ts @@ -2,8 +2,9 @@ import { Menu, nativeImage, Tray } from 'electron'; import youtubeMusicTrayIcon from '@assets/youtube-music-tray.png?asset&asarUnpack'; -import { restart } from './providers/app-controls'; import config from './config'; + +import { restart } from './providers/app-controls'; import getSongControls from './providers/song-controls'; import type { MenuTemplate } from './menu';