From 26dbe6d514f08ddc4ad60ced7d6cce16c14f2142 Mon Sep 17 00:00:00 2001 From: Mara Date: Tue, 12 Apr 2022 00:01:16 +0200 Subject: [PATCH] fix: Base64 errors on mobile --- esbuild.config.mjs | 26 +------------------------- package-lock.json | 11 +++++++++++ package.json | 1 + src/main.ts | 2 ++ src/publication.ts | 30 ++++++++++++++++++++++++------ src/utils.ts | 3 ++- 6 files changed, 41 insertions(+), 32 deletions(-) diff --git a/esbuild.config.mjs b/esbuild.config.mjs index 645372f0..1f08d946 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -17,31 +17,7 @@ esbuild.build({ }, entryPoints: ['src/main.ts'], bundle: true, - external: [ - 'obsidian', - 'electron', - '@codemirror/autocomplete', - '@codemirror/closebrackets', - '@codemirror/collab', - '@codemirror/commands', - '@codemirror/comment', - '@codemirror/fold', - '@codemirror/gutter', - '@codemirror/highlight', - '@codemirror/history', - '@codemirror/language', - '@codemirror/lint', - '@codemirror/matchbrackets', - '@codemirror/panel', - '@codemirror/rangeset', - '@codemirror/rectangular-selection', - '@codemirror/search', - '@codemirror/state', - '@codemirror/stream-parser', - '@codemirror/text', - '@codemirror/tooltip', - '@codemirror/view', - ...builtins], + external: ['obsidian', 'electron', ...builtins], format: 'cjs', watch: !prod, target: 'es2016', diff --git a/package-lock.json b/package-lock.json index c551b60b..419330ce 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "AGPL-3.0", "dependencies": { "@octokit/core": "^3.5.1", + "js-base64": "^3.7.2", "standard-version": "^9.3.2" }, "devDependencies": { @@ -2333,6 +2334,11 @@ "dev": true, "peer": true }, + "node_modules/js-base64": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", + "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5591,6 +5597,11 @@ "dev": true, "peer": true }, + "js-base64": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.2.tgz", + "integrity": "sha512-NnRs6dsyqUXejqk/yv2aiXlAvOs56sLkX6nUdeaNezI5LFFLlsZjOThmwnrcwh5ZZRwZlCMnVAY3CvhIhoVEKQ==" + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index 83f19f16..45a171c6 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ }, "dependencies": { "@octokit/core": "^3.5.1", + "js-base64": "^3.7.2", "standard-version": "^9.3.2" } } diff --git a/src/main.ts b/src/main.ts index 845865d8..a4d87ffb 100644 --- a/src/main.ts +++ b/src/main.ts @@ -58,6 +58,7 @@ export default class mkdocsPublication extends Plugin { if (publishSuccess) { new Notice("Successfully published "+ currentFile.basename +" to mkdocs.") } + publishFile.workflow_gestion(); } catch (e) { console.error(e); new Notice("Error publishing to mkdocs.") @@ -95,6 +96,7 @@ export default class mkdocsPublication extends Plugin { } statusBar.finish(8000); new Notice(`Successfully published ${publishedFiles.length - errorCount} notes to mkdocs.`); + await publish.workflow_gestion(); } } catch (e) { //statusBarItems.remove(); diff --git a/src/publication.ts b/src/publication.ts index 100fa8eb..5a2fc2f3 100644 --- a/src/publication.ts +++ b/src/publication.ts @@ -6,6 +6,7 @@ import { } from "./settings"; import { Octokit } from "@octokit/core"; import {arrayBufferToBase64} from "./utils"; +import { Base64 } from "js-base64"; export default class MkdocsPublish { vault: Vault; @@ -65,7 +66,6 @@ export default class MkdocsPublish { async publish(file: TFile, one_file: boolean = false) { const sharedkey = this.settings.shareKey; const frontmatter = this.metadataCache.getCache(file.path).frontmatter; - this.checkExcludedFolder(file) if (!frontmatter || !frontmatter[sharedkey] || this.checkExcludedFolder(file)) { return false; } @@ -82,7 +82,8 @@ export default class MkdocsPublish { await this.uploadFolder(); } return true; - } catch { + } catch (e) { + console.log(e); return false; } } @@ -92,7 +93,7 @@ export default class MkdocsPublish { if (folder.length > 0) { const publishedFiles = folder.map(file => file.name); const publishedFilesText = publishedFiles.toString(); - await this.uploadText('vault_published.txt', publishedFilesText); + await this.uploadText('vault_published.txt', publishedFilesText, 'vault_published.txt'); } } @@ -109,6 +110,7 @@ export default class MkdocsPublish { auth: this.settings.GhToken }); const path = `source/${title}`; + const payload = { owner: this.settings.githubName, repo: this.settings.githubRepo, @@ -137,11 +139,27 @@ export default class MkdocsPublish { const imageBin = await this.vault.readBinary(imageFile); const image64 = arrayBufferToBase64(imageBin); await this.upload(imageFile.path, image64, imageFile.name); - } async uploadText(filePath: string, text: string, title: string = "") { - const contentBase64 = btoa(text); - await this.upload(filePath, contentBase64, title); + try { + const contentBase64 = Base64.encode(text).toString(); + await this.upload(filePath, contentBase64, title); + } + catch (e) { + console.log(e); + } + } + + async workflow_gestion() { + const octokit = new Octokit({ + auth: this.settings.GhToken + }); + await octokit.request('POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches', { + owner: this.settings.githubName, + repo: this.settings.githubRepo, + workflow_id: 'ci.yml', + ref: 'main' + }); } } diff --git a/src/utils.ts b/src/utils.ts index f36bb8c0..3e45d393 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -2,6 +2,7 @@ import { App, TFile } from 'obsidian'; +import { Base64 } from "js-base64"; import {mkdocsPublicationSettings} from "./settings"; function arrayBufferToBase64(buffer: ArrayBuffer) { @@ -11,7 +12,7 @@ function arrayBufferToBase64(buffer: ArrayBuffer) { for (let i = 0; i < len; i++) { binary += String.fromCharCode(bytes[i]); } - return window.btoa(binary); + return Base64.btoa(binary); } function disablePublish(app: App, settings: mkdocsPublicationSettings, file:TFile) {