import { useEffect } from 'react';
import debug from '@/debug';

export function useEvents(events?: any, instance?: any) {
  useEffect(() => {
    if (instance && typeof events?.created === 'function') {
      events?.created(instance);
    }

    if (events && instance) {
      debug('events')('注册事件，实例: %O 事件：%O', instance, events);
      // 注册事件
      Object.keys(events).map(key => {
        if (typeof instance?.on === 'function' && key !== 'created') {
          instance?.on(key, events[key]);
        }
      });
    }

    return () => {
      // 取消事件注册
      if (events && instance) {
        debug('events')('移除事件注册，实例: %O 事件：%O', instance, events);
        Object.keys(events).map(key => {
          if (typeof instance?.off === 'function' && key !== 'created') {
            instance?.off(key, events[key]);
          }
        });
      }
    };
  }, [instance, JSON.stringify(events)]);
}
