diff --git a/.github/workflows/web.yml b/.github/workflows/web.yml index 3ad6f172b..27ef4d224 100644 --- a/.github/workflows/web.yml +++ b/.github/workflows/web.yml @@ -49,15 +49,10 @@ jobs: ${{ runner.os }}-pnpm-store- - name: Build and move files + - working-directory: $GITHUB_WORKSPACE/modules/web run: | - rm -rf $GITHUB_WORKSPACE/app/src/main/assets/web/source - rm -rf $GITHUB_WORKSPACE/app/src/main/assets/web/bookshelf - rm -rf $GITHUB_WORKSPACE/app/src/main/assets/web/vue - mkdir $GITHUB_WORKSPACE/app/src/main/assets/web/vue - cd $GITHUB_WORKSPACE/modules/web pnpm i pnpm build - mv -f ./dist/* $GITHUB_WORKSPACE/app/src/main/assets/web/vue/ version="v$(date -d "8 hour" -u +3.%y.%m%d%H)" echo "APP_VER=$version" >> $GITHUB_ENV diff --git a/app/src/main/java/io/legado/app/ui/login/WebViewLoginFragment.kt b/app/src/main/java/io/legado/app/ui/login/WebViewLoginFragment.kt index 4b8d608dd..429e32193 100644 --- a/app/src/main/java/io/legado/app/ui/login/WebViewLoginFragment.kt +++ b/app/src/main/java/io/legado/app/ui/login/WebViewLoginFragment.kt @@ -17,6 +17,7 @@ import io.legado.app.databinding.FragmentWebViewLoginBinding import io.legado.app.help.http.CookieStore import io.legado.app.lib.theme.accentColor import io.legado.app.utils.gone +import io.legado.app.utils.NetworkUtils import io.legado.app.utils.snackbar import io.legado.app.utils.viewbindingdelegate.viewBinding @@ -47,7 +48,8 @@ class WebViewLoginFragment : BaseFragment(R.layout.fragment_web_view_login) { binding.titleBar.snackbar(R.string.check_host_cookie) viewModel.source?.let { source -> source.loginUrl?.let { - binding.webView.loadUrl(it, source.getHeaderMap(true)) + val absoluteUrl = NetworkUtils.getAbsoluteURL(source.getKey(), it) + binding.webView.loadUrl(absoluteUrl, source.getHeaderMap(true)) } } } diff --git a/modules/web/package.json b/modules/web/package.json index 64664a545..edc9c46db 100644 --- a/modules/web/package.json +++ b/modules/web/package.json @@ -2,13 +2,14 @@ "name": "legado-web", "version": "1.0.0", "private": true, + "type": "module", "engines": { "node": ">=16", "pnpm": ">=8" }, "scripts": { "dev": "vite", - "build": "vite build", + "build": "vite build && node scripts/sync.js", "preview": "vite preview", "lint:fix": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore" }, diff --git a/modules/web/scripts/sync.js b/modules/web/scripts/sync.js new file mode 100644 index 000000000..fb61acf81 --- /dev/null +++ b/modules/web/scripts/sync.js @@ -0,0 +1,28 @@ +import { URL } from "node:url"; +import fs from "node:fs"; + +const LEGADO_ASSETS_WEB_VUE_DIR = new URL("../../../app/src/main/assets/web/vue", import.meta.url) +const VUE_DIST_DIR = new URL("../dist", import.meta.url) + +console.log("> delete", LEGADO_ASSETS_WEB_VUE_DIR.pathname) +// 删除 +fs.rm(LEGADO_ASSETS_WEB_VUE_DIR, { + force: true, + recursive: true +}, (error) => { + if (error) console.log(error); + console.log("> mkdir", LEGADO_ASSETS_WEB_VUE_DIR.pathname); + fs.mkdir(LEGADO_ASSETS_WEB_VUE_DIR, error => { + if (error) return console.error(error) + console.log("> cp dist files") + fs.cp(VUE_DIST_DIR, LEGADO_ASSETS_WEB_VUE_DIR, { + recursive: true + }, (error) => { + if (error) { + console.warn("> cp error, you may copy files yourshelf"); + throw error; + } + console.log("> cp success") + }) + }) +}); \ No newline at end of file diff --git a/modules/web/vite.config.js b/modules/web/vite.config.js index db4479ef7..a25828f84 100644 --- a/modules/web/vite.config.js +++ b/modules/web/vite.config.js @@ -1,4 +1,4 @@ -import { resolve } from "path"; +import { fileURLToPath, URL } from "node:url"; import { defineConfig, splitVendorChunkPlugin } from "vite"; import vue from "@vitejs/plugin-vue"; import Icons from "unplugin-icons/vite"; @@ -47,9 +47,9 @@ export default ({ mode }) => }, resolve: { alias: { - "@": resolve(__dirname, "./src"), - "@api": resolve(__dirname, "./src/api"), - "@utils": resolve(__dirname, "./src/utils/"), + "@": fileURLToPath(new URL("./src", import.meta.url)), + "@api": fileURLToPath(new URL("./src/api", import.meta.url)), + "@utils": fileURLToPath(new URL("./src/utils/", import.meta.url)), }, }, });