mirror of
https://github.com/ikun0014/lx-music-mobile.git
synced 2025-07-05 06:28:56 +08:00
修复因插入数字类型的ID导致其意外在末尾追加 .0 导致列表数据异常的问题
This commit is contained in:
parent
b644a938f3
commit
f8c5b94173
@ -1,3 +1,4 @@
|
|||||||
### 修复
|
### 修复
|
||||||
|
|
||||||
- 修复wy歌单分类切换无效的问题
|
- 修复wy歌单分类切换无效的问题
|
||||||
|
- 修复因插入数字类型的ID导致其意外在末尾追加 .0 导致列表数据异常的问题,同时也可能导致同步数据丢失的问题(此问题会影响PC端,要完全修复这个问题还需要同时将PC端、同步服务更新到最新版本)
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -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,
|
||||||
|
@ -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'),
|
||||||
|
@ -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'),
|
||||||
|
@ -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') : '',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user