Skip to content

Commit db06926

Browse files
committed
feat: add first custom api usage
1 parent 4513d68 commit db06926

File tree

4 files changed

+37
-1
lines changed

4 files changed

+37
-1
lines changed

src/@types/obsidian.d.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import IconizeAPI from '@app/lib/api';
12
import {
23
Editor,
34
TAbstractFile,
@@ -67,6 +68,14 @@ declare module 'obsidian' {
6768
}
6869

6970
interface App {
71+
plugins: {
72+
enabledPlugins: Set<string>;
73+
plugins: {
74+
['obsidian-icon-folder']?: {
75+
api: IconizeAPI;
76+
};
77+
};
78+
};
7079
internalPlugins: {
7180
plugins: InternalPlugins;
7281
getPluginById<T extends keyof InternalPlugins>(id: T): InternalPlugins[T];

src/index.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import IconizeAPI from './lib/api';
2+
import IconizePlugin from './main';
3+
4+
export function getApi(plugin: IconizePlugin): IconizeAPI | undefined {
5+
return plugin.app.plugins.plugins['obsidian-icon-folder']?.api;
6+
}

src/lib/api.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import IconizePlugin from '@app/main';
2+
3+
export { AllIconsLoadedEvent } from '@lib/event/events';
4+
5+
export default interface IconizeAPI {
6+
version: {
7+
current: string;
8+
};
9+
}
10+
11+
export function getApi(plugin: IconizePlugin): IconizeAPI {
12+
return {
13+
version: {
14+
get current() {
15+
return plugin.manifest.version;
16+
},
17+
},
18+
};
19+
}

src/main.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ import {
6262
import ChangeColorModal from './ui/change-color-modal';
6363
import { logger } from './lib/logger';
6464
import { EventEmitter } from './lib/event/event';
65+
import { getApi } from './lib/api';
6566

6667
export interface FolderIconObject {
6768
iconName: string | null;
@@ -80,9 +81,10 @@ export default class IconizePlugin extends Plugin {
8081
public positionField: PositionField = buildPositionField(this);
8182

8283
private frontmatterCache = new Set<string>();
83-
8484
private eventEmitter = new EventEmitter();
8585

86+
public readonly api = getApi(this);
87+
8688
async onload() {
8789
console.log(`loading ${config.PLUGIN_NAME}`);
8890

0 commit comments

Comments
 (0)