| 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 |
}
|