From 3eded53041de51ed7f91df6e2e0448992d05f853 Mon Sep 17 00:00:00 2001 From: Xwite <1797350009@qq.com> Date: Sat, 12 Oct 2024 18:23:14 +0800 Subject: [PATCH] fix --- modules/web/src/api/axios.js | 4 +++- modules/web/src/api/index.js | 20 +++++++++----------- modules/web/src/views/BookShelf.vue | 8 +++++++- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/modules/web/src/api/axios.js b/modules/web/src/api/axios.js index 7794ad9ce..df7ded094 100644 --- a/modules/web/src/api/axios.js +++ b/modules/web/src/api/axios.js @@ -1,11 +1,13 @@ import axios from "axios"; +/** @type {string} localStorage保存自定义阅读http服务接口的键值 */ +export const baseURL_localStorage_key = "remoteUrl" const SECOND = 1000; const ajax = axios.create({ baseURL: import.meta.env.VITE_API || - localStorage.getItem("remoteUrl") || + localStorage.getItem(baseURL_localStorage_key) || location.origin, timeout: 120 * SECOND, }); diff --git a/modules/web/src/api/index.js b/modules/web/src/api/index.js index 077a1bd2c..491573bb1 100644 --- a/modules/web/src/api/index.js +++ b/modules/web/src/api/index.js @@ -5,9 +5,9 @@ import { ElMessage } from "element-plus/es"; /** https://github.com/gedoor/legado/tree/master/app/src/main/java/io/legado/app/web */ /**@type string */ -export let legado_http_entry_point; +export let legado_http_entry_point = ""; /**@type string */ -export let legado_webSocket_entry_point; +export let legado_webSocket_entry_point = ""; /** * @param {string|URL} http_url @@ -45,7 +45,7 @@ export const setLeagdoHttpUrl = (http_url) => { "setLeagdoHttpUrl: FallBack to location.origin: " + location.origin, ); } - const { protocol, port, href } = url; + const { protocol, port } = url; // websocket服务端口 为http服务端口 + 1 let legado_webSocket_port, legado_webSocket_protocol; if (port !== "") { @@ -58,14 +58,12 @@ export const setLeagdoHttpUrl = (http_url) => { ? "wss://" : "ws://"; - ajax.defaults.baseURL = href; - //持久化 - localStorage.setItem("remoteUrl", href); - legado_http_entry_point = href; + ajax.defaults.baseURL = url.toString(); + legado_http_entry_point = url.toString(); url.protocol = legado_webSocket_protocol; url.port = legado_webSocket_port; - legado_webSocket_entry_point = url.href; + legado_webSocket_entry_point = url.toString(); console.info("legado_api_config:"); console.table({ @@ -77,7 +75,7 @@ export const setLeagdoHttpUrl = (http_url) => { // 手动初始化 阅读web服务地址 setLeagdoHttpUrl(ajax.defaults.baseURL); /** - * @param {string|URL|undefined} http_url + * @param {string|URL|undefined} http_url 不传为当前阅读HTTP服务接口 * @returns */ const testLeagdoHttpUrlConnection = async (http_url = legado_http_entry_point) => { @@ -223,7 +221,7 @@ const getProxyCoverUrl = (coverUrl) => { return new URL( "/cover?path=" + encodeURIComponent(coverUrl), legado_http_entry_point, - ).href; + ).toString(); }; /** * 从阅读获取需要特定处理的图片 @@ -240,7 +238,7 @@ const getProxyImageUrl = (src, width) => { "&width=" + width, legado_http_entry_point, - ); + ).toString(); }; export default { diff --git a/modules/web/src/views/BookShelf.vue b/modules/web/src/views/BookShelf.vue index 9776e26e4..4e2870f17 100644 --- a/modules/web/src/views/BookShelf.vue +++ b/modules/web/src/views/BookShelf.vue @@ -85,6 +85,7 @@ import { useBookStore } from "@/store"; import githubUrl from "@/assets/imgs/github.png"; import { useLoading } from "@/hooks/loading"; import { Search as SearchIcon } from "@element-plus/icons-vue"; +import {baseURL_localStorage_key} from "@/api/axios" import API, { legado_http_entry_point, validatorHttpUrl, @@ -203,7 +204,7 @@ export default defineComponent({ instance.confirmButtonLoading = true; instance.confirmButtonText = "校验中……"; // instance.inputValue - const url = new URL(instance.inputValue); + const url = new URL(instance.inputValue).toString(); API.testLeagdoHttpUrlConnection(url) //API.getBookShelf() .then(function (configStr) { @@ -213,6 +214,11 @@ export default defineComponent({ store.clearSearchBooks(); store.setNewConnect(false); setLeagdoHttpUrl(url); + if (url === location.origin) { + localStorage.removeItem(baseURL_localStorage_key); + } else { + localStorage.setItem(baseURL_localStorage_key, url); + } store.setConnectStatus("已连接 " + url.toString()); fetchBookShelfData(); done();