1242960d3S猫头猫import {internalSerialzeKey, internalSymbolKey} from '@/constants/commonConst'; 2242960d3S猫头猫import produce from 'immer'; 3242960d3S猫头猫 4242960d3S猫头猫/** 获取mediakey */ 5242960d3S猫头猫export function getMediaKey(mediaItem: ICommon.IMediaBase) { 6242960d3S猫头猫 return `${mediaItem.platform}@${mediaItem.id}`; 7242960d3S猫头猫} 8242960d3S猫头猫 9*5276aef9S猫头猫/** 解析mediakey */ 10*5276aef9S猫头猫export function parseMediaKey(key: string): ICommon.IMediaBase { 11*5276aef9S猫头猫 try { 12*5276aef9S猫头猫 const str = JSON.parse(key.trim()); 13*5276aef9S猫头猫 let platform, id; 14*5276aef9S猫头猫 if (typeof str === 'string') { 15*5276aef9S猫头猫 [platform, id] = str.split('@'); 16*5276aef9S猫头猫 } else { 17*5276aef9S猫头猫 platform = str?.platform; 18*5276aef9S猫头猫 id = str?.id; 19*5276aef9S猫头猫 } 20*5276aef9S猫头猫 if(!platform || !id) { 21*5276aef9S猫头猫 throw new Error('mediakey不完整') 22*5276aef9S猫头猫 } 23*5276aef9S猫头猫 return { 24*5276aef9S猫头猫 platform, 25*5276aef9S猫头猫 id, 26*5276aef9S猫头猫 }; 27*5276aef9S猫头猫 } catch (e: any) { 28*5276aef9S猫头猫 throw e; 29*5276aef9S猫头猫 } 30*5276aef9S猫头猫} 31*5276aef9S猫头猫 32242960d3S猫头猫/** 比较两歌media是否相同 */ 33242960d3S猫头猫export function isSameMediaItem( 34242960d3S猫头猫 a: ICommon.IMediaBase | null | undefined, 35242960d3S猫头猫 b: ICommon.IMediaBase | null | undefined, 36242960d3S猫头猫) { 37242960d3S猫头猫 return a && b && a.id === b.id && a.platform === b.platform; 38242960d3S猫头猫} 39242960d3S猫头猫 40242960d3S猫头猫/** 获取复位的mediaItem */ 418b88e961S猫头猫export function resetMediaItem<T extends ICommon.IMediaBase>( 428b88e961S猫头猫 mediaItem: T, 43242960d3S猫头猫 platform?: string, 448b88e961S猫头猫 newObj?: boolean, 458b88e961S猫头猫): T { 468b88e961S猫头猫 if (!newObj) { 47242960d3S猫头猫 mediaItem.platform = platform ?? mediaItem.platform; 48242960d3S猫头猫 mediaItem[internalSerialzeKey] = undefined; 49242960d3S猫头猫 return mediaItem; 50242960d3S猫头猫 } else { 51242960d3S猫头猫 return produce(mediaItem, _ => { 52242960d3S猫头猫 _.platform = platform ?? mediaItem.platform; 53242960d3S猫头猫 _[internalSerialzeKey] = undefined; 54242960d3S猫头猫 }); 55242960d3S猫头猫 } 56242960d3S猫头猫} 578b88e961S猫头猫 58*5276aef9S猫头猫export function mergeProps( 59*5276aef9S猫头猫 mediaItem: ICommon.IMediaBase, 60*5276aef9S猫头猫 props: Record<string, any> | undefined, 61*5276aef9S猫头猫) { 62*5276aef9S猫头猫 return props 63*5276aef9S猫头猫 ? { 648b88e961S猫头猫 ...mediaItem, 65*5276aef9S猫头猫 ...props, 66*5276aef9S猫头猫 } 67*5276aef9S猫头猫 : mediaItem; 688b88e961S猫头猫} 69