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

View File

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

View File

@ -1,8 +1,10 @@
import { ipcRenderer } from 'electron'; import { ipcRenderer } from 'electron';
import is from 'electron-is'; import is from 'electron-is';
import type { SongInfo } from '../../providers/song-info';
export default () => { 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 tabList = document.querySelectorAll('tp-yt-paper-tab');
const tabs = { const tabs = {
upNext: tabList[0], upNext: tabList[0],

View File

@ -6,8 +6,8 @@ import { sortSegments } from './segments';
import { SkipSegment } from './types'; import { SkipSegment } from './types';
import defaultConfig from '../../config/defaults'; 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'; import type { ConfigType } from '../../config/dynamic';
let videoID: string; let videoID: string;
@ -18,8 +18,8 @@ export default (win: BrowserWindow, options: ConfigType<'sponsorblock'>) => {
...options, ...options,
}; };
ipcMain.on('video-src-changed', async (_, data: string) => { ipcMain.on('video-src-changed', async (_, data: GetPlayerResponse) => {
videoID = (JSON.parse(data) as GetPlayerResponse)?.videoDetails?.videoId; videoID = data?.videoDetails?.videoId;
const segments = await fetchSegments(apiURL, categories); const segments = await fetchSegments(apiURL, categories);
win.webContents.send('sponsorblock-skip', segments); 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): E | null => document.querySelector<E>(s);
const $$ = <E extends Element = Element>(s: string): NodeListOf<E> => document.querySelectorAll<E>(s); const $$ = <E extends Element = Element>(s: string): NodeListOf<E> => document.querySelectorAll<E>(s);
ipcRenderer.on('update-song-info', async (_, extractedSongInfo: string) => { ipcRenderer.on('update-song-info', async (_, extractedSongInfo: SongInfo) => {
songInfo = JSON.parse(extractedSongInfo) as SongInfo; songInfo = extractedSongInfo;
if (songInfo.imageSrc) songInfo.image = await getImage(songInfo.imageSrc); if (songInfo.imageSrc) songInfo.image = await getImage(songInfo.imageSrc);
}); });
@ -138,7 +138,7 @@ export default () => {
data.videoDetails.elapsedSeconds = 0; data.videoDetails.elapsedSeconds = 0;
data.videoDetails.isPaused = false; data.videoDetails.isPaused = false;
ipcRenderer.send('video-src-changed', JSON.stringify(data)); ipcRenderer.send('video-src-changed', data);
} }
}, { once: true, passive: true }); }, { once: true, passive: true });
}; };

View File

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