// stores/refreshStore.ts
import { defineStore } from 'pinia';

// 定义回调函数类型
type RefreshCallback = () => void;

export const useRefreshStore = defineStore('refreshStore', {
  state: () => ({
    // 存储页面标识与对应刷新回调的映射
    callbacks: new Map<string, RefreshCallback>(),
  }),
  actions: {
    /**
     * 注册页面刷新回调
     * @param pageKey 页面唯一标识
     * @param callback 刷新时执行的回调函数
     */
    registerCallback(pageKey: string, callback: RefreshCallback): void {
      this.callbacks.set(pageKey, callback);
    },

    /**
     * 移除页面刷新回调
     * @param pageKey 页面唯一标识
     */
    removeCallback(pageKey: string): void {
      this.callbacks.delete(pageKey);
    },

    /**
     * 触发指定页面的刷新回调
     * @param pageKey 页面唯一标识
     */
    triggerRefresh(pageKey: string): void {
      const callback = this.callbacks.get(pageKey);
      if (callback) {
        callback();
      }
    },
  },
});
