fix: remove unnecessary JSON.stringify & JSON.parse

This commit is contained in:
JellyBrick
2023-09-30 08:43:10 +09:00
parent 72660f5aa1
commit 46d3a85cc0
6 changed files with 21 additions and 18 deletions

View File

@ -29,7 +29,8 @@ import { isEnabled } from '../../config/plugins';
import { cleanupName, getImage, SongInfo } from '../../providers/song-info';
import { injectCSS } from '../utils';
import { cache } from '../../providers/decorators';
import { GetPlayerResponse } from '../../types/get-player-response';
import type { GetPlayerResponse } from '../../types/get-player-response';
type CustomSongInfo = SongInfo & { trackId?: string };
@ -78,8 +79,8 @@ export default async (win_: BrowserWindow) => {
generate_session_locally: true,
});
ipcMain.on('download-song', (_, url: string) => downloadSong(url));
ipcMain.on('video-src-changed', (_, data: string) => {
playingUrl = (JSON.parse(data) as GetPlayerResponse).microformat.microformatDataRenderer.urlCanonical;
ipcMain.on('video-src-changed', (_, data: GetPlayerResponse) => {
playingUrl = data.microformat.microformatDataRenderer.urlCanonical;
});
ipcMain.on('download-playlist-request', async (_event, url: string) =>
downloadPlaylist(url),

View File

@ -24,8 +24,8 @@ export default (win: BrowserWindow, options: LyricGeniusType) => {
injectCSS(win.webContents, join(__dirname, 'style.css'));
ipcMain.handle('search-genius-lyrics', async (_, extractedSongInfo: string) => {
const metadata = JSON.parse(extractedSongInfo) as SongInfo;
ipcMain.handle('search-genius-lyrics', async (_, extractedSongInfo: SongInfo) => {
const metadata = extractedSongInfo;
return await fetchFromGenius(metadata);
});
};

View File

@ -1,8 +1,10 @@
import { ipcRenderer } from 'electron';
import is from 'electron-is';
import type { SongInfo } from '../../providers/song-info';
export default () => {
ipcRenderer.on('update-song-info', (_, extractedSongInfo: string) => setTimeout(async () => {
ipcRenderer.on('update-song-info', (_, extractedSongInfo: SongInfo) => setTimeout(async () => {
const tabList = document.querySelectorAll('tp-yt-paper-tab');
const tabs = {
upNext: tabList[0],

View File

@ -6,8 +6,8 @@ import { sortSegments } from './segments';
import { SkipSegment } from './types';
import defaultConfig from '../../config/defaults';
import { GetPlayerResponse } from '../../types/get-player-response';
import type { GetPlayerResponse } from '../../types/get-player-response';
import type { ConfigType } from '../../config/dynamic';
let videoID: string;
@ -18,8 +18,8 @@ export default (win: BrowserWindow, options: ConfigType<'sponsorblock'>) => {
...options,
};
ipcMain.on('video-src-changed', async (_, data: string) => {
videoID = (JSON.parse(data) as GetPlayerResponse)?.videoDetails?.videoId;
ipcMain.on('video-src-changed', async (_, data: GetPlayerResponse) => {
videoID = data?.videoDetails?.videoId;
const segments = await fetchSegments(apiURL, categories);
win.webContents.send('sponsorblock-skip', segments);
});

View File

@ -12,8 +12,8 @@ export const getSongInfo = () => songInfo;
const $ = <E extends Element = Element>(s: string): E | null => document.querySelector<E>(s);
const $$ = <E extends Element = Element>(s: string): NodeListOf<E> => document.querySelectorAll<E>(s);
ipcRenderer.on('update-song-info', async (_, extractedSongInfo: string) => {
songInfo = JSON.parse(extractedSongInfo) as SongInfo;
ipcRenderer.on('update-song-info', async (_, extractedSongInfo: SongInfo) => {
songInfo = extractedSongInfo;
if (songInfo.imageSrc) songInfo.image = await getImage(songInfo.imageSrc);
});
@ -138,7 +138,7 @@ export default () => {
data.videoDetails.elapsedSeconds = 0;
data.videoDetails.isPaused = false;
ipcRenderer.send('video-src-changed', JSON.stringify(data));
ipcRenderer.send('video-src-changed', data);
}
}, { once: true, passive: true });
};

View File

@ -3,7 +3,8 @@ import { BrowserWindow, ipcMain, nativeImage, net } from 'electron';
import { cache } from './decorators';
import config from '../config';
import { GetPlayerResponse } from '../types/get-player-response';
import type { GetPlayerResponse } from '../types/get-player-response';
export interface SongInfo {
title: string;
@ -53,8 +54,7 @@ export const getImage = cache(
},
);
const handleData = async (responseText: string, win: Electron.BrowserWindow) => {
const data = JSON.parse(responseText) as GetPlayerResponse;
const handleData = async (data: GetPlayerResponse, win: Electron.BrowserWindow) => {
if (!data) {
return;
}
@ -83,7 +83,7 @@ const handleData = async (responseText: string, win: Electron.BrowserWindow) =>
songInfo.imageSrc = thumbnails.at(-1)?.url.split('?')[0];
if (songInfo.imageSrc) songInfo.image = await getImage(songInfo.imageSrc);
win.webContents.send('update-song-info', JSON.stringify(songInfo));
win.webContents.send('update-song-info', songInfo);
}
};
@ -100,9 +100,9 @@ let handlingData = false;
const registerProvider = (win: BrowserWindow) => {
// This will be called when the song-info-front finds a new request with song data
ipcMain.on('video-src-changed', async (_, responseText: string) => {
ipcMain.on('video-src-changed', async (_, data: GetPlayerResponse) => {
handlingData = true;
await handleData(responseText, win);
await handleData(data, win);
handlingData = false;
for (const c of callbacks) {
c(songInfo, 'video-src-changed');