mirror of
https://github.com/jxpeng98/obsidian-to-NotionNext
synced 2026-07-30 00:48:36 +08:00
complete the basic notionnext function
This commit is contained in:
@@ -4,6 +4,9 @@ export const en = {
|
|||||||
databaseNext: "NotionNext",
|
databaseNext: "NotionNext",
|
||||||
databaseGeneral: "General",
|
databaseGeneral: "General",
|
||||||
databaseCustom: "Custom",
|
databaseCustom: "Custom",
|
||||||
|
databaseFullName: "Database Full Name",
|
||||||
|
databaseFullNameDesc: "Please give a full name for your database",
|
||||||
|
databaseFullNameText: "Enter your database full name",
|
||||||
databaseAbbreviateName: "Database Abbreviate Name",
|
databaseAbbreviateName: "Database Abbreviate Name",
|
||||||
databaseAbbreviateNameDesc: "Please give a nick name for your database",
|
databaseAbbreviateNameDesc: "Please give a nick name for your database",
|
||||||
databaseAbbreviateNameText: "Enter your database nick name",
|
databaseAbbreviateNameText: "Enter your database nick name",
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ export const ja = {
|
|||||||
databaseNext: "NotionNext",
|
databaseNext: "NotionNext",
|
||||||
databaseGeneral: "一般的なNotion",
|
databaseGeneral: "一般的なNotion",
|
||||||
databaseCustom: "カスタム",
|
databaseCustom: "カスタム",
|
||||||
|
databaseFullName: "データベースの全称",
|
||||||
|
databaseFullNameDesc: "データベースの全称を入力してください",
|
||||||
|
databaseFullNameText: "データベースの全称を入力",
|
||||||
databaseAbbreviateName: "データベースの略称",
|
databaseAbbreviateName: "データベースの略称",
|
||||||
databaseAbbreviateNameDesc: "データベースの略称を入力してください",
|
databaseAbbreviateNameDesc: "データベースの略称を入力してください",
|
||||||
databaseAbbreviateNameText: "データベースの略称を入力",
|
databaseAbbreviateNameText: "データベースの略称を入力",
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ export const zh = {
|
|||||||
databaseNext: "NotionNext",
|
databaseNext: "NotionNext",
|
||||||
databaseGeneral: "普通",
|
databaseGeneral: "普通",
|
||||||
databaseCustom: "自定义",
|
databaseCustom: "自定义",
|
||||||
|
databaseFullName: "数据库全称",
|
||||||
|
databaseFullNameDesc: "给你的数据库起一个全称",
|
||||||
|
databaseFullNameText: "输入你的数据库全称",
|
||||||
databaseAbbreviateName: "数据库简称",
|
databaseAbbreviateName: "数据库简称",
|
||||||
databaseAbbreviateNameDesc: "给你的数据库起一个简称",
|
databaseAbbreviateNameDesc: "给你的数据库起一个简称",
|
||||||
databaseAbbreviateNameText: "输入你的数据库简称",
|
databaseAbbreviateNameText: "输入你的数据库简称",
|
||||||
|
|||||||
17
src/main.ts
17
src/main.ts
@@ -64,6 +64,23 @@ export default class ObsidianSyncNotionPlugin extends Plugin {
|
|||||||
await this.saveSettings();
|
await this.saveSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async deleteDatabaseDetails(dbDetails: DatabaseDetails) {
|
||||||
|
delete this.settings.databaseDetails[dbDetails.abName];
|
||||||
|
|
||||||
|
await this.saveSettings();
|
||||||
|
}
|
||||||
|
|
||||||
|
async updateDatabaseDetails(dbDetails: DatabaseDetails) {
|
||||||
|
// delete the old database details
|
||||||
|
delete this.settings.databaseDetails[dbDetails.abName];
|
||||||
|
|
||||||
|
this.settings.databaseDetails = {
|
||||||
|
...this.settings.databaseDetails,
|
||||||
|
[dbDetails.abName]: dbDetails,
|
||||||
|
};
|
||||||
|
|
||||||
|
await this.saveSettings();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import {SettingGeneralTabs} from "./settingGeneralTabs";
|
|||||||
export class SettingModal extends Modal {
|
export class SettingModal extends Modal {
|
||||||
data: Record<string, any> = {
|
data: Record<string, any> = {
|
||||||
databaseFormat: 'none',
|
databaseFormat: 'none',
|
||||||
|
databaseFullName: '',
|
||||||
databaseAbbreviateName: '',
|
databaseAbbreviateName: '',
|
||||||
notionAPI: '',
|
notionAPI: '',
|
||||||
databaseID: '',
|
databaseID: '',
|
||||||
@@ -33,6 +34,7 @@ export class SettingModal extends Modal {
|
|||||||
this.settingTab = settingTab;
|
this.settingTab = settingTab;
|
||||||
if (dbDetails) {
|
if (dbDetails) {
|
||||||
this.data.databaseFormat = dbDetails.format;
|
this.data.databaseFormat = dbDetails.format;
|
||||||
|
this.data.databaseFullName = dbDetails.fullName;
|
||||||
this.data.databaseAbbreviateName = dbDetails.abName;
|
this.data.databaseAbbreviateName = dbDetails.abName;
|
||||||
this.data.notionAPI = dbDetails.notionAPI;
|
this.data.notionAPI = dbDetails.notionAPI;
|
||||||
this.data.databaseID = dbDetails.databaseID;
|
this.data.databaseID = dbDetails.databaseID;
|
||||||
@@ -110,6 +112,9 @@ export class SettingModal extends Modal {
|
|||||||
if (value === 'general') {
|
if (value === 'general') {
|
||||||
nextTabs.createEl('h3', { text: i18nConfig.NotionGeneralSettingHeader });
|
nextTabs.createEl('h3', { text: i18nConfig.NotionGeneralSettingHeader });
|
||||||
|
|
||||||
|
// add full name
|
||||||
|
this.createSettingEl(nextTabs, i18nConfig.databaseFullName, i18nConfig.databaseFullNameDesc, 'text', i18nConfig.databaseFullNameText, this.data.databaseFullName, 'databaseFullName')
|
||||||
|
|
||||||
// add abbreviate name
|
// add abbreviate name
|
||||||
this.createSettingEl(nextTabs, i18nConfig.databaseAbbreviateName, i18nConfig.databaseAbbreviateNameDesc, 'text', i18nConfig.databaseAbbreviateNameText, this.data.databaseAbbreviateName, 'databaseAbbreviateName')
|
this.createSettingEl(nextTabs, i18nConfig.databaseAbbreviateName, i18nConfig.databaseAbbreviateNameDesc, 'text', i18nConfig.databaseAbbreviateNameText, this.data.databaseAbbreviateName, 'databaseAbbreviateName')
|
||||||
|
|
||||||
@@ -128,6 +133,9 @@ export class SettingModal extends Modal {
|
|||||||
|
|
||||||
nextTabs.createEl('h3', { text: i18nConfig.NotionNextSettingHeader });
|
nextTabs.createEl('h3', { text: i18nConfig.NotionNextSettingHeader });
|
||||||
|
|
||||||
|
// add full name
|
||||||
|
this.createSettingEl(nextTabs, i18nConfig.databaseFullName, i18nConfig.databaseFullNameDesc, 'text', i18nConfig.databaseFullNameText, this.data.databaseFullName, 'databaseFullName')
|
||||||
|
|
||||||
// add abbreviate name
|
// add abbreviate name
|
||||||
this.createSettingEl(nextTabs, i18nConfig.databaseAbbreviateName, i18nConfig.databaseAbbreviateNameDesc, 'text', i18nConfig.databaseAbbreviateNameText, this.data.databaseAbbreviateName, 'databaseAbbreviateName')
|
this.createSettingEl(nextTabs, i18nConfig.databaseAbbreviateName, i18nConfig.databaseAbbreviateNameDesc, 'text', i18nConfig.databaseAbbreviateNameText, this.data.databaseAbbreviateName, 'databaseAbbreviateName')
|
||||||
|
|
||||||
@@ -141,6 +149,9 @@ export class SettingModal extends Modal {
|
|||||||
} else if (value === 'custom') {
|
} else if (value === 'custom') {
|
||||||
nextTabs.createEl('h3', { text: i18nConfig.NotionCustomSettingHeader});
|
nextTabs.createEl('h3', { text: i18nConfig.NotionCustomSettingHeader});
|
||||||
|
|
||||||
|
// add full name
|
||||||
|
this.createSettingEl(nextTabs, i18nConfig.databaseFullName, i18nConfig.databaseFullNameDesc, 'text', i18nConfig.databaseFullNameText, this.data.databaseFullName, 'databaseFullName')
|
||||||
|
|
||||||
// add abbreviate name
|
// add abbreviate name
|
||||||
this.createSettingEl(nextTabs, i18nConfig.databaseAbbreviateName, i18nConfig.databaseAbbreviateNameDesc, 'text', i18nConfig.databaseAbbreviateNameText, this.data.databaseAbbreviateName, 'databaseAbbreviateName')
|
this.createSettingEl(nextTabs, i18nConfig.databaseAbbreviateName, i18nConfig.databaseAbbreviateNameDesc, 'text', i18nConfig.databaseAbbreviateNameText, this.data.databaseAbbreviateName, 'databaseAbbreviateName')
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import ObsidianSyncNotionPlugin from "../main";
|
|||||||
import {SettingModal} from "./settingModal";
|
import {SettingModal} from "./settingModal";
|
||||||
import {SettingNextTabs} from "./settingNextTabs";
|
import {SettingNextTabs} from "./settingNextTabs";
|
||||||
import {SettingGeneralTabs} from "./settingGeneralTabs";
|
import {SettingGeneralTabs} from "./settingGeneralTabs";
|
||||||
|
import {set} from "yaml/dist/schema/yaml-1.1/set";
|
||||||
|
|
||||||
export interface PluginSettings {
|
export interface PluginSettings {
|
||||||
NextButton: boolean;
|
NextButton: boolean;
|
||||||
@@ -28,6 +29,7 @@ export interface PluginSettings {
|
|||||||
|
|
||||||
export interface DatabaseDetails {
|
export interface DatabaseDetails {
|
||||||
format: string;
|
format: string;
|
||||||
|
fullName: string;
|
||||||
abName: string;
|
abName: string;
|
||||||
notionAPI: string;
|
notionAPI: string;
|
||||||
databaseID: string;
|
databaseID: string;
|
||||||
@@ -60,6 +62,7 @@ export const DEFAULT_SETTINGS: PluginSettings = {
|
|||||||
|
|
||||||
export class ObsidianSettingTab extends PluginSettingTab {
|
export class ObsidianSettingTab extends PluginSettingTab {
|
||||||
plugin: ObsidianSyncNotionPlugin;
|
plugin: ObsidianSyncNotionPlugin;
|
||||||
|
databaseEl: HTMLDivElement;
|
||||||
|
|
||||||
constructor(app: App, plugin: ObsidianSyncNotionPlugin) {
|
constructor(app: App, plugin: ObsidianSyncNotionPlugin) {
|
||||||
super(app, plugin);
|
super(app, plugin);
|
||||||
@@ -96,6 +99,7 @@ export class ObsidianSettingTab extends PluginSettingTab {
|
|||||||
if (modal.data.saved) {
|
if (modal.data.saved) {
|
||||||
const dbDetails = {
|
const dbDetails = {
|
||||||
format: modal.data.databaseFormat,
|
format: modal.data.databaseFormat,
|
||||||
|
fullName: modal.data.databaseFullName,
|
||||||
abName: modal.data.databaseAbbreviateName,
|
abName: modal.data.databaseAbbreviateName,
|
||||||
notionAPI: modal.data.notionAPI,
|
notionAPI: modal.data.notionAPI,
|
||||||
databaseID: modal.data.databaseID,
|
databaseID: modal.data.databaseID,
|
||||||
@@ -117,8 +121,14 @@ export class ObsidianSettingTab extends PluginSettingTab {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// new section to display all created database
|
||||||
|
containerEl.createEl('h2', {text: "Database List"});
|
||||||
|
|
||||||
|
this.databaseEl = containerEl.createDiv('database-list');
|
||||||
// list all created database
|
// list all created database
|
||||||
|
this.showDatabase();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -212,4 +222,70 @@ export class ObsidianSettingTab extends PluginSettingTab {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// function to show all the database details
|
||||||
|
showDatabase() {
|
||||||
|
this.databaseEl.empty();
|
||||||
|
|
||||||
|
for (let key in this.plugin.settings.databaseDetails) {
|
||||||
|
let dbDetails = this.plugin.settings.databaseDetails[key];
|
||||||
|
|
||||||
|
const databaseDiv = this.databaseEl.createDiv('database-div');
|
||||||
|
|
||||||
|
let settingEl = new Setting(databaseDiv)
|
||||||
|
.setName(`${dbDetails.fullName} (${dbDetails.abName})`)
|
||||||
|
.setDesc(dbDetails.format)
|
||||||
|
|
||||||
|
// settingEl
|
||||||
|
// .addButton((button: ButtonComponent): ButtonComponent => {
|
||||||
|
// return button
|
||||||
|
// .setTooltip("Edit Database")
|
||||||
|
// .setIcon("pencil")
|
||||||
|
// .onClick(async () => {
|
||||||
|
// let modal = new SettingModal(this.app, this.plugin, this, dbDetails);
|
||||||
|
//
|
||||||
|
// modal.onClose = () => {
|
||||||
|
// if (modal.data.saved) {
|
||||||
|
// const dbDetails = {
|
||||||
|
// format: modal.data.databaseFormat,
|
||||||
|
// fullName: modal.data.databaseFullName,
|
||||||
|
// abName: modal.data.databaseAbbreviateName,
|
||||||
|
// notionAPI: modal.data.notionAPI,
|
||||||
|
// databaseID: modal.data.databaseID,
|
||||||
|
// tagButton: modal.data.tagButton,
|
||||||
|
// customTitleButton: modal.data.customTitleButton,
|
||||||
|
// customTitleName: modal.data.customTitleName,
|
||||||
|
// // customValues: modal.data.customValues,
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// this.plugin.updateDatabaseDetails(dbDetails);
|
||||||
|
//
|
||||||
|
// this.plugin.commands.updateCommand();
|
||||||
|
//
|
||||||
|
// this.display()
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// modal.open();
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
|
||||||
|
settingEl
|
||||||
|
.addButton((button: ButtonComponent): ButtonComponent => {
|
||||||
|
return button
|
||||||
|
.setTooltip("Delete Database")
|
||||||
|
.setIcon("trash")
|
||||||
|
.onClick(async () => {
|
||||||
|
await this.plugin.deleteDatabaseDetails(dbDetails);
|
||||||
|
|
||||||
|
await this.plugin.commands.updateCommand();
|
||||||
|
|
||||||
|
this.display()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
function addExtraButton(arg0: (button: ButtonComponent) => ButtonComponent): any {
|
||||||
|
throw new Error("Function not implemented.");
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { App, Notice, TFile } from "obsidian";
|
import { App, Notice, TFile } from "obsidian";
|
||||||
import ObsidianSyncNotionPlugin from "../main";
|
import ObsidianSyncNotionPlugin from "../main";
|
||||||
import { PluginSettings } from "../ui/settingTabs";
|
import {DatabaseDetails, PluginSettings} from "../ui/settingTabs";
|
||||||
|
|
||||||
export async function updateYamlInfo(
|
export async function updateYamlInfo(
|
||||||
yamlContent: string,
|
yamlContent: string,
|
||||||
@@ -8,10 +8,14 @@ export async function updateYamlInfo(
|
|||||||
res: any,
|
res: any,
|
||||||
app: App,
|
app: App,
|
||||||
plugin: ObsidianSyncNotionPlugin,
|
plugin: ObsidianSyncNotionPlugin,
|
||||||
|
dbDetails: DatabaseDetails,
|
||||||
) {
|
) {
|
||||||
let { url, id } = res.json
|
let { url, id } = res.json
|
||||||
// replace www to notionID
|
// replace www to notionID
|
||||||
const { notionUser } = plugin.settings;
|
const { notionUser } = plugin.settings;
|
||||||
|
const { abName } = dbDetails
|
||||||
|
const notionIDKey = `NotionID-${abName}`;
|
||||||
|
const linkKey = `link-${abName}`;
|
||||||
|
|
||||||
if (notionUser !== "") {
|
if (notionUser !== "") {
|
||||||
// replace url str "www" to notionID
|
// replace url str "www" to notionID
|
||||||
@@ -19,15 +23,15 @@ export async function updateYamlInfo(
|
|||||||
}
|
}
|
||||||
|
|
||||||
await app.fileManager.processFrontMatter(nowFile, yamlContent => {
|
await app.fileManager.processFrontMatter(nowFile, yamlContent => {
|
||||||
if (yamlContent['notionID']) {
|
if (yamlContent[notionIDKey]) {
|
||||||
delete yamlContent['notionID']
|
delete yamlContent[notionIDKey]
|
||||||
}
|
}
|
||||||
if (yamlContent['link']) {
|
if (yamlContent[linkKey]) {
|
||||||
delete yamlContent['link']
|
delete yamlContent[linkKey]
|
||||||
}
|
}
|
||||||
// add new notionID and link
|
// add new notionID and link
|
||||||
yamlContent.notionID = id;
|
yamlContent[notionIDKey] = id;
|
||||||
yamlContent.link = url;
|
yamlContent[linkKey] = url;
|
||||||
});
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ export async function uploadCommandGeneral(
|
|||||||
app: App,
|
app: App,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
const { notionAPI, databaseID } = settings;
|
const { notionAPI, databaseID } = dbDetails;
|
||||||
|
|
||||||
// Check if the user has set up the Notion API and database ID
|
// Check if the user has set up the Notion API and database ID
|
||||||
if (notionAPI === "" || databaseID === "") {
|
if (notionAPI === "" || databaseID === "") {
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ export class Upload2NotionNext extends UploadBaseNext {
|
|||||||
|
|
||||||
constructor(plugin: MyPlugin, dbDetails: DatabaseDetails) {
|
constructor(plugin: MyPlugin, dbDetails: DatabaseDetails) {
|
||||||
super(plugin);
|
super(plugin);
|
||||||
|
this.dbDetails = dbDetails
|
||||||
}
|
}
|
||||||
|
|
||||||
// 因为需要解析notion的block进行对比,非常的麻烦,
|
// 因为需要解析notion的block进行对比,非常的麻烦,
|
||||||
@@ -280,7 +281,7 @@ export class Upload2NotionNext extends UploadBaseNext {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
if (res.status === 200) {
|
if (res.status === 200) {
|
||||||
await updateYamlInfo(markdown, nowFile, res, app, this.plugin)
|
await updateYamlInfo(markdown, nowFile, res, app, this.plugin, this.dbDetails)
|
||||||
} else {
|
} else {
|
||||||
new Notice(`${res.text}`)
|
new Notice(`${res.text}`)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user