Proyectos de Subversion LeadersLinked - SPA

Rev

Autoría | Ultima modificación | Ver Log |

import React, { createContext, useEffect, useState } from 'react';

import { useAlert, useApi } from '@shared/hooks';

import { getGroup, saveGroupAccessibility } from '@groups/services';

export const EditGroupContext = createContext();

export function EditGroupProvider({ uuid, children }) {
  const [group, setGroup] = useState(null);

  const { showError } = useAlert();

  const { data, loading } = useApi(getGroup, {
    autoFetch: true,
    autoFetchArgs: [uuid],
    onError: (error) => {
      showError(error.message);
    }
  });

  const { execute: updateAccessibility } = useApi(saveGroupAccessibility, {
    onSuccess: (data) => {
      setGroup((prev) => ({ ...prev, accessibility: data }));
    },
    onError: (error) => {
      showError(error.message);
    }
  });

  useEffect(() => {
    if (!group) return;
    if (group.privacy === 'Privado' && group.accessibility !== 'aa') {
      updateAccessibility(uuid, { accessibility: 'aa' });
    }
  }, [group?.privacy]);

  useEffect(() => {
    if (data) setGroup(data);
  }, [data]);

  return (
    <EditGroupContext.Provider value={{ group, loading, setGroup }}>
      {children}
    </EditGroupContext.Provider>
  );
}