@knocklabs/react-core 0.6.14-canary.2 → 0.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +521 -0
- package/dist/cjs/index.js +2 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/modules/core/constants.js +2 -0
- package/dist/cjs/modules/core/constants.js.map +1 -0
- package/dist/cjs/modules/core/context/KnockProvider.js +2 -0
- package/dist/cjs/modules/core/context/KnockProvider.js.map +1 -0
- package/dist/cjs/modules/core/hooks/useAuthenticatedKnockClient.js +2 -0
- package/dist/cjs/modules/core/hooks/useAuthenticatedKnockClient.js.map +1 -0
- package/dist/cjs/modules/core/hooks/useStableOptions.js +2 -0
- package/dist/cjs/modules/core/hooks/useStableOptions.js.map +1 -0
- package/dist/cjs/modules/core/utils.js +2 -0
- package/dist/cjs/modules/core/utils.js.map +1 -0
- package/dist/cjs/modules/feed/context/KnockFeedProvider.js +2 -0
- package/dist/cjs/modules/feed/context/KnockFeedProvider.js.map +1 -0
- package/dist/cjs/modules/feed/hooks/useFeedSettings.js +2 -0
- package/dist/cjs/modules/feed/hooks/useFeedSettings.js.map +1 -0
- package/dist/cjs/modules/feed/hooks/useNotificationStore.js +2 -0
- package/dist/cjs/modules/feed/hooks/useNotificationStore.js.map +1 -0
- package/dist/cjs/modules/feed/hooks/useNotifications.js +2 -0
- package/dist/cjs/modules/feed/hooks/useNotifications.js.map +1 -0
- package/dist/cjs/modules/guide/context/KnockGuideProvider.js +2 -0
- package/dist/cjs/modules/guide/context/KnockGuideProvider.js.map +1 -0
- package/dist/cjs/modules/guide/hooks/useGuide.js +2 -0
- package/dist/cjs/modules/guide/hooks/useGuide.js.map +1 -0
- package/dist/cjs/modules/guide/hooks/useGuideContext.js +2 -0
- package/dist/cjs/modules/guide/hooks/useGuideContext.js.map +1 -0
- package/dist/cjs/modules/i18n/context/KnockI18nProvider.js +2 -0
- package/dist/cjs/modules/i18n/context/KnockI18nProvider.js.map +1 -0
- package/dist/cjs/modules/i18n/hooks/useTranslations.js +2 -0
- package/dist/cjs/modules/i18n/hooks/useTranslations.js.map +1 -0
- package/dist/cjs/modules/i18n/languages/de.js +2 -0
- package/dist/cjs/modules/i18n/languages/de.js.map +1 -0
- package/dist/cjs/modules/i18n/languages/en.js +2 -0
- package/dist/cjs/modules/i18n/languages/en.js.map +1 -0
- package/dist/cjs/modules/i18n/languages/index.js +2 -0
- package/dist/cjs/modules/i18n/languages/index.js.map +1 -0
- package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js +2 -0
- package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js.map +1 -0
- package/dist/cjs/modules/ms-teams/hooks/useConnectedMsTeamsChannels.js +2 -0
- package/dist/cjs/modules/ms-teams/hooks/useConnectedMsTeamsChannels.js.map +1 -0
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js +2 -0
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js.map +1 -0
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsChannels.js +2 -0
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsChannels.js.map +1 -0
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js +2 -0
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js.map +1 -0
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js +2 -0
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js.map +1 -0
- package/dist/cjs/modules/slack/context/KnockSlackProvider.js +2 -0
- package/dist/cjs/modules/slack/context/KnockSlackProvider.js.map +1 -0
- package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js +2 -0
- package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js.map +1 -0
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js +2 -0
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js.map +1 -0
- package/dist/cjs/modules/slack/hooks/useSlackChannels.js +2 -0
- package/dist/cjs/modules/slack/hooks/useSlackChannels.js.map +1 -0
- package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js +2 -0
- package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js.map +1 -0
- package/dist/esm/index.mjs +66 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/modules/core/constants.mjs +5 -0
- package/dist/esm/modules/core/constants.mjs.map +1 -0
- package/dist/esm/modules/core/context/KnockProvider.mjs +35 -0
- package/dist/esm/modules/core/context/KnockProvider.mjs.map +1 -0
- package/dist/esm/modules/core/hooks/useAuthenticatedKnockClient.mjs +29 -0
- package/dist/esm/modules/core/hooks/useAuthenticatedKnockClient.mjs.map +1 -0
- package/dist/esm/modules/core/hooks/useStableOptions.mjs +13 -0
- package/dist/esm/modules/core/hooks/useStableOptions.mjs.map +1 -0
- package/dist/esm/modules/core/utils.mjs +49 -0
- package/dist/esm/modules/core/utils.mjs.map +1 -0
- package/dist/esm/modules/feed/context/KnockFeedProvider.mjs +37 -0
- package/dist/esm/modules/feed/context/KnockFeedProvider.mjs.map +1 -0
- package/dist/esm/modules/feed/hooks/useFeedSettings.mjs +23 -0
- package/dist/esm/modules/feed/hooks/useFeedSettings.mjs.map +1 -0
- package/dist/esm/modules/feed/hooks/useNotificationStore.mjs +12 -0
- package/dist/esm/modules/feed/hooks/useNotificationStore.mjs.map +1 -0
- package/dist/esm/modules/feed/hooks/useNotifications.mjs +34 -0
- package/dist/esm/modules/feed/hooks/useNotifications.mjs.map +1 -0
- package/dist/esm/modules/guide/context/KnockGuideProvider.mjs +33 -0
- package/dist/esm/modules/guide/context/KnockGuideProvider.mjs.map +1 -0
- package/dist/esm/modules/guide/hooks/useGuide.mjs +21 -0
- package/dist/esm/modules/guide/hooks/useGuide.mjs.map +1 -0
- package/dist/esm/modules/guide/hooks/useGuideContext.mjs +12 -0
- package/dist/esm/modules/guide/hooks/useGuideContext.mjs.map +1 -0
- package/dist/esm/modules/i18n/context/KnockI18nProvider.mjs +11 -0
- package/dist/esm/modules/i18n/context/KnockI18nProvider.mjs.map +1 -0
- package/dist/esm/modules/i18n/hooks/useTranslations.mjs +17 -0
- package/dist/esm/modules/i18n/hooks/useTranslations.mjs.map +1 -0
- package/dist/esm/modules/i18n/languages/de.mjs +39 -0
- package/dist/esm/modules/i18n/languages/de.mjs.map +1 -0
- package/dist/esm/modules/i18n/languages/en.mjs +51 -0
- package/dist/esm/modules/i18n/languages/en.mjs.map +1 -0
- package/dist/esm/modules/i18n/languages/index.mjs +10 -0
- package/dist/esm/modules/i18n/languages/index.mjs.map +1 -0
- package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs +48 -0
- package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs.map +1 -0
- package/dist/esm/modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs +78 -0
- package/dist/esm/modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs.map +1 -0
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs +53 -0
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs.map +1 -0
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsChannels.mjs +41 -0
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsChannels.mjs.map +1 -0
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs +38 -0
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs.map +1 -0
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs +51 -0
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs.map +1 -0
- package/dist/esm/modules/slack/context/KnockSlackProvider.mjs +49 -0
- package/dist/esm/modules/slack/context/KnockSlackProvider.mjs.map +1 -0
- package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs +78 -0
- package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs.map +1 -0
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs +68 -0
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs.map +1 -0
- package/dist/esm/modules/slack/hooks/useSlackChannels.mjs +52 -0
- package/dist/esm/modules/slack/hooks/useSlackChannels.mjs.map +1 -0
- package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs +47 -0
- package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs.map +1 -0
- package/dist/types/index.d.ts +8 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/interfaces.d.ts +5 -0
- package/dist/types/interfaces.d.ts.map +1 -0
- package/dist/types/modules/core/constants.d.ts +8 -0
- package/dist/types/modules/core/constants.d.ts.map +1 -0
- package/dist/types/modules/core/context/KnockProvider.d.ts +20 -0
- package/dist/types/modules/core/context/KnockProvider.d.ts.map +1 -0
- package/dist/types/modules/core/context/index.d.ts +2 -0
- package/dist/types/modules/core/context/index.d.ts.map +1 -0
- package/dist/types/modules/core/hooks/index.d.ts +3 -0
- package/dist/types/modules/core/hooks/index.d.ts.map +1 -0
- package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts +5 -0
- package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts.map +1 -0
- package/dist/types/modules/core/hooks/useStableOptions.d.ts +2 -0
- package/dist/types/modules/core/hooks/useStableOptions.d.ts.map +1 -0
- package/dist/types/modules/core/index.d.ts +5 -0
- package/dist/types/modules/core/index.d.ts.map +1 -0
- package/dist/types/modules/core/utils.d.ts +24 -0
- package/dist/types/modules/core/utils.d.ts.map +1 -0
- package/dist/types/modules/feed/context/KnockFeedProvider.d.ts +19 -0
- package/dist/types/modules/feed/context/KnockFeedProvider.d.ts.map +1 -0
- package/dist/types/modules/feed/context/index.d.ts +2 -0
- package/dist/types/modules/feed/context/index.d.ts.map +1 -0
- package/dist/types/modules/feed/hooks/index.d.ts +4 -0
- package/dist/types/modules/feed/hooks/index.d.ts.map +1 -0
- package/dist/types/modules/feed/hooks/useFeedSettings.d.ts +12 -0
- package/dist/types/modules/feed/hooks/useFeedSettings.d.ts.map +1 -0
- package/dist/types/modules/feed/hooks/useNotificationStore.d.ts +34 -0
- package/dist/types/modules/feed/hooks/useNotificationStore.d.ts.map +1 -0
- package/dist/types/modules/feed/hooks/useNotifications.d.ts +4 -0
- package/dist/types/modules/feed/hooks/useNotifications.d.ts.map +1 -0
- package/dist/types/modules/feed/index.d.ts +3 -0
- package/dist/types/modules/feed/index.d.ts.map +1 -0
- package/dist/types/modules/guide/context/KnockGuideProvider.d.ts +19 -0
- package/dist/types/modules/guide/context/KnockGuideProvider.d.ts.map +1 -0
- package/dist/types/modules/guide/context/index.d.ts +2 -0
- package/dist/types/modules/guide/context/index.d.ts.map +1 -0
- package/dist/types/modules/guide/hooks/index.d.ts +2 -0
- package/dist/types/modules/guide/hooks/index.d.ts.map +1 -0
- package/dist/types/modules/guide/hooks/useGuide.d.ts +9 -0
- package/dist/types/modules/guide/hooks/useGuide.d.ts.map +1 -0
- package/dist/types/modules/guide/hooks/useGuideContext.d.ts +7 -0
- package/dist/types/modules/guide/hooks/useGuideContext.d.ts.map +1 -0
- package/dist/types/modules/guide/index.d.ts +3 -0
- package/dist/types/modules/guide/index.d.ts.map +1 -0
- package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts +8 -0
- package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts.map +1 -0
- package/dist/types/modules/i18n/context/index.d.ts +2 -0
- package/dist/types/modules/i18n/context/index.d.ts.map +1 -0
- package/dist/types/modules/i18n/hooks/index.d.ts +2 -0
- package/dist/types/modules/i18n/hooks/index.d.ts.map +1 -0
- package/dist/types/modules/i18n/hooks/useTranslations.d.ts +5 -0
- package/dist/types/modules/i18n/hooks/useTranslations.d.ts.map +1 -0
- package/dist/types/modules/i18n/index.d.ts +4 -0
- package/dist/types/modules/i18n/index.d.ts.map +1 -0
- package/dist/types/modules/i18n/languages/de.d.ts +4 -0
- package/dist/types/modules/i18n/languages/de.d.ts.map +1 -0
- package/dist/types/modules/i18n/languages/en.d.ts +4 -0
- package/dist/types/modules/i18n/languages/en.d.ts.map +1 -0
- package/dist/types/modules/i18n/languages/index.d.ts +54 -0
- package/dist/types/modules/i18n/languages/index.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts +20 -0
- package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/context/index.d.ts +2 -0
- package/dist/types/modules/ms-teams/context/index.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/hooks/index.d.ts +6 -0
- package/dist/types/modules/ms-teams/hooks/index.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/hooks/useConnectedMsTeamsChannels.d.ts +15 -0
- package/dist/types/modules/ms-teams/hooks/useConnectedMsTeamsChannels.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts +7 -0
- package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/hooks/useMsTeamsChannels.d.ts +14 -0
- package/dist/types/modules/ms-teams/hooks/useMsTeamsChannels.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts +13 -0
- package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts +13 -0
- package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/index.d.ts +4 -0
- package/dist/types/modules/ms-teams/index.d.ts.map +1 -0
- package/dist/types/modules/ms-teams/interfaces.d.ts +11 -0
- package/dist/types/modules/ms-teams/interfaces.d.ts.map +1 -0
- package/dist/types/modules/slack/context/KnockSlackProvider.d.ts +30 -0
- package/dist/types/modules/slack/context/KnockSlackProvider.d.ts.map +1 -0
- package/dist/types/modules/slack/context/index.d.ts +2 -0
- package/dist/types/modules/slack/context/index.d.ts.map +1 -0
- package/dist/types/modules/slack/hooks/index.d.ts +5 -0
- package/dist/types/modules/slack/hooks/index.d.ts.map +1 -0
- package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts +15 -0
- package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts.map +1 -0
- package/dist/types/modules/slack/hooks/useSlackAuth.d.ts +11 -0
- package/dist/types/modules/slack/hooks/useSlackAuth.d.ts.map +1 -0
- package/dist/types/modules/slack/hooks/useSlackChannels.d.ts +13 -0
- package/dist/types/modules/slack/hooks/useSlackChannels.d.ts.map +1 -0
- package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts +13 -0
- package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts.map +1 -0
- package/dist/types/modules/slack/index.d.ts +4 -0
- package/dist/types/modules/slack/index.d.ts.map +1 -0
- package/dist/types/modules/slack/interfaces.d.ts +10 -0
- package/dist/types/modules/slack/interfaces.d.ts.map +1 -0
- package/package.json +3 -3
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import f from "swr";
|
|
2
|
+
import { useKnockClient as r } from "../../core/context/KnockProvider.mjs";
|
|
3
|
+
import "@knocklabs/client";
|
|
4
|
+
import "react";
|
|
5
|
+
import "fast-deep-equal";
|
|
6
|
+
import "date-fns";
|
|
7
|
+
import { useKnockMsTeamsClient as h } from "../context/KnockMsTeamsProvider.mjs";
|
|
8
|
+
const k = "MS_TEAMS_CHANNELS";
|
|
9
|
+
function S({
|
|
10
|
+
teamId: e,
|
|
11
|
+
queryOptions: n
|
|
12
|
+
}) {
|
|
13
|
+
const s = r(), {
|
|
14
|
+
knockMsTeamsChannelId: a,
|
|
15
|
+
tenantId: l
|
|
16
|
+
} = h(), c = () => s.msTeams.getChannels({
|
|
17
|
+
knockChannelId: a,
|
|
18
|
+
tenant: l,
|
|
19
|
+
teamId: e,
|
|
20
|
+
queryOptions: {
|
|
21
|
+
$filter: n == null ? void 0 : n.filter,
|
|
22
|
+
$select: n == null ? void 0 : n.select
|
|
23
|
+
}
|
|
24
|
+
}), {
|
|
25
|
+
data: t,
|
|
26
|
+
isLoading: o,
|
|
27
|
+
isValidating: m,
|
|
28
|
+
mutate: i
|
|
29
|
+
} = f(e ? [k, e] : null, c, {
|
|
30
|
+
revalidateOnFocus: !1
|
|
31
|
+
});
|
|
32
|
+
return {
|
|
33
|
+
data: (t == null ? void 0 : t.ms_teams_channels) ?? [],
|
|
34
|
+
isLoading: o || m,
|
|
35
|
+
refetch: () => i()
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export {
|
|
39
|
+
S as default
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=useMsTeamsChannels.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMsTeamsChannels.mjs","sources":["../../../../../src/modules/ms-teams/hooks/useMsTeamsChannels.ts"],"sourcesContent":["import { GetMsTeamsChannelsResponse, MsTeamsChannel } from \"@knocklabs/client\";\nimport useSWR from \"swr\";\n\nimport { useKnockClient } from \"../../core\";\nimport { useKnockMsTeamsClient } from \"../context\";\nimport { MsTeamsChannelQueryOptions } from \"../interfaces\";\n\nconst QUERY_KEY = \"MS_TEAMS_CHANNELS\";\n\ntype UseMsTeamsChannelsProps = {\n teamId?: string;\n queryOptions?: MsTeamsChannelQueryOptions;\n};\n\ntype UseMsTeamsChannelsOutput = {\n data: MsTeamsChannel[];\n isLoading: boolean;\n refetch: () => void;\n};\n\nfunction useMsTeamsChannels({\n teamId,\n queryOptions,\n}: UseMsTeamsChannelsProps): UseMsTeamsChannelsOutput {\n const knock = useKnockClient();\n const { knockMsTeamsChannelId, tenantId } = useKnockMsTeamsClient();\n\n const fetchChannels = () =>\n knock.msTeams.getChannels({\n knockChannelId: knockMsTeamsChannelId,\n tenant: tenantId,\n teamId: teamId!,\n queryOptions: {\n $filter: queryOptions?.filter,\n $select: queryOptions?.select,\n },\n });\n\n const { data, isLoading, isValidating, mutate } =\n useSWR<GetMsTeamsChannelsResponse>(\n teamId ? [QUERY_KEY, teamId] : null,\n fetchChannels,\n { revalidateOnFocus: false },\n );\n\n return {\n data: data?.ms_teams_channels ?? [],\n isLoading: isLoading || isValidating,\n refetch: () => mutate(),\n };\n}\n\nexport default useMsTeamsChannels;\n"],"names":["QUERY_KEY","useMsTeamsChannels","teamId","queryOptions","knock","useKnockClient","knockMsTeamsChannelId","tenantId","useKnockMsTeamsClient","fetchChannels","msTeams","getChannels","knockChannelId","tenant","$filter","filter","$select","select","data","isLoading","isValidating","mutate","useSWR","revalidateOnFocus","ms_teams_channels","refetch"],"mappings":";;;;;;;AAOA,MAAMA,IAAY;AAalB,SAASC,EAAmB;AAAA,EAC1BC,QAAAA;AAAAA,EACAC,cAAAA;AACuB,GAA6B;AACpD,QAAMC,IAAQC,EAAe,GACvB;AAAA,IAAEC,uBAAAA;AAAAA,IAAuBC,UAAAA;AAAAA,MAAaC,EAAsB,GAE5DC,IAAgBA,MACpBL,EAAMM,QAAQC,YAAY;AAAA,IACxBC,gBAAgBN;AAAAA,IAChBO,QAAQN;AAAAA,IACRL,QAAAA;AAAAA,IACAC,cAAc;AAAA,MACZW,SAASX,KAAAA,gBAAAA,EAAcY;AAAAA,MACvBC,SAASb,KAAAA,gBAAAA,EAAcc;AAAAA,IAAAA;AAAAA,EACzB,CACD,GAEG;AAAA,IAAEC,MAAAA;AAAAA,IAAMC,WAAAA;AAAAA,IAAWC,cAAAA;AAAAA,IAAcC,QAAAA;AAAAA,EAAAA,IACrCC,EACEpB,IAAS,CAACF,GAAWE,CAAM,IAAI,MAC/BO,GACA;AAAA,IAAEc,mBAAmB;AAAA,EAAA,CACvB;AAEK,SAAA;AAAA,IACLL,OAAMA,KAAAA,gBAAAA,EAAMM,sBAAqB,CAAE;AAAA,IACnCL,WAAWA,KAAaC;AAAAA,IACxBK,SAASA,MAAMJ,EAAO;AAAA,EACxB;AACF;"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { useState as o, useEffect as T } from "react";
|
|
2
|
+
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
3
|
+
import { useTranslations as p } from "../../i18n/hooks/useTranslations.mjs";
|
|
4
|
+
function R(c, s, r) {
|
|
5
|
+
const {
|
|
6
|
+
t: a
|
|
7
|
+
} = p(), [n, t] = o("connecting"), [l, d] = o(null), [h, S] = o(null);
|
|
8
|
+
return T(() => {
|
|
9
|
+
(async () => {
|
|
10
|
+
var u, i, m, f;
|
|
11
|
+
if (n === "connecting")
|
|
12
|
+
try {
|
|
13
|
+
const e = await c.msTeams.authCheck({
|
|
14
|
+
tenant: r,
|
|
15
|
+
knockChannelId: s
|
|
16
|
+
});
|
|
17
|
+
if (((u = e.connection) == null ? void 0 : u.ok) === !0)
|
|
18
|
+
return t("connected");
|
|
19
|
+
if (((i = e.connection) == null ? void 0 : i.ok) === !1 || e.code === "ERR_BAD_REQUEST" && ((f = (m = e.response) == null ? void 0 : m.data) == null ? void 0 : f.message) === a("msTeamsTenantIdNotSet"))
|
|
20
|
+
return t("disconnected");
|
|
21
|
+
t("error");
|
|
22
|
+
} catch {
|
|
23
|
+
t("error");
|
|
24
|
+
}
|
|
25
|
+
})();
|
|
26
|
+
}, [n, r, s, c.msTeams, a]), {
|
|
27
|
+
connectionStatus: n,
|
|
28
|
+
setConnectionStatus: t,
|
|
29
|
+
errorLabel: l,
|
|
30
|
+
setErrorLabel: d,
|
|
31
|
+
actionLabel: h,
|
|
32
|
+
setActionLabel: S
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export {
|
|
36
|
+
R as default
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=useMsTeamsConnectionStatus.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMsTeamsConnectionStatus.mjs","sources":["../../../../../src/modules/ms-teams/hooks/useMsTeamsConnectionStatus.ts"],"sourcesContent":["import Knock from \"@knocklabs/client\";\nimport { useEffect, useState } from \"react\";\n\nimport { useTranslations } from \"../../i18n\";\n\nexport type ConnectionStatus =\n | \"connecting\"\n | \"connected\"\n | \"disconnected\"\n | \"error\"\n | \"disconnecting\";\n\ntype UseMsTeamsConnectionStatusOutput = {\n connectionStatus: ConnectionStatus;\n setConnectionStatus: (status: ConnectionStatus) => void;\n errorLabel: string | null;\n setErrorLabel: (errorLabel: string) => void;\n actionLabel: string | null;\n setActionLabel: (actionLabel: string | null) => void;\n};\n\nfunction useMsTeamsConnectionStatus(\n knock: Knock,\n knockMsTeamsChannelId: string,\n tenantId: string,\n): UseMsTeamsConnectionStatusOutput {\n const { t } = useTranslations();\n\n const [connectionStatus, setConnectionStatus] =\n useState<ConnectionStatus>(\"connecting\");\n const [errorLabel, setErrorLabel] = useState<string | null>(null);\n const [actionLabel, setActionLabel] = useState<string | null>(null);\n\n useEffect(() => {\n const checkAuthStatus = async () => {\n if (connectionStatus !== \"connecting\") return;\n\n try {\n const authRes = await knock.msTeams.authCheck({\n tenant: tenantId,\n knockChannelId: knockMsTeamsChannelId,\n });\n\n if (authRes.connection?.ok === true) {\n return setConnectionStatus(\"connected\");\n }\n\n if (authRes.connection?.ok === false) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is a normal response for a tenant that doesn't have\n // ms_teams_tenant_id set on it, meaning it's not connected to MS Teams,\n // so we give it a \"disconnected\" status instead of an error status.\n if (\n authRes.code === \"ERR_BAD_REQUEST\" &&\n authRes.response?.data?.message === t(\"msTeamsTenantIdNotSet\")\n ) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is for any Knock errors that would require a reconnect.\n setConnectionStatus(\"error\");\n } catch (_error) {\n setConnectionStatus(\"error\");\n }\n };\n\n checkAuthStatus();\n }, [connectionStatus, tenantId, knockMsTeamsChannelId, knock.msTeams, t]);\n\n return {\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n };\n}\n\nexport default useMsTeamsConnectionStatus;\n"],"names":["useMsTeamsConnectionStatus","knock","knockMsTeamsChannelId","tenantId","t","useTranslations","connectionStatus","setConnectionStatus","useState","errorLabel","setErrorLabel","actionLabel","setActionLabel","useEffect","authRes","msTeams","authCheck","tenant","knockChannelId","connection","ok","code","response","data","message"],"mappings":";;;AAqBA,SAASA,EACPC,GACAC,GACAC,GACkC;AAC5B,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GAExB,CAACC,GAAkBC,CAAmB,IAC1CC,EAA2B,YAAY,GACnC,CAACC,GAAYC,CAAa,IAAIF,EAAwB,IAAI,GAC1D,CAACG,GAAaC,CAAc,IAAIJ,EAAwB,IAAI;AAElEK,SAAAA,EAAU,MAAM;AAmCE,KAlCQ,YAAY;;AAClC,UAAIP,MAAqB;AAErB,YAAA;AACF,gBAAMQ,IAAU,MAAMb,EAAMc,QAAQC,UAAU;AAAA,YAC5CC,QAAQd;AAAAA,YACRe,gBAAgBhB;AAAAA,UAAAA,CACjB;AAEGY,gBAAAA,IAAAA,EAAQK,eAARL,gBAAAA,EAAoBM,QAAO;AAC7B,mBAAOb,EAAoB,WAAW;AAWtCO,gBAREA,IAAAA,EAAQK,eAARL,gBAAAA,EAAoBM,QAAO,MAQ7BN,EAAQO,SAAS,uBACjBP,KAAAA,IAAAA,EAAQQ,aAARR,gBAAAA,EAAkBS,SAAlBT,gBAAAA,EAAwBU,aAAYpB,EAAE,uBAAuB;AAE7D,mBAAOG,EAAoB,cAAc;AAI3CA,UAAAA,EAAoB,OAAO;AAAA,gBACZ;AACfA,UAAAA,EAAoB,OAAO;AAAA,QAAA;AAAA,IAE/B,GAEgB;AAAA,EAAA,GACf,CAACD,GAAkBH,GAAUD,GAAuBD,EAAMc,SAASX,CAAC,CAAC,GAEjE;AAAA,IACLE,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAE,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,EACF;AACF;"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { useMemo as C, useEffect as S } from "react";
|
|
2
|
+
import g from "swr/infinite";
|
|
3
|
+
import { useKnockClient as E } from "../../core/context/KnockProvider.mjs";
|
|
4
|
+
import "@knocklabs/client";
|
|
5
|
+
import "fast-deep-equal";
|
|
6
|
+
import "date-fns";
|
|
7
|
+
import { useKnockMsTeamsClient as x } from "../context/KnockMsTeamsProvider.mjs";
|
|
8
|
+
const I = 1e3, T = "MS_TEAMS_TEAMS";
|
|
9
|
+
function $(t, n) {
|
|
10
|
+
return t === 0 ? [T, ""] : n && ["", null].includes(n.skip_token) ? null : [T, n.skip_token ?? ""];
|
|
11
|
+
}
|
|
12
|
+
function R({
|
|
13
|
+
queryOptions: t = {}
|
|
14
|
+
}) {
|
|
15
|
+
const n = E(), {
|
|
16
|
+
knockMsTeamsChannelId: M,
|
|
17
|
+
tenantId: _,
|
|
18
|
+
connectionStatus: l
|
|
19
|
+
} = x(), r = (e) => n.msTeams.getTeams({
|
|
20
|
+
knockChannelId: M,
|
|
21
|
+
tenant: _,
|
|
22
|
+
queryOptions: {
|
|
23
|
+
$skiptoken: e == null ? void 0 : e[1],
|
|
24
|
+
$top: t == null ? void 0 : t.limitPerPage,
|
|
25
|
+
$filter: t == null ? void 0 : t.filter,
|
|
26
|
+
$select: t == null ? void 0 : t.select
|
|
27
|
+
}
|
|
28
|
+
}), {
|
|
29
|
+
data: a,
|
|
30
|
+
error: o,
|
|
31
|
+
isLoading: s,
|
|
32
|
+
isValidating: c,
|
|
33
|
+
setSize: i,
|
|
34
|
+
mutate: h
|
|
35
|
+
} = g($, r, {
|
|
36
|
+
initialSize: 0,
|
|
37
|
+
revalidateOnFocus: !1,
|
|
38
|
+
revalidateFirstPage: !1
|
|
39
|
+
}), f = a == null ? void 0 : a.at(-1), k = f === void 0 || !!f.skip_token, m = C(() => (a ?? []).flatMap((e) => e == null ? void 0 : e.ms_teams_teams).filter((e) => !!e), [a]), d = (t == null ? void 0 : t.maxCount) || I;
|
|
40
|
+
return S(() => {
|
|
41
|
+
l === "connected" && !o && k && !s && !c && m.length < d && i((e) => e + 1);
|
|
42
|
+
}, [m.length, i, k, s, c, d, o, l]), {
|
|
43
|
+
data: m,
|
|
44
|
+
isLoading: s || c,
|
|
45
|
+
refetch: () => h()
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
export {
|
|
49
|
+
R as default
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=useMsTeamsTeams.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMsTeamsTeams.mjs","sources":["../../../../../src/modules/ms-teams/hooks/useMsTeamsTeams.ts"],"sourcesContent":["import { GetMsTeamsTeamsResponse, MsTeamsTeam } from \"@knocklabs/client\";\nimport { useEffect, useMemo } from \"react\";\nimport useSWRInfinite from \"swr/infinite\";\n\nimport { useKnockClient } from \"../../core\";\nimport { useKnockMsTeamsClient } from \"../context\";\nimport { MsTeamsTeamQueryOptions } from \"../interfaces\";\n\nconst MAX_COUNT = 1000;\n\nconst QUERY_KEY = \"MS_TEAMS_TEAMS\";\n\ntype UseMsTeamsTeamsOptions = {\n queryOptions?: MsTeamsTeamQueryOptions;\n};\n\ntype UseMsTeamsTeamsOutput = {\n data: MsTeamsTeam[];\n isLoading: boolean;\n refetch: () => void;\n};\n\ntype QueryKey = [key: string, skiptoken: string] | null;\n\nfunction getQueryKey(\n pageIndex: number,\n previousPageData: GetMsTeamsTeamsResponse,\n): QueryKey {\n // First page so just pass empty\n if (pageIndex === 0) {\n return [QUERY_KEY, \"\"];\n }\n\n // If there's no more data then return an empty next skiptoken\n if (previousPageData && [\"\", null].includes(previousPageData.skip_token)) {\n return null;\n }\n\n // Next skiptoken exists so pass it\n return [QUERY_KEY, previousPageData.skip_token ?? \"\"];\n}\n\nfunction useMsTeamsTeams({\n queryOptions = {},\n}: UseMsTeamsTeamsOptions): UseMsTeamsTeamsOutput {\n const knock = useKnockClient();\n const { knockMsTeamsChannelId, tenantId, connectionStatus } =\n useKnockMsTeamsClient();\n\n const fetchTeams = (queryKey: QueryKey) =>\n knock.msTeams.getTeams({\n knockChannelId: knockMsTeamsChannelId,\n tenant: tenantId,\n queryOptions: {\n $skiptoken: queryKey?.[1],\n $top: queryOptions?.limitPerPage,\n $filter: queryOptions?.filter,\n $select: queryOptions?.select,\n },\n });\n\n const { data, error, isLoading, isValidating, setSize, mutate } =\n useSWRInfinite<GetMsTeamsTeamsResponse>(getQueryKey, fetchTeams, {\n initialSize: 0,\n revalidateOnFocus: false,\n revalidateFirstPage: false,\n });\n\n const lastPage = data?.at(-1);\n const hasNextPage = lastPage === undefined || !!lastPage.skip_token;\n\n const teams = useMemo(\n () =>\n (data ?? [])\n .flatMap((page) => page?.ms_teams_teams)\n .filter((team) => !!team),\n [data],\n );\n\n const maxCount = queryOptions?.maxCount || MAX_COUNT;\n\n useEffect(() => {\n if (\n connectionStatus === \"connected\" &&\n !error &&\n hasNextPage &&\n !isLoading &&\n !isValidating &&\n teams.length < maxCount\n ) {\n // Fetch a page at a time until we have nothing else left to fetch\n // or we've already hit the max amount of teams to fetch\n setSize((size) => size + 1);\n }\n }, [\n teams.length,\n setSize,\n hasNextPage,\n isLoading,\n isValidating,\n maxCount,\n error,\n connectionStatus,\n ]);\n\n return {\n data: teams,\n isLoading: isLoading || isValidating,\n refetch: () => mutate(),\n };\n}\n\nexport default useMsTeamsTeams;\n"],"names":["MAX_COUNT","QUERY_KEY","getQueryKey","pageIndex","previousPageData","includes","skip_token","useMsTeamsTeams","queryOptions","knock","useKnockClient","knockMsTeamsChannelId","tenantId","connectionStatus","useKnockMsTeamsClient","fetchTeams","queryKey","msTeams","getTeams","knockChannelId","tenant","$skiptoken","$top","limitPerPage","$filter","filter","$select","select","data","error","isLoading","isValidating","setSize","mutate","useSWRInfinite","initialSize","revalidateOnFocus","revalidateFirstPage","lastPage","at","hasNextPage","undefined","teams","useMemo","flatMap","page","ms_teams_teams","team","maxCount","useEffect","length","size","refetch"],"mappings":";;;;;;;AAQA,MAAMA,IAAY,KAEZC,IAAY;AAclB,SAASC,EACPC,GACAC,GACU;AAEV,SAAID,MAAc,IACT,CAACF,GAAW,EAAE,IAInBG,KAAoB,CAAC,IAAI,IAAI,EAAEC,SAASD,EAAiBE,UAAU,IAC9D,OAIF,CAACL,GAAWG,EAAiBE,cAAc,EAAE;AACtD;AAEA,SAASC,EAAgB;AAAA,EACvBC,cAAAA,IAAe,CAAA;AACO,GAA0B;AAChD,QAAMC,IAAQC,EAAe,GACvB;AAAA,IAAEC,uBAAAA;AAAAA,IAAuBC,UAAAA;AAAAA,IAAUC,kBAAAA;AAAAA,MACvCC,EAAsB,GAElBC,IAAaA,CAACC,MAClBP,EAAMQ,QAAQC,SAAS;AAAA,IACrBC,gBAAgBR;AAAAA,IAChBS,QAAQR;AAAAA,IACRJ,cAAc;AAAA,MACZa,YAAYL,KAAAA,gBAAAA,EAAW;AAAA,MACvBM,MAAMd,KAAAA,gBAAAA,EAAce;AAAAA,MACpBC,SAAShB,KAAAA,gBAAAA,EAAciB;AAAAA,MACvBC,SAASlB,KAAAA,gBAAAA,EAAcmB;AAAAA,IAAAA;AAAAA,EACzB,CACD,GAEG;AAAA,IAAEC,MAAAA;AAAAA,IAAMC,OAAAA;AAAAA,IAAOC,WAAAA;AAAAA,IAAWC,cAAAA;AAAAA,IAAcC,SAAAA;AAAAA,IAASC,QAAAA;AAAAA,EAAAA,IACrDC,EAAwChC,GAAaa,GAAY;AAAA,IAC/DoB,aAAa;AAAA,IACbC,mBAAmB;AAAA,IACnBC,qBAAqB;AAAA,EAAA,CACtB,GAEGC,IAAWV,KAAAA,gBAAAA,EAAMW,GAAG,KACpBC,IAAcF,MAAaG,UAAa,CAAC,CAACH,EAAShC,YAEnDoC,IAAQC,EACZ,OACGf,KAAQ,IACNgB,QAASC,CAASA,MAAAA,KAAAA,gBAAAA,EAAMC,cAAc,EACtCrB,OAAQsB,OAAS,CAAC,CAACA,CAAI,GAC5B,CAACnB,CAAI,CACP,GAEMoB,KAAWxC,KAAAA,gBAAAA,EAAcwC,aAAYhD;AAE3CiD,SAAAA,EAAU,MAAM;AAEZpC,IAAAA,MAAqB,eACrB,CAACgB,KACDW,KACA,CAACV,KACD,CAACC,KACDW,EAAMQ,SAASF,KAING,EAAAA,CAAAA,MAASA,IAAO,CAAC;AAAA,EAE9B,GAAG,CACDT,EAAMQ,QACNlB,GACAQ,GACAV,GACAC,GACAiB,GACAnB,GACAhB,CAAgB,CACjB,GAEM;AAAA,IACLe,MAAMc;AAAAA,IACNZ,WAAWA,KAAaC;AAAAA,IACxBqB,SAASA,MAAMnB,EAAO;AAAA,EACxB;AACF;"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import d from "../hooks/useSlackConnectionStatus.mjs";
|
|
2
|
+
import * as o from "react";
|
|
3
|
+
import "swr/infinite";
|
|
4
|
+
import { useKnockClient as S } from "../../core/context/KnockProvider.mjs";
|
|
5
|
+
import "@knocklabs/client";
|
|
6
|
+
import "fast-deep-equal";
|
|
7
|
+
import { slackProviderKey as C } from "../../core/utils.mjs";
|
|
8
|
+
import "swr";
|
|
9
|
+
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
10
|
+
const a = o.createContext(null), I = (t) => {
|
|
11
|
+
const {
|
|
12
|
+
knockSlackChannelId: e,
|
|
13
|
+
children: i
|
|
14
|
+
} = t, n = "tenantId" in t ? t.tenantId : t.tenant, l = S(), {
|
|
15
|
+
connectionStatus: r,
|
|
16
|
+
setConnectionStatus: s,
|
|
17
|
+
errorLabel: c,
|
|
18
|
+
setErrorLabel: k,
|
|
19
|
+
actionLabel: m,
|
|
20
|
+
setActionLabel: u
|
|
21
|
+
} = d(l, e, n);
|
|
22
|
+
return /* @__PURE__ */ o.createElement(a.Provider, { key: C({
|
|
23
|
+
knockSlackChannelId: e,
|
|
24
|
+
tenantId: n,
|
|
25
|
+
connectionStatus: r,
|
|
26
|
+
errorLabel: c
|
|
27
|
+
}), value: {
|
|
28
|
+
connectionStatus: r,
|
|
29
|
+
setConnectionStatus: s,
|
|
30
|
+
errorLabel: c,
|
|
31
|
+
setErrorLabel: k,
|
|
32
|
+
actionLabel: m,
|
|
33
|
+
setActionLabel: u,
|
|
34
|
+
knockSlackChannelId: e,
|
|
35
|
+
// Assign the same value to both tenant and tenantId for backwards compatibility
|
|
36
|
+
tenant: n,
|
|
37
|
+
tenantId: n
|
|
38
|
+
} }, i);
|
|
39
|
+
}, L = () => {
|
|
40
|
+
const t = o.useContext(a);
|
|
41
|
+
if (t === void 0)
|
|
42
|
+
throw new Error("useKnockSlackClient must be used within a KnockSlackProvider");
|
|
43
|
+
return t;
|
|
44
|
+
};
|
|
45
|
+
export {
|
|
46
|
+
I as KnockSlackProvider,
|
|
47
|
+
L as useKnockSlackClient
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=KnockSlackProvider.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KnockSlackProvider.mjs","sources":["../../../../../src/modules/slack/context/KnockSlackProvider.tsx"],"sourcesContent":["import { useSlackConnectionStatus } from \"..\";\nimport * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { slackProviderKey } from \"../../core\";\nimport { useKnockClient } from \"../../core\";\nimport { ConnectionStatus } from \"../hooks/useSlackConnectionStatus\";\n\nexport interface KnockSlackProviderState {\n knockSlackChannelId: string;\n tenantId: string;\n /**\n * @deprecated Use `tenantId` instead. This field will be removed in a future release.\n */\n tenant: string;\n connectionStatus: ConnectionStatus;\n setConnectionStatus: (connectionStatus: ConnectionStatus) => void;\n errorLabel: string | null;\n setErrorLabel: (label: string) => void;\n actionLabel: string | null;\n setActionLabel: (label: string | null) => void;\n}\n\nconst SlackProviderStateContext =\n React.createContext<KnockSlackProviderState | null>(null);\n\nexport type KnockSlackProviderProps =\n | {\n knockSlackChannelId: string;\n /**\n * @deprecated Use `tenantId` instead. This field will be removed in a future release.\n */\n tenant: string;\n }\n | {\n knockSlackChannelId: string;\n tenantId: string;\n };\n\nexport const KnockSlackProvider: React.FC<\n PropsWithChildren<KnockSlackProviderProps>\n> = (props) => {\n const { knockSlackChannelId, children } = props;\n const tenantId = \"tenantId\" in props ? props.tenantId : props.tenant;\n\n const knock = useKnockClient();\n\n const {\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n } = useSlackConnectionStatus(knock, knockSlackChannelId, tenantId);\n\n return (\n <SlackProviderStateContext.Provider\n key={slackProviderKey({\n knockSlackChannelId,\n tenantId,\n connectionStatus,\n errorLabel,\n })}\n value={{\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n knockSlackChannelId,\n // Assign the same value to both tenant and tenantId for backwards compatibility\n tenant: tenantId,\n tenantId,\n }}\n >\n {children}\n </SlackProviderStateContext.Provider>\n );\n};\n\nexport const useKnockSlackClient = (): KnockSlackProviderState => {\n const context = React.useContext(\n SlackProviderStateContext,\n ) as KnockSlackProviderState;\n if (context === undefined) {\n throw new Error(\n \"useKnockSlackClient must be used within a KnockSlackProvider\",\n );\n }\n return context as KnockSlackProviderState;\n};\n"],"names":["SlackProviderStateContext","React","createContext","KnockSlackProvider","props","knockSlackChannelId","children","tenantId","tenant","knock","useKnockClient","connectionStatus","setConnectionStatus","errorLabel","setErrorLabel","actionLabel","setActionLabel","useSlackConnectionStatus","slackProviderKey","useKnockSlackClient","context","useContext","undefined","Error"],"mappings":";;;;;;;;;AAuBA,MAAMA,IACJC,EAAMC,cAA8C,IAAI,GAe7CC,IAERC,CAAUA,MAAA;AACP,QAAA;AAAA,IAAEC,qBAAAA;AAAAA,IAAqBC,UAAAA;AAAAA,EAAAA,IAAaF,GACpCG,IAAW,cAAcH,IAAQA,EAAMG,WAAWH,EAAMI,QAExDC,IAAQC,EAAe,GAEvB;AAAA,IACJC,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAC,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,EACEC,IAAAA,EAAyBR,GAAOJ,GAAqBE,CAAQ;AAEjE,SACG,gBAAAN,EAAA,cAAAD,EAA0B,UAA1B,EACC,KAAKkB,EAAiB;AAAA,IACpBb,qBAAAA;AAAAA,IACAE,UAAAA;AAAAA,IACAI,kBAAAA;AAAAA,IACAE,YAAAA;AAAAA,EACD,CAAA,GACD,OAAO;AAAA,IACLF,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAC,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,IACAX,qBAAAA;AAAAA;AAAAA,IAEAG,QAAQD;AAAAA,IACRA,UAAAA;AAAAA,OAGDD,CACH;AAEJ,GAEaa,IAAsBA,MAA+B;AAC1DC,QAAAA,IAAUnB,EAAMoB,WACpBrB,CACF;AACA,MAAIoB,MAAYE;AACR,UAAA,IAAIC,MACR,8DACF;AAEKH,SAAAA;AACT;"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { useKnockSlackClient as S } from "../context/KnockSlackProvider.mjs";
|
|
2
|
+
import { useState as l } from "react";
|
|
3
|
+
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
4
|
+
import { useTranslations as g } from "../../i18n/hooks/useTranslations.mjs";
|
|
5
|
+
import "swr/infinite";
|
|
6
|
+
import { useKnockClient as E } from "../../core/context/KnockProvider.mjs";
|
|
7
|
+
import "@knocklabs/client";
|
|
8
|
+
import "fast-deep-equal";
|
|
9
|
+
import "date-fns";
|
|
10
|
+
import D from "swr";
|
|
11
|
+
const N = "SLACK_CONNECTED_CHANNELS";
|
|
12
|
+
function j({
|
|
13
|
+
slackChannelsRecipientObject: {
|
|
14
|
+
objectId: a,
|
|
15
|
+
collection: e
|
|
16
|
+
}
|
|
17
|
+
}) {
|
|
18
|
+
const {
|
|
19
|
+
t: u
|
|
20
|
+
} = g(), s = E(), {
|
|
21
|
+
connectionStatus: d,
|
|
22
|
+
knockSlackChannelId: o
|
|
23
|
+
} = S(), [p, c] = l(null), [C, r] = l(!1), {
|
|
24
|
+
data: m,
|
|
25
|
+
mutate: h,
|
|
26
|
+
isValidating: f,
|
|
27
|
+
isLoading: k
|
|
28
|
+
} = D(
|
|
29
|
+
// Only fetch when Slack is connected
|
|
30
|
+
d === "connected" ? [N, o, e, a] : null,
|
|
31
|
+
async () => s.objects.getChannelData({
|
|
32
|
+
collection: e,
|
|
33
|
+
objectId: a,
|
|
34
|
+
channelId: o
|
|
35
|
+
}).then((t) => {
|
|
36
|
+
var n;
|
|
37
|
+
return ((n = t.data) == null ? void 0 : n.connections) ?? [];
|
|
38
|
+
}).catch(() => []),
|
|
39
|
+
{
|
|
40
|
+
onSuccess: () => {
|
|
41
|
+
c(null);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
return {
|
|
46
|
+
data: m ?? null,
|
|
47
|
+
updateConnectedChannels: async (t) => {
|
|
48
|
+
r(!0);
|
|
49
|
+
try {
|
|
50
|
+
await h(() => s.objects.setChannelData({
|
|
51
|
+
objectId: a,
|
|
52
|
+
collection: e,
|
|
53
|
+
channelId: o,
|
|
54
|
+
data: {
|
|
55
|
+
connections: t
|
|
56
|
+
}
|
|
57
|
+
}).then((n) => {
|
|
58
|
+
var i;
|
|
59
|
+
return ((i = n.data) == null ? void 0 : i.connections) ?? [];
|
|
60
|
+
}), {
|
|
61
|
+
populateCache: !0,
|
|
62
|
+
revalidate: !1,
|
|
63
|
+
optimisticData: t
|
|
64
|
+
});
|
|
65
|
+
} catch {
|
|
66
|
+
c(u("slackChannelSetError") || "");
|
|
67
|
+
}
|
|
68
|
+
r(!1);
|
|
69
|
+
},
|
|
70
|
+
updating: C,
|
|
71
|
+
loading: k || f,
|
|
72
|
+
error: p
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
j as default
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=useConnectedSlackChannels.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useConnectedSlackChannels.mjs","sources":["../../../../../src/modules/slack/hooks/useConnectedSlackChannels.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { SlackChannelConnection } from \"@knocklabs/client\";\nimport { GenericData } from \"@knocklabs/types\";\nimport { useState } from \"react\";\nimport useSWR from \"swr\";\n\nimport { RecipientObject } from \"../../..\";\nimport { useKnockClient } from \"../../core\";\nimport { useTranslations } from \"../../i18n\";\n\nconst QUERY_KEY = \"SLACK_CONNECTED_CHANNELS\";\n\ntype UseConnectedSlackChannelsProps = {\n slackChannelsRecipientObject: RecipientObject;\n};\n\ntype UseConnectedSlackChannelsOutput = {\n data: SlackChannelConnection[] | null;\n updateConnectedChannels: (\n connectedChannels: SlackChannelConnection[],\n ) => Promise<void>;\n loading: boolean;\n error: string | null;\n updating: boolean;\n};\n\nfunction useConnectedSlackChannels({\n slackChannelsRecipientObject: { objectId, collection },\n}: UseConnectedSlackChannelsProps): UseConnectedSlackChannelsOutput {\n const { t } = useTranslations();\n const knock = useKnockClient();\n const { connectionStatus, knockSlackChannelId } = useKnockSlackClient();\n\n const [error, setError] = useState<string | null>(null);\n const [isUpdating, setIsUpdating] = useState(false);\n\n const {\n data: connectedChannels,\n mutate,\n isValidating,\n isLoading,\n } = useSWR<SlackChannelConnection[]>(\n // Only fetch when Slack is connected\n connectionStatus === \"connected\"\n ? [QUERY_KEY, knockSlackChannelId, collection, objectId]\n : null,\n async () => {\n return knock.objects\n .getChannelData({\n collection,\n objectId,\n channelId: knockSlackChannelId,\n })\n .then((res) => res.data?.connections ?? [])\n .catch(() => []);\n },\n {\n onSuccess: () => {\n setError(null);\n },\n },\n );\n\n const updateConnectedChannels = async (\n channelsToSendToKnock: SlackChannelConnection[],\n ) => {\n setIsUpdating(true);\n try {\n await mutate(\n () =>\n knock.objects\n .setChannelData({\n objectId,\n collection,\n channelId: knockSlackChannelId,\n data: { connections: channelsToSendToKnock },\n })\n .then((res) => (res as GenericData).data?.connections ?? []),\n {\n populateCache: true,\n revalidate: false,\n optimisticData: channelsToSendToKnock,\n },\n );\n } catch (_error) {\n setError(t(\"slackChannelSetError\") || \"\");\n }\n setIsUpdating(false);\n };\n\n return {\n data: connectedChannels ?? null,\n updateConnectedChannels,\n updating: isUpdating,\n loading: isLoading || isValidating,\n error,\n };\n}\n\nexport default useConnectedSlackChannels;\n"],"names":["QUERY_KEY","useConnectedSlackChannels","slackChannelsRecipientObject","objectId","collection","t","useTranslations","knock","useKnockClient","connectionStatus","knockSlackChannelId","useKnockSlackClient","error","setError","useState","isUpdating","setIsUpdating","data","connectedChannels","mutate","isValidating","isLoading","useSWR","objects","getChannelData","channelId","then","res","connections","catch","onSuccess","updateConnectedChannels","channelsToSendToKnock","setChannelData","populateCache","revalidate","optimisticData","updating","loading"],"mappings":";;;;;;;;;;AAUA,MAAMA,IAAY;AAgBlB,SAASC,EAA0B;AAAA,EACjCC,8BAA8B;AAAA,IAAEC,UAAAA;AAAAA,IAAUC,YAAAA;AAAAA,EAAAA;AACZ,GAAoC;AAC5D,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GACxBC,IAAQC,EAAe,GACvB;AAAA,IAAEC,kBAAAA;AAAAA,IAAkBC,qBAAAA;AAAAA,MAAwBC,EAAoB,GAEhE,CAACC,GAAOC,CAAQ,IAAIC,EAAwB,IAAI,GAChD,CAACC,GAAYC,CAAa,IAAIF,EAAS,EAAK,GAE5C;AAAA,IACJG,MAAMC;AAAAA,IACNC,QAAAA;AAAAA,IACAC,cAAAA;AAAAA,IACAC,WAAAA;AAAAA,EAAAA,IACEC;AAAAA;AAAAA,IAEFb,MAAqB,cACjB,CAACT,GAAWU,GAAqBN,GAAYD,CAAQ,IACrD;AAAA,IACJ,YACSI,EAAMgB,QACVC,eAAe;AAAA,MACdpB,YAAAA;AAAAA,MACAD,UAAAA;AAAAA,MACAsB,WAAWf;AAAAA,IACZ,CAAA,EACAgB,KAAMC,CAAAA,MAAAA;;AAAQA,eAAAA,IAAAA,EAAIV,SAAJU,gBAAAA,EAAUC,gBAAe;KAAE,EACzCC,MAAM,MAAM,EAAE;AAAA,IAEnB;AAAA,MACEC,WAAWA,MAAM;AACfjB,QAAAA,EAAS,IAAI;AAAA,MAAA;AAAA,IACf;AAAA,EAEJ;AA6BO,SAAA;AAAA,IACLI,MAAMC,KAAqB;AAAA,IAC3Ba,yBA7B8B,OAC9BC,MACG;AACHhB,MAAAA,EAAc,EAAI;AACd,UAAA;AACF,cAAMG,EACJ,MACEZ,EAAMgB,QACHU,eAAe;AAAA,UACd9B,UAAAA;AAAAA,UACAC,YAAAA;AAAAA,UACAqB,WAAWf;AAAAA,UACXO,MAAM;AAAA,YAAEW,aAAaI;AAAAA,UAAAA;AAAAA,QAAsB,CAC5C,EACAN,KAAMC,CAAAA,MAAAA;;AAASA,mBAAAA,IAAAA,EAAoBV,SAApBU,gBAAAA,EAA0BC,gBAAe,CAAA;AAAA,SAAE,GAC/D;AAAA,UACEM,eAAe;AAAA,UACfC,YAAY;AAAA,UACZC,gBAAgBJ;AAAAA,QAAAA,CAEpB;AAAA,cACe;AACN3B,QAAAA,EAAAA,EAAE,sBAAsB,KAAK,EAAE;AAAA,MAAA;AAE1CW,MAAAA,EAAc,EAAK;AAAA,IACrB;AAAA,IAKEqB,UAAUtB;AAAAA,IACVuB,SAASjB,KAAaD;AAAAA,IACtBR,OAAAA;AAAAA,EACF;AACF;"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { useKnockSlackClient as S } from "../context/KnockSlackProvider.mjs";
|
|
2
|
+
import { useCallback as u } from "react";
|
|
3
|
+
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
4
|
+
import "swr/infinite";
|
|
5
|
+
import { useKnockClient as _ } from "../../core/context/KnockProvider.mjs";
|
|
6
|
+
import { TENANT_OBJECT_COLLECTION as h } from "@knocklabs/client";
|
|
7
|
+
import "fast-deep-equal";
|
|
8
|
+
import "date-fns";
|
|
9
|
+
import "swr";
|
|
10
|
+
const A = "https://slack.com/oauth/v2/authorize", a = ["chat:write", "chat:write.public", "channels:read", "groups:read"];
|
|
11
|
+
function f(e) {
|
|
12
|
+
return e ? Array.isArray(e) ? {
|
|
13
|
+
scopes: a,
|
|
14
|
+
additionalScopes: e
|
|
15
|
+
} : {
|
|
16
|
+
scopes: e.scopes ?? a,
|
|
17
|
+
additionalScopes: e.additionalScopes ?? []
|
|
18
|
+
} : {
|
|
19
|
+
scopes: a,
|
|
20
|
+
additionalScopes: []
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function I(e, s, k) {
|
|
24
|
+
const o = _(), {
|
|
25
|
+
setConnectionStatus: c,
|
|
26
|
+
knockSlackChannelId: t,
|
|
27
|
+
tenantId: n,
|
|
28
|
+
setActionLabel: i
|
|
29
|
+
} = S(), {
|
|
30
|
+
scopes: d,
|
|
31
|
+
additionalScopes: p
|
|
32
|
+
} = f(k), l = Array.from(new Set(d.concat(p))), m = u(async () => {
|
|
33
|
+
i(null), c("disconnecting");
|
|
34
|
+
try {
|
|
35
|
+
const r = await o.slack.revokeAccessToken({
|
|
36
|
+
tenant: n,
|
|
37
|
+
knockChannelId: t
|
|
38
|
+
});
|
|
39
|
+
c(r === "ok" ? "disconnected" : "error");
|
|
40
|
+
} catch {
|
|
41
|
+
c("error");
|
|
42
|
+
}
|
|
43
|
+
}, [c, o.slack, n, t, i]);
|
|
44
|
+
return {
|
|
45
|
+
buildSlackAuthUrl: u(() => {
|
|
46
|
+
const r = {
|
|
47
|
+
state: JSON.stringify({
|
|
48
|
+
redirect_url: s,
|
|
49
|
+
access_token_object: {
|
|
50
|
+
object_id: n,
|
|
51
|
+
collection: h
|
|
52
|
+
},
|
|
53
|
+
channel_id: t,
|
|
54
|
+
public_key: o.apiKey,
|
|
55
|
+
user_token: o.userToken
|
|
56
|
+
}),
|
|
57
|
+
client_id: e,
|
|
58
|
+
scope: l.join(",")
|
|
59
|
+
};
|
|
60
|
+
return `${A}?${new URLSearchParams(r)}`;
|
|
61
|
+
}, [s, n, t, o.apiKey, o.userToken, e, l]),
|
|
62
|
+
disconnectFromSlack: m
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export {
|
|
66
|
+
I as default
|
|
67
|
+
};
|
|
68
|
+
//# sourceMappingURL=useSlackAuth.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSlackAuth.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\ntype UseSlackAuthOptions = {\n // When provided, the default scopes will be overridden with the provided scopes\n scopes?: string[];\n // Additional scopes to add to the default scopes\n additionalScopes?: string[];\n};\n\n// Here we normalize the options to be a single object with scopes and additionalScopes\n// The \"options\" parameter can be an array of scopes, an object with scopes and additionalScopes, or undefined\n// We handle the array case because it was the previous way to pass options so we're being backward compatible\nfunction normalizeOptions(options?: UseSlackAuthOptions | string[]): {\n scopes: string[];\n additionalScopes: string[];\n} {\n if (!options) {\n return { scopes: DEFAULT_SLACK_SCOPES, additionalScopes: [] };\n }\n\n if (Array.isArray(options)) {\n return { scopes: DEFAULT_SLACK_SCOPES, additionalScopes: options };\n }\n\n return {\n scopes: options.scopes ?? DEFAULT_SLACK_SCOPES,\n additionalScopes: options.additionalScopes ?? [],\n };\n}\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n options?: UseSlackAuthOptions | string[],\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenantId, setActionLabel } =\n useKnockSlackClient();\n\n const { scopes, additionalScopes } = normalizeOptions(options);\n const combinedScopes = Array.from(new Set(scopes.concat(additionalScopes)));\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant: tenantId,\n knockChannelId: knockSlackChannelId,\n });\n\n if (revoke === \"ok\") {\n setConnectionStatus(\"disconnected\");\n } else {\n setConnectionStatus(\"error\");\n }\n } catch (_error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.slack,\n tenantId,\n knockSlackChannelId,\n setActionLabel,\n ]);\n\n const buildSlackAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n access_token_object: {\n object_id: tenantId,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockSlackChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: slackClientId,\n scope: combinedScopes.join(\",\"),\n };\n return `${SLACK_AUTHORIZE_URL}?${new URLSearchParams(rawParams)}`;\n }, [\n redirectUrl,\n tenantId,\n knockSlackChannelId,\n knock.apiKey,\n knock.userToken,\n slackClientId,\n combinedScopes,\n ]);\n\n return {\n buildSlackAuthUrl,\n disconnectFromSlack,\n };\n}\n\nexport default useSlackAuth;\n"],"names":["SLACK_AUTHORIZE_URL","DEFAULT_SLACK_SCOPES","normalizeOptions","options","Array","isArray","scopes","additionalScopes","useSlackAuth","slackClientId","redirectUrl","knock","useKnockClient","setConnectionStatus","knockSlackChannelId","tenantId","setActionLabel","useKnockSlackClient","combinedScopes","from","Set","concat","disconnectFromSlack","useCallback","revoke","slack","revokeAccessToken","tenant","knockChannelId","buildSlackAuthUrl","rawParams","state","JSON","stringify","redirect_url","access_token_object","object_id","collection","TENANT_OBJECT_COLLECTION","channel_id","public_key","apiKey","user_token","userToken","client_id","scope","join","URLSearchParams"],"mappings":";;;;;;;;;AAMA,MAAMA,IAAsB,wCACtBC,IAAuB,CAC3B,cACA,qBACA,iBACA,aAAa;AAkBf,SAASC,EAAiBC,GAGxB;AACA,SAAKA,IAIDC,MAAMC,QAAQF,CAAO,IAChB;AAAA,IAAEG,QAAQL;AAAAA,IAAsBM,kBAAkBJ;AAAAA,EAAQ,IAG5D;AAAA,IACLG,QAAQH,EAAQG,UAAUL;AAAAA,IAC1BM,kBAAkBJ,EAAQI,oBAAoB,CAAA;AAAA,EAChD,IAVS;AAAA,IAAED,QAAQL;AAAAA,IAAsBM,kBAAkB,CAAA;AAAA,EAAG;AAWhE;AAEA,SAASC,EACPC,GACAC,GACAP,GACoB;AACpB,QAAMQ,IAAQC,EAAe,GACvB;AAAA,IAAEC,qBAAAA;AAAAA,IAAqBC,qBAAAA;AAAAA,IAAqBC,UAAAA;AAAAA,IAAUC,gBAAAA;AAAAA,MAC1DC,EAAoB,GAEhB;AAAA,IAAEX,QAAAA;AAAAA,IAAQC,kBAAAA;AAAAA,EAAAA,IAAqBL,EAAiBC,CAAO,GACvDe,IAAiBd,MAAMe,KAAK,IAAIC,IAAId,EAAOe,OAAOd,CAAgB,CAAC,CAAC,GAEpEe,IAAsBC,EAAY,YAAY;AAClDP,IAAAA,EAAe,IAAI,GACnBH,EAAoB,eAAe;AAC/B,QAAA;AACF,YAAMW,IAAS,MAAMb,EAAMc,MAAMC,kBAAkB;AAAA,QACjDC,QAAQZ;AAAAA,QACRa,gBAAgBd;AAAAA,MAAAA,CACjB;AAED,MACED,EADEW,MAAW,OACO,iBAEA,OAFc;AAAA,YAIrB;AACfX,MAAAA,EAAoB,OAAO;AAAA,IAAA;AAAA,EAC7B,GACC,CACDA,GACAF,EAAMc,OACNV,GACAD,GACAE,CAAc,CACf;AA4BM,SAAA;AAAA,IACLa,mBA3BwBN,EAAY,MAAM;AAC1C,YAAMO,IAAY;AAAA,QAChBC,OAAOC,KAAKC,UAAU;AAAA,UACpBC,cAAcxB;AAAAA,UACdyB,qBAAqB;AAAA,YACnBC,WAAWrB;AAAAA,YACXsB,YAAYC;AAAAA,UACd;AAAA,UACAC,YAAYzB;AAAAA,UACZ0B,YAAY7B,EAAM8B;AAAAA,UAClBC,YAAY/B,EAAMgC;AAAAA,QAAAA,CACnB;AAAA,QACDC,WAAWnC;AAAAA,QACXoC,OAAO3B,EAAe4B,KAAK,GAAG;AAAA,MAChC;AACA,aAAO,GAAG9C,CAAmB,IAAI,IAAI+C,gBAAgBjB,CAAS,CAAC;AAAA,IACjE,GAAG,CACDpB,GACAK,GACAD,GACAH,EAAM8B,QACN9B,EAAMgC,WACNlC,GACAS,CAAc,CACf;AAAA,IAICI,qBAAAA;AAAAA,EACF;AACF;"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { useKnockSlackClient as E } from "../context/KnockSlackProvider.mjs";
|
|
2
|
+
import { useMemo as u, useEffect as x } from "react";
|
|
3
|
+
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
4
|
+
import I from "swr/infinite";
|
|
5
|
+
import { useKnockClient as L } from "../../core/context/KnockProvider.mjs";
|
|
6
|
+
import "@knocklabs/client";
|
|
7
|
+
import "fast-deep-equal";
|
|
8
|
+
import "date-fns";
|
|
9
|
+
import "swr";
|
|
10
|
+
const N = 1e3, P = 200, g = "private_channel,public_channel", k = "SLACK_CHANNELS";
|
|
11
|
+
function A(n, c) {
|
|
12
|
+
return n === 0 ? [k, ""] : c && ["", null].includes(c.next_cursor) ? null : [k, c.next_cursor ?? ""];
|
|
13
|
+
}
|
|
14
|
+
function v({
|
|
15
|
+
queryOptions: n
|
|
16
|
+
}) {
|
|
17
|
+
const c = L(), {
|
|
18
|
+
knockSlackChannelId: C,
|
|
19
|
+
tenantId: _,
|
|
20
|
+
connectionStatus: s
|
|
21
|
+
} = E(), d = (t) => c.slack.getChannels({
|
|
22
|
+
tenant: _,
|
|
23
|
+
knockChannelId: C,
|
|
24
|
+
queryOptions: {
|
|
25
|
+
...n,
|
|
26
|
+
cursor: t == null ? void 0 : t[1],
|
|
27
|
+
limit: (n == null ? void 0 : n.limitPerPage) || P,
|
|
28
|
+
types: (n == null ? void 0 : n.types) || g
|
|
29
|
+
}
|
|
30
|
+
}), {
|
|
31
|
+
data: l,
|
|
32
|
+
error: i,
|
|
33
|
+
isLoading: e,
|
|
34
|
+
isValidating: a,
|
|
35
|
+
setSize: r,
|
|
36
|
+
mutate: S
|
|
37
|
+
} = I(A, d, {
|
|
38
|
+
initialSize: 0,
|
|
39
|
+
revalidateFirstPage: !1
|
|
40
|
+
}), m = l == null ? void 0 : l.at(-1), f = m === void 0 || !!m.next_cursor, o = u(() => (l ?? []).flatMap((t) => t == null ? void 0 : t.slack_channels).filter((t) => !!t), [l]), h = (n == null ? void 0 : n.maxCount) || N;
|
|
41
|
+
return x(() => {
|
|
42
|
+
s === "connected" && !i && f && !e && !a && o.length < h && r((t) => t + 1);
|
|
43
|
+
}, [o.length, r, f, e, a, h, i, s]), {
|
|
44
|
+
data: o,
|
|
45
|
+
isLoading: e || a,
|
|
46
|
+
refetch: () => S()
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
export {
|
|
50
|
+
v as default
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=useSlackChannels.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSlackChannels.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackChannels.ts"],"sourcesContent":["import { SlackChannelQueryOptions, useKnockSlackClient } from \"..\";\nimport { GetSlackChannelsResponse, SlackChannel } from \"@knocklabs/client\";\nimport { useEffect, useMemo } from \"react\";\nimport useSWRInfinite from \"swr/infinite\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst MAX_COUNT = 1000;\nconst LIMIT_PER_PAGE = 200;\nconst CHANNEL_TYPES = \"private_channel,public_channel\";\n\nconst QUERY_KEY = \"SLACK_CHANNELS\";\n\ntype UseSlackChannelsOptions = {\n queryOptions?: SlackChannelQueryOptions;\n};\n\ntype UseSlackChannelOutput = {\n data: SlackChannel[];\n isLoading: boolean;\n refetch: () => void;\n};\n\ntype QueryKey = [key: string, cursor: string] | null;\n\nfunction getQueryKey(\n pageIndex: number,\n previousPageData: GetSlackChannelsResponse,\n): QueryKey {\n // First page so just pass empty\n if (pageIndex === 0) {\n return [QUERY_KEY, \"\"];\n }\n\n // If there's no more data then return an empty next cursor\n if (previousPageData && [\"\", null].includes(previousPageData.next_cursor)) {\n return null;\n }\n\n // Next cursor exists so pass it\n return [QUERY_KEY, previousPageData.next_cursor ?? \"\"];\n}\n\nfunction useSlackChannels({\n queryOptions,\n}: UseSlackChannelsOptions): UseSlackChannelOutput {\n const knock = useKnockClient();\n const { knockSlackChannelId, tenantId, connectionStatus } =\n useKnockSlackClient();\n\n const fetchChannels = (queryKey: QueryKey) => {\n return knock.slack.getChannels({\n tenant: tenantId,\n knockChannelId: knockSlackChannelId,\n queryOptions: {\n ...queryOptions,\n cursor: queryKey?.[1],\n limit: queryOptions?.limitPerPage || LIMIT_PER_PAGE,\n types: queryOptions?.types || CHANNEL_TYPES,\n },\n });\n };\n\n const { data, error, isLoading, isValidating, setSize, mutate } =\n useSWRInfinite<GetSlackChannelsResponse>(getQueryKey, fetchChannels, {\n initialSize: 0,\n revalidateFirstPage: false,\n });\n\n const lastPage = data?.at(-1);\n const hasNextPage = lastPage === undefined || !!lastPage.next_cursor;\n\n const slackChannels: SlackChannel[] = useMemo(\n () =>\n (data ?? [])\n .flatMap((page) => page?.slack_channels)\n .filter((channel) => !!channel),\n [data],\n );\n\n const maxCount = queryOptions?.maxCount || MAX_COUNT;\n\n useEffect(() => {\n if (\n connectionStatus === \"connected\" &&\n !error &&\n hasNextPage &&\n !isLoading &&\n !isValidating &&\n slackChannels.length < maxCount\n ) {\n // Fetch a page at a time until we have nothing else left to fetch\n // or we've already hit the max amount of channels to fetch\n setSize((size) => size + 1);\n }\n }, [\n slackChannels.length,\n setSize,\n hasNextPage,\n isLoading,\n isValidating,\n maxCount,\n error,\n connectionStatus,\n ]);\n\n return {\n data: slackChannels,\n isLoading: isLoading || isValidating,\n refetch: () => mutate(),\n };\n}\n\nexport default useSlackChannels;\n"],"names":["MAX_COUNT","LIMIT_PER_PAGE","CHANNEL_TYPES","QUERY_KEY","getQueryKey","pageIndex","previousPageData","includes","next_cursor","useSlackChannels","queryOptions","knock","useKnockClient","knockSlackChannelId","tenantId","connectionStatus","useKnockSlackClient","fetchChannels","queryKey","slack","getChannels","tenant","knockChannelId","cursor","limit","limitPerPage","types","data","error","isLoading","isValidating","setSize","mutate","useSWRInfinite","initialSize","revalidateFirstPage","lastPage","at","hasNextPage","undefined","slackChannels","useMemo","flatMap","page","slack_channels","filter","channel","maxCount","useEffect","length","size","refetch"],"mappings":";;;;;;;;;AAOA,MAAMA,IAAY,KACZC,IAAiB,KACjBC,IAAgB,kCAEhBC,IAAY;AAclB,SAASC,EACPC,GACAC,GACU;AAEV,SAAID,MAAc,IACT,CAACF,GAAW,EAAE,IAInBG,KAAoB,CAAC,IAAI,IAAI,EAAEC,SAASD,EAAiBE,WAAW,IAC/D,OAIF,CAACL,GAAWG,EAAiBE,eAAe,EAAE;AACvD;AAEA,SAASC,EAAiB;AAAA,EACxBC,cAAAA;AACuB,GAA0B;AACjD,QAAMC,IAAQC,EAAe,GACvB;AAAA,IAAEC,qBAAAA;AAAAA,IAAqBC,UAAAA;AAAAA,IAAUC,kBAAAA;AAAAA,MACrCC,EAAoB,GAEhBC,IAAgBA,CAACC,MACdP,EAAMQ,MAAMC,YAAY;AAAA,IAC7BC,QAAQP;AAAAA,IACRQ,gBAAgBT;AAAAA,IAChBH,cAAc;AAAA,MACZ,GAAGA;AAAAA,MACHa,QAAQL,KAAAA,gBAAAA,EAAW;AAAA,MACnBM,QAAOd,KAAAA,gBAAAA,EAAce,iBAAgBxB;AAAAA,MACrCyB,QAAOhB,KAAAA,gBAAAA,EAAcgB,UAASxB;AAAAA,IAAAA;AAAAA,EAChC,CACD,GAGG;AAAA,IAAEyB,MAAAA;AAAAA,IAAMC,OAAAA;AAAAA,IAAOC,WAAAA;AAAAA,IAAWC,cAAAA;AAAAA,IAAcC,SAAAA;AAAAA,IAASC,QAAAA;AAAAA,EAAAA,IACrDC,EAAyC7B,GAAaa,GAAe;AAAA,IACnEiB,aAAa;AAAA,IACbC,qBAAqB;AAAA,EAAA,CACtB,GAEGC,IAAWT,KAAAA,gBAAAA,EAAMU,GAAG,KACpBC,IAAcF,MAAaG,UAAa,CAAC,CAACH,EAAS5B,aAEnDgC,IAAgCC,EACpC,OACGd,KAAQ,IACNe,QAASC,CAASA,MAAAA,KAAAA,gBAAAA,EAAMC,cAAc,EACtCC,OAAQC,OAAY,CAAC,CAACA,CAAO,GAClC,CAACnB,CAAI,CACP,GAEMoB,KAAWrC,KAAAA,gBAAAA,EAAcqC,aAAY/C;AAE3CgD,SAAAA,EAAU,MAAM;AAEZjC,IAAAA,MAAqB,eACrB,CAACa,KACDU,KACA,CAACT,KACD,CAACC,KACDU,EAAcS,SAASF,KAIdG,EAAAA,CAAAA,MAASA,IAAO,CAAC;AAAA,EAE9B,GAAG,CACDV,EAAcS,QACdlB,GACAO,GACAT,GACAC,GACAiB,GACAnB,GACAb,CAAgB,CACjB,GAEM;AAAA,IACLY,MAAMa;AAAAA,IACNX,WAAWA,KAAaC;AAAAA,IACxBqB,SAASA,MAAMnB,EAAO;AAAA,EACxB;AACF;"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { useState as s, useEffect as g } from "react";
|
|
2
|
+
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
3
|
+
import { useTranslations as A } from "../../i18n/hooks/useTranslations.mjs";
|
|
4
|
+
const C = (o) => {
|
|
5
|
+
const e = o.substring(0, 1).toUpperCase(), c = o.substring(1);
|
|
6
|
+
return e == null ? void 0 : e.concat(c).replace("_", " ");
|
|
7
|
+
};
|
|
8
|
+
function y(o, e, c) {
|
|
9
|
+
const {
|
|
10
|
+
t: a
|
|
11
|
+
} = A(), [r, n] = s("connecting"), [b, i] = s(null), [d, m] = s(null);
|
|
12
|
+
return g(() => {
|
|
13
|
+
(async () => {
|
|
14
|
+
var u, l, f, k, S, h, p;
|
|
15
|
+
if (r === "connecting")
|
|
16
|
+
try {
|
|
17
|
+
const t = await o.slack.authCheck({
|
|
18
|
+
tenant: c,
|
|
19
|
+
knockChannelId: e
|
|
20
|
+
});
|
|
21
|
+
if ((u = t.connection) != null && u.ok)
|
|
22
|
+
return n("connected");
|
|
23
|
+
if (!((l = t.connection) != null && l.ok) || t.code === "ERR_BAD_REQUEST" && ((k = (f = t.response) == null ? void 0 : f.data) == null ? void 0 : k.message) === a("slackAccessTokenNotSet"))
|
|
24
|
+
return n("disconnected");
|
|
25
|
+
if (!((S = t.connection) != null && S.ok) && ((h = t.connection) != null && h.error)) {
|
|
26
|
+
const E = C((p = t.connection) == null ? void 0 : p.error);
|
|
27
|
+
i(E), n("error");
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
n("error");
|
|
31
|
+
} catch {
|
|
32
|
+
n("error");
|
|
33
|
+
}
|
|
34
|
+
})();
|
|
35
|
+
}, [r, c, e, o.slack, a]), {
|
|
36
|
+
connectionStatus: r,
|
|
37
|
+
setConnectionStatus: n,
|
|
38
|
+
errorLabel: b,
|
|
39
|
+
setErrorLabel: i,
|
|
40
|
+
actionLabel: d,
|
|
41
|
+
setActionLabel: m
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export {
|
|
45
|
+
y as default
|
|
46
|
+
};
|
|
47
|
+
//# sourceMappingURL=useSlackConnectionStatus.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSlackConnectionStatus.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackConnectionStatus.ts"],"sourcesContent":["import Knock from \"@knocklabs/client\";\nimport { useEffect, useState } from \"react\";\n\nimport { useTranslations } from \"../../i18n\";\n\nexport type ConnectionStatus =\n | \"connecting\"\n | \"connected\"\n | \"disconnected\"\n | \"error\"\n | \"disconnecting\";\n\ntype UseSlackConnectionStatusOutput = {\n connectionStatus: ConnectionStatus;\n setConnectionStatus: (status: ConnectionStatus) => void;\n errorLabel: string | null;\n setErrorLabel: (errorLabel: string) => void;\n actionLabel: string | null;\n setActionLabel: (actionLabel: string | null) => void;\n};\n\n/**\n * Transforms a slack error message into\n * a formatted one. Slack error messages: https://api.slack.com/methods/auth.test#errors\n *\n * Ex.: \"account_inactive\" -> \"Account inactive\"\n */\nconst formatSlackErrorMessage = (errorMessage: string) => {\n const firstLetter = errorMessage.substring(0, 1).toUpperCase();\n const rest = errorMessage.substring(1);\n return firstLetter?.concat(rest).replace(\"_\", \" \");\n};\n\nfunction useSlackConnectionStatus(\n knock: Knock,\n knockSlackChannelId: string,\n tenantId: string,\n): UseSlackConnectionStatusOutput {\n const { t } = useTranslations();\n const [connectionStatus, setConnectionStatus] =\n useState<ConnectionStatus>(\"connecting\");\n const [errorLabel, setErrorLabel] = useState<string | null>(null);\n const [actionLabel, setActionLabel] = useState<string | null>(null);\n\n useEffect(() => {\n const checkAuthStatus = async () => {\n if (connectionStatus !== \"connecting\") return;\n\n try {\n const authRes = await knock.slack.authCheck({\n tenant: tenantId,\n knockChannelId: knockSlackChannelId,\n });\n\n if (authRes.connection?.ok) {\n return setConnectionStatus(\"connected\");\n }\n\n if (!authRes.connection?.ok) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is a normal response for a tenant that doesn't have an access\n // token set on it, meaning it's not connected to Slack, so we\n // give it a \"disconnected\" status instead of an error status.\n if (\n authRes.code === \"ERR_BAD_REQUEST\" &&\n authRes.response?.data?.message === t(\"slackAccessTokenNotSet\")\n ) {\n return setConnectionStatus(\"disconnected\");\n }\n\n // This is for an error coming directly from Slack.\n if (!authRes.connection?.ok && authRes.connection?.error) {\n const errorLabel = formatSlackErrorMessage(authRes.connection?.error);\n setErrorLabel(errorLabel);\n setConnectionStatus(\"error\");\n return;\n }\n\n // This is for any Knock errors that would require a reconnect.\n\n setConnectionStatus(\"error\");\n } catch (_error) {\n setConnectionStatus(\"error\");\n }\n };\n\n checkAuthStatus();\n }, [connectionStatus, tenantId, knockSlackChannelId, knock.slack, t]);\n\n return {\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n };\n}\n\nexport default useSlackConnectionStatus;\n"],"names":["formatSlackErrorMessage","errorMessage","firstLetter","substring","toUpperCase","rest","concat","replace","useSlackConnectionStatus","knock","knockSlackChannelId","tenantId","t","useTranslations","connectionStatus","setConnectionStatus","useState","errorLabel","setErrorLabel","actionLabel","setActionLabel","useEffect","authRes","slack","authCheck","tenant","knockChannelId","connection","ok","code","response","data","message","error"],"mappings":";;;AA2BA,MAAMA,IAA0BA,CAACC,MAAyB;AACxD,QAAMC,IAAcD,EAAaE,UAAU,GAAG,CAAC,EAAEC,YAAY,GACvDC,IAAOJ,EAAaE,UAAU,CAAC;AACrC,SAAOD,KAAAA,gBAAAA,EAAaI,OAAOD,GAAME,QAAQ,KAAK;AAChD;AAEA,SAASC,EACPC,GACAC,GACAC,GACgC;AAC1B,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GACxB,CAACC,GAAkBC,CAAmB,IAC1CC,EAA2B,YAAY,GACnC,CAACC,GAAYC,CAAa,IAAIF,EAAwB,IAAI,GAC1D,CAACG,GAAaC,CAAc,IAAIJ,EAAwB,IAAI;AAElEK,SAAAA,EAAU,MAAM;AA4CE,KA3CQ,YAAY;;AAClC,UAAIP,MAAqB;AAErB,YAAA;AACF,gBAAMQ,IAAU,MAAMb,EAAMc,MAAMC,UAAU;AAAA,YAC1CC,QAAQd;AAAAA,YACRe,gBAAgBhB;AAAAA,UAAAA,CACjB;AAEGY,eAAAA,IAAAA,EAAQK,eAARL,QAAAA,EAAoBM;AACtB,mBAAOb,EAAoB,WAAW;AAWtCO,cARE,GAACA,IAAAA,EAAQK,eAARL,QAAAA,EAAoBM,OAQvBN,EAAQO,SAAS,uBACjBP,KAAAA,IAAAA,EAAQQ,aAARR,gBAAAA,EAAkBS,SAAlBT,gBAAAA,EAAwBU,aAAYpB,EAAE,wBAAwB;AAE9D,mBAAOG,EAAoB,cAAc;AAI3C,cAAI,GAACO,IAAAA,EAAQK,eAARL,QAAAA,EAAoBM,SAAMN,IAAAA,EAAQK,eAARL,QAAAA,EAAoBW,QAAO;AACxD,kBAAMhB,IAAajB,GAAwBsB,IAAAA,EAAQK,eAARL,gBAAAA,EAAoBW,KAAK;AACpEf,YAAAA,EAAcD,CAAU,GACxBF,EAAoB,OAAO;AAC3B;AAAA,UAAA;AAKFA,UAAAA,EAAoB,OAAO;AAAA,gBACZ;AACfA,UAAAA,EAAoB,OAAO;AAAA,QAAA;AAAA,IAE/B,GAEgB;AAAA,EAAA,GACf,CAACD,GAAkBH,GAAUD,GAAqBD,EAAMc,OAAOX,CAAC,CAAC,GAE7D;AAAA,IACLE,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAE,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,EACF;AACF;"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { FilterStatus, KnockProvider, feedProviderKey, formatBadgeCount, formatTimestamp, msTeamsProviderKey, renderNodeOrFallback, slackProviderKey, toSentenceCase, type ColorMode, type KnockProviderProps, type KnockProviderState, useAuthenticatedKnockClient, useKnockClient, useStableOptions, } from './modules/core';
|
|
2
|
+
export { KnockFeedProvider, type KnockFeedProviderProps, type KnockFeedProviderState, type Selector, useCreateNotificationStore, useFeedSettings, useKnockFeed, useNotificationStore, useNotifications, } from './modules/feed';
|
|
3
|
+
export { KnockGuideProvider, KnockGuideContext, useGuide, } from './modules/guide';
|
|
4
|
+
export { type MsTeamsChannelQueryOptions, type MsTeamsTeamQueryOptions, KnockMsTeamsProvider, type KnockMsTeamsProviderProps, type KnockMsTeamsProviderState, useConnectedMsTeamsChannels, useKnockMsTeamsClient, useMsTeamsAuth, useMsTeamsChannels, useMsTeamsConnectionStatus, useMsTeamsTeams, } from './modules/ms-teams';
|
|
5
|
+
export { KnockSlackProvider, type ContainerObject, type KnockSlackProviderProps, type KnockSlackProviderState, type SlackChannelQueryOptions, useConnectedSlackChannels, useKnockSlackClient, useSlackAuth, useSlackChannels, useSlackConnectionStatus, } from './modules/slack';
|
|
6
|
+
export { I18nContext, KnockI18nProvider, locales, type I18nContent, type KnockI18nProviderProps, type Translations, useTranslations, } from './modules/i18n';
|
|
7
|
+
export { type RecipientObject } from './interfaces';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,EACvB,2BAA2B,EAC3B,cAAc,EACd,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,iBAAiB,EACjB,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,KAAK,QAAQ,EACb,0BAA0B,EAC1B,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,GACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,QAAQ,GACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,uBAAuB,EAC5B,oBAAoB,EACpB,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAC9B,2BAA2B,EAC3B,qBAAqB,EACrB,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,kBAAkB,EAClB,KAAK,eAAe,EACpB,KAAK,uBAAuB,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAC7B,yBAAyB,EACzB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,OAAO,EACP,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,YAAY,EACjB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/modules/core/constants.ts"],"names":[],"mappings":"AAAA,oBAAY,YAAY;IACtB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,MAAM,WAAW;CAClB;AAED,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { default as Knock, AuthenticateOptions, LogLevel } from '@knocklabs/client';
|
|
2
|
+
import { PropsWithChildren } from 'react';
|
|
3
|
+
import { I18nContent } from '../../i18n';
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
export interface KnockProviderState {
|
|
6
|
+
knock: Knock;
|
|
7
|
+
}
|
|
8
|
+
export interface KnockProviderProps {
|
|
9
|
+
apiKey: string | undefined;
|
|
10
|
+
host?: string;
|
|
11
|
+
userId: Knock["userId"];
|
|
12
|
+
userToken?: Knock["userToken"];
|
|
13
|
+
onUserTokenExpiring?: AuthenticateOptions["onUserTokenExpiring"];
|
|
14
|
+
timeBeforeExpirationInMs?: AuthenticateOptions["timeBeforeExpirationInMs"];
|
|
15
|
+
i18n?: I18nContent;
|
|
16
|
+
logLevel?: LogLevel;
|
|
17
|
+
}
|
|
18
|
+
export declare const KnockProvider: React.FC<PropsWithChildren<KnockProviderProps>>;
|
|
19
|
+
export declare const useKnockClient: () => Knock;
|
|
20
|
+
//# sourceMappingURL=KnockProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KnockProvider.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/context/KnockProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAqB,MAAM,YAAY,CAAC;AAG5D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,KAAK,CAAC;CACd;AAID,MAAM,WAAW,kBAAkB;IAEjC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IACxB,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAC/B,mBAAmB,CAAC,EAAE,mBAAmB,CAAC,qBAAqB,CAAC,CAAC;IACjE,wBAAwB,CAAC,EAAE,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAE3E,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAkCzE,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,KAMjC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/context/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,cAAc,EACd,KAAK,kBAAkB,EACvB,KAAK,kBAAkB,GACxB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/hooks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { default as Knock, AuthenticateOptions, KnockOptions } from '@knocklabs/client';
|
|
2
|
+
export type AuthenticatedKnockClientOptions = KnockOptions & AuthenticateOptions;
|
|
3
|
+
declare function useAuthenticatedKnockClient(apiKey: string, userId: Knock["userId"], userToken?: Knock["userToken"], options?: AuthenticatedKnockClientOptions): Knock;
|
|
4
|
+
export default useAuthenticatedKnockClient;
|
|
5
|
+
//# sourceMappingURL=useAuthenticatedKnockClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuthenticatedKnockClient.d.ts","sourceRoot":"","sources":["../../../../../src/modules/core/hooks/useAuthenticatedKnockClient.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAiB7E,MAAM,MAAM,+BAA+B,GAAG,YAAY,GACxD,mBAAmB,CAAC;AAEtB,iBAAS,2BAA2B,CAClC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,EACvB,SAAS,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,EAC9B,OAAO,GAAE,+BAAoC,SAiC9C;AAED,eAAe,2BAA2B,CAAC"}
|