import { onUnmounted } from 'vue'
// 回调池
const cbPool: (() => void)[] = []

// 注册顶部按钮刷新回调(组件销毁时，自动销毁回调， 这是推荐的方式)
export function registerRefreshCallback(cb: () => void) {
  cbPool.push(cb)
  onUnmounted(() => {
    const targetIndex = cbPool.findIndex(item => item === cb)
    if (targetIndex !== -1) {
      cbPool.splice(targetIndex, 1)
    }
    console.log('cbPool', cbPool.length)
  })
}

// 注册顶部按钮刷新回调(组件销毁时，不会自动销毁回调，慎用)
export function registerRefreshCallbackForever(cb: () => void) {
  cbPool.push(cb)
}

// 调用触发刷新事件回调
export function invokeAllRefreshCallback() {
  cbPool.forEach(cb => cb && cb())
}
