import { useState, useCallback } from 'react';

export function useModelActivityLog() {
  const [open, setOpen] = useState(false);
  const [modelClass, setModelClass] = useState<string>('');
  const [modelId, setModelId] = useState<number | string | undefined>();
  const [title, setTitle] = useState<string | undefined>();
  const [action, setAction] = useState<string | undefined>();
  const [actions, setActions] = useState<string[] | undefined>();
  const [settingKey, setSettingKey] = useState<string | undefined>();

  const show = useCallback((opts: { modelClass: string; modelId?: number | string; title?: string; action?: string; actions?: string[]; settingKey?: string }) => {
    setModelClass(opts.modelClass);
    setModelId(opts.modelId);
    setTitle(opts.title);
    setAction(opts.action);
    setActions(opts.actions);
    setSettingKey(opts.settingKey);
    setOpen(true);
  }, []);

  const hide = useCallback(() => setOpen(false), []);

  const clearFilters = useCallback(() => {
    setAction(undefined);
    setActions(undefined);
    setSettingKey(undefined);
  }, []);

  return { open, show, hide, clearFilters, modelClass, modelId, title, action, actions, settingKey, setOpen };
}
