fix: final refactoring pass
This commit is contained in:
@@ -1,22 +1,9 @@
|
||||
import React, { useEffect } from 'react';
|
||||
import { ActivityBar, Sidebar, Editor, StatusBar, Panel, TabBar, ToastContainer, showToast, ResizablePanel } from './components';
|
||||
import { useAppStore, PostData, MediaData, TaskProgress, TabState } from './store';
|
||||
import { useAppStore, PostData, MediaData, TaskProgress } from './store';
|
||||
import { loadTabsForProject, saveTabsForProject } from './utils';
|
||||
import './App.css';
|
||||
|
||||
// Helper to load tabs for a project from localStorage
|
||||
const TAB_STATE_PREFIX = 'bds-tabs-';
|
||||
const loadTabsForProject = (projectId: string): TabState | null => {
|
||||
try {
|
||||
const stored = localStorage.getItem(`${TAB_STATE_PREFIX}${projectId}`);
|
||||
if (stored) {
|
||||
return JSON.parse(stored) as TabState;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to load tab state:', error);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
const App: React.FC = () => {
|
||||
const {
|
||||
setPosts,
|
||||
@@ -93,11 +80,7 @@ const App: React.FC = () => {
|
||||
const projectId = state.activeProject?.id;
|
||||
if (projectId) {
|
||||
const tabState = state.getTabState();
|
||||
try {
|
||||
localStorage.setItem(`${TAB_STATE_PREFIX}${projectId}`, JSON.stringify(tabState));
|
||||
} catch (error) {
|
||||
console.error('Failed to save tab state on unload:', error);
|
||||
}
|
||||
saveTabsForProject(projectId, tabState);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -1,31 +1,9 @@
|
||||
import React, { useState, useRef, useEffect } from 'react';
|
||||
import { useAppStore, ProjectData, PostData, MediaData, TabState } from '../../store';
|
||||
import { useAppStore, ProjectData, PostData, MediaData } from '../../store';
|
||||
import { loadTabsForProject, saveTabsForProject } from '../../utils';
|
||||
import { showToast } from '../Toast';
|
||||
import './ProjectSelector.css';
|
||||
|
||||
// Helper functions for project-specific tab persistence
|
||||
const TAB_STATE_PREFIX = 'bds-tabs-';
|
||||
|
||||
const saveTabsForProject = (projectId: string, tabState: TabState): void => {
|
||||
try {
|
||||
localStorage.setItem(`${TAB_STATE_PREFIX}${projectId}`, JSON.stringify(tabState));
|
||||
} catch (error) {
|
||||
console.error('Failed to save tab state:', error);
|
||||
}
|
||||
};
|
||||
|
||||
const loadTabsForProject = (projectId: string): TabState | null => {
|
||||
try {
|
||||
const stored = localStorage.getItem(`${TAB_STATE_PREFIX}${projectId}`);
|
||||
if (stored) {
|
||||
return JSON.parse(stored) as TabState;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to load tab state:', error);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
|
||||
export const ProjectSelector: React.FC = () => {
|
||||
const { projects, activeProject, setProjects, setActiveProject, setPosts, setMedia, setSelectedPost, setSelectedMedia, removeProject, getTabState, restoreTabState, clearTabs } = useAppStore();
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
|
||||
@@ -2,3 +2,4 @@ export { AutoSaveManager, type AutoSaveConfig } from './autoSave';
|
||||
export { getContrastColor } from './color';
|
||||
export { unescapeMacroSyntax } from './markdownEscape';
|
||||
export { groupPostsByStatus, type GroupedPosts, type PostStatus } from './postGrouping';
|
||||
export { loadTabsForProject, saveTabsForProject } from './tabPersistence';
|
||||
|
||||
23
src/renderer/utils/tabPersistence.ts
Normal file
23
src/renderer/utils/tabPersistence.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import type { TabState } from '../store';
|
||||
|
||||
const TAB_STATE_PREFIX = 'bds-tabs-';
|
||||
|
||||
export const saveTabsForProject = (projectId: string, tabState: TabState): void => {
|
||||
try {
|
||||
localStorage.setItem(`${TAB_STATE_PREFIX}${projectId}`, JSON.stringify(tabState));
|
||||
} catch (error) {
|
||||
console.error('Failed to save tab state:', error);
|
||||
}
|
||||
};
|
||||
|
||||
export const loadTabsForProject = (projectId: string): TabState | null => {
|
||||
try {
|
||||
const stored = localStorage.getItem(`${TAB_STATE_PREFIX}${projectId}`);
|
||||
if (stored) {
|
||||
return JSON.parse(stored) as TabState;
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('Failed to load tab state:', error);
|
||||
}
|
||||
return null;
|
||||
};
|
||||
Reference in New Issue
Block a user