Proyectos de Subversion LeadersLinked - SPA

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
3736 stevensc 1
import React, { createContext, useEffect, useState } from 'react';
2
 
3
import { useAlert, useApi } from '@shared/hooks';
4
 
5
import { getGroup, saveGroupAccessibility } from '@groups/services';
6
 
7
export const EditGroupContext = createContext();
8
 
9
export function EditGroupProvider({ uuid, children }) {
10
  const [group, setGroup] = useState(null);
11
 
12
  const { showError } = useAlert();
13
 
14
  const { data, loading } = useApi(getGroup, {
15
    autoFetch: true,
16
    autoFetchArgs: [uuid],
17
    onError: (error) => {
18
      showError(error.message);
19
    }
20
  });
21
 
22
  const { execute: updateAccessibility } = useApi(saveGroupAccessibility, {
23
    onSuccess: (data) => {
24
      setGroup((prev) => ({ ...prev, accessibility: data }));
25
    },
26
    onError: (error) => {
27
      showError(error.message);
28
    }
29
  });
30
 
31
  useEffect(() => {
32
    if (!group) return;
33
    if (group.privacy === 'Privado' && group.accessibility !== 'aa') {
34
      updateAccessibility(uuid, { accessibility: 'aa' });
35
    }
36
  }, [group?.privacy]);
37
 
38
  useEffect(() => {
39
    if (data) setGroup(data);
40
  }, [data]);
41
 
42
  return (
43
    <EditGroupContext.Provider value={{ group, loading, setGroup }}>
44
      {children}
45
    </EditGroupContext.Provider>
46
  );
47
}