complete the basic notionnext function

This commit is contained in:
Jiaxin Peng
2023-12-28 00:55:06 +00:00
parent fb463ceaae
commit cf08703fea
9 changed files with 127 additions and 9 deletions

View File

@@ -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",

View File

@@ -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: "データベースの略称を入力",

View File

@@ -4,6 +4,9 @@ export const zh = {
databaseNext: "NotionNext", databaseNext: "NotionNext",
databaseGeneral: "普通", databaseGeneral: "普通",
databaseCustom: "自定义", databaseCustom: "自定义",
databaseFullName: "数据库全称",
databaseFullNameDesc: "给你的数据库起一个全称",
databaseFullNameText: "输入你的数据库全称",
databaseAbbreviateName: "数据库简称", databaseAbbreviateName: "数据库简称",
databaseAbbreviateNameDesc: "给你的数据库起一个简称", databaseAbbreviateNameDesc: "给你的数据库起一个简称",
databaseAbbreviateNameText: "输入你的数据库简称", databaseAbbreviateNameText: "输入你的数据库简称",

View File

@@ -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();
}
} }

View File

@@ -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')

View File

@@ -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.");
}

View File

@@ -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 {

View File

@@ -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 === "") {

View File

@@ -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}`)
} }