Просмотр исходного кода

add support of `filenameConflictAction`

Gildas 2 лет назад
Родитель
Сommit
5c19159a2c
4 измененных файлов с 35 добавлено и 15 удалено
  1. 8 2
      src/core/bg/autosave.js
  2. 8 4
      src/core/bg/downloads.js
  3. 10 5
      src/lib/gdrive/gdrive.js
  4. 9 4
      src/lib/github/github.js

+ 8 - 2
src/core/bg/autosave.js

@@ -165,11 +165,17 @@ async function saveContent(message, tab) {
 					const blob = new Blob([pageData.content], { type: "text/html" });
 					await downloads.saveToGDrive(message.taskId, downloads.encodeSharpCharacter(pageData.filename), blob, options, {
 						forceWebAuthFlow: options.forceWebAuthFlow
+					}, {
+						filenameConflictAction: message.filenameConflictAction
 					});
 				} else if (options.saveWithWebDAV) {
-					await downloads.saveWithWebDAV(message.taskId, downloads.encodeSharpCharacter(pageData.filename), pageData.content, options.webDAVURL, options.webDAVUser, options.webDAVPassword);
+					await downloads.saveWithWebDAV(message.taskId, downloads.encodeSharpCharacter(pageData.filename), pageData.content, options.webDAVURL, options.webDAVUser, options.webDAVPassword, {
+						filenameConflictAction: message.filenameConflictAction
+					});
 				} else if (options.saveToGitHub) {
-					await (await downloads.saveToGitHub(message.taskId, downloads.encodeSharpCharacter(pageData.filename), pageData.content, options.githubToken, options.githubUser, options.githubRepository, options.githubBranch)).pushPromise;
+					await (await downloads.saveToGitHub(message.taskId, downloads.encodeSharpCharacter(pageData.filename), pageData.content, options.githubToken, options.githubUser, options.githubRepository, options.githubBranch, {
+						filenameConflictAction: message.filenameConflictAction
+					})).pushPromise;
 				} else if (options.saveWithCompanion) {
 					await companion.save({
 						filename: pageData.filename,

+ 8 - 4
src/core/bg/downloads.js

@@ -278,11 +278,15 @@ async function saveWithWebDAV(taskId, filename, content, url, username, password
 						}
 					}
 				} else if (filenameConflictAction == CONFLICT_ACTION_PROMPT) {
-					filename = await prompt(filename);
-					if (filename) {
-						return saveWithWebDAV(taskId, filename, content, url, username, password, { filenameConflictAction, prompt });
+					if (prompt) {
+						filename = await prompt(filename);
+						if (filename) {
+							return saveWithWebDAV(taskId, filename, content, url, username, password, { filenameConflictAction, prompt });
+						} else {
+							return response;
+						}
 					} else {
-						return response;
+						return saveWithWebDAV(taskId, filename, content, url, username, password, { filenameConflictAction: CONFLICT_ACTION_UNIQUIFY });
 					}
 				} else if (filenameConflictAction == CONFLICT_ACTION_SKIP) {
 					return response;

+ 10 - 5
src/lib/gdrive/gdrive.js

@@ -214,12 +214,17 @@ class MediaUploader {
 					this.metadata.name = name;
 				}
 			} else if (this.filenameConflictAction == CONFLICT_ACTION_PROMPT) {
-				const name = await this.prompt(this.metadata.name);
-				if (name) {
-					this.metadata.name = name;
-					return this.upload();
+				if (this.prompt) {
+					const name = await this.prompt(this.metadata.name);
+					if (name) {
+						this.metadata.name = name;
+						return this.upload(indexFilename);
+					} else {
+						return response;
+					}
 				} else {
-					return response;
+					this.filenameConflictAction = CONFLICT_ACTION_UNIQUIFY;
+					return this.upload(indexFilename);
 				}
 			} else if (this.filenameConflictAction == CONFLICT_ACTION_SKIP) {
 				return response;

+ 9 - 4
src/lib/github/github.js

@@ -87,11 +87,16 @@ async function pushGitHub(token, userName, repositoryName, branchName, path, con
 				} else if (filenameConflictAction == CONFLICT_ACTION_SKIP) {
 					return responseData;
 				} else if (filenameConflictAction == CONFLICT_ACTION_PROMPT) {
-					path = await prompt(path); 
-					if (path) {
-						return createContent({ path, content, message }, signal);
+					if (prompt) {
+						path = await prompt(path);
+						if (path) {
+							return createContent({ path, content, message }, signal);
+						} else {
+							return responseData;
+						}
 					} else {
-						return responseData;
+						filenameConflictAction = CONFLICT_ACTION_UNIQUIFY;
+						return createContent({ path, content, message }, signal);
 					}
 				} else {
 					throw new Error("File already exists");