소스 검색

feat: compression is optional now

Sv443 1 년 전
부모
커밋
79dea95ac8
2개의 변경된 파일12개의 추가작업 그리고 6개의 파일을 삭제
  1. 6 3
      src/config.ts
  2. 6 3
      src/features/lyrics.ts

+ 6 - 3
src/config.ts

@@ -1,6 +1,6 @@
 import { ConfigManager, compress, type ConfigMigrationsDict, decompress } from "@sv443-network/userutils";
 import { featInfo } from "./features/index";
-import { info, log } from "./utils";
+import { compressionSupported, info, log } from "./utils";
 import { emitSiteEvent } from "./siteEvents";
 import { compressionFormat } from "./constants";
 import type { FeatureConfig } from "./types";
@@ -60,17 +60,20 @@ export const defaultConfig = (Object.keys(featInfo) as (keyof typeof featInfo)[]
     return acc;
   }, {}) as FeatureConfig;
 
+let canCompress = true;
+
 const cfgMgr = new ConfigManager({
   id: "bytm-config",
   formatVersion,
   defaultConfig,
   migrations,
-  encodeData: (data) => compress(data, compressionFormat, "string"),
-  decodeData: (data) => decompress(data, compressionFormat, "string"),
+  encodeData: (data) => canCompress ? compress(data, compressionFormat, "string") : data,
+  decodeData: (data) => canCompress ? decompress(data, compressionFormat, "string") : data,
 });
 
 /** Initializes the ConfigManager instance and loads persistent data into memory */
 export async function initConfig() {
+  canCompress = await compressionSupported();
   const oldFmtVer = Number(await GM.getValue(`_uucfgver-${cfgMgr.id}`, NaN));
   const data = await cfgMgr.loadData();
   log(`Initialized ConfigManager (format version = ${cfgMgr.formatVersion})`);

+ 6 - 3
src/features/lyrics.ts

@@ -1,5 +1,5 @@
 import { ConfigManager, compress, decompress, fetchAdvanced, insertAfter } from "@sv443-network/userutils";
-import { constructUrlString, error, getResourceUrl, info, log, onSelectorOld, warn, t, tp } from "../utils";
+import { constructUrlString, error, getResourceUrl, info, log, onSelectorOld, warn, t, tp, compressionSupported } from "../utils";
 import { emitInterface } from "../interface";
 import { compressionFormat, scriptInfo } from "../constants";
 import type { LyricsCacheEntry } from "../types";
@@ -22,17 +22,20 @@ export type LyricsCache = {
   cache: LyricsCacheEntry[];
 };
 
+let canCompress = true;
+
 const lyricsCache = new ConfigManager<LyricsCache>({
   id: "bytm-lyrics-cache",
   defaultConfig: {
     cache: [],
   },
   formatVersion: 1,
-  encodeData: (data) => compress(data, compressionFormat, "string"),
-  decodeData: (data) => decompress(data, compressionFormat, "string"),
+  encodeData: (data) => canCompress ? compress(data, compressionFormat, "string") : data,
+  decodeData: (data) => canCompress ? decompress(data, compressionFormat, "string") : data,
 });
 
 export async function initLyricsCache() {
+  canCompress = await compressionSupported();
   const data = await lyricsCache.loadData();
   log(`Loaded lyrics cache (${data.cache.length} entries):`, data);
   return data;