@knocklabs/react-core 0.2.19 → 0.2.21
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 +15 -0
- package/dist/cjs/modules/feed/hooks/useFeedSettings.js.map +1 -1
- package/dist/cjs/modules/i18n/hooks/useTranslations.js +1 -1
- package/dist/cjs/modules/i18n/hooks/useTranslations.js.map +1 -1
- package/dist/cjs/modules/i18n/languages/de.js.map +1 -1
- package/dist/cjs/modules/i18n/languages/en.js.map +1 -1
- package/dist/cjs/modules/slack/hooks/useSlackAuth.js.map +1 -1
- package/dist/esm/modules/feed/hooks/useFeedSettings.mjs.map +1 -1
- package/dist/esm/modules/i18n/hooks/useTranslations.mjs +4 -4
- package/dist/esm/modules/i18n/hooks/useTranslations.mjs.map +1 -1
- package/dist/esm/modules/i18n/languages/de.mjs.map +1 -1
- package/dist/esm/modules/i18n/languages/en.mjs.map +1 -1
- package/dist/esm/modules/slack/hooks/useSlackAuth.mjs.map +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/modules/feed/hooks/useFeedSettings.d.ts.map +1 -1
- package/dist/types/modules/i18n/hooks/useTranslations.d.ts.map +1 -1
- package/dist/types/modules/i18n/languages/de.d.ts.map +1 -1
- package/dist/types/modules/i18n/languages/en.d.ts.map +1 -1
- package/dist/types/modules/slack/index.d.ts.map +1 -1
- package/package.json +7 -6
- package/src/index.ts +1 -1
- package/src/modules/feed/hooks/useFeedSettings.ts +2 -0
- package/src/modules/i18n/hooks/useTranslations.ts +2 -1
- package/src/modules/i18n/languages/de.ts +7 -4
- package/src/modules/i18n/languages/en.ts +7 -4
- package/src/modules/slack/hooks/useSlackAuth.ts +1 -1
- package/src/modules/slack/index.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.21
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- a4d520c: chore: update generic types
|
|
8
|
+
- Updated dependencies [a4d520c]
|
|
9
|
+
- @knocklabs/client@0.10.10
|
|
10
|
+
|
|
11
|
+
## 0.2.20
|
|
12
|
+
|
|
13
|
+
### Patch Changes
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [d0adb14]
|
|
16
|
+
- @knocklabs/client@0.10.9
|
|
17
|
+
|
|
3
18
|
## 0.2.19
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFeedSettings.js","sources":["../../../../../src/modules/feed/hooks/useFeedSettings.ts"],"sourcesContent":["import { Feed } from \"@knocklabs/client\";\nimport { useEffect, useState } from \"react\";\n\nexport type FeedSettings = {\n features: {\n branding_required: boolean;\n };\n};\n\nfunction useFeedSettings(feedClient: Feed): {\n settings: FeedSettings | null;\n loading: boolean;\n} {\n const [settings, setSettings] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n\n // TODO: consider moving this into the feed client and into the feed store state when\n // we're using this in other areas of the feed\n useEffect(() => {\n async function getSettings() {\n const knock = feedClient.knock;\n const apiClient = knock.client();\n const feedSettingsPath = `/v1/users/${knock.userId}/feeds/${feedClient.feedId}/settings`;\n setIsLoading(true);\n\n const response = await apiClient.makeRequest({\n method: \"GET\",\n url: feedSettingsPath,\n });\n\n if (!response.error) {\n setSettings(response.body);\n }\n\n setIsLoading(false);\n }\n\n getSettings();\n }, []);\n\n return { settings, loading: isLoading };\n}\n\nexport default useFeedSettings;\n"],"names":["useFeedSettings","feedClient","settings","setSettings","useState","isLoading","setIsLoading","useEffect","getSettings","knock","apiClient","client","feedSettingsPath","userId","feedId","response","makeRequest","method","url","error","body","loading"],"mappings":"sCASA,SAASA,EAAgBC,EAGvB,CACA,KAAM,CAACC,EAAUC,CAAW,EAAIC,WAAS,IAAI,EACvC,CAACC,EAAWC,CAAY,EAAIF,WAAS,EAAK,EAIhDG,OAAAA,EAAAA,UAAU,IAAM,CACd,eAAeC,GAAc,CAC3B,MAAMC,EAAQR,EAAWQ,MACnBC,EAAYD,EAAME,SAClBC,EAAoB,aAAYH,EAAMI,MAAO,UAASZ,EAAWa,MAAO,YAC9ER,EAAa,EAAI,EAEXS,MAAAA,EAAW,MAAML,EAAUM,YAAY,CAC3CC,OAAQ,MACRC,IAAKN,CAAAA,CACN,EAEIG,EAASI,OACZhB,EAAYY,EAASK,IAAI,EAG3Bd,EAAa,EAAK,CACpB,CAEYE,
|
|
1
|
+
{"version":3,"file":"useFeedSettings.js","sources":["../../../../../src/modules/feed/hooks/useFeedSettings.ts"],"sourcesContent":["import { Feed } from \"@knocklabs/client\";\nimport { useEffect, useState } from \"react\";\n\nexport type FeedSettings = {\n features: {\n branding_required: boolean;\n };\n};\n\nfunction useFeedSettings(feedClient: Feed): {\n settings: FeedSettings | null;\n loading: boolean;\n} {\n const [settings, setSettings] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n\n // TODO: consider moving this into the feed client and into the feed store state when\n // we're using this in other areas of the feed\n useEffect(() => {\n async function getSettings() {\n const knock = feedClient.knock;\n const apiClient = knock.client();\n const feedSettingsPath = `/v1/users/${knock.userId}/feeds/${feedClient.feedId}/settings`;\n setIsLoading(true);\n\n const response = await apiClient.makeRequest({\n method: \"GET\",\n url: feedSettingsPath,\n });\n\n if (!response.error) {\n setSettings(response.body);\n }\n\n setIsLoading(false);\n }\n\n getSettings();\n // TODO: Check if we can remove this disable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return { settings, loading: isLoading };\n}\n\nexport default useFeedSettings;\n"],"names":["useFeedSettings","feedClient","settings","setSettings","useState","isLoading","setIsLoading","useEffect","getSettings","knock","apiClient","client","feedSettingsPath","userId","feedId","response","makeRequest","method","url","error","body","loading"],"mappings":"sCASA,SAASA,EAAgBC,EAGvB,CACA,KAAM,CAACC,EAAUC,CAAW,EAAIC,WAAS,IAAI,EACvC,CAACC,EAAWC,CAAY,EAAIF,WAAS,EAAK,EAIhDG,OAAAA,EAAAA,UAAU,IAAM,CACd,eAAeC,GAAc,CAC3B,MAAMC,EAAQR,EAAWQ,MACnBC,EAAYD,EAAME,SAClBC,EAAoB,aAAYH,EAAMI,MAAO,UAASZ,EAAWa,MAAO,YAC9ER,EAAa,EAAI,EAEXS,MAAAA,EAAW,MAAML,EAAUM,YAAY,CAC3CC,OAAQ,MACRC,IAAKN,CAAAA,CACN,EAEIG,EAASI,OACZhB,EAAYY,EAASK,IAAI,EAG3Bd,EAAa,EAAK,CACpB,CAEYE,GAGd,EAAG,CAAE,CAAA,EAEE,CAAEN,SAAAA,EAAUmB,QAAShB,CAAAA,CAC9B"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),o=require("../
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react"),o=require("../context/KnockI18nProvider.js"),s=require("../languages/index.js");function a(){const{translations:n,locale:t}=r.useContext(o.I18nContext);return{locale:t,t:e=>n[e]||s.locales.en.translations[e]}}exports.useTranslations=a;
|
|
2
2
|
//# sourceMappingURL=useTranslations.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTranslations.js","sources":["../../../../../src/modules/i18n/hooks/useTranslations.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"useTranslations.js","sources":["../../../../../src/modules/i18n/hooks/useTranslations.ts"],"sourcesContent":["import { useContext } from \"react\";\n\nimport { I18nContext } from \"../context/KnockI18nProvider\";\nimport { I18nContent, locales } from \"../languages\";\n\nexport function useTranslations() {\n const { translations, locale } = useContext<I18nContent>(I18nContext);\n\n return {\n locale,\n t: (key: keyof typeof translations) => {\n // We always use english as the default translation when a key doesn't exist\n return translations[key] || locales.en.translations[key];\n },\n };\n}\n"],"names":["useTranslations","translations","locale","useContext","I18nContext","t","key","locales","en"],"mappings":"yLAKO,SAASA,GAAkB,CAC1B,KAAA,CAAEC,aAAAA,EAAcC,OAAAA,CAAAA,EAAWC,EAAAA,WAAwBC,EAAAA,WAAW,EAE7D,MAAA,CACLF,OAAAA,EACAG,EAAIC,GAEKL,EAAaK,CAAG,GAAKC,EAAAA,QAAQC,GAAGP,aAAaK,CAAG,CACzD,CAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.js","sources":["../../../../../src/modules/i18n/languages/de.ts"],"sourcesContent":["import { I18nContent } from \".\";\n\nconst de: I18nContent = {\n translations: {\n archiveNotification: \"Benachrichtigung archivieren\",\n markAllAsRead: \"Alle als gelesen markieren\",\n notifications: \"Benachrichtigungen\",\n emptyFeedTitle: \"Noch keine Benachrichtigungen\",\n emptyFeedBody:\n \"Wir werden dich benachrichtigen, sobald wir etwas Neues für dich haben.\",\n all: \"Alle\",\n unread: \"Ungelesen\",\n read: \"Gelesen\",\n unseen: \"Ungesehen\",\n slackConnectChannel: \"Kanal verbinden\",\n slackChannelId: \"Slack Kanal ID\",\n slackConnecting: \"Verbinden mit Slack...\",\n slackDisconnecting: \"Trennen der Verbindung...\",\n slackConnect: \"Mit Slack verbinden\",\n slackConnected: \"Verbunden\",\n slackConnectContainerDescription
|
|
1
|
+
{"version":3,"file":"de.js","sources":["../../../../../src/modules/i18n/languages/de.ts"],"sourcesContent":["import { I18nContent } from \".\";\n\nconst de: I18nContent = {\n translations: {\n archiveNotification: \"Benachrichtigung archivieren\",\n markAllAsRead: \"Alle als gelesen markieren\",\n notifications: \"Benachrichtigungen\",\n emptyFeedTitle: \"Noch keine Benachrichtigungen\",\n emptyFeedBody:\n \"Wir werden dich benachrichtigen, sobald wir etwas Neues für dich haben.\",\n all: \"Alle\",\n unread: \"Ungelesen\",\n read: \"Gelesen\",\n unseen: \"Ungesehen\",\n slackConnectChannel: \"Kanal verbinden\",\n slackChannelId: \"Slack Kanal ID\",\n slackConnecting: \"Verbinden mit Slack...\",\n slackDisconnecting: \"Trennen der Verbindung...\",\n slackConnect: \"Mit Slack verbinden\",\n slackConnected: \"Verbunden\",\n slackConnectContainerDescription:\n \"Verbinden, um Benachrichtigungen in Ihrem Slack-Arbeitsbereich zu erhalten.\",\n slackSearchbarDisconnected: \"Slack ist nicht verbunden.\",\n slackSearchbarMultipleChannels: \"Mehrere Kanäle verbunden\",\n slackSearchbarNoChannelsConnected: \"Suchkanäle\",\n slackSearchbarNoChannelsFound: \"Keine schlaffen Kanäle.\",\n slackSearchbarChannelsError: \"Fehler beim Abrufen von Kanälen.\",\n slackSearchChannels: \"Suchkanäle\",\n slackConnectionErrorExists:\n \"Versuchen Sie, sich erneut mit Slack zu verbinden, um Kanäle in Ihrem Arbeitsbereich zu finden und auszuwählen.\",\n slackConnectionErrorOccurred:\n \"Es ist ein Fehler beim Verbinden mit Slack aufgetreten. Versuchen Sie, sich erneut zu verbinden, um Kanäle in Ihrem Arbeitsbereich zu finden und auszuwählen.\",\n slackChannelAlreadyConnected: \"Fehler: bereits verbunden\",\n slackError: \"Fehler\",\n slackDisconnect: \"Trennen Sie die Verbindung.\",\n slackChannelSetError: \"Fehlereinstellung Kanal.\",\n slackAccessTokenNotSet: \"Zugriffstoken nicht gesetzt.\",\n slackReconnect: \"Neu verbinden\",\n },\n locale: \"de\",\n};\n\nexport default de;\n"],"names":["de","translations","archiveNotification","markAllAsRead","notifications","emptyFeedTitle","emptyFeedBody","all","unread","read","unseen","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,EAAkB,CACtBC,aAAc,CACZC,oBAAqB,+BACrBC,cAAe,6BACfC,cAAe,qBACfC,eAAgB,gCAChBC,cACE,0EACFC,IAAK,OACLC,OAAQ,YACRC,KAAM,UACNC,OAAQ,YACRC,oBAAqB,kBACrBC,eAAgB,iBAChBC,gBAAiB,yBACjBC,mBAAoB,4BACpBC,aAAc,sBACdC,eAAgB,YAChBC,iCACE,8EACFC,2BAA4B,6BAC5BC,+BAAgC,2BAChCC,kCAAmC,aACnCC,8BAA+B,0BAC/BC,4BAA6B,mCAC7BC,oBAAqB,aACrBC,2BACE,kHACFC,6BACE,gKACFC,6BAA8B,4BAC9BC,WAAY,SACZC,gBAAiB,8BACjBC,qBAAsB,2BACtBC,uBAAwB,+BACxBC,eAAgB,eAClB,EACAC,OAAQ,IACV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.js","sources":["../../../../../src/modules/i18n/languages/en.ts"],"sourcesContent":["import { I18nContent } from \".\";\n\nconst en: I18nContent = {\n translations: {\n archiveNotification: \"Archive this notification\",\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 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
|
|
1
|
+
{"version":3,"file":"en.js","sources":["../../../../../src/modules/i18n/languages/en.ts"],"sourcesContent":["import { I18nContent } from \".\";\n\nconst en: I18nContent = {\n translations: {\n archiveNotification: \"Archive this notification\",\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 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","markAllAsRead","notifications","emptyFeedTitle","emptyFeedBody","all","unread","read","unseen","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,EAAkB,CACtBC,aAAc,CACZC,oBAAqB,4BACrBC,cAAe,mBACfC,cAAe,gBACfC,eAAgB,uBAChBC,cAAe,2DACfC,IAAK,MACLC,OAAQ,SACRC,KAAM,OACNC,OAAQ,SACRC,oBAAqB,kBACrBC,eAAgB,mBAChBC,gBAAiB,yBACjBC,mBAAoB,mBACpBC,aAAc,mBACdC,eAAgB,YAChBC,iCACE,wDACFC,2BAA4B,0BAC5BC,+BAAgC,8BAChCC,kCAAmC,kBACnCC,8BAA+B,qBAC/BC,4BAA6B,2BAC7BC,oBAAqB,kBACrBC,2BACE,6EACFC,6BACE,4GACFC,6BAA8B,2BAC9BC,WAAY,QACZC,gBAAiB,aACjBC,qBAAsB,yBACtBC,uBAAwB,wBACxBC,eAAgB,WAClB,EACAC,OAAQ,IACV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlackAuth.js","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\"
|
|
1
|
+
{"version":3,"file":"useSlackAuth.js","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenant, setActionLabel } =\n useKnockSlackClient();\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (revoke === \"ok\") {\n setConnectionStatus(\"disconnected\");\n } else {\n setConnectionStatus(\"error\");\n }\n } catch (error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.slack,\n tenant,\n knockSlackChannelId,\n setActionLabel,\n ]);\n\n const buildSlackAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n access_token_object: {\n object_id: tenant,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockSlackChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: slackClientId,\n scope: DEFAULT_SLACK_SCOPES.join(\",\"),\n };\n return `${SLACK_AUTHORIZE_URL}?${new URLSearchParams(rawParams)}`;\n }, [\n redirectUrl,\n tenant,\n knockSlackChannelId,\n knock.apiKey,\n knock.userToken,\n slackClientId,\n ]);\n\n return {\n buildSlackAuthUrl,\n disconnectFromSlack,\n };\n}\n\nexport default useSlackAuth;\n"],"names":["SLACK_AUTHORIZE_URL","DEFAULT_SLACK_SCOPES","useSlackAuth","slackClientId","redirectUrl","knock","useKnockClient","setConnectionStatus","knockSlackChannelId","tenant","setActionLabel","useKnockSlackClient","disconnectFromSlack","useCallback","revoke","slack","revokeAccessToken","knockChannelId","buildSlackAuthUrl","rawParams","state","JSON","stringify","redirect_url","access_token_object","object_id","collection","TENANT_OBJECT_COLLECTION","channel_id","public_key","apiKey","user_token","userToken","client_id","scope","join","URLSearchParams"],"mappings":"oSAMA,MAAMA,EAAsB,uCACtBC,EAAuB,CAC3B,aACA,oBACA,gBACA,aAAa,EAQf,SAASC,EACPC,EACAC,EACoB,CACpB,MAAMC,EAAQC,EAAAA,iBACR,CAAEC,oBAAAA,EAAqBC,oBAAAA,EAAqBC,OAAAA,EAAQC,eAAAA,GACxDC,EAAoB,oBAAA,EAEhBC,EAAsBC,EAAAA,YAAY,SAAY,CAClDH,EAAe,IAAI,EACnBH,EAAoB,eAAe,EAC/B,GAAA,CACF,MAAMO,EAAS,MAAMT,EAAMU,MAAMC,kBAAkB,CACjDP,OAAAA,EACAQ,eAAgBT,CAAAA,CACjB,EAGCD,EADEO,IAAW,KACO,eAEA,OAFc,OAItB,CACdP,EAAoB,OAAO,CAC7B,CAAA,EACC,CACDA,EACAF,EAAMU,MACNN,EACAD,EACAE,CAAc,CACf,EA2BM,MAAA,CACLQ,kBA1BwBL,EAAAA,YAAY,IAAM,CAC1C,MAAMM,EAAY,CAChBC,MAAOC,KAAKC,UAAU,CACpBC,aAAcnB,EACdoB,oBAAqB,CACnBC,UAAWhB,EACXiB,WAAYC,EAAAA,wBACd,EACAC,WAAYpB,EACZqB,WAAYxB,EAAMyB,OAClBC,WAAY1B,EAAM2B,SAAAA,CACnB,EACDC,UAAW9B,EACX+B,MAAOjC,EAAqBkC,KAAK,GAAG,CAAA,EAEtC,MAAQ,GAAEnC,CAAoB,IAAG,IAAIoC,gBAAgBjB,CAAS,CAAE,EAAA,EAC/D,CACDf,EACAK,EACAD,EACAH,EAAMyB,OACNzB,EAAM2B,UACN7B,CAAa,CACd,EAICS,oBAAAA,CAAAA,CAEJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFeedSettings.mjs","sources":["../../../../../src/modules/feed/hooks/useFeedSettings.ts"],"sourcesContent":["import { Feed } from \"@knocklabs/client\";\nimport { useEffect, useState } from \"react\";\n\nexport type FeedSettings = {\n features: {\n branding_required: boolean;\n };\n};\n\nfunction useFeedSettings(feedClient: Feed): {\n settings: FeedSettings | null;\n loading: boolean;\n} {\n const [settings, setSettings] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n\n // TODO: consider moving this into the feed client and into the feed store state when\n // we're using this in other areas of the feed\n useEffect(() => {\n async function getSettings() {\n const knock = feedClient.knock;\n const apiClient = knock.client();\n const feedSettingsPath = `/v1/users/${knock.userId}/feeds/${feedClient.feedId}/settings`;\n setIsLoading(true);\n\n const response = await apiClient.makeRequest({\n method: \"GET\",\n url: feedSettingsPath,\n });\n\n if (!response.error) {\n setSettings(response.body);\n }\n\n setIsLoading(false);\n }\n\n getSettings();\n }, []);\n\n return { settings, loading: isLoading };\n}\n\nexport default useFeedSettings;\n"],"names":["useFeedSettings","feedClient","settings","setSettings","useState","isLoading","setIsLoading","useEffect","getSettings","knock","apiClient","client","feedSettingsPath","userId","feedId","response","makeRequest","method","url","error","body","loading"],"mappings":";AASA,SAASA,EAAgBC,GAGvB;AACA,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,IAAI,GACvC,CAACC,GAAWC,CAAY,IAAIF,EAAS,EAAK;AAIhDG,SAAAA,EAAU,MAAM;AACd,mBAAeC,IAAc;AAC3B,YAAMC,IAAQR,EAAWQ,OACnBC,IAAYD,EAAME,UAClBC,IAAoB,aAAYH,EAAMI,MAAO,UAASZ,EAAWa,MAAO;AAC9ER,MAAAA,EAAa,EAAI;AAEXS,YAAAA,IAAW,MAAML,EAAUM,YAAY;AAAA,QAC3CC,QAAQ;AAAA,QACRC,KAAKN;AAAAA,MAAAA,CACN;AAEG,MAACG,EAASI,SACZhB,EAAYY,EAASK,IAAI,GAG3Bd,EAAa,EAAK;AAAA,IACpB;AAEY,IAAAE;
|
|
1
|
+
{"version":3,"file":"useFeedSettings.mjs","sources":["../../../../../src/modules/feed/hooks/useFeedSettings.ts"],"sourcesContent":["import { Feed } from \"@knocklabs/client\";\nimport { useEffect, useState } from \"react\";\n\nexport type FeedSettings = {\n features: {\n branding_required: boolean;\n };\n};\n\nfunction useFeedSettings(feedClient: Feed): {\n settings: FeedSettings | null;\n loading: boolean;\n} {\n const [settings, setSettings] = useState(null);\n const [isLoading, setIsLoading] = useState(false);\n\n // TODO: consider moving this into the feed client and into the feed store state when\n // we're using this in other areas of the feed\n useEffect(() => {\n async function getSettings() {\n const knock = feedClient.knock;\n const apiClient = knock.client();\n const feedSettingsPath = `/v1/users/${knock.userId}/feeds/${feedClient.feedId}/settings`;\n setIsLoading(true);\n\n const response = await apiClient.makeRequest({\n method: \"GET\",\n url: feedSettingsPath,\n });\n\n if (!response.error) {\n setSettings(response.body);\n }\n\n setIsLoading(false);\n }\n\n getSettings();\n // TODO: Check if we can remove this disable\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return { settings, loading: isLoading };\n}\n\nexport default useFeedSettings;\n"],"names":["useFeedSettings","feedClient","settings","setSettings","useState","isLoading","setIsLoading","useEffect","getSettings","knock","apiClient","client","feedSettingsPath","userId","feedId","response","makeRequest","method","url","error","body","loading"],"mappings":";AASA,SAASA,EAAgBC,GAGvB;AACA,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAS,IAAI,GACvC,CAACC,GAAWC,CAAY,IAAIF,EAAS,EAAK;AAIhDG,SAAAA,EAAU,MAAM;AACd,mBAAeC,IAAc;AAC3B,YAAMC,IAAQR,EAAWQ,OACnBC,IAAYD,EAAME,UAClBC,IAAoB,aAAYH,EAAMI,MAAO,UAASZ,EAAWa,MAAO;AAC9ER,MAAAA,EAAa,EAAI;AAEXS,YAAAA,IAAW,MAAML,EAAUM,YAAY;AAAA,QAC3CC,QAAQ;AAAA,QACRC,KAAKN;AAAAA,MAAAA,CACN;AAEG,MAACG,EAASI,SACZhB,EAAYY,EAASK,IAAI,GAG3Bd,EAAa,EAAK;AAAA,IACpB;AAEY,IAAAE;EAGd,GAAG,CAAE,CAAA,GAEE;AAAA,IAAEN,UAAAA;AAAAA,IAAUmB,SAAShB;AAAAA,EAAAA;AAC9B;"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { useContext as r } from "react";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { I18nContext as s } from "../context/KnockI18nProvider.mjs";
|
|
3
|
+
import { locales as e } from "../languages/index.mjs";
|
|
4
4
|
function m() {
|
|
5
5
|
const {
|
|
6
6
|
translations: o,
|
|
7
7
|
locale: n
|
|
8
|
-
} = r(
|
|
8
|
+
} = r(s);
|
|
9
9
|
return {
|
|
10
10
|
locale: n,
|
|
11
|
-
t: (t) => o[t] ||
|
|
11
|
+
t: (t) => o[t] || e.en.translations[t]
|
|
12
12
|
};
|
|
13
13
|
}
|
|
14
14
|
export {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTranslations.mjs","sources":["../../../../../src/modules/i18n/hooks/useTranslations.ts"],"sourcesContent":["import { useContext } from \"react\";\nimport {
|
|
1
|
+
{"version":3,"file":"useTranslations.mjs","sources":["../../../../../src/modules/i18n/hooks/useTranslations.ts"],"sourcesContent":["import { useContext } from \"react\";\n\nimport { I18nContext } from \"../context/KnockI18nProvider\";\nimport { I18nContent, locales } from \"../languages\";\n\nexport function useTranslations() {\n const { translations, locale } = useContext<I18nContent>(I18nContext);\n\n return {\n locale,\n t: (key: keyof typeof translations) => {\n // We always use english as the default translation when a key doesn't exist\n return translations[key] || locales.en.translations[key];\n },\n };\n}\n"],"names":["useTranslations","translations","locale","useContext","I18nContext","t","key","locales","en"],"mappings":";;;AAKO,SAASA,IAAkB;AAC1B,QAAA;AAAA,IAAEC,cAAAA;AAAAA,IAAcC,QAAAA;AAAAA,EAAAA,IAAWC,EAAwBC,CAAW;AAE7D,SAAA;AAAA,IACLF,QAAAA;AAAAA,IACAG,GAAGA,CAACC,MAEKL,EAAaK,CAAG,KAAKC,EAAQC,GAAGP,aAAaK,CAAG;AAAA,EACzD;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.mjs","sources":["../../../../../src/modules/i18n/languages/de.ts"],"sourcesContent":["import { I18nContent } from \".\";\n\nconst de: I18nContent = {\n translations: {\n archiveNotification: \"Benachrichtigung archivieren\",\n markAllAsRead: \"Alle als gelesen markieren\",\n notifications: \"Benachrichtigungen\",\n emptyFeedTitle: \"Noch keine Benachrichtigungen\",\n emptyFeedBody:\n \"Wir werden dich benachrichtigen, sobald wir etwas Neues für dich haben.\",\n all: \"Alle\",\n unread: \"Ungelesen\",\n read: \"Gelesen\",\n unseen: \"Ungesehen\",\n slackConnectChannel: \"Kanal verbinden\",\n slackChannelId: \"Slack Kanal ID\",\n slackConnecting: \"Verbinden mit Slack...\",\n slackDisconnecting: \"Trennen der Verbindung...\",\n slackConnect: \"Mit Slack verbinden\",\n slackConnected: \"Verbunden\",\n slackConnectContainerDescription
|
|
1
|
+
{"version":3,"file":"de.mjs","sources":["../../../../../src/modules/i18n/languages/de.ts"],"sourcesContent":["import { I18nContent } from \".\";\n\nconst de: I18nContent = {\n translations: {\n archiveNotification: \"Benachrichtigung archivieren\",\n markAllAsRead: \"Alle als gelesen markieren\",\n notifications: \"Benachrichtigungen\",\n emptyFeedTitle: \"Noch keine Benachrichtigungen\",\n emptyFeedBody:\n \"Wir werden dich benachrichtigen, sobald wir etwas Neues für dich haben.\",\n all: \"Alle\",\n unread: \"Ungelesen\",\n read: \"Gelesen\",\n unseen: \"Ungesehen\",\n slackConnectChannel: \"Kanal verbinden\",\n slackChannelId: \"Slack Kanal ID\",\n slackConnecting: \"Verbinden mit Slack...\",\n slackDisconnecting: \"Trennen der Verbindung...\",\n slackConnect: \"Mit Slack verbinden\",\n slackConnected: \"Verbunden\",\n slackConnectContainerDescription:\n \"Verbinden, um Benachrichtigungen in Ihrem Slack-Arbeitsbereich zu erhalten.\",\n slackSearchbarDisconnected: \"Slack ist nicht verbunden.\",\n slackSearchbarMultipleChannels: \"Mehrere Kanäle verbunden\",\n slackSearchbarNoChannelsConnected: \"Suchkanäle\",\n slackSearchbarNoChannelsFound: \"Keine schlaffen Kanäle.\",\n slackSearchbarChannelsError: \"Fehler beim Abrufen von Kanälen.\",\n slackSearchChannels: \"Suchkanäle\",\n slackConnectionErrorExists:\n \"Versuchen Sie, sich erneut mit Slack zu verbinden, um Kanäle in Ihrem Arbeitsbereich zu finden und auszuwählen.\",\n slackConnectionErrorOccurred:\n \"Es ist ein Fehler beim Verbinden mit Slack aufgetreten. Versuchen Sie, sich erneut zu verbinden, um Kanäle in Ihrem Arbeitsbereich zu finden und auszuwählen.\",\n slackChannelAlreadyConnected: \"Fehler: bereits verbunden\",\n slackError: \"Fehler\",\n slackDisconnect: \"Trennen Sie die Verbindung.\",\n slackChannelSetError: \"Fehlereinstellung Kanal.\",\n slackAccessTokenNotSet: \"Zugriffstoken nicht gesetzt.\",\n slackReconnect: \"Neu verbinden\",\n },\n locale: \"de\",\n};\n\nexport default de;\n"],"names":["de","translations","archiveNotification","markAllAsRead","notifications","emptyFeedTitle","emptyFeedBody","all","unread","read","unseen","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,eAAe;AAAA,IACfC,eAAe;AAAA,IACfC,gBAAgB;AAAA,IAChBC,eACE;AAAA,IACFC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,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":"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 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 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
|
|
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 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 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","markAllAsRead","notifications","emptyFeedTitle","emptyFeedBody","all","unread","read","unseen","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,eAAe;AAAA,IACfC,eAAe;AAAA,IACfC,gBAAgB;AAAA,IAChBC,eAAe;AAAA,IACfC,KAAK;AAAA,IACLC,QAAQ;AAAA,IACRC,MAAM;AAAA,IACNC,QAAQ;AAAA,IACRC,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":"useSlackAuth.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\"
|
|
1
|
+
{"version":3,"file":"useSlackAuth.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\nfunction useSlackAuth(\n slackClientId: string,\n redirectUrl?: string,\n): UseSlackAuthOutput {\n const knock = useKnockClient();\n const { setConnectionStatus, knockSlackChannelId, tenant, setActionLabel } =\n useKnockSlackClient();\n\n const disconnectFromSlack = useCallback(async () => {\n setActionLabel(null);\n setConnectionStatus(\"disconnecting\");\n try {\n const revoke = await knock.slack.revokeAccessToken({\n tenant,\n knockChannelId: knockSlackChannelId,\n });\n\n if (revoke === \"ok\") {\n setConnectionStatus(\"disconnected\");\n } else {\n setConnectionStatus(\"error\");\n }\n } catch (error) {\n setConnectionStatus(\"error\");\n }\n }, [\n setConnectionStatus,\n knock.slack,\n tenant,\n knockSlackChannelId,\n setActionLabel,\n ]);\n\n const buildSlackAuthUrl = useCallback(() => {\n const rawParams = {\n state: JSON.stringify({\n redirect_url: redirectUrl,\n access_token_object: {\n object_id: tenant,\n collection: TENANT_OBJECT_COLLECTION,\n },\n channel_id: knockSlackChannelId,\n public_key: knock.apiKey,\n user_token: knock.userToken,\n }),\n client_id: slackClientId,\n scope: DEFAULT_SLACK_SCOPES.join(\",\"),\n };\n return `${SLACK_AUTHORIZE_URL}?${new URLSearchParams(rawParams)}`;\n }, [\n redirectUrl,\n tenant,\n knockSlackChannelId,\n knock.apiKey,\n knock.userToken,\n slackClientId,\n ]);\n\n return {\n buildSlackAuthUrl,\n disconnectFromSlack,\n };\n}\n\nexport default useSlackAuth;\n"],"names":["SLACK_AUTHORIZE_URL","DEFAULT_SLACK_SCOPES","useSlackAuth","slackClientId","redirectUrl","knock","useKnockClient","setConnectionStatus","knockSlackChannelId","tenant","setActionLabel","useKnockSlackClient","disconnectFromSlack","useCallback","revoke","slack","revokeAccessToken","knockChannelId","buildSlackAuthUrl","rawParams","state","JSON","stringify","redirect_url","access_token_object","object_id","collection","TENANT_OBJECT_COLLECTION","channel_id","public_key","apiKey","user_token","userToken","client_id","scope","join","URLSearchParams"],"mappings":";;;;;;;;AAMA,MAAMA,IAAsB,wCACtBC,IAAuB,CAC3B,cACA,qBACA,iBACA,aAAa;AAQf,SAASC,EACPC,GACAC,GACoB;AACpB,QAAMC,IAAQC,KACR;AAAA,IAAEC,qBAAAA;AAAAA,IAAqBC,qBAAAA;AAAAA,IAAqBC,QAAAA;AAAAA,IAAQC,gBAAAA;AAAAA,MACxDC,EAAoB,GAEhBC,IAAsBC,EAAY,YAAY;AAClDH,IAAAA,EAAe,IAAI,GACnBH,EAAoB,eAAe;AAC/B,QAAA;AACF,YAAMO,IAAS,MAAMT,EAAMU,MAAMC,kBAAkB;AAAA,QACjDP,QAAAA;AAAAA,QACAQ,gBAAgBT;AAAAA,MAAAA,CACjB;AAED,MACED,EADEO,MAAW,OACO,iBAEA,OAFc;AAAA,YAItB;AACdP,MAAAA,EAAoB,OAAO;AAAA,IAC7B;AAAA,EAAA,GACC,CACDA,GACAF,EAAMU,OACNN,GACAD,GACAE,CAAc,CACf;AA2BM,SAAA;AAAA,IACLQ,mBA1BwBL,EAAY,MAAM;AAC1C,YAAMM,IAAY;AAAA,QAChBC,OAAOC,KAAKC,UAAU;AAAA,UACpBC,cAAcnB;AAAAA,UACdoB,qBAAqB;AAAA,YACnBC,WAAWhB;AAAAA,YACXiB,YAAYC;AAAAA,UACd;AAAA,UACAC,YAAYpB;AAAAA,UACZqB,YAAYxB,EAAMyB;AAAAA,UAClBC,YAAY1B,EAAM2B;AAAAA,QAAAA,CACnB;AAAA,QACDC,WAAW9B;AAAAA,QACX+B,OAAOjC,EAAqBkC,KAAK,GAAG;AAAA,MAAA;AAEtC,aAAQ,GAAEnC,CAAoB,IAAG,IAAIoC,gBAAgBjB,CAAS,CAAE;AAAA,IAAA,GAC/D,CACDf,GACAK,GACAD,GACAH,EAAMyB,QACNzB,EAAM2B,WACN7B,CAAa,CACd;AAAA,IAICS,qBAAAA;AAAAA,EAAAA;AAEJ;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFeedSettings.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/hooks/useFeedSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,iBAAS,eAAe,CAAC,UAAU,EAAE,IAAI,GAAG;IAC1C,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB,
|
|
1
|
+
{"version":3,"file":"useFeedSettings.d.ts","sourceRoot":"","sources":["../../../../../src/modules/feed/hooks/useFeedSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAGzC,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,EAAE;QACR,iBAAiB,EAAE,OAAO,CAAC;KAC5B,CAAC;CACH,CAAC;AAEF,iBAAS,eAAe,CAAC,UAAU,EAAE,IAAI,GAAG;IAC1C,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;CAClB,CA+BA;AAED,eAAe,eAAe,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTranslations.d.ts","sourceRoot":"","sources":["../../../../../src/modules/i18n/hooks/useTranslations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTranslations.d.ts","sourceRoot":"","sources":["../../../../../src/modules/i18n/hooks/useTranslations.ts"],"names":[],"mappings":"AAKA,wBAAgB,eAAe;;;EAU9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../../../../src/modules/i18n/languages/de.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;AAEhC,QAAA,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"de.d.ts","sourceRoot":"","sources":["../../../../../src/modules/i18n/languages/de.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;AAEhC,QAAA,MAAM,EAAE,EAAE,WAsCT,CAAC;AAEF,eAAe,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../../src/modules/i18n/languages/en.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;AAEhC,QAAA,MAAM,EAAE,EAAE,
|
|
1
|
+
{"version":3,"file":"en.d.ts","sourceRoot":"","sources":["../../../../../src/modules/i18n/languages/en.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,GAAG,CAAC;AAEhC,QAAA,MAAM,EAAE,EAAE,WAqCT,CAAC;AAEF,eAAe,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/slack/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/slack/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@knocklabs/react-core",
|
|
3
3
|
"description": "A set of React components to build notification experiences powered by Knock",
|
|
4
4
|
"author": "@knocklabs",
|
|
5
|
-
"version": "0.2.
|
|
5
|
+
"version": "0.2.21",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/cjs/index.js",
|
|
8
8
|
"module": "dist/esm/index.mjs",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"format:check": "prettier \"src/**/*.{js,ts,tsx}\" --check",
|
|
35
35
|
"test": "vitest run",
|
|
36
36
|
"test:watch": "vitest",
|
|
37
|
+
"type:check": "tsc --noEmit",
|
|
37
38
|
"coverage": "vitest run --coverage",
|
|
38
39
|
"preview": "vite preview"
|
|
39
40
|
},
|
|
@@ -48,7 +49,7 @@
|
|
|
48
49
|
"react": "^16.11.0 || ^17.0.0 || ^18.0.0"
|
|
49
50
|
},
|
|
50
51
|
"dependencies": {
|
|
51
|
-
"@knocklabs/client": "^0.10.
|
|
52
|
+
"@knocklabs/client": "^0.10.10",
|
|
52
53
|
"date-fns": "^3.3.1",
|
|
53
54
|
"swr": "^2.2.5",
|
|
54
55
|
"zustand": "^3.7.2"
|
|
@@ -56,18 +57,18 @@
|
|
|
56
57
|
"devDependencies": {
|
|
57
58
|
"@testing-library/react": "^14.2.0",
|
|
58
59
|
"@types/react": "^18.2.37",
|
|
59
|
-
"@typescript-eslint/eslint-plugin": "^6.
|
|
60
|
-
"@typescript-eslint/parser": "^6.
|
|
60
|
+
"@typescript-eslint/eslint-plugin": "^6.20.0",
|
|
61
|
+
"@typescript-eslint/parser": "^6.20.0",
|
|
61
62
|
"@vitejs/plugin-react": "^4.2.0",
|
|
62
63
|
"babel-plugin-react-require": "^4.0.2",
|
|
63
|
-
"eslint": "^8.
|
|
64
|
+
"eslint": "^8.56.0",
|
|
64
65
|
"eslint-plugin-react-hooks": "^4.6.0",
|
|
65
66
|
"eslint-plugin-react-refresh": "^0.4.4",
|
|
66
67
|
"jsdom": "^24.0.0",
|
|
67
68
|
"react": "^18.2.0",
|
|
68
69
|
"rimraf": "^5.0.5",
|
|
69
70
|
"rollup-plugin-execute": "^1.1.1",
|
|
70
|
-
"typescript": "^5.
|
|
71
|
+
"typescript": "^5.3.3",
|
|
71
72
|
"vite": "^5.0.0",
|
|
72
73
|
"vite-plugin-dts": "^3.6.3",
|
|
73
74
|
"vite-plugin-no-bundle": "^3.0.0",
|
package/src/index.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useContext } from "react";
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
import { I18nContext } from "../context/KnockI18nProvider";
|
|
4
|
+
import { I18nContent, locales } from "../languages";
|
|
4
5
|
|
|
5
6
|
export function useTranslations() {
|
|
6
7
|
const { translations, locale } = useContext<I18nContent>(I18nContext);
|
|
@@ -18,15 +18,18 @@ const de: I18nContent = {
|
|
|
18
18
|
slackDisconnecting: "Trennen der Verbindung...",
|
|
19
19
|
slackConnect: "Mit Slack verbinden",
|
|
20
20
|
slackConnected: "Verbunden",
|
|
21
|
-
slackConnectContainerDescription:
|
|
21
|
+
slackConnectContainerDescription:
|
|
22
|
+
"Verbinden, um Benachrichtigungen in Ihrem Slack-Arbeitsbereich zu erhalten.",
|
|
22
23
|
slackSearchbarDisconnected: "Slack ist nicht verbunden.",
|
|
23
|
-
slackSearchbarMultipleChannels:
|
|
24
|
+
slackSearchbarMultipleChannels: "Mehrere Kanäle verbunden",
|
|
24
25
|
slackSearchbarNoChannelsConnected: "Suchkanäle",
|
|
25
26
|
slackSearchbarNoChannelsFound: "Keine schlaffen Kanäle.",
|
|
26
27
|
slackSearchbarChannelsError: "Fehler beim Abrufen von Kanälen.",
|
|
27
28
|
slackSearchChannels: "Suchkanäle",
|
|
28
|
-
slackConnectionErrorExists:
|
|
29
|
-
|
|
29
|
+
slackConnectionErrorExists:
|
|
30
|
+
"Versuchen Sie, sich erneut mit Slack zu verbinden, um Kanäle in Ihrem Arbeitsbereich zu finden und auszuwählen.",
|
|
31
|
+
slackConnectionErrorOccurred:
|
|
32
|
+
"Es ist ein Fehler beim Verbinden mit Slack aufgetreten. Versuchen Sie, sich erneut zu verbinden, um Kanäle in Ihrem Arbeitsbereich zu finden und auszuwählen.",
|
|
30
33
|
slackChannelAlreadyConnected: "Fehler: bereits verbunden",
|
|
31
34
|
slackError: "Fehler",
|
|
32
35
|
slackDisconnect: "Trennen Sie die Verbindung.",
|
|
@@ -17,15 +17,18 @@ const en: I18nContent = {
|
|
|
17
17
|
slackDisconnecting: "Disconnecting...",
|
|
18
18
|
slackConnect: "Connect to Slack",
|
|
19
19
|
slackConnected: "Connected",
|
|
20
|
-
slackConnectContainerDescription:
|
|
20
|
+
slackConnectContainerDescription:
|
|
21
|
+
"Connect to get notifications in your Slack workspace.",
|
|
21
22
|
slackSearchbarDisconnected: "Slack is not connected.",
|
|
22
|
-
slackSearchbarMultipleChannels:
|
|
23
|
+
slackSearchbarMultipleChannels: "Multiple channels connected",
|
|
23
24
|
slackSearchbarNoChannelsConnected: "Search channels",
|
|
24
25
|
slackSearchbarNoChannelsFound: "No slack channels.",
|
|
25
26
|
slackSearchbarChannelsError: "Error fetching channels.",
|
|
26
27
|
slackSearchChannels: "Search channels",
|
|
27
|
-
slackConnectionErrorExists:
|
|
28
|
-
|
|
28
|
+
slackConnectionErrorExists:
|
|
29
|
+
"Try reconnecting to Slack to find and select channels from your workspace.",
|
|
30
|
+
slackConnectionErrorOccurred:
|
|
31
|
+
"There was an error connecting to Slack. Try reconnecting to find and select channels from your workspace.",
|
|
29
32
|
slackChannelAlreadyConnected: "Error: already connected",
|
|
30
33
|
slackError: "Error",
|
|
31
34
|
slackDisconnect: "Disconnect",
|