xref: /MusicFree/src/core/mediaExtra.ts (revision b85f12f7175f807dab9b86b7f85226df42d6d897)
143eb30bfS猫头猫import getOrCreateMMKV from '@/utils/getOrCreateMMKV';
243eb30bfS猫头猫import safeParse from '@/utils/safeParse';
343eb30bfS猫头猫
443eb30bfS猫头猫// Internal Method
543eb30bfS猫头猫const getPluginStore = (pluginName: string) => {
6*b85f12f7S猫头猫    return getOrCreateMMKV(`MediaExtra.${pluginName}`);
743eb30bfS猫头猫};
843eb30bfS猫头猫
943eb30bfS猫头猫/** 获取meta信息 */
1043eb30bfS猫头猫const get = (mediaItem: ICommon.IMediaBase) => {
1143eb30bfS猫头猫    if (mediaItem.platform && mediaItem.id) {
1243eb30bfS猫头猫        const meta = getPluginStore(mediaItem.platform).getString(
1343eb30bfS猫头猫            `${mediaItem.id}`,
1443eb30bfS猫头猫        );
1543eb30bfS猫头猫        if (!meta) {
1643eb30bfS猫头猫            return null;
1743eb30bfS猫头猫        }
1843eb30bfS猫头猫
1943eb30bfS猫头猫        return safeParse<ICommon.IMediaMeta>(meta);
2043eb30bfS猫头猫    }
2143eb30bfS猫头猫
2243eb30bfS猫头猫    return null;
2343eb30bfS猫头猫};
2443eb30bfS猫头猫
2543eb30bfS猫头猫/** 设置meta信息 */
2643eb30bfS猫头猫const set = (mediaItem: ICommon.IMediaBase, meta: ICommon.IMediaMeta) => {
2743eb30bfS猫头猫    if (mediaItem.platform && mediaItem.id) {
2843eb30bfS猫头猫        const store = getPluginStore(mediaItem.platform);
2943eb30bfS猫头猫        store.set(mediaItem.id, JSON.stringify(meta));
3043eb30bfS猫头猫        return true;
3143eb30bfS猫头猫    }
3243eb30bfS猫头猫
3343eb30bfS猫头猫    return false;
3443eb30bfS猫头猫};
3543eb30bfS猫头猫
3643eb30bfS猫头猫/** 更新meta信息 */
3743eb30bfS猫头猫const update = (
3843eb30bfS猫头猫    mediaItem: ICommon.IMediaBase,
3943eb30bfS猫头猫    meta: Partial<ICommon.IMediaMeta>,
4043eb30bfS猫头猫) => {
4143eb30bfS猫头猫    if (mediaItem.platform && mediaItem.id) {
4243eb30bfS猫头猫        const store = getPluginStore(mediaItem.platform);
4343eb30bfS猫头猫        const originalMeta = get(mediaItem);
4443eb30bfS猫头猫
4543eb30bfS猫头猫        store.set(
4643eb30bfS猫头猫            `${mediaItem.id}`,
4743eb30bfS猫头猫            JSON.stringify({
4843eb30bfS猫头猫                ...(originalMeta || {}),
4943eb30bfS猫头猫                ...meta,
5043eb30bfS猫头猫            }),
5143eb30bfS猫头猫        );
5243eb30bfS猫头猫        return true;
5343eb30bfS猫头猫    }
5443eb30bfS猫头猫
5543eb30bfS猫头猫    return false;
5643eb30bfS猫头猫};
5743eb30bfS猫头猫
5843eb30bfS猫头猫/** 删除meta信息 */
5943eb30bfS猫头猫const remove = (mediaItem: ICommon.IMediaBase) => {
6043eb30bfS猫头猫    if (mediaItem.platform && mediaItem.id) {
6143eb30bfS猫头猫        const store = getPluginStore(mediaItem.platform);
6243eb30bfS猫头猫        store.delete(`${mediaItem.id}`);
6343eb30bfS猫头猫        return true;
6443eb30bfS猫头猫    }
6543eb30bfS猫头猫
6643eb30bfS猫头猫    return false;
6743eb30bfS猫头猫};
6843eb30bfS猫头猫
6943eb30bfS猫头猫const removeAll = (pluginName: string) => {
7043eb30bfS猫头猫    const store = getPluginStore(pluginName);
7143eb30bfS猫头猫    store.clearAll();
7243eb30bfS猫头猫};
7343eb30bfS猫头猫
7443eb30bfS猫头猫const MediaExtra = {
7543eb30bfS猫头猫    get: get,
7643eb30bfS猫头猫    set: set,
7743eb30bfS猫头猫    update: update,
7843eb30bfS猫头猫    remove: remove,
7943eb30bfS猫头猫    removeAll: removeAll,
8043eb30bfS猫头猫};
8143eb30bfS猫头猫
8243eb30bfS猫头猫export default MediaExtra;
83