synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
69 lines (68 loc) • 1.67 kB
JavaScript
import { useGlobalIsEditingContext as h } from "../../utils/context/GlobalIsEditingContext.js";
import { useState as R, useEffect as f, useCallback as a } from "react";
import { noop as E } from "lodash-es";
import v from "./useSortResourceAccessList.js";
const w = "User or team already has permissions.", P = [];
function M(I = {}) {
const {
initialResourceAccessList: L = P,
onChange: S = E,
onError: m = E
} = I, [o, c] = R(!1), { setIsEditing: u } = h();
f(() => (u(o), () => {
u(!1);
}), [o, u]);
const [n, t] = R(L), [p, y] = R(!1), { sortedResourceAccessList: l, isLoading: A } = v(n);
f(() => {
!o && !A && !p && l != null && (t(l), y(!0));
}, [p, o, A, l]), f(() => {
S(n);
}, [n]);
const D = a(
(e, r) => {
c(!0), e && t((s) => {
if (s.some(
(d) => d.principalId === e
))
m(w);
else {
const d = {
principalId: e,
accessType: r
};
return [...s, d];
}
return s;
});
},
[m]
), g = a(
(e, r) => {
c(!0), t(
(s) => s.map((i) => i.principalId === e ? { ...i, accessType: r } : i)
);
},
[]
), _ = a((e) => {
c(!0), t(
(r) => r.filter(
(s) => s.principalId !== e
)
);
}, []), C = a(() => {
c(!1);
}, []);
return {
resourceAccessList: n,
setResourceAccessList: t,
addResourceAccessItem: D,
updateResourceAccessItem: g,
removeResourceAccessItem: _,
resetDirtyState: C
};
}
export {
w as PRINCIPAL_ALREADY_ADDED_ERROR_MESSAGE,
M as default
};
//# sourceMappingURL=useUpdateAcl.js.map