mirror of
https://github.com/jxpeng98/obsidian-to-NotionNext
synced 2026-07-29 08:08:34 +08:00
93 lines
2.5 KiB
TypeScript
93 lines
2.5 KiB
TypeScript
import { App, Editor, MarkdownView, Notice, Plugin, PluginSettingTab, Setting } from "obsidian";
|
|
import { addIcons } from 'src/ui/icon';
|
|
import { Upload2NotionGeneral } from "src/upload/upload_general/Upload2NotionGeneral";
|
|
import { Upload2NotionNext } from "src/upload/upload_next/Upload2NotionNext";
|
|
import { i18nConfig } from "src/lang/I18n";
|
|
import ribbonCommands from "src/commands/NotionCommands";
|
|
import { ObsidianSettingTab, PluginSettings, DEFAULT_SETTINGS, DatabaseDetails } from "src/ui/settingTabs";
|
|
|
|
// Remember to rename these classes and interfaces!
|
|
|
|
|
|
export default class ObsidianSyncNotionPlugin extends Plugin {
|
|
settings: PluginSettings;
|
|
commands: ribbonCommands;
|
|
app: App;
|
|
|
|
async onload() {
|
|
await this.loadSettings();
|
|
this.commands = new ribbonCommands(this);
|
|
|
|
addIcons();
|
|
// This creates an icon in the left ribbon.
|
|
const ribbonIconEl = this.addRibbonIcon(
|
|
"notion-logo",
|
|
i18nConfig.ribbonIcon,
|
|
async (evt: MouseEvent) => {
|
|
// Called when the user clicks the icon.
|
|
// await this.uploadCommand();
|
|
await this.commands.ribbonDisplay();
|
|
}
|
|
);
|
|
|
|
// This adds a status bar item to the bottom of the app. Does not work on mobile apps.
|
|
|
|
// const statusBarItemEl = this.addStatusBarItem();
|
|
// // statusBarItemEl.setText("share to notion");
|
|
|
|
// This adds a settings tab so the user can configure various aspects of the plugin
|
|
this.addSettingTab(new ObsidianSettingTab(this.app, this));
|
|
|
|
}
|
|
|
|
onunload() {
|
|
}
|
|
|
|
async loadSettings() {
|
|
this.settings = Object.assign(
|
|
{},
|
|
DEFAULT_SETTINGS,
|
|
await this.loadData()
|
|
);
|
|
}
|
|
|
|
async saveSettings() {
|
|
await this.saveData(this.settings);
|
|
}
|
|
|
|
async addDatabaseDetails(dbDetails: DatabaseDetails) {
|
|
this.settings.databaseDetails = {
|
|
...this.settings.databaseDetails,
|
|
[dbDetails.abName]: dbDetails,
|
|
};
|
|
|
|
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();
|
|
}
|
|
|
|
// previewDatabase(dbDetails: DatabaseDetails) {
|
|
//
|
|
// }
|
|
}
|
|
|
|
|
|
|
|
|