@knocklabs/react-core 0.3.1 → 0.3.3
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 +26 -0
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/modules/core/utils.js +1 -1
- package/dist/cjs/modules/core/utils.js.map +1 -1
- package/dist/cjs/modules/i18n/languages/en.js +1 -1
- package/dist/cjs/modules/i18n/languages/en.js.map +1 -1
- package/dist/cjs/modules/i18n/languages/index.js.map +1 -1
- package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js +1 -1
- package/dist/cjs/modules/ms-teams/context/KnockMsTeamsProvider.js.map +1 -1
- 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 +1 -1
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsAuth.js.map +1 -1
- 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/useMsTeamsTeams.js +2 -0
- package/dist/cjs/modules/ms-teams/hooks/useMsTeamsTeams.js.map +1 -0
- package/dist/cjs/modules/slack/context/KnockSlackProvider.js +1 -1
- package/dist/cjs/modules/slack/context/KnockSlackProvider.js.map +1 -1
- package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js +1 -1
- package/dist/cjs/modules/slack/hooks/useConnectedSlackChannels.js.map +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js.map +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackChannels.js +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackChannels.js.map +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackConnectionStatus.js.map +1 -1
- package/dist/esm/index.mjs +36 -30
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/modules/core/utils.mjs +1 -1
- package/dist/esm/modules/core/utils.mjs.map +1 -1
- package/dist/esm/modules/i18n/languages/en.mjs +3 -0
- package/dist/esm/modules/i18n/languages/en.mjs.map +1 -1
- package/dist/esm/modules/i18n/languages/index.mjs.map +1 -1
- package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs +23 -20
- package/dist/esm/modules/ms-teams/context/KnockMsTeamsProvider.mjs.map +1 -1
- 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 +4 -2
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsAuth.mjs.map +1 -1
- 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/useMsTeamsTeams.mjs +50 -0
- package/dist/esm/modules/ms-teams/hooks/useMsTeamsTeams.mjs.map +1 -0
- package/dist/esm/modules/slack/context/KnockSlackProvider.mjs +27 -25
- package/dist/esm/modules/slack/context/KnockSlackProvider.mjs.map +1 -1
- package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs +58 -41
- package/dist/esm/modules/slack/hooks/useConnectedSlackChannels.mjs.map +1 -1
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs +18 -17
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs.map +1 -1
- package/dist/esm/modules/slack/hooks/useSlackChannels.mjs +13 -12
- package/dist/esm/modules/slack/hooks/useSlackChannels.mjs.map +1 -1
- package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs +6 -6
- package/dist/esm/modules/slack/hooks/useSlackConnectionStatus.mjs.map +1 -1
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces.d.ts +5 -0
- package/dist/types/interfaces.d.ts.map +1 -0
- package/dist/types/modules/core/utils.d.ts +2 -2
- package/dist/types/modules/core/utils.d.ts.map +1 -1
- package/dist/types/modules/i18n/languages/en.d.ts.map +1 -1
- package/dist/types/modules/i18n/languages/index.d.ts +3 -0
- package/dist/types/modules/i18n/languages/index.d.ts.map +1 -1
- package/dist/types/modules/ms-teams/hooks/index.d.ts +3 -0
- package/dist/types/modules/ms-teams/hooks/index.d.ts.map +1 -1
- 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/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/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 +1 -0
- package/dist/types/modules/ms-teams/index.d.ts.map +1 -1
- 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 +12 -2
- package/dist/types/modules/slack/context/KnockSlackProvider.d.ts.map +1 -1
- package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts +6 -6
- package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts.map +1 -1
- package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts +1 -1
- package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts.map +1 -1
- package/dist/types/modules/slack/index.d.ts +1 -1
- package/dist/types/modules/slack/index.d.ts.map +1 -1
- package/dist/types/modules/slack/{constants.d.ts → interfaces.d.ts} +3 -5
- package/dist/types/modules/slack/interfaces.d.ts.map +1 -0
- package/package.json +3 -3
- package/src/index.ts +1 -0
- package/src/interfaces.ts +4 -0
- package/src/modules/core/utils.ts +3 -3
- package/src/modules/i18n/languages/en.ts +5 -0
- package/src/modules/i18n/languages/index.ts +3 -0
- package/src/modules/ms-teams/hooks/index.ts +3 -0
- package/src/modules/ms-teams/hooks/useConnectedMsTeamsChannels.ts +100 -0
- package/src/modules/ms-teams/hooks/useMsTeamsChannels.ts +53 -0
- package/src/modules/ms-teams/hooks/useMsTeamsTeams.ts +112 -0
- package/src/modules/ms-teams/index.ts +1 -0
- package/src/modules/ms-teams/interfaces.ts +11 -0
- package/src/modules/slack/context/KnockSlackProvider.tsx +25 -8
- package/src/modules/slack/hooks/useConnectedSlackChannels.ts +56 -61
- package/src/modules/slack/hooks/useSlackAuth.ts +5 -5
- package/src/modules/slack/hooks/useSlackChannels.ts +2 -2
- package/src/modules/slack/hooks/useSlackConnectionStatus.ts +3 -3
- package/src/modules/slack/index.ts +1 -1
- package/src/modules/slack/{constants.ts → interfaces.ts} +3 -4
- package/dist/types/modules/slack/constants.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.mjs","sources":["../../../../src/modules/core/utils.ts"],"sourcesContent":["import Knock, { FeedClientOptions } from \"@knocklabs/client\";\nimport { intlFormatDistance, parseISO } from \"date-fns\";\nimport { ReactNode } from \"react\";\n\nexport function formatBadgeCount(count: number): string | number {\n return count > 9 ? \"9+\" : count;\n}\n\ntype FormatTimestampOptions = {\n locale?: string | string[];\n};\n\nexport function formatTimestamp(\n ts: string,\n options: FormatTimestampOptions = {},\n) {\n try {\n const parsedTs = parseISO(ts);\n const formatted = intlFormatDistance(parsedTs, new Date(), {\n locale: options.locale,\n });\n\n return formatted;\n } catch (_e) {\n return ts;\n }\n}\n\nexport function toSentenceCase(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function renderNodeOrFallback(node: ReactNode, fallback: ReactNode) {\n return node !== undefined ? node : fallback;\n}\n\n/*\n Used to build a consistent key for the KnockFeedProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function feedProviderKey(\n userId: Knock[\"userId\"],\n feedId: string,\n options: FeedClientOptions = {},\n) {\n return [\n userId,\n feedId,\n options.source,\n options.tenant,\n options.has_tenant,\n options.archived,\n ]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n\n/*\n Used to build a consistent key for the KnockSlackProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function slackProviderKey({\n knockSlackChannelId,\n
|
|
1
|
+
{"version":3,"file":"utils.mjs","sources":["../../../../src/modules/core/utils.ts"],"sourcesContent":["import Knock, { FeedClientOptions } from \"@knocklabs/client\";\nimport { intlFormatDistance, parseISO } from \"date-fns\";\nimport { ReactNode } from \"react\";\n\nexport function formatBadgeCount(count: number): string | number {\n return count > 9 ? \"9+\" : count;\n}\n\ntype FormatTimestampOptions = {\n locale?: string | string[];\n};\n\nexport function formatTimestamp(\n ts: string,\n options: FormatTimestampOptions = {},\n) {\n try {\n const parsedTs = parseISO(ts);\n const formatted = intlFormatDistance(parsedTs, new Date(), {\n locale: options.locale,\n });\n\n return formatted;\n } catch (_e) {\n return ts;\n }\n}\n\nexport function toSentenceCase(string: string): string {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nexport function renderNodeOrFallback(node: ReactNode, fallback: ReactNode) {\n return node !== undefined ? node : fallback;\n}\n\n/*\n Used to build a consistent key for the KnockFeedProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function feedProviderKey(\n userId: Knock[\"userId\"],\n feedId: string,\n options: FeedClientOptions = {},\n) {\n return [\n userId,\n feedId,\n options.source,\n options.tenant,\n options.has_tenant,\n options.archived,\n ]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n\n/*\n Used to build a consistent key for the KnockSlackProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function slackProviderKey({\n knockSlackChannelId,\n tenantId,\n connectionStatus,\n errorLabel,\n}: {\n knockSlackChannelId: string;\n tenantId: string;\n connectionStatus: string;\n errorLabel: string | null;\n}) {\n return [knockSlackChannelId, tenantId, connectionStatus, errorLabel]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n\n/*\n Used to build a consistent key for the KnockMsTeamsProvider so that React knows when\n to trigger a re-render of the context when a key property changes.\n*/\nexport function msTeamsProviderKey({\n knockMsTeamsChannelId,\n tenantId,\n connectionStatus,\n errorLabel,\n}: {\n knockMsTeamsChannelId: string;\n tenantId: string;\n connectionStatus: string;\n errorLabel: string | null;\n}) {\n return [knockMsTeamsChannelId, tenantId, connectionStatus, errorLabel]\n .filter((f) => f !== null && f !== undefined)\n .join(\"-\");\n}\n"],"names":["formatBadgeCount","count","formatTimestamp","ts","options","parsedTs","parseISO","formatted","intlFormatDistance","Date","locale","toSentenceCase","string","charAt","toUpperCase","slice","renderNodeOrFallback","node","fallback","undefined","feedProviderKey","userId","feedId","source","tenant","has_tenant","archived","filter","f","join","slackProviderKey","knockSlackChannelId","tenantId","connectionStatus","errorLabel","msTeamsProviderKey","knockMsTeamsChannelId"],"mappings":";AAIO,SAASA,EAAiBC,GAAgC;AACxDA,SAAAA,IAAQ,IAAI,OAAOA;AAC5B;AAMO,SAASC,EACdC,GACAC,IAAkC,IAClC;AACI,MAAA;AACIC,UAAAA,IAAWC,EAASH,CAAE;AAKrBI,WAJWC,EAAmBH,GAAU,oBAAII,QAAQ;AAAA,MACzDC,QAAQN,EAAQM;AAAAA,IAAAA,CACjB;AAAA,UAGU;AACJP,WAAAA;AAAAA,EACT;AACF;AAEO,SAASQ,EAAeC,GAAwB;AAC9CA,SAAAA,EAAOC,OAAO,CAAC,EAAEC,gBAAgBF,EAAOG,MAAM,CAAC;AACxD;AAEgBC,SAAAA,EAAqBC,GAAiBC,GAAqB;AAClED,SAAAA,MAASE,SAAYF,IAAOC;AACrC;AAMO,SAASE,EACdC,GACAC,GACAlB,IAA6B,CAAA,GAC7B;AACO,SAAA,CACLiB,GACAC,GACAlB,EAAQmB,QACRnB,EAAQoB,QACRpB,EAAQqB,YACRrB,EAAQsB,QAAQ,EAEfC,OAAQC,OAAMA,KAAM,IAAuB,EAC3CC,KAAK,GAAG;AACb;AAMO,SAASC,EAAiB;AAAA,EAC/BC,qBAAAA;AAAAA,EACAC,UAAAA;AAAAA,EACAC,kBAAAA;AAAAA,EACAC,YAAAA;AAMF,GAAG;AACD,SAAO,CAACH,GAAqBC,GAAUC,GAAkBC,CAAU,EAChEP,OAAQC,CAAMA,MAAAA,KAAM,IAAuB,EAC3CC,KAAK,GAAG;AACb;AAMO,SAASM,EAAmB;AAAA,EACjCC,uBAAAA;AAAAA,EACAJ,UAAAA;AAAAA,EACAC,kBAAAA;AAAAA,EACAC,YAAAA;AAMF,GAAG;AACD,SAAO,CAACE,GAAuBJ,GAAUC,GAAkBC,CAAU,EAClEP,OAAQC,CAAMA,MAAAA,KAAM,IAAuB,EAC3CC,KAAK,GAAG;AACb;"}
|
|
@@ -10,9 +10,12 @@ const n = {
|
|
|
10
10
|
unread: "Unread",
|
|
11
11
|
read: "Read",
|
|
12
12
|
unseen: "Unseen",
|
|
13
|
+
msTeamsChannelSetError: "Error setting channel.",
|
|
13
14
|
msTeamsConnect: "Connect to Microsoft Teams",
|
|
14
15
|
msTeamsConnected: "Connected",
|
|
15
16
|
msTeamsConnecting: "Connecting to Microsoft Teams…",
|
|
17
|
+
msTeamsConnectionErrorExists: "Try reconnecting to Microsoft Teams to find and select channels from your teams.",
|
|
18
|
+
msTeamsConnectionErrorOccurred: "There was an error connecting to Microsoft Teams. Try reconnecting to find and select channels from your teams.",
|
|
16
19
|
msTeamsConnectContainerDescription: "Connect to get notifications in Microsoft Teams",
|
|
17
20
|
msTeamsDisconnect: "Disconnect",
|
|
18
21
|
msTeamsDisconnecting: "Disconnecting from Microsoft Teams…",
|
|
@@ -1 +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 msTeamsConnect: \"Connect to Microsoft Teams\",\n msTeamsConnected: \"Connected\",\n msTeamsConnecting: \"Connecting to Microsoft 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 slackSearchbarMultipleChannels: \"Multiple channels 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","msTeamsConnect","msTeamsConnected","msTeamsConnecting","msTeamsConnectContainerDescription","msTeamsDisconnect","msTeamsDisconnecting","msTeamsError","msTeamsReconnect","msTeamsTenantIdNotSet","slackConnectChannel","slackChannelId","slackConnecting","slackDisconnecting","slackConnect","slackConnected","slackConnectContainerDescription","slackSearchbarDisconnected","slackSearchbarMultipleChannels","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,gBAAgB;AAAA,IAChBC,kBAAkB;AAAA,IAClBC,mBAAmB;AAAA,IACnBC,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,gCAAgC;AAAA,IAChCC,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;"}
|
|
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 slackSearchbarMultipleChannels: \"Multiple channels 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","slackSearchbarMultipleChannels","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,gCAAgC;AAAA,IAChCC,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;"}
|
|
@@ -1 +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 msTeamsConnect: string;\n readonly msTeamsConnected: string;\n readonly msTeamsConnecting: 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 slackSearchbarMultipleChannels: 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":";;
|
|
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 slackSearchbarMultipleChannels: 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":";;AAuDO,MAAMA,IAAU;AAAA,EAAEC,IAAAA;AAAAA,EAAIC,IAAAA;AAAG;"}
|
|
@@ -1,45 +1,48 @@
|
|
|
1
1
|
import * as o from "react";
|
|
2
|
-
import { useKnockClient as
|
|
2
|
+
import { useKnockClient as l } from "../../core/context/KnockProvider.mjs";
|
|
3
3
|
import "@knocklabs/client";
|
|
4
4
|
import "zustand/shallow";
|
|
5
5
|
import { msTeamsProviderKey as v } from "../../core/utils.mjs";
|
|
6
6
|
import C from "../hooks/useMsTeamsConnectionStatus.mjs";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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,
|
|
10
13
|
children: i
|
|
11
14
|
}) => {
|
|
12
|
-
const
|
|
15
|
+
const m = l(), {
|
|
13
16
|
connectionStatus: r,
|
|
14
|
-
setConnectionStatus:
|
|
17
|
+
setConnectionStatus: c,
|
|
15
18
|
errorLabel: s,
|
|
16
19
|
setErrorLabel: a,
|
|
17
20
|
actionLabel: u,
|
|
18
|
-
setActionLabel:
|
|
19
|
-
} = C(
|
|
21
|
+
setActionLabel: p
|
|
22
|
+
} = C(m, t, e);
|
|
20
23
|
return /* @__PURE__ */ o.createElement(n.Provider, { key: v({
|
|
21
|
-
knockMsTeamsChannelId:
|
|
22
|
-
tenantId:
|
|
24
|
+
knockMsTeamsChannelId: t,
|
|
25
|
+
tenantId: e,
|
|
23
26
|
connectionStatus: r,
|
|
24
27
|
errorLabel: s
|
|
25
28
|
}), value: {
|
|
26
29
|
connectionStatus: r,
|
|
27
|
-
setConnectionStatus:
|
|
30
|
+
setConnectionStatus: c,
|
|
28
31
|
errorLabel: s,
|
|
29
32
|
setErrorLabel: a,
|
|
30
33
|
actionLabel: u,
|
|
31
|
-
setActionLabel:
|
|
32
|
-
knockMsTeamsChannelId:
|
|
33
|
-
tenantId:
|
|
34
|
+
setActionLabel: p,
|
|
35
|
+
knockMsTeamsChannelId: t,
|
|
36
|
+
tenantId: e
|
|
34
37
|
} }, i);
|
|
35
|
-
},
|
|
36
|
-
const
|
|
37
|
-
if (!
|
|
38
|
+
}, S = () => {
|
|
39
|
+
const t = o.useContext(n);
|
|
40
|
+
if (!t)
|
|
38
41
|
throw new Error("useKnockMsTeamsClient must be used within a KnockMsTeamsProvider");
|
|
39
|
-
return
|
|
42
|
+
return t;
|
|
40
43
|
};
|
|
41
44
|
export {
|
|
42
|
-
|
|
43
|
-
|
|
45
|
+
M as KnockMsTeamsProvider,
|
|
46
|
+
S as useKnockMsTeamsClient
|
|
44
47
|
};
|
|
45
48
|
//# sourceMappingURL=KnockMsTeamsProvider.mjs.map
|
|
@@ -1 +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":"
|
|
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,KAER;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,EAAAA,KAGDC,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 "zustand/shallow";
|
|
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,EAAW;AACvB,GAAsC;AAChE,QAAA;AAAA,IAAEC,GAAAA;AAAAA,MAAMC,EAAgB,GACxBC,IAAQC,KACR;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,CAAE,CAAA;AAAA,IAEnB;AAAA,MACEC,WAAWA,MAAM;AACfjB,QAAAA,EAAS,IAAI;AAAA,MACf;AAAA,IACF;AAAA,EAAA;AA8BK,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,UAAsB;AAAA,QAAA,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,MAC5C;AACAW,MAAAA,EAAc,EAAK;AAAA,IAAA;AAAA,IAMnBqB,UAAUtB;AAAAA,IACVuB,SAASjB,KAAaD;AAAAA,IACtBR,OAAAA;AAAAA,EAAAA;AAEJ;"}
|
|
@@ -5,8 +5,10 @@ import { TENANT_OBJECT_COLLECTION as k } from "@knocklabs/client";
|
|
|
5
5
|
import { useKnockClient as d } from "../../core/context/KnockProvider.mjs";
|
|
6
6
|
import "zustand/shallow";
|
|
7
7
|
import "date-fns";
|
|
8
|
+
import "swr/infinite";
|
|
9
|
+
import "swr";
|
|
8
10
|
const p = "https://login.microsoftonline.com/organizations/adminconsent", h = "/providers/ms-teams/authenticate";
|
|
9
|
-
function
|
|
11
|
+
function S(r, c) {
|
|
10
12
|
const e = d(), {
|
|
11
13
|
setConnectionStatus: t,
|
|
12
14
|
knockMsTeamsChannelId: n,
|
|
@@ -46,6 +48,6 @@ function y(r, c) {
|
|
|
46
48
|
};
|
|
47
49
|
}
|
|
48
50
|
export {
|
|
49
|
-
|
|
51
|
+
S as default
|
|
50
52
|
};
|
|
51
53
|
//# sourceMappingURL=useMsTeamsAuth.mjs.map
|
|
@@ -1 +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":"
|
|
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,KACR;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,IAAAA;AAEhB,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,IAC7B;AAAA,EAAA,GACC,CACDA,GACAF,EAAM+B,SACN3B,GACAD,GACAE,CAAc,CACf;AAEM,SAAA;AAAA,IAAEK,qBAAAA;AAAAA,IAAqBmB,uBAAAA;AAAAA,EAAAA;AAChC;"}
|
|
@@ -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 "zustand/shallow";
|
|
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,KACR;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,IACzB;AAAA,EAAA,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,EAAA;AAE1B;"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { useMemo as S, useEffect as r } from "react";
|
|
2
|
+
import E from "swr/infinite";
|
|
3
|
+
import { useKnockClient as g } from "../../core/context/KnockProvider.mjs";
|
|
4
|
+
import "@knocklabs/client";
|
|
5
|
+
import "zustand/shallow";
|
|
6
|
+
import "date-fns";
|
|
7
|
+
import { useKnockMsTeamsClient as x } from "../context/KnockMsTeamsProvider.mjs";
|
|
8
|
+
const I = 1e3, T = "MS_TEAMS_TEAMS";
|
|
9
|
+
function $(t, e) {
|
|
10
|
+
return t === 0 ? [T, ""] : e && ["", null].includes(e.skip_token) ? null : [T, e.skip_token ?? ""];
|
|
11
|
+
}
|
|
12
|
+
function U({
|
|
13
|
+
queryOptions: t = {}
|
|
14
|
+
}) {
|
|
15
|
+
const e = g(), {
|
|
16
|
+
knockMsTeamsChannelId: M,
|
|
17
|
+
tenantId: _,
|
|
18
|
+
connectionStatus: o
|
|
19
|
+
} = x(), h = (n) => e.msTeams.getTeams({
|
|
20
|
+
knockChannelId: M,
|
|
21
|
+
tenant: _,
|
|
22
|
+
queryOptions: {
|
|
23
|
+
$skiptoken: n == null ? void 0 : n[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: c,
|
|
30
|
+
error: l,
|
|
31
|
+
isLoading: m,
|
|
32
|
+
isValidating: s,
|
|
33
|
+
setSize: i,
|
|
34
|
+
mutate: C
|
|
35
|
+
} = E($, h, {
|
|
36
|
+
initialSize: 0,
|
|
37
|
+
revalidateOnFocus: !1
|
|
38
|
+
}), f = c == null ? void 0 : c.at(-1), k = f === void 0 || !!f.skip_token, a = S(() => (c ?? []).flatMap((n) => n == null ? void 0 : n.ms_teams_teams).filter((n) => !!n), [c]), d = (t == null ? void 0 : t.maxCount) || I;
|
|
39
|
+
return r(() => {
|
|
40
|
+
o === "connected" && !l && k && !m && !s && a.length < d && i((n) => n + 1);
|
|
41
|
+
}, [a.length, i, k, m, s, d, l, o]), {
|
|
42
|
+
data: a,
|
|
43
|
+
isLoading: m || s,
|
|
44
|
+
refetch: () => C()
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export {
|
|
48
|
+
U as default
|
|
49
|
+
};
|
|
50
|
+
//# 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 UseMsTeamsTeamsProps = {\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}: UseMsTeamsTeamsProps): 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 });\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","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,CAAC;AACI,GAA0B;AAC9C,QAAMC,IAAQC,KACR;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,IACzB;AAAA,EAAA,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,EAAA,CACpB,GAEGC,IAAWT,KAAAA,gBAAAA,EAAMU,GAAG,KACpBC,IAAcF,MAAaG,UAAa,CAAC,CAACH,EAAS/B,YAEnDmC,IAAQC,EACZ,OACGd,KAAQ,IACNe,QAASC,CAASA,MAAAA,KAAAA,gBAAAA,EAAMC,cAAc,EACtCpB,OAAQqB,OAAS,CAAC,CAACA,CAAI,GAC5B,CAAClB,CAAI,CACP,GAEMmB,KAAWvC,KAAAA,gBAAAA,EAAcuC,aAAY/C;AAE3CgD,SAAAA,EAAU,MAAM;AAEZnC,IAAAA,MAAqB,eACrB,CAACgB,KACDU,KACA,CAACT,KACD,CAACC,KACDU,EAAMQ,SAASF,KAING,EAAAA,CAAAA,MAASA,IAAO,CAAC;AAAA,EAE9B,GAAG,CACDT,EAAMQ,QACNjB,GACAO,GACAT,GACAC,GACAgB,GACAlB,GACAhB,CAAgB,CACjB,GAEM;AAAA,IACLe,MAAMa;AAAAA,IACNX,WAAWA,KAAaC;AAAAA,IACxBoB,SAASA,MAAMlB,EAAO;AAAA,EAAA;AAE1B;"}
|
|
@@ -1,47 +1,49 @@
|
|
|
1
|
-
import
|
|
2
|
-
import * as
|
|
1
|
+
import d from "../hooks/useSlackConnectionStatus.mjs";
|
|
2
|
+
import * as o from "react";
|
|
3
3
|
import "swr/infinite";
|
|
4
|
-
import { useKnockClient as
|
|
4
|
+
import { useKnockClient as S } from "../../core/context/KnockProvider.mjs";
|
|
5
5
|
import "@knocklabs/client";
|
|
6
6
|
import "zustand/shallow";
|
|
7
|
-
import { slackProviderKey as
|
|
7
|
+
import { slackProviderKey as C } from "../../core/utils.mjs";
|
|
8
|
+
import "swr";
|
|
8
9
|
import "../../i18n/context/KnockI18nProvider.mjs";
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
})
|
|
14
|
-
const s = p(), {
|
|
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
15
|
connectionStatus: r,
|
|
16
|
-
setConnectionStatus:
|
|
17
|
-
errorLabel:
|
|
18
|
-
setErrorLabel:
|
|
16
|
+
setConnectionStatus: s,
|
|
17
|
+
errorLabel: c,
|
|
18
|
+
setErrorLabel: k,
|
|
19
19
|
actionLabel: m,
|
|
20
20
|
setActionLabel: u
|
|
21
|
-
} =
|
|
22
|
-
return /* @__PURE__ */
|
|
23
|
-
knockSlackChannelId:
|
|
24
|
-
|
|
21
|
+
} = d(l, e, n);
|
|
22
|
+
return /* @__PURE__ */ o.createElement(a.Provider, { key: C({
|
|
23
|
+
knockSlackChannelId: e,
|
|
24
|
+
tenantId: n,
|
|
25
25
|
connectionStatus: r,
|
|
26
|
-
errorLabel:
|
|
26
|
+
errorLabel: c
|
|
27
27
|
}), value: {
|
|
28
28
|
connectionStatus: r,
|
|
29
|
-
setConnectionStatus:
|
|
30
|
-
errorLabel:
|
|
31
|
-
setErrorLabel:
|
|
29
|
+
setConnectionStatus: s,
|
|
30
|
+
errorLabel: c,
|
|
31
|
+
setErrorLabel: k,
|
|
32
32
|
actionLabel: m,
|
|
33
33
|
setActionLabel: u,
|
|
34
|
-
knockSlackChannelId:
|
|
35
|
-
tenant
|
|
34
|
+
knockSlackChannelId: e,
|
|
35
|
+
// Assign the same value to both tenant and tenantId for backwards compatibility
|
|
36
|
+
tenant: n,
|
|
37
|
+
tenantId: n
|
|
36
38
|
} }, i);
|
|
37
39
|
}, L = () => {
|
|
38
|
-
const t =
|
|
40
|
+
const t = o.useContext(a);
|
|
39
41
|
if (t === void 0)
|
|
40
42
|
throw new Error("useKnockSlackClient must be used within a KnockSlackProvider");
|
|
41
43
|
return t;
|
|
42
44
|
};
|
|
43
45
|
export {
|
|
44
|
-
|
|
46
|
+
I as KnockSlackProvider,
|
|
45
47
|
L as useKnockSlackClient
|
|
46
48
|
};
|
|
47
49
|
//# sourceMappingURL=KnockSlackProvider.mjs.map
|
|
@@ -1 +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 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
|
|
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,EAAaF,IAAAA,GACpCG,IAAW,cAAcH,IAAQA,EAAMG,WAAWH,EAAMI,QAExDC,IAAQC,KAER;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,EAAAA,KAGDD,CACH;AAEJ,GAEaa,IAAsBA,MAA+B;AAC1DC,QAAAA,IAAUnB,EAAMoB,WACpBrB,CACF;AACA,MAAIoB,MAAYE;AACR,UAAA,IAAIC,MACR,8DACF;AAEKH,SAAAA;AACT;"}
|