1*43eb30bfS猫头猫import getOrCreateMMKV from '@/utils/getOrCreateMMKV'; 2*43eb30bfS猫头猫import safeParse from '@/utils/safeParse'; 3*43eb30bfS猫头猫 4*43eb30bfS猫头猫// Internal Method 5*43eb30bfS猫头猫const getPluginStore = (pluginName: string) => { 6*43eb30bfS猫头猫 return getOrCreateMMKV(`MediaMeta.${pluginName}`); 7*43eb30bfS猫头猫}; 8*43eb30bfS猫头猫 9*43eb30bfS猫头猫/** 获取meta信息 */ 10*43eb30bfS猫头猫const get = (mediaItem: ICommon.IMediaBase) => { 11*43eb30bfS猫头猫 if (mediaItem.platform && mediaItem.id) { 12*43eb30bfS猫头猫 const meta = getPluginStore(mediaItem.platform).getString( 13*43eb30bfS猫头猫 `${mediaItem.id}`, 14*43eb30bfS猫头猫 ); 15*43eb30bfS猫头猫 if (!meta) { 16*43eb30bfS猫头猫 return null; 17*43eb30bfS猫头猫 } 18*43eb30bfS猫头猫 19*43eb30bfS猫头猫 return safeParse<ICommon.IMediaMeta>(meta); 20*43eb30bfS猫头猫 } 21*43eb30bfS猫头猫 22*43eb30bfS猫头猫 return null; 23*43eb30bfS猫头猫}; 24*43eb30bfS猫头猫 25*43eb30bfS猫头猫/** 设置meta信息 */ 26*43eb30bfS猫头猫const set = (mediaItem: ICommon.IMediaBase, meta: ICommon.IMediaMeta) => { 27*43eb30bfS猫头猫 if (mediaItem.platform && mediaItem.id) { 28*43eb30bfS猫头猫 const store = getPluginStore(mediaItem.platform); 29*43eb30bfS猫头猫 store.set(mediaItem.id, JSON.stringify(meta)); 30*43eb30bfS猫头猫 return true; 31*43eb30bfS猫头猫 } 32*43eb30bfS猫头猫 33*43eb30bfS猫头猫 return false; 34*43eb30bfS猫头猫}; 35*43eb30bfS猫头猫 36*43eb30bfS猫头猫/** 更新meta信息 */ 37*43eb30bfS猫头猫const update = ( 38*43eb30bfS猫头猫 mediaItem: ICommon.IMediaBase, 39*43eb30bfS猫头猫 meta: Partial<ICommon.IMediaMeta>, 40*43eb30bfS猫头猫) => { 41*43eb30bfS猫头猫 if (mediaItem.platform && mediaItem.id) { 42*43eb30bfS猫头猫 const store = getPluginStore(mediaItem.platform); 43*43eb30bfS猫头猫 const originalMeta = get(mediaItem); 44*43eb30bfS猫头猫 45*43eb30bfS猫头猫 store.set( 46*43eb30bfS猫头猫 `${mediaItem.id}`, 47*43eb30bfS猫头猫 JSON.stringify({ 48*43eb30bfS猫头猫 ...(originalMeta || {}), 49*43eb30bfS猫头猫 ...meta, 50*43eb30bfS猫头猫 }), 51*43eb30bfS猫头猫 ); 52*43eb30bfS猫头猫 return true; 53*43eb30bfS猫头猫 } 54*43eb30bfS猫头猫 55*43eb30bfS猫头猫 return false; 56*43eb30bfS猫头猫}; 57*43eb30bfS猫头猫 58*43eb30bfS猫头猫/** 删除meta信息 */ 59*43eb30bfS猫头猫const remove = (mediaItem: ICommon.IMediaBase) => { 60*43eb30bfS猫头猫 if (mediaItem.platform && mediaItem.id) { 61*43eb30bfS猫头猫 const store = getPluginStore(mediaItem.platform); 62*43eb30bfS猫头猫 store.delete(`${mediaItem.id}`); 63*43eb30bfS猫头猫 return true; 64*43eb30bfS猫头猫 } 65*43eb30bfS猫头猫 66*43eb30bfS猫头猫 return false; 67*43eb30bfS猫头猫}; 68*43eb30bfS猫头猫 69*43eb30bfS猫头猫const removeAll = (pluginName: string) => { 70*43eb30bfS猫头猫 const store = getPluginStore(pluginName); 71*43eb30bfS猫头猫 store.clearAll(); 72*43eb30bfS猫头猫}; 73*43eb30bfS猫头猫 74*43eb30bfS猫头猫const MediaExtra = { 75*43eb30bfS猫头猫 get: get, 76*43eb30bfS猫头猫 set: set, 77*43eb30bfS猫头猫 update: update, 78*43eb30bfS猫头猫 remove: remove, 79*43eb30bfS猫头猫 removeAll: removeAll, 80*43eb30bfS猫头猫}; 81*43eb30bfS猫头猫 82*43eb30bfS猫头猫export default MediaExtra; 83