diff --git a/Upload2Notion.ts b/Upload2Notion.ts index db226ce..6d61454 100644 --- a/Upload2Notion.ts +++ b/Upload2Notion.ts @@ -82,29 +82,41 @@ export class Upload2Notion { } } - async syncMarkdownToNotion(title:string, markdown: string, nowFile: TFile, app:App): Promise { + async syncMarkdownToNotion(title:string, markdown: string, nowFile: TFile, app:App, settings:any): Promise { let res:any - const file2Block = markdownToBlocks(markdown); + const yamlObj:any = yamlFrontMatter.loadFront(markdown); + const __content = yamlObj.__content + const file2Block = markdownToBlocks(__content); const frontmasster =await app.metadataCache.getFileCache(nowFile)?.frontmatter const notionID = frontmasster ? frontmasster.notionId : null if(notionID){ res = await this.updatePage(notionID, title, file2Block); + console.log(res) } else { res = await this.createPage(title, file2Block); + console.log(res) } if (res.status === 200) { - await this.updateYamlInfo(markdown, nowFile, res, app) + await this.updateYamlInfo(markdown, nowFile, res, app, settings) } else { new Notice(`${res.text}`) } return res } - async updateYamlInfo(yamlContent: string, nowFile: TFile, res: any,app:App) { + async updateYamlInfo(yamlContent: string, nowFile: TFile, res: any,app:App, settings:any) { const yamlObj:any = yamlFrontMatter.loadFront(yamlContent); - const {url, id} = res.json + let {url, id} = res.json + // replace www to notionID + console.log(app) + const {notionID} = settings; + if(notionID!=="") { + // replace url str "www" to notionID + url = url.replace("www.notion.so", `${notionID}.notion.site`) + } yamlObj.link = url; + console.log(url) try { await navigator.clipboard.writeText(url) } catch (error) { diff --git a/main.ts b/main.ts index b49fc6a..01c18b4 100644 --- a/main.ts +++ b/main.ts @@ -22,6 +22,7 @@ interface PluginSettings { notionAPI: string; databaseID: string; bannerUrl: string; + notionID: string; proxy: string; langConfig: any; } @@ -30,6 +31,7 @@ const DEFAULT_SETTINGS: PluginSettings = { notionAPI: "", databaseID: "", bannerUrl: "", + notionID: "", proxy: "", langConfig: NoticeMConfig( window.localStorage.getItem('language') || 'en') }; @@ -84,7 +86,7 @@ export default class ObsidianSyncNotionPlugin extends Plugin { if (markDownData) { const { basename } = nowFile; const upload = new Upload2Notion(this); - const res = await upload.syncMarkdownToNotion(basename, markDownData,nowFile, this.app) + const res = await upload.syncMarkdownToNotion(basename, markDownData,nowFile, this.app, this.settings) if(res.status === 200){ new Notice(`${this.settings.langConfig["sync-success"]}${basename}`) }else { @@ -179,5 +181,19 @@ class SampleSettingTab extends PluginSettingTab { }) ); + + new Setting(containerEl) + .setName("Notion ID(optional)") + .setDesc("Your notion ID(optional),share link likes:https://username.notion.site/,your notion id is [username]") + .addText((text) => + text + .setPlaceholder("Enter notion ID(options) ") + .setValue(this.plugin.settings.notionID) + .onChange(async (value) => { + this.plugin.settings.notionID = value; + await this.plugin.saveSettings(); + }) + ); + } }