Просмотр исходного кода

Merge remote-tracking branch 'origin/master'

kunfei 3 лет назад
Родитель
Сommit
7ed7de857b

+ 1 - 6
.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
 

+ 3 - 1
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))
                         }
                     }
                 }

+ 2 - 1
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"
   },

+ 28 - 0
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")
+    })
+  })
+});

+ 4 - 4
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)),
       },
     },
   });