generated from obsidianmd/obsidian-sample-plugin
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.ts
70 lines (58 loc) · 1.7 KB
/
main.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
import {
App,
Plugin,
PluginSettingTab,
} from 'obsidian';
import Spooler from './src/spooler';
import { fixOrder } from './src/organizer';
import { monitorFullscreen } from 'src/fullscreen';
import { registerHotkeys } from 'src/hotkeys';
import { showSettings } from './src/menu';
import { upgrade } from 'src/upgrade';
const DEFAULT_SETTINGS: StatusBarOrganizerSettings = {
activePreset: "Default",
activeFullscreenPreset: "Default",
separateFullscreenPreset: false,
presets: {
"Default": {}
},
presetsOrder: ["Default"],
version: "CURRENT_VERSION"
}
export default class StatusBarOrganizer extends Plugin {
settings: StatusBarOrganizerSettings;
statusBar: Element;
spooler: Spooler;
async onload() {
await this.loadSettings();
this.addSettingTab(new StatusBarSettingTab(this.app, this));
registerHotkeys(this, this.settings.presetsOrder);
this.statusBar = document.getElementsByClassName("status-bar")[0];
this.spooler = new Spooler(this, fixOrder);
monitorFullscreen(this);
}
onunload() {
this.spooler.disableObserver();
}
async loadSettings() {
const savedData = await this.loadData() || {};
if (Object.keys(savedData).length != 0 && !("version" in savedData)) savedData["version"] = "0.0.0";
this.settings = Object.assign({}, DEFAULT_SETTINGS, savedData);
upgrade(this.settings);
await this.saveSettings();
}
async saveSettings() {
await this.saveData(this.settings);
}
}
class StatusBarSettingTab extends PluginSettingTab {
plugin: StatusBarOrganizer;
constructor(app: App, plugin: StatusBarOrganizer) {
super(app, plugin);
this.plugin = plugin;
}
async display() {
const {containerEl} = this;
return showSettings(this.plugin, containerEl);
}
}