export default function useAccessChecks({
  selectedTaskId,
  setAccessStatus,
  setInviteAccessStatus,
  setInviteAccessCheckedAt,
  setTaskNotice,
  showNotification
}) {
  const checkAccess = async (source = "editor", silent = false) => {
    if (!window.api || selectedTaskId == null) {
      if (!silent) showNotification("Сначала выберите задачу.", "error");
      return;
    }
    if (!silent) showNotification("Проверяем доступ к группам...", "info");
    try {
      const result = await window.api.checkAccessByTask(selectedTaskId);
      if (!result.ok) {
        if (!silent) showNotification(result.error || "Не удалось проверить доступ", "error");
        return;
      }
      setAccessStatus(result.result || []);
      if (!silent) setTaskNotice({ text: "Проверка доступа завершена.", tone: "success", source });
    } catch (error) {
      if (!silent) showNotification(error.message || String(error), "error");
    }
  };

  const checkInviteAccess = async (source = "editor", silent = false) => {
    if (!window.api || selectedTaskId == null) {
      if (!silent) showNotification("Сначала выберите задачу.", "error");
      return;
    }
    setInviteAccessStatus([]);
    setInviteAccessCheckedAt("");
    if (!silent) showNotification("Проверяем права инвайта...", "info");
    try {
      const result = await window.api.checkInviteAccessByTask(selectedTaskId);
      if (!result.ok) {
        if (!silent) showNotification(result.error || "Не удалось проверить права", "error");
        return;
      }
      setInviteAccessStatus(result.result || []);
      setInviteAccessCheckedAt(new Date().toISOString());
      if (!silent) setTaskNotice({ text: "Проверка прав инвайта завершена.", tone: "success", source });
    } catch (error) {
      if (!silent) showNotification(error.message || String(error), "error");
    }
  };

  return { checkAccess, checkInviteAccess };
}
