@knocklabs/react-core 0.6.13 → 0.6.14-canary.2
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/package.json +5 -6
- package/src/modules/feed/context/KnockFeedProvider.tsx +2 -7
- package/src/modules/feed/hooks/useNotificationStore.ts +15 -13
- package/src/modules/feed/hooks/useNotifications.ts +0 -4
- package/CHANGELOG.md +0 -477
- package/dist/cjs/index.js +0 -2
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/modules/core/constants.js +0 -2
- package/dist/cjs/modules/core/constants.js.map +0 -1
- package/dist/cjs/modules/core/context/KnockProvider.js +0 -2
- package/dist/cjs/modules/core/context/KnockProvider.js.map +0 -1
- package/dist/cjs/modules/core/hooks/useAuthenticatedKnockClient.js +0 -2
- package/dist/cjs/modules/core/hooks/useAuthenticatedKnockClient.js.map +0 -1
- package/dist/cjs/modules/core/hooks/useStableOptions.js +0 -2
- package/dist/cjs/modules/core/hooks/useStableOptions.js.map +0 -1
- package/dist/cjs/modules/core/utils.js +0 -2
- package/dist/cjs/modules/core/utils.js.map +0 -1
- package/dist/cjs/modules/feed/context/KnockFeedProvider.js +0 -2
- package/dist/cjs/modules/feed/context/KnockFeedProvider.js.map +0 -1
- package/dist/cjs/modules/feed/hooks/useFeedSettings.js +0 -2
- package/dist/cjs/modules/feed/hooks/useFeedSettings.js.map +0 -1
- package/dist/cjs/modules/feed/hooks/useNotificationStore.js +0 -2
- package/dist/cjs/modules/feed/hooks/useNotificationStore.js.map +0 -1
- package/dist/cjs/modules/feed/hooks/useNotifications.js +0 -2
- package/dist/cjs/modules/feed/hooks/useNotifications.js.map +0 -1
- package/dist/cjs/modules/guide/context/KnockGuideProvider.js +0 -2
- package/dist/cjs/modules/guide/context/KnockGuideProvider.js.map +0 -1
- package/dist/cjs/modules/guide/hooks/useGuide.js +0 -2
- package/dist/cjs/modules/guide/hooks/useGuide.js.map +0 -1
- package/dist/cjs/modules/guide/hooks/useGuideContext.js +0 -2
- package/dist/cjs/modules/guide/hooks/useGuideContext.js.map +0 -1
- package/dist/cjs/modules/i18n/context/KnockI18nProvider.js +0 -2
- package/dist/cjs/modules/i18n/context/KnockI18nProvider.js.map +0 -1
- package/dist/cjs/modules/i18n/hooks/useTranslations.js +0 -2
- package/dist/cjs/modules/i18n/hooks/useTranslations.js.map +0 -1
- package/dist/cjs/modules/i18n/languages/de.js +0 -2
- package/dist/cjs/modules/i18n/languages/de.js.map +0 -1
- package/dist/cjs/modules/i18n/languages/en.js +0 -2
- package/dist/cjs/modules/i18n/languages/en.js.map +0 -1
- package/dist/cjs/modules/i18n/languages/index.js +0 -2
- package/dist/cjs/modules/i18n/languages/index.js.map +0 -1
- package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js +0 -2
- package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js.map +0 -1
- package/dist/cjs/modules/ms-teams/hooks/useConnectedMsTeamsChannels.js +0 -2
- package/dist/cjs/modules/ms-teams/hooks/useConnectedMsTeamsChannels.js.map +0 -1
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js +0 -2
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js.map +0 -1
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsChannels.js +0 -2
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsChannels.js.map +0 -1
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js +0 -2
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsConnectionStatus.js.map +0 -1
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js +0 -2
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js.map +0 -1
- package/dist/cjs/modules/slack/context/KnockSlackProvider.js +0 -2
- package/dist/cjs/modules/slack/context/KnockSlackProvider.js.map +0 -1
- package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js +0 -2
- package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js.map +0 -1
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js +0 -2
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js.map +0 -1
- package/dist/cjs/modules/slack/hooks/useSlackChannels.js +0 -2
- package/dist/cjs/modules/slack/hooks/useSlackChannels.js.map +0 -1
- package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js +0 -2
- package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js.map +0 -1
- package/dist/esm/index.mjs +0 -66
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/modules/core/constants.mjs +0 -5
- package/dist/esm/modules/core/constants.mjs.map +0 -1
- package/dist/esm/modules/core/context/KnockProvider.mjs +0 -35
- package/dist/esm/modules/core/context/KnockProvider.mjs.map +0 -1
- package/dist/esm/modules/core/hooks/useAuthenticatedKnockClient.mjs +0 -29
- package/dist/esm/modules/core/hooks/useAuthenticatedKnockClient.mjs.map +0 -1
- package/dist/esm/modules/core/hooks/useStableOptions.mjs +0 -13
- package/dist/esm/modules/core/hooks/useStableOptions.mjs.map +0 -1
- package/dist/esm/modules/core/utils.mjs +0 -49
- package/dist/esm/modules/core/utils.mjs.map +0 -1
- package/dist/esm/modules/feed/context/KnockFeedProvider.mjs +0 -37
- package/dist/esm/modules/feed/context/KnockFeedProvider.mjs.map +0 -1
- package/dist/esm/modules/feed/hooks/useFeedSettings.mjs +0 -23
- package/dist/esm/modules/feed/hooks/useFeedSettings.mjs.map +0 -1
- package/dist/esm/modules/feed/hooks/useNotificationStore.mjs +0 -12
- package/dist/esm/modules/feed/hooks/useNotificationStore.mjs.map +0 -1
- package/dist/esm/modules/feed/hooks/useNotifications.mjs +0 -34
- package/dist/esm/modules/feed/hooks/useNotifications.mjs.map +0 -1
- package/dist/esm/modules/guide/context/KnockGuideProvider.mjs +0 -33
- package/dist/esm/modules/guide/context/KnockGuideProvider.mjs.map +0 -1
- package/dist/esm/modules/guide/hooks/useGuide.mjs +0 -21
- package/dist/esm/modules/guide/hooks/useGuide.mjs.map +0 -1
- package/dist/esm/modules/guide/hooks/useGuideContext.mjs +0 -12
- package/dist/esm/modules/guide/hooks/useGuideContext.mjs.map +0 -1
- package/dist/esm/modules/i18n/context/KnockI18nProvider.mjs +0 -11
- package/dist/esm/modules/i18n/context/KnockI18nProvider.mjs.map +0 -1
- package/dist/esm/modules/i18n/hooks/useTranslations.mjs +0 -17
- package/dist/esm/modules/i18n/hooks/useTranslations.mjs.map +0 -1
- package/dist/esm/modules/i18n/languages/de.mjs +0 -39
- package/dist/esm/modules/i18n/languages/de.mjs.map +0 -1
- package/dist/esm/modules/i18n/languages/en.mjs +0 -51
- package/dist/esm/modules/i18n/languages/en.mjs.map +0 -1
- package/dist/esm/modules/i18n/languages/index.mjs +0 -10
- package/dist/esm/modules/i18n/languages/index.mjs.map +0 -1
- package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs +0 -48
- package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs.map +0 -1
- package/dist/esm/modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs +0 -78
- package/dist/esm/modules/ms-teams/hooks/useConnectedMsTeamsChannels.mjs.map +0 -1
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs +0 -53
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs.map +0 -1
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsChannels.mjs +0 -41
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsChannels.mjs.map +0 -1
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs +0 -38
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsConnectionStatus.mjs.map +0 -1
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs +0 -51
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs.map +0 -1
- package/dist/esm/modules/slack/context/KnockSlackProvider.mjs +0 -49
- package/dist/esm/modules/slack/context/KnockSlackProvider.mjs.map +0 -1
- package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs +0 -78
- package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs.map +0 -1
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs +0 -68
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs.map +0 -1
- package/dist/esm/modules/slack/hooks/useSlackChannels.mjs +0 -52
- package/dist/esm/modules/slack/hooks/useSlackChannels.mjs.map +0 -1
- package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs +0 -47
- package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs.map +0 -1
- package/dist/types/index.d.ts +0 -8
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/interfaces.d.ts +0 -5
- package/dist/types/interfaces.d.ts.map +0 -1
- package/dist/types/modules/core/constants.d.ts +0 -8
- package/dist/types/modules/core/constants.d.ts.map +0 -1
- package/dist/types/modules/core/context/KnockProvider.d.ts +0 -20
- package/dist/types/modules/core/context/KnockProvider.d.ts.map +0 -1
- package/dist/types/modules/core/context/index.d.ts +0 -2
- package/dist/types/modules/core/context/index.d.ts.map +0 -1
- package/dist/types/modules/core/hooks/index.d.ts +0 -3
- package/dist/types/modules/core/hooks/index.d.ts.map +0 -1
- package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts +0 -5
- package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts.map +0 -1
- package/dist/types/modules/core/hooks/useStableOptions.d.ts +0 -2
- package/dist/types/modules/core/hooks/useStableOptions.d.ts.map +0 -1
- package/dist/types/modules/core/index.d.ts +0 -5
- package/dist/types/modules/core/index.d.ts.map +0 -1
- package/dist/types/modules/core/utils.d.ts +0 -24
- package/dist/types/modules/core/utils.d.ts.map +0 -1
- package/dist/types/modules/feed/context/KnockFeedProvider.d.ts +0 -19
- package/dist/types/modules/feed/context/KnockFeedProvider.d.ts.map +0 -1
- package/dist/types/modules/feed/context/index.d.ts +0 -2
- package/dist/types/modules/feed/context/index.d.ts.map +0 -1
- package/dist/types/modules/feed/hooks/index.d.ts +0 -4
- package/dist/types/modules/feed/hooks/index.d.ts.map +0 -1
- package/dist/types/modules/feed/hooks/useFeedSettings.d.ts +0 -12
- package/dist/types/modules/feed/hooks/useFeedSettings.d.ts.map +0 -1
- package/dist/types/modules/feed/hooks/useNotificationStore.d.ts +0 -35
- package/dist/types/modules/feed/hooks/useNotificationStore.d.ts.map +0 -1
- package/dist/types/modules/feed/hooks/useNotifications.d.ts +0 -4
- package/dist/types/modules/feed/hooks/useNotifications.d.ts.map +0 -1
- package/dist/types/modules/feed/index.d.ts +0 -3
- package/dist/types/modules/feed/index.d.ts.map +0 -1
- package/dist/types/modules/guide/context/KnockGuideProvider.d.ts +0 -19
- package/dist/types/modules/guide/context/KnockGuideProvider.d.ts.map +0 -1
- package/dist/types/modules/guide/context/index.d.ts +0 -2
- package/dist/types/modules/guide/context/index.d.ts.map +0 -1
- package/dist/types/modules/guide/hooks/index.d.ts +0 -2
- package/dist/types/modules/guide/hooks/index.d.ts.map +0 -1
- package/dist/types/modules/guide/hooks/useGuide.d.ts +0 -9
- package/dist/types/modules/guide/hooks/useGuide.d.ts.map +0 -1
- package/dist/types/modules/guide/hooks/useGuideContext.d.ts +0 -7
- package/dist/types/modules/guide/hooks/useGuideContext.d.ts.map +0 -1
- package/dist/types/modules/guide/index.d.ts +0 -3
- package/dist/types/modules/guide/index.d.ts.map +0 -1
- package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts +0 -8
- package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts.map +0 -1
- package/dist/types/modules/i18n/context/index.d.ts +0 -2
- package/dist/types/modules/i18n/context/index.d.ts.map +0 -1
- package/dist/types/modules/i18n/hooks/index.d.ts +0 -2
- package/dist/types/modules/i18n/hooks/index.d.ts.map +0 -1
- package/dist/types/modules/i18n/hooks/useTranslations.d.ts +0 -5
- package/dist/types/modules/i18n/hooks/useTranslations.d.ts.map +0 -1
- package/dist/types/modules/i18n/index.d.ts +0 -4
- package/dist/types/modules/i18n/index.d.ts.map +0 -1
- package/dist/types/modules/i18n/languages/de.d.ts +0 -4
- package/dist/types/modules/i18n/languages/de.d.ts.map +0 -1
- package/dist/types/modules/i18n/languages/en.d.ts +0 -4
- package/dist/types/modules/i18n/languages/en.d.ts.map +0 -1
- package/dist/types/modules/i18n/languages/index.d.ts +0 -54
- package/dist/types/modules/i18n/languages/index.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts +0 -20
- package/dist/types/modules/ms-teams/context/KnockMsTeamsProvider.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/context/index.d.ts +0 -2
- package/dist/types/modules/ms-teams/context/index.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/hooks/index.d.ts +0 -6
- package/dist/types/modules/ms-teams/hooks/index.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/hooks/useConnectedMsTeamsChannels.d.ts +0 -15
- package/dist/types/modules/ms-teams/hooks/useConnectedMsTeamsChannels.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts +0 -7
- package/dist/types/modules/ms-teams/hooks/useMsTeamsAuth.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/hooks/useMsTeamsChannels.d.ts +0 -14
- package/dist/types/modules/ms-teams/hooks/useMsTeamsChannels.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts +0 -13
- package/dist/types/modules/ms-teams/hooks/useMsTeamsConnectionStatus.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts +0 -13
- package/dist/types/modules/ms-teams/hooks/useMsTeamsTeams.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/index.d.ts +0 -4
- package/dist/types/modules/ms-teams/index.d.ts.map +0 -1
- package/dist/types/modules/ms-teams/interfaces.d.ts +0 -11
- package/dist/types/modules/ms-teams/interfaces.d.ts.map +0 -1
- package/dist/types/modules/slack/context/KnockSlackProvider.d.ts +0 -30
- package/dist/types/modules/slack/context/KnockSlackProvider.d.ts.map +0 -1
- package/dist/types/modules/slack/context/index.d.ts +0 -2
- package/dist/types/modules/slack/context/index.d.ts.map +0 -1
- package/dist/types/modules/slack/hooks/index.d.ts +0 -5
- package/dist/types/modules/slack/hooks/index.d.ts.map +0 -1
- package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts +0 -15
- package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts.map +0 -1
- package/dist/types/modules/slack/hooks/useSlackAuth.d.ts +0 -11
- package/dist/types/modules/slack/hooks/useSlackAuth.d.ts.map +0 -1
- package/dist/types/modules/slack/hooks/useSlackChannels.d.ts +0 -13
- package/dist/types/modules/slack/hooks/useSlackChannels.d.ts.map +0 -1
- package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts +0 -13
- package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts.map +0 -1
- package/dist/types/modules/slack/index.d.ts +0 -4
- package/dist/types/modules/slack/index.d.ts.map +0 -1
- package/dist/types/modules/slack/interfaces.d.ts +0 -10
- package/dist/types/modules/slack/interfaces.d.ts.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useConnectedMsTeamsChannels.mjs","sources":["../../../../../src/modules/ms-teams/hooks/useConnectedMsTeamsChannels.ts"],"sourcesContent":["import { useKnockMsTeamsClient } from \"..\";\nimport { MsTeamsChannelConnection } 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 = \"MS_TEAMS_CONNECTED_CHANNELS\";\n\ntype UseConnectedMsTeamsChannelsProps = {\n msTeamsChannelsRecipientObject: RecipientObject;\n};\n\ntype UseConnectedMsTeamsChannelsOutput = {\n data: MsTeamsChannelConnection[] | null;\n updateConnectedChannels: (\n connectedChannels: MsTeamsChannelConnection[],\n ) => Promise<void>;\n loading: boolean;\n error: string | null;\n updating: boolean;\n};\n\nfunction useConnectedMsTeamsChannels({\n msTeamsChannelsRecipientObject: { objectId, collection },\n}: UseConnectedMsTeamsChannelsProps): UseConnectedMsTeamsChannelsOutput {\n const { t } = useTranslations();\n const knock = useKnockClient();\n const { connectionStatus, knockMsTeamsChannelId } = useKnockMsTeamsClient();\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<MsTeamsChannelConnection[]>(\n // Only fetch when Microsoft Teams is connected\n connectionStatus === \"connected\"\n ? [QUERY_KEY, knockMsTeamsChannelId, collection, objectId]\n : null,\n async () => {\n return knock.objects\n .getChannelData({\n collection,\n objectId,\n channelId: knockMsTeamsChannelId,\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: MsTeamsChannelConnection[],\n ) => {\n setIsUpdating(true);\n try {\n await mutate(\n () =>\n knock.objects\n .setChannelData({\n objectId,\n collection,\n channelId: knockMsTeamsChannelId,\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(\"msTeamsChannelSetError\") || \"\");\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 useConnectedMsTeamsChannels;\n"],"names":["QUERY_KEY","useConnectedMsTeamsChannels","msTeamsChannelsRecipientObject","objectId","collection","t","useTranslations","knock","useKnockClient","connectionStatus","knockMsTeamsChannelId","useKnockMsTeamsClient","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,EAA4B;AAAA,EACnCC,gCAAgC;AAAA,IAAEC,UAAAA;AAAAA,IAAUC,YAAAA;AAAAA,EAAAA;AACZ,GAAsC;AAChE,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GACxBC,IAAQC,EAAe,GACvB;AAAA,IAAEC,kBAAAA;AAAAA,IAAkBC,uBAAAA;AAAAA,MAA0BC,EAAsB,GAEpE,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,GAAuBN,GAAYD,CAAQ,IACvD;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,wBAAwB,KAAK,EAAE;AAAA,MAAA;AAE5CW,MAAAA,EAAc,EAAK;AAAA,IACrB;AAAA,IAKEqB,UAAUtB;AAAAA,IACVuB,SAASjB,KAAaD;AAAAA,IACtBR,OAAAA;AAAAA,EACF;AACF;"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { useKnockMsTeamsClient as T } from "../context/KnockMsTeamsProvider.mjs";
|
|
2
|
-
import { useMemo as _, useCallback as m } from "react";
|
|
3
|
-
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
4
|
-
import { TENANT_OBJECT_COLLECTION as k } from "@knocklabs/client";
|
|
5
|
-
import { useKnockClient as d } from "../../core/context/KnockProvider.mjs";
|
|
6
|
-
import "fast-deep-equal";
|
|
7
|
-
import "date-fns";
|
|
8
|
-
import "swr/infinite";
|
|
9
|
-
import "swr";
|
|
10
|
-
const p = "https://login.microsoftonline.com/organizations/adminconsent", h = "/providers/ms-teams/authenticate";
|
|
11
|
-
function S(r, c) {
|
|
12
|
-
const e = d(), {
|
|
13
|
-
setConnectionStatus: t,
|
|
14
|
-
knockMsTeamsChannelId: n,
|
|
15
|
-
tenantId: o,
|
|
16
|
-
setActionLabel: i
|
|
17
|
-
} = T(), a = _(() => e.host + h, [e.host]), u = m(() => {
|
|
18
|
-
const s = {
|
|
19
|
-
state: JSON.stringify({
|
|
20
|
-
redirect_url: c,
|
|
21
|
-
ms_teams_tenant_object: {
|
|
22
|
-
object_id: o,
|
|
23
|
-
collection: k
|
|
24
|
-
},
|
|
25
|
-
channel_id: n,
|
|
26
|
-
public_key: e.apiKey,
|
|
27
|
-
user_token: e.userToken
|
|
28
|
-
}),
|
|
29
|
-
client_id: r,
|
|
30
|
-
redirect_uri: a
|
|
31
|
-
};
|
|
32
|
-
return `${p}?${new URLSearchParams(s)}`;
|
|
33
|
-
}, [c, o, n, e.apiKey, e.userToken, r, a]), l = m(async () => {
|
|
34
|
-
i(null), t("disconnecting");
|
|
35
|
-
try {
|
|
36
|
-
const s = await e.msTeams.revokeAccessToken({
|
|
37
|
-
tenant: o,
|
|
38
|
-
knockChannelId: n
|
|
39
|
-
});
|
|
40
|
-
t(s === "ok" ? "disconnected" : "error");
|
|
41
|
-
} catch {
|
|
42
|
-
t("error");
|
|
43
|
-
}
|
|
44
|
-
}, [t, e.msTeams, o, n, i]);
|
|
45
|
-
return {
|
|
46
|
-
buildMsTeamsAuthUrl: u,
|
|
47
|
-
disconnectFromMsTeams: l
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
export {
|
|
51
|
-
S as default
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=useMsTeamsAuth.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useMsTeamsAuth.mjs","sources":["../../../../../src/modules/ms-teams/hooks/useMsTeamsAuth.ts"],"sourcesContent":["import { useKnockMsTeamsClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback, useMemo } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst MS_TEAMS_ADMINCONSENT_URL =\n \"https://login.microsoftonline.com/organizations/adminconsent\";\n\nconst AUTH_REDIRECT_PATH = \"/providers/ms-teams/authenticate\";\n\ninterface UseMsTeamsAuthOutput {\n buildMsTeamsAuthUrl: () => string;\n disconnectFromMsTeams: () => void;\n}\n\nfunction useMsTeamsAuth(\n msTeamsBotId: string,\n redirectUrl?: string,\n): UseMsTeamsAuthOutput {\n const knock = useKnockClient();\n const {\n setConnectionStatus,\n knockMsTeamsChannelId,\n tenantId,\n setActionLabel,\n } = useKnockMsTeamsClient();\n\n const authRedirectUri = useMemo(\n () => knock.host + AUTH_REDIRECT_PATH,\n [knock.host],\n );\n\n const buildMsTeamsAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n ms_teams_tenant_object: {\n object_id: tenantId,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockMsTeamsChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: msTeamsBotId,\n redirect_uri: authRedirectUri,\n };\n return `${MS_TEAMS_ADMINCONSENT_URL}?${new URLSearchParams(rawParams)}`;\n }, [\n redirectUrl,\n tenantId,\n knockMsTeamsChannelId,\n knock.apiKey,\n knock.userToken,\n msTeamsBotId,\n authRedirectUri,\n ]);\n\n const disconnectFromMsTeams = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revokeResult = await knock.msTeams.revokeAccessToken({\n tenant: tenantId,\n knockChannelId: knockMsTeamsChannelId,\n });\n\n setConnectionStatus(revokeResult === \"ok\" ? \"disconnected\" : \"error\");\n } catch (_error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.msTeams,\n tenantId,\n knockMsTeamsChannelId,\n setActionLabel,\n ]);\n\n return { buildMsTeamsAuthUrl, disconnectFromMsTeams };\n}\n\nexport default useMsTeamsAuth;\n"],"names":["MS_TEAMS_ADMINCONSENT_URL","AUTH_REDIRECT_PATH","useMsTeamsAuth","msTeamsBotId","redirectUrl","knock","useKnockClient","setConnectionStatus","knockMsTeamsChannelId","tenantId","setActionLabel","useKnockMsTeamsClient","authRedirectUri","useMemo","host","buildMsTeamsAuthUrl","useCallback","rawParams","state","JSON","stringify","redirect_url","ms_teams_tenant_object","object_id","collection","TENANT_OBJECT_COLLECTION","channel_id","public_key","apiKey","user_token","userToken","client_id","redirect_uri","URLSearchParams","disconnectFromMsTeams","revokeResult","msTeams","revokeAccessToken","tenant","knockChannelId"],"mappings":";;;;;;;;;AAMA,MAAMA,IACJ,gEAEIC,IAAqB;AAO3B,SAASC,EACPC,GACAC,GACsB;AACtB,QAAMC,IAAQC,EAAe,GACvB;AAAA,IACJC,qBAAAA;AAAAA,IACAC,uBAAAA;AAAAA,IACAC,UAAAA;AAAAA,IACAC,gBAAAA;AAAAA,MACEC,EAAsB,GAEpBC,IAAkBC,EACtB,MAAMR,EAAMS,OAAOb,GACnB,CAACI,EAAMS,IAAI,CACb,GAEMC,IAAsBC,EAAY,MAAM;AAC5C,UAAMC,IAAY;AAAA,MAChBC,OAAOC,KAAKC,UAAU;AAAA,QACpBC,cAAcjB;AAAAA,QACdkB,wBAAwB;AAAA,UACtBC,WAAWd;AAAAA,UACXe,YAAYC;AAAAA,QACd;AAAA,QACAC,YAAYlB;AAAAA,QACZmB,YAAYtB,EAAMuB;AAAAA,QAClBC,YAAYxB,EAAMyB;AAAAA,MAAAA,CACnB;AAAA,MACDC,WAAW5B;AAAAA,MACX6B,cAAcpB;AAAAA,IAChB;AACA,WAAO,GAAGZ,CAAyB,IAAI,IAAIiC,gBAAgBhB,CAAS,CAAC;AAAA,EACvE,GAAG,CACDb,GACAK,GACAD,GACAH,EAAMuB,QACNvB,EAAMyB,WACN3B,GACAS,CAAe,CAChB,GAEKsB,IAAwBlB,EAAY,YAAY;AACpDN,IAAAA,EAAe,IAAI,GACnBH,EAAoB,eAAe;AAC/B,QAAA;AACF,YAAM4B,IAAe,MAAM9B,EAAM+B,QAAQC,kBAAkB;AAAA,QACzDC,QAAQ7B;AAAAA,QACR8B,gBAAgB/B;AAAAA,MAAAA,CACjB;AAEmB2B,MAAAA,EAAAA,MAAiB,OAAO,iBAAiB,OAAO;AAAA,YACrD;AACf5B,MAAAA,EAAoB,OAAO;AAAA,IAAA;AAAA,EAC7B,GACC,CACDA,GACAF,EAAM+B,SACN3B,GACAD,GACAE,CAAc,CACf;AAEM,SAAA;AAAA,IAAEK,qBAAAA;AAAAA,IAAqBmB,uBAAAA;AAAAA,EAAsB;AACtD;"}
|
|
@@ -1,41 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1,38 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1,51 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1,49 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1,78 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1,68 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1,52 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
|
@@ -1,47 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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;"}
|
package/dist/types/index.d.ts
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
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
|
|
@@ -1 +0,0 @@
|
|
|
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"}
|