feat: 添加服务模块到加载顺序,优化工作区状态加载逻辑,支持预加载和直接获取

This commit is contained in:
catlog22
2026-01-12 22:31:32 +08:00
parent ecaa011502
commit 5259bf48b2
2 changed files with 23 additions and 15 deletions

View File

@@ -104,6 +104,7 @@ const MODULE_FILES = [
'help-i18n.js', // Help page translations
'utils.js',
'state.js',
'services.js', // CacheManager, EventManager, PreloadService - must be before main.js
'api.js',
'components/theme.js',
'components/modals.js',

View File

@@ -174,21 +174,28 @@ async function refreshWorkspaceIndexStatus(forceRefresh) {
window.eventManager.on('data:updated:workspace-status', _workspaceStatusHandler);
}
// 3. Trigger background loading
if (window.preloadService) {
try {
var freshData = await window.preloadService.preload('workspace-status', { force: forceRefresh });
render(freshData);
} catch (err) {
console.error('[CodexLens] Failed to load workspace status:', err);
if (headerFtsEl) headerFtsEl.textContent = '--';
if (headerVectorEl) headerVectorEl.textContent = '--';
if (container) {
container.innerHTML = '<div class="text-xs text-destructive text-center py-2">' +
'<i data-lucide="alert-circle" class="w-4 h-4 inline mr-1"></i> ' +
(t('common.error') || 'Error') + ': ' + err.message +
'</div>';
}
// 3. Trigger background loading (with fallback to direct fetch)
try {
var freshData;
if (window.preloadService) {
freshData = await window.preloadService.preload('workspace-status', { force: forceRefresh });
} else {
// Fallback: direct fetch if preloadService not available
var path = encodeURIComponent(projectPath || '');
var response = await fetch('/api/codexlens/workspace-status?path=' + path);
if (!response.ok) throw new Error('HTTP ' + response.status);
freshData = await response.json();
}
render(freshData);
} catch (err) {
console.error('[CodexLens] Failed to load workspace status:', err);
if (headerFtsEl) headerFtsEl.textContent = '--';
if (headerVectorEl) headerVectorEl.textContent = '--';
if (container) {
container.innerHTML = '<div class="text-xs text-destructive text-center py-2">' +
'<i data-lucide="alert-circle" class="w-4 h-4 inline mr-1"></i> ' +
(t('common.error') || 'Error') + ': ' + err.message +
'</div>';
}
}