synapse-react-client
Version:
[](https://badge.fury.io/js/synapse-react-client) [](https://github.com/prettier/prettie
171 lines (170 loc) • 4.87 kB
JavaScript
import * as p from "../../synapse-client/SynapseClient.js";
import "@sage-bionetworks/synapse-client/generated/models/ErrorResponseCode";
import "@sage-bionetworks/synapse-client/generated/models/TwoFactorAuthErrorResponse";
import "@sage-bionetworks/synapse-client/util/SynapseClientError";
import { Direction as S, SortByType as d } from "@sage-bionetworks/synapse-types";
import "../../utils/functions/EntityTypeUtils.js";
import "../../utils/SynapseConstants.js";
import { isEmpty as g } from "lodash-es";
import "@sage-bionetworks/synapse-client/util/synapseClientFetch";
import "../../utils/PermissionLevelToAccessType.js";
import { useCallback as f } from "react";
import { useSynapseContext as a } from "../../utils/context/SynapseContext.js";
import "use-deep-compare-effect";
import { useQueryClient as m, useInfiniteQuery as Q, useQuery as l, useMutation as b } from "@tanstack/react-query";
import "@tanstack/query-core";
import "lodash-es/isEmpty";
import "lodash-es/isEqual";
import "lodash-es/xorWith";
import "@mui/material";
import "@sage-bionetworks/synapse-client";
import "../../utils/types/IsType.js";
import "react/jsx-runtime";
import "../../utils/hooks/useCookiePreferences.js";
import "../../utils/hooks/useSourceAppConfigs.js";
import "universal-cookie";
import "../../utils/AppUtils/session/ApplicationSessionContext.js";
import "../../utils/context/FullContextProvider.js";
import "../../utils/context/DocumentMetadataContext.js";
import '../../style/components/_spinner.css';/* empty css */
import "react-router";
function Z(e, t) {
const { accessToken: i, keyFactory: s } = a();
return l({
...t,
queryKey: s.getSubscribersQueryKey(
e.objectId,
e.objectType
),
queryFn: () => p.getSubscribers(i, e)
});
}
function K(e, t, i) {
const { accessToken: s, keyFactory: o } = a(), r = async () => {
const n = {
objectType: t,
idList: [e],
sortByType: d.OBJECT_ID,
sortDirection: S.ASC
}, u = await p.postSubscriptionList(
s,
n
);
return g(u.results) ? null : u.results[0];
};
return l({
...i,
queryKey: o.getSubscriptionQueryKey(e, t),
queryFn: r
});
}
function $(e, t, i) {
const { accessToken: s, keyFactory: o } = a(), r = m();
return Q({
...t,
queryKey: i ?? o.getAllSubscriptionsQueryKey(e),
queryFn: async (n) => {
const u = n.pageParam, c = await p.getAllSubscriptions(
s,
10,
u,
e
);
return c.results.forEach((y) => {
r.setQueryData(
o.getSubscriptionQueryKey(
y.objectId,
y.objectType
),
y
);
}), c;
},
initialPageParam: void 0,
getNextPageParam: (n, u) => {
const c = u.flatMap(
(y) => y.results
).length;
if (n.totalNumberOfResults > c)
return c;
}
});
}
function q(e) {
const t = m(), { accessToken: i, keyFactory: s } = a();
return b({
...e,
mutationFn: (o) => p.postSubscription(i, o),
onSuccess: async (o, r, n) => {
await Promise.all([
t.invalidateQueries({
queryKey: s.getAllSubscriptionsQueryKey()
}),
t.invalidateQueries({
queryKey: s.getSubscriptionQueryKey(
r.objectId,
r.objectType
)
}),
t.invalidateQueries({
queryKey: s.getSubscribersQueryKey(
r.objectId,
r.objectType
)
})
]), e?.onSuccess && await e.onSuccess(o, r, n);
}
});
}
function P(e) {
const t = m(), { accessToken: i, keyFactory: s } = a();
return b({
...e,
mutationFn: (o) => p.deleteSubscription(
i,
o.subscriptionId
),
onSuccess: async (o, r, n) => {
await Promise.all([
t.invalidateQueries({
queryKey: s.getAllSubscriptionsQueryKey()
}),
t.invalidateQueries({
queryKey: s.getSubscriptionQueryKey(
r.objectId,
r.objectType
)
}),
t.invalidateQueries({
queryKey: s.getSubscribersQueryKey(
r.objectId,
r.objectType
)
})
]), e?.onSuccess && await e.onSuccess(o, r, n);
}
});
}
const ee = (e, t) => {
const { data: i, isLoading: s } = K(
e,
t
), { mutate: o, isPending: r } = q(), { mutate: n, isPending: u } = P(), c = s || r || u, y = f(() => {
i ? n(i) : o({ objectId: e, objectType: t });
}, [n, e, t, o, i]);
return {
isLoading: c,
subscription: i,
toggleSubscribed: y,
isSubscribed: !!i
};
};
export {
P as useDeleteSubscription,
$ as useGetAllSubscriptions,
Z as useGetSubscribers,
K as useGetSubscription,
q as usePostSubscription,
ee as useSubscription
};
//# sourceMappingURL=useSubscription.js.map