update at 2025-10-16 16:10:58
This commit is contained in:
@@ -21,6 +21,10 @@ import { NMPSettings } from './settings';
|
||||
import AssetsManager from './assets';
|
||||
import { waitForLayoutReady, uevent } from './utils';
|
||||
import { LocalFile } from './markdown/local-file';
|
||||
import { ErrorHandler } from './core/error-handler';
|
||||
import { ProgressIndicator } from './core/progress-indicator';
|
||||
import { ConfigManager } from './core/config-manager';
|
||||
import { ContentProcessor } from './core/content-processor';
|
||||
|
||||
export const VIEW_TYPE_NOTE_PREVIEW = 'note-preview';
|
||||
|
||||
@@ -101,31 +105,47 @@ export class PreviewView extends ItemView {
|
||||
*/
|
||||
async onOpen(): Promise<void> {
|
||||
console.log('[PreviewView] 视图打开 layoutReady=', this.app.workspace.layoutReady);
|
||||
// 不在未完成 layoutReady 时做重初始化,改为延迟
|
||||
if (!this.app.workspace.layoutReady) {
|
||||
this.showLoading();
|
||||
console.log('[PreviewView] defer initialization until layoutReady');
|
||||
this.app.workspace.onLayoutReady(() => {
|
||||
// 使用微任务再推进,确保其它插件也完成
|
||||
setTimeout(() => this.performInitialization(), 0);
|
||||
});
|
||||
return;
|
||||
|
||||
const progress = new ProgressIndicator();
|
||||
progress.start('初始化预览视图');
|
||||
|
||||
try {
|
||||
// 不在未完成 layoutReady 时做重初始化,改为延迟
|
||||
if (!this.app.workspace.layoutReady) {
|
||||
this.showLoading();
|
||||
console.log('[PreviewView] defer initialization until layoutReady');
|
||||
this.app.workspace.onLayoutReady(() => {
|
||||
// 使用微任务再推进,确保其它插件也完成
|
||||
setTimeout(() => this.performInitialization(), 0);
|
||||
});
|
||||
return;
|
||||
}
|
||||
await this.performInitialization();
|
||||
progress.finish('预览视图初始化完成');
|
||||
} catch (error) {
|
||||
progress.error('预览视图初始化失败');
|
||||
ErrorHandler.handle(error as Error, 'PreviewView.onOpen');
|
||||
}
|
||||
await this.performInitialization();
|
||||
}
|
||||
|
||||
private async performInitialization(): Promise<void> {
|
||||
const progress = new ProgressIndicator();
|
||||
|
||||
try {
|
||||
const start = performance.now();
|
||||
this.showLoading();
|
||||
|
||||
progress.update('初始化设置');
|
||||
console.time('[PreviewView] initializeSettings');
|
||||
await this.initializeSettings();
|
||||
console.timeEnd('[PreviewView] initializeSettings');
|
||||
|
||||
progress.update('创建管理器');
|
||||
console.time('[PreviewView] createManager');
|
||||
await this.createManager();
|
||||
console.timeEnd('[PreviewView] createManager');
|
||||
|
||||
progress.update('注册事件监听器');
|
||||
console.time('[PreviewView] registerEventListeners');
|
||||
this.registerEventListeners();
|
||||
console.timeEnd('[PreviewView] registerEventListeners');
|
||||
@@ -142,16 +162,13 @@ export class PreviewView extends ItemView {
|
||||
}
|
||||
|
||||
console.log('[PreviewView] 初始化耗时(ms):', (performance.now() - start).toFixed(1));
|
||||
progress.finish('视图初始化完成');
|
||||
uevent('open');
|
||||
} catch (error) {
|
||||
console.error('[PreviewView] 初始化失败:', error);
|
||||
new Notice('预览视图初始化失败: ' + (error instanceof Error ? error.message : String(error)));
|
||||
const container = this.containerEl.children[1] as HTMLElement;
|
||||
container.empty();
|
||||
const errorDiv = container.createDiv({ cls: 'preview-error' });
|
||||
errorDiv.createEl('h3', { text: '预览视图初始化失败' });
|
||||
errorDiv.createEl('p', { text: error instanceof Error ? error.message : String(error) });
|
||||
errorDiv.createEl('p', { text: '请尝试重新加载插件或查看控制台获取更多信息' });
|
||||
progress.error('视图初始化失败');
|
||||
ErrorHandler.handle(error as Error, 'PreviewView.performInitialization');
|
||||
console.error('[PreviewView] 初始化失败', error);
|
||||
this.showError('预览视图初始化失败,请检查插件设置');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -331,6 +348,18 @@ export class PreviewView extends ItemView {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 显示错误信息
|
||||
*/
|
||||
private showError(message: string): void {
|
||||
const container = this.containerEl.children[1] as HTMLElement;
|
||||
container.empty();
|
||||
const errorDiv = container.createDiv({ cls: 'preview-error' });
|
||||
errorDiv.createEl('h3', { text: '预览视图错误' });
|
||||
errorDiv.createEl('p', { text: message });
|
||||
errorDiv.createEl('p', { text: '请尝试重新加载插件或查看控制台获取更多信息' });
|
||||
}
|
||||
|
||||
/** 外部接口:切换平台 */
|
||||
async changePlatform(platform: 'wechat' | 'xiaohongshu') {
|
||||
await this.manager?.switchPlatform(platform as any);
|
||||
|
||||
Reference in New Issue
Block a user