@knocklabs/react-core 0.6.14 → 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 +8 -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 +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"en.mjs","sources":["../../../../../src/modules/i18n/languages/en.ts"],"sourcesContent":["import { I18nContent } from \".\";\n\nconst en: I18nContent = {\n translations: {\n archiveNotification: \"Archive this notification\",\n archiveRead: \"Archive Read\",\n markAllAsRead: \"Mark all as read\",\n notifications: \"Notifications\",\n emptyFeedTitle: \"No notifications yet\",\n emptyFeedBody: \"We'll let you know when we've got something new for you.\",\n all: \"All\",\n unread: \"Unread\",\n read: \"Read\",\n unseen: \"Unseen\",\n msTeamsChannelSetError: \"Error setting channel.\",\n msTeamsConnect: \"Connect to Microsoft Teams\",\n msTeamsConnected: \"Connected\",\n msTeamsConnecting: \"Connecting to Microsoft Teams…\",\n msTeamsConnectionErrorExists:\n \"Try reconnecting to Microsoft Teams to find and select channels from your teams.\",\n msTeamsConnectionErrorOccurred:\n \"There was an error connecting to Microsoft Teams. Try reconnecting to find and select channels from your teams.\",\n msTeamsConnectContainerDescription:\n \"Connect to get notifications in Microsoft Teams\",\n msTeamsDisconnect: \"Disconnect\",\n msTeamsDisconnecting: \"Disconnecting from Microsoft Teams…\",\n msTeamsError: \"Error\",\n msTeamsReconnect: \"Reconnect\",\n msTeamsTenantIdNotSet: \"Microsoft Teams tenant ID not set.\",\n slackConnectChannel: \"Connect channel\",\n slackChannelId: \"Slack channel ID\",\n slackConnecting: \"Connecting to Slack...\",\n slackDisconnecting: \"Disconnecting...\",\n slackConnect: \"Connect to Slack\",\n slackConnected: \"Connected\",\n slackConnectContainerDescription:\n \"Connect to get notifications in your Slack workspace.\",\n slackSearchbarDisconnected: \"Slack is not connected.\",\n slackSearchbarNoChannelsConnected: \"Search channels\",\n slackSearchbarNoChannelsFound: \"No slack channels.\",\n slackSearchbarChannelsError: \"Error fetching channels.\",\n slackSearchChannels: \"Search channels\",\n slackConnectionErrorExists:\n \"Try reconnecting to Slack to find and select channels from your workspace.\",\n slackConnectionErrorOccurred:\n \"There was an error connecting to Slack. Try reconnecting to find and select channels from your workspace.\",\n slackChannelAlreadyConnected: \"Error: already connected\",\n slackError: \"Error\",\n slackDisconnect: \"Disconnect\",\n slackChannelSetError: \"Error setting channel.\",\n slackAccessTokenNotSet: \"Access token not set.\",\n slackReconnect: \"Reconnect\",\n },\n locale: \"en\",\n};\n\nexport default en;\n"],"names":["en","translations","archiveNotification","archiveRead","markAllAsRead","notifications","emptyFeedTitle","emptyFeedBody","all","unread","read","unseen","msTeamsChannelSetError","msTeamsConnect","msTeamsConnected","msTeamsConnecting","msTeamsConnectionErrorExists","msTeamsConnectionErrorOccurred","msTeamsConnectContainerDescription","msTeamsDisconnect","msTeamsDisconnecting","msTeamsError","msTeamsReconnect","msTeamsTenantIdNotSet","slackConnectChannel","slackChannelId","slackConnecting","slackDisconnecting","slackConnect","slackConnected","slackConnectContainerDescription","slackSearchbarDisconnected","slackSearchbarNoChannelsConnected","slackSearchbarNoChannelsFound","slackSearchbarChannelsError","slackSearchChannels","slackConnectionErrorExists","slackConnectionErrorOccurred","slackChannelAlreadyConnected","slackError","slackDisconnect","slackChannelSetError","slackAccessTokenNotSet","slackReconnect","locale"],"mappings":"AAEA,MAAMA,IAAkB;AAAA,EACtBC,cAAc;AAAA,IACZC,qBAAqB;AAAA,IACrBC,aAAa;AAAA,IACbC,eAAe;AAAA,IACfC,eAAe;AAAA,IACfC,gBAAgB;AAAA,IAChBC,eAAe;AAAA,IACfC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,wBAAwB;AAAA,IACxBC,gBAAgB;AAAA,IAChBC,kBAAkB;AAAA,IAClBC,mBAAmB;AAAA,IACnBC,8BACE;AAAA,IACFC,gCACE;AAAA,IACFC,oCACE;AAAA,IACFC,mBAAmB;AAAA,IACnBC,sBAAsB;AAAA,IACtBC,cAAc;AAAA,IACdC,kBAAkB;AAAA,IAClBC,uBAAuB;AAAA,IACvBC,qBAAqB;AAAA,IACrBC,gBAAgB;AAAA,IAChBC,iBAAiB;AAAA,IACjBC,oBAAoB;AAAA,IACpBC,cAAc;AAAA,IACdC,gBAAgB;AAAA,IAChBC,kCACE;AAAA,IACFC,4BAA4B;AAAA,IAC5BC,mCAAmC;AAAA,IACnCC,+BAA+B;AAAA,IAC/BC,6BAA6B;AAAA,IAC7BC,qBAAqB;AAAA,IACrBC,4BACE;AAAA,IACFC,8BACE;AAAA,IACFC,8BAA8B;AAAA,IAC9BC,YAAY;AAAA,IACZC,iBAAiB;AAAA,IACjBC,sBAAsB;AAAA,IACtBC,wBAAwB;AAAA,IACxBC,gBAAgB;AAAA,EAClB;AAAA,EACAC,QAAQ;AACV;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../../../../src/modules/i18n/languages/index.ts"],"sourcesContent":["import de from \"./de\";\nimport en from \"./en\";\n\nexport interface Translations {\n readonly archiveRead: string;\n readonly emptyFeedTitle: string;\n readonly emptyFeedBody: string;\n readonly notifications: string;\n readonly poweredBy: string;\n readonly markAllAsRead: string;\n readonly archiveNotification: string;\n readonly all: string;\n readonly unread: string;\n readonly read: string;\n readonly unseen: string;\n readonly msTeamsChannelSetError: string;\n readonly msTeamsConnect: string;\n readonly msTeamsConnected: string;\n readonly msTeamsConnecting: string;\n readonly msTeamsConnectionErrorExists: string;\n readonly msTeamsConnectionErrorOccurred: string;\n readonly msTeamsConnectContainerDescription: string;\n readonly msTeamsDisconnect: string;\n readonly msTeamsDisconnecting: string;\n readonly msTeamsError: string;\n readonly msTeamsReconnect: string;\n readonly msTeamsTenantIdNotSet: string;\n readonly slackConnectChannel: string;\n readonly slackChannelId: string;\n readonly slackConnecting: string;\n readonly slackDisconnecting: string;\n readonly slackConnect: string;\n readonly slackConnected: string;\n readonly slackConnectContainerDescription: string;\n readonly slackSearchbarDisconnected: string;\n readonly slackSearchbarNoChannelsConnected: string;\n readonly slackSearchbarNoChannelsFound: string;\n readonly slackSearchbarChannelsError: string;\n readonly slackSearchChannels: string;\n readonly slackConnectionErrorOccurred: string;\n readonly slackConnectionErrorExists: string;\n readonly slackChannelAlreadyConnected: string;\n readonly slackError: string;\n readonly slackDisconnect: string;\n readonly slackChannelSetError: string;\n readonly slackAccessTokenNotSet: string;\n readonly slackReconnect: string;\n}\n\nexport interface I18nContent {\n readonly translations: Partial<Translations>;\n readonly locale: string;\n}\n\nexport const locales = { en, de };\n"],"names":["locales","en","de"],"mappings":";;AAsDO,MAAMA,IAAU;AAAA,EAAEC,IAAAA;AAAAA,EAAIC,IAAAA;AAAG;"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import * as o from "react";
|
|
2
|
+
import { useKnockClient as l } from "../../core/context/KnockProvider.mjs";
|
|
3
|
+
import "@knocklabs/client";
|
|
4
|
+
import "fast-deep-equal";
|
|
5
|
+
import { msTeamsProviderKey as v } from "../../core/utils.mjs";
|
|
6
|
+
import C from "../hooks/useMsTeamsConnectionStatus.mjs";
|
|
7
|
+
import "swr/infinite";
|
|
8
|
+
import "swr";
|
|
9
|
+
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
10
|
+
const n = o.createContext(null), M = ({
|
|
11
|
+
knockMsTeamsChannelId: t,
|
|
12
|
+
tenantId: e,
|
|
13
|
+
children: i
|
|
14
|
+
}) => {
|
|
15
|
+
const m = l(), {
|
|
16
|
+
connectionStatus: r,
|
|
17
|
+
setConnectionStatus: c,
|
|
18
|
+
errorLabel: s,
|
|
19
|
+
setErrorLabel: a,
|
|
20
|
+
actionLabel: u,
|
|
21
|
+
setActionLabel: p
|
|
22
|
+
} = C(m, t, e);
|
|
23
|
+
return /* @__PURE__ */ o.createElement(n.Provider, { key: v({
|
|
24
|
+
knockMsTeamsChannelId: t,
|
|
25
|
+
tenantId: e,
|
|
26
|
+
connectionStatus: r,
|
|
27
|
+
errorLabel: s
|
|
28
|
+
}), value: {
|
|
29
|
+
connectionStatus: r,
|
|
30
|
+
setConnectionStatus: c,
|
|
31
|
+
errorLabel: s,
|
|
32
|
+
setErrorLabel: a,
|
|
33
|
+
actionLabel: u,
|
|
34
|
+
setActionLabel: p,
|
|
35
|
+
knockMsTeamsChannelId: t,
|
|
36
|
+
tenantId: e
|
|
37
|
+
} }, i);
|
|
38
|
+
}, S = () => {
|
|
39
|
+
const t = o.useContext(n);
|
|
40
|
+
if (!t)
|
|
41
|
+
throw new Error("useKnockMsTeamsClient must be used within a KnockMsTeamsProvider");
|
|
42
|
+
return t;
|
|
43
|
+
};
|
|
44
|
+
export {
|
|
45
|
+
M as KnockMsTeamsProvider,
|
|
46
|
+
S as useKnockMsTeamsClient
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=KnockMsTeamsProvider.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KnockMsTeamsProvider.mjs","sources":["../../../../../src/modules/ms-teams/context/KnockMsTeamsProvider.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { PropsWithChildren } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\nimport { msTeamsProviderKey } from \"../../core/utils\";\nimport { useMsTeamsConnectionStatus } from \"../hooks\";\nimport { ConnectionStatus } from \"../hooks/useMsTeamsConnectionStatus\";\n\nexport interface KnockMsTeamsProviderState {\n knockMsTeamsChannelId: string;\n tenantId: 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 MsTeamsProviderStateContext =\n React.createContext<KnockMsTeamsProviderState | null>(null);\n\nexport interface KnockMsTeamsProviderProps {\n knockMsTeamsChannelId: string;\n tenantId: string;\n}\n\nexport const KnockMsTeamsProvider: React.FC<\n PropsWithChildren<KnockMsTeamsProviderProps>\n> = ({ knockMsTeamsChannelId, tenantId, children }) => {\n const knock = useKnockClient();\n\n const {\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n } = useMsTeamsConnectionStatus(knock, knockMsTeamsChannelId, tenantId);\n\n return (\n <MsTeamsProviderStateContext.Provider\n key={msTeamsProviderKey({\n knockMsTeamsChannelId,\n tenantId,\n connectionStatus,\n errorLabel,\n })}\n value={{\n connectionStatus,\n setConnectionStatus,\n errorLabel,\n setErrorLabel,\n actionLabel,\n setActionLabel,\n knockMsTeamsChannelId,\n tenantId,\n }}\n >\n {children}\n </MsTeamsProviderStateContext.Provider>\n );\n};\n\nexport const useKnockMsTeamsClient = (): KnockMsTeamsProviderState => {\n const context = React.useContext(MsTeamsProviderStateContext);\n if (!context) {\n throw new Error(\n \"useKnockMsTeamsClient must be used within a KnockMsTeamsProvider\",\n );\n }\n return context;\n};\n"],"names":["MsTeamsProviderStateContext","React","createContext","KnockMsTeamsProvider","knockMsTeamsChannelId","tenantId","children","knock","useKnockClient","connectionStatus","setConnectionStatus","errorLabel","setErrorLabel","actionLabel","setActionLabel","useMsTeamsConnectionStatus","msTeamsProviderKey","useKnockMsTeamsClient","context","useContext","Error"],"mappings":";;;;;;;;;AAmBA,MAAMA,IACJC,EAAMC,cAAgD,IAAI,GAO/CC,IAETA,CAAC;AAAA,EAAEC,uBAAAA;AAAAA,EAAuBC,UAAAA;AAAAA,EAAUC,UAAAA;AAAS,MAAM;AACrD,QAAMC,IAAQC,EAAe,GAEvB;AAAA,IACJC,kBAAAA;AAAAA,IACAC,qBAAAA;AAAAA,IACAC,YAAAA;AAAAA,IACAC,eAAAA;AAAAA,IACAC,aAAAA;AAAAA,IACAC,gBAAAA;AAAAA,EACEC,IAAAA,EAA2BR,GAAOH,GAAuBC,CAAQ;AAErE,SACG,gBAAAJ,EAAA,cAAAD,EAA4B,UAA5B,EACC,KAAKgB,EAAmB;AAAA,IACtBZ,uBAAAA;AAAAA,IACAC,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,IACAV,uBAAAA;AAAAA,IACAC,UAAAA;AAAAA,OAGDC,CACH;AAEJ,GAEaW,IAAwBA,MAAiC;AAC9DC,QAAAA,IAAUjB,EAAMkB,WAAWnB,CAA2B;AAC5D,MAAI,CAACkB;AACG,UAAA,IAAIE,MACR,kEACF;AAEKF,SAAAA;AACT;"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { useKnockMsTeamsClient as g } from "../context/KnockMsTeamsProvider.mjs";
|
|
2
|
+
import { useState as l } from "react";
|
|
3
|
+
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
4
|
+
import { useTranslations as S } from "../../i18n/hooks/useTranslations.mjs";
|
|
5
|
+
import "@knocklabs/client";
|
|
6
|
+
import { useKnockClient as T } from "../../core/context/KnockProvider.mjs";
|
|
7
|
+
import "fast-deep-equal";
|
|
8
|
+
import "date-fns";
|
|
9
|
+
import "swr/infinite";
|
|
10
|
+
import k from "swr";
|
|
11
|
+
const M = "MS_TEAMS_CONNECTED_CHANNELS";
|
|
12
|
+
function Y({
|
|
13
|
+
msTeamsChannelsRecipientObject: {
|
|
14
|
+
objectId: e,
|
|
15
|
+
collection: a
|
|
16
|
+
}
|
|
17
|
+
}) {
|
|
18
|
+
const {
|
|
19
|
+
t: m
|
|
20
|
+
} = S(), o = T(), {
|
|
21
|
+
connectionStatus: u,
|
|
22
|
+
knockMsTeamsChannelId: s
|
|
23
|
+
} = g(), [d, r] = l(null), [p, c] = l(!1), {
|
|
24
|
+
data: C,
|
|
25
|
+
mutate: h,
|
|
26
|
+
isValidating: f,
|
|
27
|
+
isLoading: E
|
|
28
|
+
} = k(
|
|
29
|
+
// Only fetch when Microsoft Teams is connected
|
|
30
|
+
u === "connected" ? [M, s, a, e] : null,
|
|
31
|
+
async () => o.objects.getChannelData({
|
|
32
|
+
collection: a,
|
|
33
|
+
objectId: e,
|
|
34
|
+
channelId: s
|
|
35
|
+
}).then((t) => {
|
|
36
|
+
var n;
|
|
37
|
+
return ((n = t.data) == null ? void 0 : n.connections) ?? [];
|
|
38
|
+
}).catch(() => []),
|
|
39
|
+
{
|
|
40
|
+
onSuccess: () => {
|
|
41
|
+
r(null);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
return {
|
|
46
|
+
data: C ?? null,
|
|
47
|
+
updateConnectedChannels: async (t) => {
|
|
48
|
+
c(!0);
|
|
49
|
+
try {
|
|
50
|
+
await h(() => o.objects.setChannelData({
|
|
51
|
+
objectId: e,
|
|
52
|
+
collection: a,
|
|
53
|
+
channelId: s,
|
|
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
|
+
r(m("msTeamsChannelSetError") || "");
|
|
67
|
+
}
|
|
68
|
+
c(!1);
|
|
69
|
+
},
|
|
70
|
+
updating: p,
|
|
71
|
+
loading: E || f,
|
|
72
|
+
error: d
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
export {
|
|
76
|
+
Y as default
|
|
77
|
+
};
|
|
78
|
+
//# sourceMappingURL=useConnectedMsTeamsChannels.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
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;"}
|
|
@@ -0,0 +1,53 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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;"}
|
|
@@ -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
|