mirror of
https://github.com/koodo-reader/koodo-reader.git
synced 2025-12-23 23:17:55 -05:00
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:
4
main.js
4
main.js
@@ -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();
|
||||
}
|
||||
});
|
||||
|
||||
2
src/assets/lib/kookit-extra-browser.min.js
vendored
2
src/assets/lib/kookit-extra-browser.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -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);
|
||||
}
|
||||
}}
|
||||
>
|
||||
|
||||
@@ -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"), {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user