Refactor BookUtil.reloadBooks to accept currentBook parameter; update related components to pass currentBook during reload. Optimize resize event handling in Viewer component with debounce. Adjust handleFinishReading and handleSuccess methods in Header component for better sync logic. Add serverRegion setting in loginRegister function. Implement scale event throttling in mouseEvent utility.

This commit is contained in:
troyeguo
2025-11-28 21:18:02 +08:00
parent 7785848deb
commit b09b84ad3b
9 changed files with 36 additions and 25 deletions

View File

@@ -669,12 +669,12 @@ const createMainWin = () => {
ipcMain.handle("reload-reader", (event, arg) => {
if (readerWindowList.length > 0) {
readerWindowList.forEach(win => {
if (win && !win.isDestroyed()) {
if (win && !win.isDestroyed() && win.webContents.getURL().indexOf(arg.bookKey) > -1) {
win.reload();
}
})
}
if (readerWindow && !readerWindow.isDestroyed()) {
if (readerWindow && !readerWindow.isDestroyed() && readerWindow.webContents.getURL().indexOf(arg.bookKey) > -1) {
readerWindow.reload();
}
});

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

@@ -48,7 +48,7 @@ class ConvertDialog extends React.Component<
item.propName,
this.state[item.propName] ? "no" : "yes"
);
BookUtil.reloadBooks();
BookUtil.reloadBooks(this.props.currentBook);
}}
style={this.state[item.propName] ? {} : { opacity: 0.6 }}
>
@@ -123,7 +123,7 @@ class ConvertDialog extends React.Component<
if (
ConfigService.getReaderConfig("isConvertPDF") === "yes"
) {
BookUtil.reloadBooks();
BookUtil.reloadBooks(this.props.currentBook);
}
}}
>
@@ -182,7 +182,7 @@ class ConvertDialog extends React.Component<
if (
ConfigService.getReaderConfig("isConvertPDF") === "yes"
) {
BookUtil.reloadBooks();
BookUtil.reloadBooks(this.props.currentBook);
}
}}
>
@@ -237,7 +237,7 @@ class ConvertDialog extends React.Component<
ConfigService.getReaderConfig("isConvertPDF") ===
"yes"
) {
BookUtil.reloadBooks();
BookUtil.reloadBooks(this.props.currentBook);
}
}}
>
@@ -298,7 +298,7 @@ class ConvertDialog extends React.Component<
ConfigService.getReaderConfig("isConvertPDF") ===
"yes"
) {
BookUtil.reloadBooks();
BookUtil.reloadBooks(this.props.currentBook);
}
}}
>

View File

@@ -170,23 +170,17 @@ class Header extends React.Component<HeaderProps, HeaderState> {
}
}
handleFinishReading = async () => {
if (!this.props.isLoadMore) {
this.props.handleFetchBooks();
}
this.props.handleFetchBookmarks();
this.props.handleFetchNotes();
if (ConfigService.getItem("isFinshReading") === "yes") {
ConfigService.setItem("isFinshReading", "no");
if (
ConfigService.getReaderConfig("isDisableAutoSync") !== "yes" &&
ConfigService.getItem("defaultSyncOption")
) {
await this.props.handleFetchUserInfo();
this.setState({ isSync: true });
this.handleCloudSync();
await this.handleCloudSync();
}
}
ConfigService.setItem("isFinshReading", "no");
};
handleFinishUpgrade = () => {
setTimeout(() => {
@@ -397,9 +391,10 @@ class Header extends React.Component<HeaderProps, HeaderState> {
return;
};
handleSuccess = async () => {
if (!this.props.isLoadMore) {
if (ConfigService.getItem("isFinshReading") !== "yes") {
this.props.handleFetchBooks();
}
this.props.handleFetchBookmarks();
this.props.handleFetchNotes();
toast.success(this.props.t("Synchronisation successful"), {

View File

@@ -83,9 +83,13 @@ class Viewer extends React.Component<ViewerProps, ViewerState> {
)
);
this.props.handleRenderBookFunc(this.handleRenderBook);
window.addEventListener("resize", () => {
BookUtil.reloadBooks();
let resizeTimer: NodeJS.Timeout;
window.addEventListener("resize", (event) => {
console.log(event);
clearTimeout(resizeTimer);
resizeTimer = setTimeout(() => {
BookUtil.reloadBooks(this.props.currentBook);
}, 300); // 300ms 防抖
});
}
async UNSAFE_componentWillReceiveProps(nextProps: ViewerProps) {

View File

@@ -276,12 +276,16 @@ class BookUtil {
let ref = book.format.toLowerCase();
return `/${ref}/${book.key}`;
}
static reloadBooks() {
static reloadBooks(currentBook: BookModel) {
if (isElectron) {
if (ConfigService.getReaderConfig("isOpenInMain") === "yes") {
window.require("electron").ipcRenderer.invoke("reload-tab", "ping");
window
.require("electron")
.ipcRenderer.invoke("reload-tab", { bookKey: currentBook.key });
} else {
window.require("electron").ipcRenderer.invoke("reload-reader", "ping");
window.require("electron").ipcRenderer.invoke("reload-reader", {
bookKey: currentBook.key,
});
}
} else {
window.location.reload();

View File

@@ -132,7 +132,7 @@ export const scrollChapter = async (
}
}
};
let lastScaleTime = 0;
export const bindHtmlEvent = (
rendition: any,
doc: any,
@@ -152,10 +152,17 @@ export const bindHtmlEvent = (
},
{ passive: false }
);
doc.addEventListener(
"wheel",
async (event) => {
if (event.ctrlKey && readerMode !== "double") {
const currentTime = Date.now();
console.log(currentTime, lastScaleTime, currentTime - lastScaleTime);
if (currentTime - lastScaleTime < 2000) {
return;
}
lastScaleTime = currentTime;
event.preventDefault();
let scale = parseFloat(ConfigService.getReaderConfig("scale") || "1");
if (event.deltaY < 0) {

View File

@@ -40,6 +40,7 @@ export const loginRegister = async (service: string, code: string) => {
await TokenService.setToken("is_authed", "yes");
await TokenService.setToken("access_token", response.data.access_token);
await TokenService.setToken("refresh_token", response.data.refresh_token);
ConfigService.setItem("serverRegion", getServerRegion());
}
return response;
};