@knocklabs/react-core 0.2.22 → 0.2.23
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 +7 -0
- package/dist/cjs/modules/feed/hooks/useFeedSettings.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/slack/hooks/useSlackAuth.mjs.map +1 -1
- package/dist/types/index.d.ts +4 -4
- package/dist/types/modules/core/context/KnockProvider.d.ts +4 -3
- package/dist/types/modules/core/context/index.d.ts +1 -1
- package/dist/types/modules/core/hooks/index.d.ts +2 -2
- package/dist/types/modules/core/hooks/useAuthenticatedKnockClient.d.ts +2 -1
- package/dist/types/modules/core/index.d.ts +4 -4
- package/dist/types/modules/core/utils.d.ts +3 -2
- package/dist/types/modules/feed/context/KnockFeedProvider.d.ts +5 -4
- package/dist/types/modules/feed/context/index.d.ts +1 -1
- package/dist/types/modules/feed/hooks/index.d.ts +3 -3
- package/dist/types/modules/feed/hooks/useFeedSettings.d.ts +2 -1
- package/dist/types/modules/feed/hooks/useNotificationStore.d.ts +4 -3
- package/dist/types/modules/feed/hooks/useNotifications.d.ts +2 -1
- package/dist/types/modules/feed/index.d.ts +2 -2
- package/dist/types/modules/i18n/context/KnockI18nProvider.d.ts +3 -3
- package/dist/types/modules/i18n/context/index.d.ts +1 -1
- package/dist/types/modules/i18n/hooks/index.d.ts +1 -1
- package/dist/types/modules/i18n/hooks/useTranslations.d.ts +1 -1
- package/dist/types/modules/i18n/index.d.ts +3 -3
- package/dist/types/modules/i18n/languages/de.d.ts +2 -1
- package/dist/types/modules/i18n/languages/en.d.ts +2 -1
- package/dist/types/modules/slack/context/KnockSlackProvider.d.ts +2 -2
- package/dist/types/modules/slack/context/index.d.ts +1 -1
- package/dist/types/modules/slack/hooks/index.d.ts +4 -4
- package/dist/types/modules/slack/hooks/useConnectedSlackChannels.d.ts +3 -2
- package/dist/types/modules/slack/hooks/useSlackChannels.d.ts +3 -2
- package/dist/types/modules/slack/hooks/useSlackConnectionStatus.d.ts +2 -1
- package/dist/types/modules/slack/index.d.ts +3 -3
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -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 // 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,
|
|
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,EAAmB,aAAaH,EAAMI,MAAM,UAAUZ,EAAWa,MAAM,YAC7ER,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 +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\",\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,
|
|
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,MAAO,GAAGnC,CAAmB,IAAI,IAAIoC,gBAAgBjB,CAAS,CAAC,EAAA,EAC9D,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 // 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,
|
|
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,IAAmB,aAAaH,EAAMI,MAAM,UAAUZ,EAAWa,MAAM;AAC7ER,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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlackAuth.mjs","sources":["../../../../../src/modules/slack/hooks/useSlackAuth.ts"],"sourcesContent":["import { useKnockSlackClient } from \"..\";\nimport { TENANT_OBJECT_COLLECTION } from \"@knocklabs/client\";\nimport { useCallback } from \"react\";\n\nimport { useKnockClient } from \"../../core\";\n\nconst SLACK_AUTHORIZE_URL = \"https://slack.com/oauth/v2/authorize\";\nconst DEFAULT_SLACK_SCOPES = [\n \"chat:write\",\n \"chat:write.public\",\n \"channels:read\",\n \"groups:read\",\n];\n\ntype UseSlackAuthOutput = {\n buildSlackAuthUrl: () => string;\n disconnectFromSlack: () => void;\n};\n\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,
|
|
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,aAAO,GAAGnC,CAAmB,IAAI,IAAIoC,gBAAgBjB,CAAS,CAAC;AAAA,IAAA,GAC9D,CACDf,GACAK,GACAD,GACAH,EAAMyB,QACNzB,EAAM2B,WACN7B,CAAa,CACd;AAAA,IAICS,qBAAAA;AAAAA,EAAAA;AAEJ;"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
1
|
+
export * from './modules/core';
|
|
2
|
+
export * from './modules/feed';
|
|
3
|
+
export * from './modules/slack';
|
|
4
|
+
export * from './modules/i18n';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import Knock,
|
|
1
|
+
import { default as Knock, AuthenticateOptions, LogLevel } from '@knocklabs/client';
|
|
2
|
+
import { PropsWithChildren } from 'react';
|
|
3
|
+
import { I18nContent } from '../../i18n';
|
|
4
|
+
|
|
2
5
|
import * as React from "react";
|
|
3
|
-
import { PropsWithChildren } from "react";
|
|
4
|
-
import { I18nContent } from "../../i18n";
|
|
5
6
|
export interface KnockProviderState {
|
|
6
7
|
knock: Knock;
|
|
7
8
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './KnockProvider';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { default as useAuthenticatedKnockClient } from
|
|
2
|
-
export { default as useStableOptions } from
|
|
1
|
+
export { default as useAuthenticatedKnockClient } from './useAuthenticatedKnockClient';
|
|
2
|
+
export { default as useStableOptions } from './useStableOptions';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import Knock,
|
|
1
|
+
import { default as Knock, AuthenticateOptions, KnockOptions } from '@knocklabs/client';
|
|
2
|
+
|
|
2
3
|
export type AuthenticatedKnockClientOptions = KnockOptions & AuthenticateOptions;
|
|
3
4
|
declare function useAuthenticatedKnockClient(apiKey: string, userId: string, userToken?: string, options?: AuthenticatedKnockClientOptions): Knock;
|
|
4
5
|
export default useAuthenticatedKnockClient;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
4
|
-
export * from
|
|
1
|
+
export * from './context';
|
|
2
|
+
export * from './hooks';
|
|
3
|
+
export * from './constants';
|
|
4
|
+
export * from './utils';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { FeedClientOptions } from
|
|
2
|
-
import { ReactNode } from
|
|
1
|
+
import { FeedClientOptions } from '@knocklabs/client';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
|
|
3
4
|
export declare function formatBadgeCount(count: number): string | number;
|
|
4
5
|
type FormatTimestampOptions = {
|
|
5
6
|
locale?: string | string[];
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import Knock,
|
|
1
|
+
import { default as Knock, Feed, FeedClientOptions, FeedStoreState } from '@knocklabs/client';
|
|
2
|
+
import { PropsWithChildren } from 'react';
|
|
3
|
+
import { UseBoundStore } from 'zustand';
|
|
4
|
+
import { ColorMode } from '../../core/constants';
|
|
5
|
+
|
|
2
6
|
import * as React from "react";
|
|
3
|
-
import { PropsWithChildren } from "react";
|
|
4
|
-
import { UseBoundStore } from "zustand";
|
|
5
|
-
import { ColorMode } from "../../core/constants";
|
|
6
7
|
export interface KnockFeedProviderState {
|
|
7
8
|
knock: Knock;
|
|
8
9
|
feedClient: Feed;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './KnockFeedProvider';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as useNotifications } from
|
|
2
|
-
export { default as useFeedSettings } from
|
|
3
|
-
export { default as useNotificationStore, useCreateNotificationStore, } from
|
|
1
|
+
export { default as useNotifications } from './useNotifications';
|
|
2
|
+
export { default as useFeedSettings } from './useFeedSettings';
|
|
3
|
+
export { default as useNotificationStore, useCreateNotificationStore, } from './useNotificationStore';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Feed, FeedStoreState } from
|
|
2
|
-
import { StateSelector } from
|
|
3
|
-
|
|
1
|
+
import { Feed, FeedStoreState } from '@knocklabs/client';
|
|
2
|
+
import { StateSelector } from 'zustand';
|
|
3
|
+
|
|
4
|
+
declare function useCreateNotificationStore(feedClient: Feed): import('zustand').UseBoundStore<FeedStoreState, import('zustand').StoreApi<FeedStoreState>>;
|
|
4
5
|
declare function useNotificationStore(feedClient: Feed, selector?: StateSelector<FeedStoreState, FeedStoreState>): FeedStoreState;
|
|
5
6
|
export { useCreateNotificationStore };
|
|
6
7
|
export default useNotificationStore;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import Knock,
|
|
1
|
+
import { default as Knock, Feed, FeedClientOptions } from '@knocklabs/client';
|
|
2
|
+
|
|
2
3
|
declare function useNotifications(knock: Knock, feedChannelId: string, options?: FeedClientOptions): Feed;
|
|
3
4
|
export default useNotifications;
|
|
4
5
|
//# sourceMappingURL=useNotifications.d.ts.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
1
|
+
export * from './context';
|
|
2
|
+
export * from './hooks';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
import {
|
|
3
|
-
|
|
1
|
+
import { default as React, FunctionComponent, PropsWithChildren } from 'react';
|
|
2
|
+
import { I18nContent } from '../languages';
|
|
3
|
+
|
|
4
4
|
export declare const I18nContext: React.Context<I18nContent>;
|
|
5
5
|
export interface KnockI18nProviderProps {
|
|
6
6
|
i18n?: I18nContent;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './KnockI18nProvider';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './useTranslations';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export * from './context';
|
|
2
|
+
export * from './hooks';
|
|
3
|
+
export * from './languages';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { PropsWithChildren } from 'react';
|
|
2
|
+
import { ConnectionStatus } from '../hooks/useSlackConnectionStatus';
|
|
1
3
|
import * as React from "react";
|
|
2
|
-
import { PropsWithChildren } from "react";
|
|
3
|
-
import { ConnectionStatus } from "../hooks/useSlackConnectionStatus";
|
|
4
4
|
export interface KnockSlackProviderState {
|
|
5
5
|
knockSlackChannelId: string;
|
|
6
6
|
tenant: string;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from
|
|
1
|
+
export * from './KnockSlackProvider';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { default as useSlackConnectionStatus } from
|
|
2
|
-
export { default as useSlackChannels } from
|
|
3
|
-
export { default as useConnectedSlackChannels } from
|
|
4
|
-
export { default as useSlackAuth } from
|
|
1
|
+
export { default as useSlackConnectionStatus } from './useSlackConnectionStatus';
|
|
2
|
+
export { default as useSlackChannels } from './useSlackChannels';
|
|
3
|
+
export { default as useConnectedSlackChannels } from './useConnectedSlackChannels';
|
|
4
|
+
export { default as useSlackAuth } from './useSlackAuth';
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { ContainerObject } from
|
|
2
|
-
import { SlackChannelConnection } from
|
|
1
|
+
import { ContainerObject } from '..';
|
|
2
|
+
import { SlackChannelConnection } from '@knocklabs/client';
|
|
3
|
+
|
|
3
4
|
type UseSlackChannelsProps = {
|
|
4
5
|
slackChannelsRecipientObject: ContainerObject;
|
|
5
6
|
};
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { SlackChannelQueryOptions } from
|
|
2
|
-
import { SlackChannel } from
|
|
1
|
+
import { SlackChannelQueryOptions } from '..';
|
|
2
|
+
import { SlackChannel } from '@knocklabs/client';
|
|
3
|
+
|
|
3
4
|
type UseSlackChannelsProps = {
|
|
4
5
|
queryOptions?: SlackChannelQueryOptions;
|
|
5
6
|
};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import Knock from
|
|
1
|
+
import { default as Knock } from '@knocklabs/client';
|
|
2
|
+
|
|
2
3
|
export type ConnectionStatus = "connecting" | "connected" | "disconnected" | "error" | "disconnecting";
|
|
3
4
|
type UseSlackConnectionStatusOutput = {
|
|
4
5
|
connectionStatus: ConnectionStatus;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export * from './context';
|
|
2
|
+
export * from './hooks';
|
|
3
|
+
export * from './constants';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
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.23",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"main": "dist/cjs/index.js",
|
|
8
8
|
"module": "dist/esm/index.mjs",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"react": "^16.11.0 || ^17.0.0 || ^18.0.0"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@knocklabs/client": "^0.10.
|
|
52
|
+
"@knocklabs/client": "^0.10.12",
|
|
53
53
|
"date-fns": "^3.3.1",
|
|
54
54
|
"swr": "^2.2.5",
|
|
55
55
|
"zustand": "^3.7.2"
|
|
@@ -66,12 +66,12 @@
|
|
|
66
66
|
"eslint-plugin-react-refresh": "^0.4.4",
|
|
67
67
|
"jsdom": "^24.0.0",
|
|
68
68
|
"react": "^18.2.0",
|
|
69
|
-
"rimraf": "^
|
|
69
|
+
"rimraf": "^6.0.1",
|
|
70
70
|
"rollup-plugin-execute": "^1.1.1",
|
|
71
|
-
"typescript": "^5.
|
|
71
|
+
"typescript": "^5.5.4",
|
|
72
72
|
"vite": "^5.0.0",
|
|
73
73
|
"vite-plugin-dts": "^3.6.3",
|
|
74
74
|
"vite-plugin-no-bundle": "^3.0.0",
|
|
75
|
-
"vitest": "^
|
|
75
|
+
"vitest": "^2.0.5"
|
|
76
76
|
}
|
|
77
77
|
}
|