mirror of
https://github.com/koodo-reader/koodo-reader.git
synced 2025-12-23 23:17:55 -05:00
feat: update error messages and improve server region selection
- Enhanced the error message for failed tasks to include reauthorization instructions in the Chinese translation. - Added console logs for debugging purposes in the header component during sync operations. - Refactored server region selection logic to display the current region for authenticated users and provide a dropdown for unauthenticated users. - Updated the task progress function to reflect the new error message for failed tasks. - Modified book download logic to retrieve and download covers from the cloud.
This commit is contained in:
File diff suppressed because one or more lines are too long
2
src/assets/lib/kookit.min.js
vendored
2
src/assets/lib/kookit.min.js
vendored
File diff suppressed because one or more lines are too long
@@ -208,6 +208,7 @@
|
||||
"Note": "笔记",
|
||||
"Page width": "页面宽度",
|
||||
"Tasks failed after multiple retries, please check the network connection": "多次重试后任务失败,请检查网络连接",
|
||||
"Tasks failed after multiple retries, please check the network connection or reauthorize the data source in the settings": "多次重试后任务失败,请检查网络连接或在设置中重新授权数据源",
|
||||
"Render PDF from even page": "从偶数页开始渲染 PDF",
|
||||
"Filter by book": "按图书筛选",
|
||||
"Server path (Please first create this folder manually)": "服务器路径(请先手动创建此文件夹)",
|
||||
|
||||
@@ -242,7 +242,7 @@ class Header extends React.Component<HeaderProps, HeaderState> {
|
||||
beforeSync = async () => {
|
||||
if (!ConfigService.getItem("defaultSyncOption")) {
|
||||
toast.error(this.props.t("Please add data source in the setting"));
|
||||
this.setState({ isSync: false });
|
||||
console.log("testsats");
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
@@ -264,7 +264,6 @@ class Header extends React.Component<HeaderProps, HeaderState> {
|
||||
duration: 4000,
|
||||
}
|
||||
);
|
||||
this.setState({ isSync: false });
|
||||
return false;
|
||||
}
|
||||
let config = await getCloudConfig(
|
||||
@@ -272,7 +271,6 @@ class Header extends React.Component<HeaderProps, HeaderState> {
|
||||
);
|
||||
if (Object.keys(config).length === 0) {
|
||||
toast.error(this.props.t("Cannot get sync config"));
|
||||
this.setState({ isSync: false });
|
||||
return false;
|
||||
}
|
||||
if (
|
||||
@@ -313,7 +311,6 @@ class Header extends React.Component<HeaderProps, HeaderState> {
|
||||
),
|
||||
{ duration: 4000 }
|
||||
);
|
||||
this.setState({ isSync: false });
|
||||
return false;
|
||||
}
|
||||
checkMissingBook(this.props.books);
|
||||
@@ -324,7 +321,6 @@ class Header extends React.Component<HeaderProps, HeaderState> {
|
||||
"Broken data detected, please click the setting button to reset the sync records"
|
||||
)
|
||||
);
|
||||
this.setState({ isSync: false });
|
||||
return false;
|
||||
}
|
||||
if (ConfigService.getReaderConfig("isEnableKoodoSync") !== "yes") {
|
||||
@@ -356,12 +352,16 @@ class Header extends React.Component<HeaderProps, HeaderState> {
|
||||
);
|
||||
};
|
||||
handleCloudSync = async (): Promise<false | undefined> => {
|
||||
console.log("dsgdfgdf");
|
||||
this.timer = await showTaskProgress();
|
||||
if (!this.timer) {
|
||||
this.setState({ isSync: false });
|
||||
return false;
|
||||
}
|
||||
try {
|
||||
console.log("fghdfhfg");
|
||||
let res = await this.beforeSync();
|
||||
console.log(res, "res");
|
||||
if (!res) {
|
||||
clearInterval(this.timer);
|
||||
this.setState({ isSync: false });
|
||||
@@ -591,6 +591,7 @@ class Header extends React.Component<HeaderProps, HeaderState> {
|
||||
<div
|
||||
className="setting-icon-container"
|
||||
onClick={async () => {
|
||||
console.log("sadfsagsgfd");
|
||||
if (!isElectron && !this.props.isAuthed) {
|
||||
toast(
|
||||
this.props.t(
|
||||
|
||||
@@ -563,46 +563,56 @@ class AccountSetting extends React.Component<
|
||||
</div>
|
||||
)}
|
||||
<div className="setting-dialog-new-title">
|
||||
<Trans>Select server region</Trans>
|
||||
<select
|
||||
name=""
|
||||
className="lang-setting-dropdown"
|
||||
onChange={(event) => {
|
||||
if (!event.target.value) {
|
||||
return;
|
||||
}
|
||||
if (event.target.value === "china") {
|
||||
toast(
|
||||
this.props.t(
|
||||
"Some login options and data sources are not available in your selected server region"
|
||||
)
|
||||
);
|
||||
}
|
||||
ConfigService.setItem("serverRegion", event.target.value);
|
||||
this.setState({
|
||||
serverRegion: event.target.value,
|
||||
});
|
||||
resetReaderRequest();
|
||||
resetUserRequest();
|
||||
resetThirdpartyRequest();
|
||||
toast.success(this.props.t("Setup successful"));
|
||||
}}
|
||||
>
|
||||
{[
|
||||
{ value: "", label: "Please select" },
|
||||
{ value: "global", label: "Global" },
|
||||
{ value: "china", label: "China" },
|
||||
].map((item) => (
|
||||
<option
|
||||
value={item.value}
|
||||
key={item.value}
|
||||
className="lang-setting-option"
|
||||
selected={item.value === getServerRegion()}
|
||||
>
|
||||
{this.props.t(item.label)}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
<Trans>
|
||||
{this.props.isAuthed ? "Server region" : "Select server region"}
|
||||
</Trans>
|
||||
{this.props.isAuthed ? (
|
||||
<div className="lang-setting-option">
|
||||
<Trans>
|
||||
{getServerRegion() === "china" ? "China" : "Global"}
|
||||
</Trans>
|
||||
</div>
|
||||
) : (
|
||||
<select
|
||||
name=""
|
||||
className="lang-setting-dropdown"
|
||||
onChange={(event) => {
|
||||
if (!event.target.value) {
|
||||
return;
|
||||
}
|
||||
if (event.target.value === "china") {
|
||||
toast(
|
||||
this.props.t(
|
||||
"Some login options and data sources are not available in your selected server region"
|
||||
)
|
||||
);
|
||||
}
|
||||
ConfigService.setItem("serverRegion", event.target.value);
|
||||
this.setState({
|
||||
serverRegion: event.target.value,
|
||||
});
|
||||
resetReaderRequest();
|
||||
resetUserRequest();
|
||||
resetThirdpartyRequest();
|
||||
toast.success(this.props.t("Setup successful"));
|
||||
}}
|
||||
>
|
||||
{[
|
||||
{ value: "", label: "Please select" },
|
||||
{ value: "global", label: "Global" },
|
||||
{ value: "china", label: "China" },
|
||||
].map((item) => (
|
||||
<option
|
||||
value={item.value}
|
||||
key={item.value}
|
||||
className="lang-setting-option"
|
||||
selected={item.value === getServerRegion()}
|
||||
>
|
||||
{this.props.t(item.label)}
|
||||
</option>
|
||||
))}
|
||||
</select>
|
||||
)}
|
||||
</div>
|
||||
{!this.props.isAuthed && (
|
||||
<div className="setting-dialog-new-title">
|
||||
|
||||
@@ -844,7 +844,7 @@ export const showTaskProgress = async () => {
|
||||
if (stats.hasFailedTasks) {
|
||||
toast.error(
|
||||
i18n.t(
|
||||
"Tasks failed after multiple retries, please check the network connection"
|
||||
"Tasks failed after multiple retries, please check the network connection or reauthorize the data source in the settings"
|
||||
),
|
||||
{
|
||||
id: "syncing",
|
||||
@@ -882,7 +882,7 @@ export const showTaskProgress = async () => {
|
||||
if (stats.hasFailedTasks) {
|
||||
toast.error(
|
||||
i18n.t(
|
||||
"Tasks failed after multiple retries, please check the network connection"
|
||||
"Tasks failed after multiple retries, please check the network connection or reauthorize the data source in the settings"
|
||||
),
|
||||
{
|
||||
id: "syncing",
|
||||
|
||||
@@ -200,15 +200,15 @@ class BookUtil {
|
||||
let result = await this.downloadBook(book.key, book.format);
|
||||
clearInterval(timer);
|
||||
toast.dismiss("offline-book");
|
||||
if (ConfigService.getItem("defaultSyncOption") === "adrive") {
|
||||
let syncUtil = await SyncService.getSyncUtil();
|
||||
let covers = await syncUtil.listFiles("cover");
|
||||
for (let cover of covers) {
|
||||
if (cover.startsWith(book.key)) {
|
||||
await CoverUtil.downloadCover(cover);
|
||||
}
|
||||
|
||||
let covers = await CoverUtil.getCloudCoverList();
|
||||
console.log(covers, "covers");
|
||||
for (let cover of covers) {
|
||||
if (cover.startsWith(book.key)) {
|
||||
await CoverUtil.downloadCover(cover);
|
||||
}
|
||||
}
|
||||
|
||||
if (result) {
|
||||
toast.success(i18n.t("Download successful"), {
|
||||
id: "offline-book",
|
||||
|
||||
Reference in New Issue
Block a user