@@ -8,7 +8,7 @@ import { createMarkdownRenderChildWidgetEditorPlugin } from './cm6/Cm6_ViewPlugi
88import { MDRCManager } from './MDRCManager' ;
99import { DEFAULT_SETTINGS , type MetaBindPluginSettings } from './settings/Settings' ;
1010import { type IPlugin } from './IPlugin' ;
11- import { ObsidianMetadataAdapter } from './metadata/ObsidianMetadataAdapter' ;
11+ // import { ObsidianMetadataAdapter } from './metadata/ObsidianMetadataAdapter';
1212import { FaqView , MB_FAQ_VIEW_TYPE } from './faq/FaqView' ;
1313import { EMBED_MAX_DEPTH , EmbedMDRC } from './renderChildren/EmbedMDRC' ;
1414import { getUUID } from './utils/Utils' ;
@@ -20,6 +20,9 @@ import { registerCm5HLModes } from './cm6/Cm5_Modes';
2020import { DependencyManager } from './utils/dependencies/DependencyManager' ;
2121import { Version } from './utils/dependencies/Version' ;
2222import { createEditorMenu } from './EditorMenu' ;
23+ import { BindTargetStorageType } from './parsers/bindTargetParser/BindTargetDeclaration' ;
24+ import { GlobalMetadataSource , InternalMetadataSource } from './metadata/InternalMetadataSources' ;
25+ import { ObsidianMetadataSource } from './metadata/ObsidianMetadataSource' ;
2326
2427export enum MetaBindBuild {
2528 DEV = 'dev' ,
@@ -79,22 +82,9 @@ export default class MetaBindPlugin extends Plugin implements IPlugin {
7982 this . api = new API ( this ) ;
8083 this . internal = new ObsidianAPIAdapter ( this ) ;
8184 this . mdrcManager = new MDRCManager ( ) ;
82- const metadataAdapter = new ObsidianMetadataAdapter ( this ) ;
83- this . metadataManager = new MetadataManager ( metadataAdapter ) ;
85+ // const metadataAdapter = new ObsidianMetadataAdapter(this);
8486
85- this . registerEvent (
86- this . app . vault . on ( 'rename' , ( _file , oldPath ) => {
87- this . mdrcManager . unloadFile ( oldPath ) ;
88- metadataAdapter . onFileRename ( oldPath ) ;
89- } ) ,
90- ) ;
91-
92- this . registerEvent (
93- this . app . vault . on ( 'delete' , file => {
94- this . mdrcManager . unloadFile ( file . path ) ;
95- metadataAdapter . onFileDelete ( file . path ) ;
96- } ) ,
97- ) ;
87+ this . setUpMetadataManager ( ) ;
9888
9989 this . loadTemplates ( ) ;
10090
@@ -121,7 +111,6 @@ export default class MetaBindPlugin extends Plugin implements IPlugin {
121111 onunload ( ) : void {
122112 console . log ( `meta-bind | Main >> unload` ) ;
123113 this . mdrcManager . unload ( ) ;
124- this . metadataManager . unload ( ) ;
125114 }
126115
127116 // TODO: move to internal API
@@ -135,6 +124,42 @@ export default class MetaBindPlugin extends Plugin implements IPlugin {
135124 }
136125 }
137126
127+ setUpMetadataManager ( ) : void {
128+ this . metadataManager = new MetadataManager ( ) ;
129+
130+ const obsidianMetadataSource = new ObsidianMetadataSource (
131+ this ,
132+ BindTargetStorageType . FRONTMATTER ,
133+ this . metadataManager ,
134+ ) ;
135+ this . metadataManager . registerSource ( obsidianMetadataSource ) ;
136+
137+ const memoryMetadataSource = new InternalMetadataSource ( BindTargetStorageType . MEMORY , this . metadataManager ) ;
138+ this . metadataManager . registerSource ( memoryMetadataSource ) ;
139+
140+ const globalMemoryMetadataSource = new GlobalMetadataSource (
141+ BindTargetStorageType . GLOBAL_MEMORY ,
142+ this . metadataManager ,
143+ ) ;
144+ this . metadataManager . registerSource ( globalMemoryMetadataSource ) ;
145+
146+ this . registerEvent (
147+ this . app . vault . on ( 'rename' , ( file , oldPath ) => {
148+ this . mdrcManager . unloadFile ( oldPath ) ;
149+ this . metadataManager . onStoragePathRenamed ( oldPath , file . path ) ;
150+ } ) ,
151+ ) ;
152+
153+ this . registerEvent (
154+ this . app . vault . on ( 'delete' , file => {
155+ this . mdrcManager . unloadFile ( file . path ) ;
156+ this . metadataManager . onStoragePathDeleted ( file . path ) ;
157+ } ) ,
158+ ) ;
159+
160+ this . registerInterval ( window . setInterval ( ( ) => this . metadataManager . cycle ( ) , this . settings . syncInterval ) ) ;
161+ }
162+
138163 addPostProcessors ( ) : void {
139164 this . registerMarkdownPostProcessor ( ( el : HTMLElement , ctx : MarkdownPostProcessorContext ) => {
140165 const codeBlocks = el . querySelectorAll ( 'code' ) ;
0 commit comments