瀏覽代碼

fix migration bug (fix #1641)

Gildas 1 年之前
父節點
當前提交
c34e7cba96
共有 1 個文件被更改,包括 13 次插入2 次删除
  1. 13 2
      src/core/bg/config.js

+ 13 - 2
src/core/bg/config.js

@@ -45,6 +45,9 @@ const CLIPBOARD_API_SUPPORTED = IS_NOT_SAFARI;
 const NATIVE_API_API_SUPPORTED = IS_NOT_SAFARI;
 const WEB_BLOCKING_API_SUPPORTED = IS_NOT_SAFARI;
 const SHARE_API_SUPPORTED = navigator.canShare && navigator.canShare({ files: [new File([new Blob([""], { type: "text/html" })], "test.html")] });
+const LEGACY_FILENAME_REPLACED_CHARACTERS = ["~", "+", "\\\\\\\\", "?", "%", "*", ":", "|", "\"", "<", ">", "\u0000-\u001f", "\u007f"];
+const DEFAULT_FILENAME_REPLACED_CHARACTERS = ["~", "+", "?", "%", "*", ":", "|", "\"", "<", ">", "\\\\", "\x00-\x1f", "\x7F"];
+const DEFAULT_FILENAME_REPLACEMENT_CHARACTERS = ["~", "+", "?", "%", "*", ":", "|", """, "<", ">", "\"];
 
 const DEFAULT_CONFIG = {
 	removeHiddenElements: true,
@@ -70,9 +73,9 @@ const DEFAULT_CONFIG = {
 	filenameConflictAction: "uniquify",
 	filenameMaxLength: 192,
 	filenameMaxLengthUnit: "bytes",
-	filenameReplacedCharacters: ["~", "+", "?", "%", "*", ":", "|", "\"", "<", ">", "\\\\", "\x00-\x1f", "\x7F"],
+	filenameReplacedCharacters: DEFAULT_FILENAME_REPLACED_CHARACTERS,
 	filenameReplacementCharacter: "_",
-	filenameReplacementCharacters: ["~", "+", "?", "%", "*", ":", "|", """, "<", ">", "\"],
+	filenameReplacementCharacters: DEFAULT_FILENAME_REPLACEMENT_CHARACTERS,
 	replaceEmojisInFilename: false,
 	saveFilenameTemplateData: false,
 	contextMenuEnabled: true,
@@ -292,6 +295,10 @@ async function upgrade() {
 				profile[key] = DEFAULT_CONFIG[key];
 			}
 		}
+		if (isSameArray(profile.filenameReplacedCharacters, LEGACY_FILENAME_REPLACED_CHARACTERS)
+			&& isSameArray(profile.filenameReplacementCharacters, DEFAULT_FILENAME_REPLACEMENT_CHARACTERS)) {
+			profile.filenameReplacedCharacters = DEFAULT_FILENAME_REPLACED_CHARACTERS;
+		}
 		await setProfile(profileName, profile);
 	});
 }
@@ -690,3 +697,7 @@ async function importConfig(config) {
 	await configStorage.set(newConfig);
 	await upgrade();
 }
+
+function isSameArray(arrayLeft, arrayRight) {
+	return arrayLeft.length == arrayRight.length && arrayLeft.every((value, index) => value == arrayRight[index]);
+}