mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
fix(web): 修复CI;修复进度未同步的问题;优化数据加载
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
},
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "run-p type-check \"build-only {@}\" --",
|
||||
"build": "run-p type-check \"build-only {@}\" -- && node ./scripts/sync.js",
|
||||
"preview": "vite preview",
|
||||
"build-only": "vite build",
|
||||
"type-check": "vue-tsc --build --force",
|
||||
|
||||
@@ -54,9 +54,11 @@ const getReadConfig = async (http_url = legado_http_entry_point) => {
|
||||
const saveReadConfig = (config: webReadConfig) =>
|
||||
ajax.post<LeagdoApiResponse<string>>('/saveReadConfig', config)
|
||||
|
||||
/** @deprecated: 使用`API.saveBookProgressWithBeacon`以确保在页面或者直接关闭的情况下保存进度 */
|
||||
const saveBookProgress = (bookProgress: BookProgress) =>
|
||||
ajax.post('/saveBookProgress', bookProgress)
|
||||
|
||||
/**主要在直接关闭浏览器情况下可靠发送书籍进度 */
|
||||
const saveBookProgressWithBeacon = (bookProgress: BookProgress) => {
|
||||
if (!bookProgress) return
|
||||
// 常规请求可能会被取消 使用Fetch keep-alive 或者 navigator.sendBeacon
|
||||
|
||||
@@ -19,18 +19,4 @@ const router = createRouter({
|
||||
routes: bookRoutes,
|
||||
})
|
||||
|
||||
import { createApp } from 'vue'
|
||||
import App from '@/App.vue'
|
||||
import store, { useBookStore } from '@/store'
|
||||
|
||||
// init pinia instance
|
||||
createApp(App).use(store)
|
||||
router.beforeEach((to, from, next) => {
|
||||
// 自动加载阅读配置
|
||||
useBookStore()
|
||||
.loadWebConfig()
|
||||
.then(() => next())
|
||||
.catch(() => next())
|
||||
})
|
||||
|
||||
export default router
|
||||
|
||||
@@ -12,18 +12,4 @@ router.afterEach(to => {
|
||||
if (to.name == 'shelf') document.title = '书架'
|
||||
})
|
||||
|
||||
import { createApp } from 'vue'
|
||||
import App from '@/App.vue'
|
||||
import store, { useBookStore } from '@/store'
|
||||
|
||||
// init pinia instance
|
||||
createApp(App).use(store)
|
||||
router.beforeEach((to, from, next) => {
|
||||
// 自动加载阅读配置
|
||||
useBookStore()
|
||||
.loadWebConfig()
|
||||
.then(() => next())
|
||||
.catch(() => next())
|
||||
})
|
||||
|
||||
export default router
|
||||
|
||||
@@ -219,7 +219,9 @@ export const useBookStore = defineStore('book', {
|
||||
this.bookProgress,
|
||||
)
|
||||
}
|
||||
return API.saveBookProgress(this.bookProgress)
|
||||
// 直接关闭浏览器时 http请求可能被取消
|
||||
// return API.saveBookProgress(this.bookProgress)
|
||||
return API.saveBookProgressWithBeacon(this.bookProgress)
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
@@ -155,6 +155,7 @@ watch(
|
||||
sessionStorage.setItem('chapterIndex', book.chapterIndex.toString())
|
||||
sessionStorage.setItem('chapterPos', book.chapterPos.toString())
|
||||
},
|
||||
{ deep: 1 },
|
||||
)
|
||||
|
||||
// 无限滚动
|
||||
@@ -371,7 +372,7 @@ const saveReadingBookProgressToBrowser = (index: number, pos: number) => {
|
||||
const onVisibilityChange = () => {
|
||||
const _bookProgress = bookProgress.value
|
||||
if (document.visibilityState == 'hidden' && _bookProgress) {
|
||||
API.saveBookProgressWithBeacon(_bookProgress)
|
||||
store.saveBookProgress()
|
||||
}
|
||||
}
|
||||
// 定时同步
|
||||
@@ -472,7 +473,8 @@ const ignoreKeyPress = (event: {
|
||||
}
|
||||
}
|
||||
|
||||
onMounted(() => {
|
||||
onMounted(async () => {
|
||||
await store.loadWebConfig()
|
||||
//获取书籍数据
|
||||
const bookUrl = sessionStorage.getItem('bookUrl')
|
||||
const name = sessionStorage.getItem('bookName')
|
||||
|
||||
@@ -288,7 +288,7 @@ const toDetail = (
|
||||
|
||||
const loadShelf = async () => {
|
||||
try {
|
||||
//await store.loadWebConfig() called in router.beforeEach
|
||||
await store.loadWebConfig()
|
||||
await store.saveBookProgress()
|
||||
//确保各种网络情况下同步请求先完成
|
||||
await fetchBookShelfData()
|
||||
|
||||
Reference in New Issue
Block a user