修复因插入数字类型的ID导致其意外在末尾追加 .0 导致列表数据异常的问题

This commit is contained in:
lyswhut 2023-05-18 15:35:54 +08:00
parent b644a938f3
commit f8c5b94173
7 changed files with 31 additions and 8 deletions

View File

@ -1,3 +1,4 @@
### 修复 ### 修复
- 修复wy歌单分类切换无效的问题 - 修复wy歌单分类切换无效的问题
- 修复因插入数字类型的ID导致其意外在末尾追加 .0 导致列表数据异常的问题同时也可能导致同步数据丢失的问题此问题会影响PC端要完全修复这个问题还需要同时将PC端、同步服务更新到最新版本

View File

@ -48,6 +48,19 @@ export const checkUpdateList = async(changedIds: string[]) => {
// // }, // // },
// } // }
// 兼容v2.3.0之前版本插入数字类型的ID导致其意外在末尾追加 .0 的问题确保所有ID都是字符串类型
const fixListIdType = (lists: LX.List.UserListInfo[] | LX.List.UserListInfoFull[]) => {
for (const list of lists) {
if (typeof list.sourceListId == 'number') {
list.sourceListId = String(list.sourceListId)
if (typeof list.id == 'number') {
list.id = String(list.id)
}
}
}
}
export class ListEvent extends Event { export class ListEvent extends Event {
/** /**
* *
@ -63,6 +76,7 @@ export class ListEvent extends Event {
* @param isRemote * @param isRemote
*/ */
async list_data_overwrite(listData: MakeOptional<LX.List.ListDataFull, 'tempList'>, isRemote: boolean = false) { async list_data_overwrite(listData: MakeOptional<LX.List.ListDataFull, 'tempList'>, isRemote: boolean = false) {
fixListIdType(listData.userList)
const oldIds = userLists.map(l => l.id) const oldIds = userLists.map(l => l.id)
const changedIds = listDataOverwrite(listData) const changedIds = listDataOverwrite(listData)
await updateUserList(userLists) await updateUserList(userLists)
@ -86,6 +100,7 @@ export class ListEvent extends Event {
*/ */
async list_create(position: number, lists: LX.List.UserListInfo[], isRemote: boolean = false) { async list_create(position: number, lists: LX.List.UserListInfo[], isRemote: boolean = false) {
// const changedIds: string[] = [] // const changedIds: string[] = []
fixListIdType(lists)
for (const list of lists) { for (const list of lists) {
userListCreate({ ...list, position }) userListCreate({ ...list, position })
// changedIds.push(list.id) // changedIds.push(list.id)

View File

@ -227,12 +227,19 @@ export const saveViewPrevState = (state: { id: NAV_ID_Type }) => {
} }
const idFixRxp = /\.0$/
/** /**
* *
*/ */
export const getUserLists = async(): Promise<LX.List.UserListInfo[]> => { export const getUserLists = async(): Promise<LX.List.UserListInfo[]> => {
const list = await getData<LX.List.UserListInfo[]>(userListKey) const list = await getData<LX.List.UserListInfo[]>(userListKey) ?? []
return list ?? [] for (const info of list) {
// 兼容v2.3.0之前版本PC端插入数字类型的ID导致其意外在末尾追加 .0 的问题
if (info.sourceListId?.endsWith('.0')) {
info.sourceListId = info.sourceListId.replace(idFixRxp, '')
}
}
return list
} }
/** /**

View File

@ -176,7 +176,7 @@ export default {
filterList(rawData) { filterList(rawData) {
return rawData.map(item => ({ return rawData.map(item => ({
play_count: this.formatPlayCount(item.listen_num), play_count: this.formatPlayCount(item.listen_num),
id: item.list_id, id: String(item.list_id),
author: item.username, author: item.username,
name: item.title, name: item.title,
// time: item.publish_time, // time: item.publish_time,

View File

@ -212,7 +212,7 @@ export default {
// console.log(rawData) // console.log(rawData)
return rawData.map(item => ({ return rawData.map(item => ({
play_count: formatPlayCount(item.playCount), play_count: formatPlayCount(item.playCount),
id: item.playListId, id: String(item.playListId),
author: item.createName, author: item.createName,
name: item.playListName, name: item.playListName,
time: dateFormat(item.createTime, 'Y-M-D'), time: dateFormat(item.createTime, 'Y-M-D'),

View File

@ -132,7 +132,7 @@ export default {
return { return {
list: data.v_playlist.map(item => ({ list: data.v_playlist.map(item => ({
play_count: formatPlayCount(item.access_num), play_count: formatPlayCount(item.access_num),
id: item.tid, id: String(item.tid),
author: item.creator_info.nick, author: item.creator_info.nick,
name: item.title, name: item.title,
time: item.modify_time ? dateFormat(item.modify_time * 1000, 'Y-M-D') : '', time: item.modify_time ? dateFormat(item.modify_time * 1000, 'Y-M-D') : '',
@ -153,7 +153,7 @@ export default {
return { return {
list: content.v_item.map(({ basic }) => ({ list: content.v_item.map(({ basic }) => ({
play_count: formatPlayCount(basic.play_cnt), play_count: formatPlayCount(basic.play_cnt),
id: basic.tid, id: String(basic.tid),
author: basic.creator.nick, author: basic.creator.nick,
name: basic.title, name: basic.title,
// time: basic.publish_time, // time: basic.publish_time,
@ -306,7 +306,7 @@ export default {
list: body.data.list.map(item => { list: body.data.list.map(item => {
return { return {
play_count: formatPlayCount(item.listennum), play_count: formatPlayCount(item.listennum),
id: item.dissid, id: String(item.dissid),
author: item.creator.name, author: item.creator.name,
name: item.dissname, name: item.dissname,
time: dateFormat(item.createtime, 'Y-M-D'), time: dateFormat(item.createtime, 'Y-M-D'),

View File

@ -235,7 +235,7 @@ export default {
// console.log(rawData) // console.log(rawData)
return rawData.map(item => ({ return rawData.map(item => ({
play_count: formatPlayCount(item.playCount), play_count: formatPlayCount(item.playCount),
id: item.id, id: String(item.id),
author: item.creator.nickname, author: item.creator.nickname,
name: item.name, name: item.name,
time: item.createTime ? dateFormat(item.createTime, 'Y-M-D') : '', time: item.createTime ? dateFormat(item.createTime, 'Y-M-D') : '',