xref: /MusicFree/src/utils/mediaItem.ts (revision 8b88e96101cccfd13f432d292812cd4dcf044989)
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猫头猫
9242960d3S猫头猫/** 比较两歌media是否相同 */
10242960d3S猫头猫export function isSameMediaItem(
11242960d3S猫头猫  a: ICommon.IMediaBase | null | undefined,
12242960d3S猫头猫  b: ICommon.IMediaBase | null | undefined,
13242960d3S猫头猫) {
14242960d3S猫头猫  return a && b && a.id === b.id && a.platform === b.platform;
15242960d3S猫头猫}
16242960d3S猫头猫
17242960d3S猫头猫/** 获取复位的mediaItem */
18*8b88e961S猫头猫export function resetMediaItem<T extends ICommon.IMediaBase>(
19*8b88e961S猫头猫  mediaItem: T,
20242960d3S猫头猫  platform?: string,
21*8b88e961S猫头猫  newObj?: boolean,
22*8b88e961S猫头猫): T {
23*8b88e961S猫头猫  if (!newObj) {
24*8b88e961S猫头猫
25242960d3S猫头猫    mediaItem.platform = platform ?? mediaItem.platform;
26242960d3S猫头猫    mediaItem[internalSerialzeKey] = undefined;
27242960d3S猫头猫    return mediaItem;
28242960d3S猫头猫  } else {
29242960d3S猫头猫    return produce(mediaItem, _ => {
30242960d3S猫头猫      _.platform = platform ?? mediaItem.platform;
31242960d3S猫头猫      _[internalSerialzeKey] = undefined;
32242960d3S猫头猫    });
33242960d3S猫头猫  }
34242960d3S猫头猫}
35*8b88e961S猫头猫
36*8b88e961S猫头猫
37*8b88e961S猫头猫export function mergeProps (mediaItem: ICommon.IMediaBase, props: Record<string, any> | undefined) {
38*8b88e961S猫头猫  return props ? {
39*8b88e961S猫头猫    ...mediaItem,
40*8b88e961S猫头猫    ...props
41*8b88e961S猫头猫  } : mediaItem;
42*8b88e961S猫头猫}