forked from akai/readest
fix: restore full view settings when reopening book (#1400)
This commit is contained in:
@@ -36,7 +36,7 @@ const ReaderContent: React.FC<{ ids?: string; settings: SystemSettings }> = ({ i
|
||||
const { sideBarBookKey, setSideBarBookKey } = useSidebarStore();
|
||||
const { saveSettings } = useSettingsStore();
|
||||
const { getConfig, getBookData, saveConfig } = useBookDataStore();
|
||||
const { getView, setBookKeys } = useReaderStore();
|
||||
const { getView, setBookKeys, getViewSettings } = useReaderStore();
|
||||
const { initViewState, getViewState, clearViewState } = useReaderStore();
|
||||
const [showDetailsBook, setShowDetailsBook] = useState<Book | null>(null);
|
||||
const isInitiating = useRef(false);
|
||||
@@ -150,7 +150,8 @@ const ReaderContent: React.FC<{ ids?: string; settings: SystemSettings }> = ({ i
|
||||
|
||||
if (!bookKeys || bookKeys.length === 0) return null;
|
||||
const bookData = getBookData(bookKeys[0]!);
|
||||
if (!bookData || !bookData.book || !bookData.bookDoc) {
|
||||
const viewSettings = getViewSettings(bookKeys[0]!);
|
||||
if (!bookData || !bookData.book || !bookData.bookDoc || !viewSettings) {
|
||||
setTimeout(() => setLoading(true), 300);
|
||||
return (
|
||||
loading && (
|
||||
|
||||
@@ -42,7 +42,11 @@ export const useBookDataStore = create<BookDataState>((set, get) => ({
|
||||
setConfig: (key: string, partialConfig: Partial<BookConfig>) => {
|
||||
set((state: BookDataState) => {
|
||||
const id = key.split('-')[0]!;
|
||||
const config = (state.booksData[id]?.config || {}) as BookConfig;
|
||||
const config = (state.booksData[id]?.config || null) as BookConfig;
|
||||
if (!config) {
|
||||
console.warn('No config found for book', id);
|
||||
return state;
|
||||
}
|
||||
Object.assign(config, partialConfig);
|
||||
return {
|
||||
booksData: {
|
||||
|
||||
@@ -119,9 +119,9 @@ export const useReaderStore = create<ReaderStore>((set, get) => ({
|
||||
},
|
||||
}));
|
||||
try {
|
||||
const { settings } = useSettingsStore.getState();
|
||||
if (!bookData) {
|
||||
const appService = await envConfig.getAppService();
|
||||
const { settings } = useSettingsStore.getState();
|
||||
const { library } = useLibraryStore.getState();
|
||||
const book = library.find((b) => b.hash === id);
|
||||
if (!book) {
|
||||
@@ -145,6 +145,7 @@ export const useReaderStore = create<ReaderStore>((set, get) => ({
|
||||
const booksData = useBookDataStore.getState().booksData;
|
||||
const config = booksData[id]?.config as BookConfig;
|
||||
const configViewSettings = config.viewSettings!;
|
||||
const globalViewSettings = settings.globalViewSettings;
|
||||
set((state) => ({
|
||||
viewStates: {
|
||||
...state.viewStates,
|
||||
@@ -158,7 +159,7 @@ export const useReaderStore = create<ReaderStore>((set, get) => ({
|
||||
progress: null,
|
||||
ribbonVisible: false,
|
||||
ttsEnabled: false,
|
||||
viewSettings: JSON.parse(JSON.stringify(configViewSettings)) as ViewSettings,
|
||||
viewSettings: { ...globalViewSettings, ...configViewSettings },
|
||||
},
|
||||
},
|
||||
}));
|
||||
|
||||
Reference in New Issue
Block a user