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