stream-chat-react-native-core 5.6.0-beta.1 → 5.6.0-beta.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/lib/commonjs/components/Channel/Channel.js +23 -17
- package/lib/commonjs/components/Channel/Channel.js.map +1 -1
- package/lib/commonjs/components/Chat/Chat.js +1 -1
- package/lib/commonjs/components/Chat/Chat.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useAppSettings.js +51 -22
- package/lib/commonjs/components/Chat/hooks/useAppSettings.js.map +1 -1
- package/lib/commonjs/components/Chat/hooks/useIsOnline.js +1 -1
- package/lib/commonjs/components/Chat/hooks/useIsOnline.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGrid.js +4 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js +2 -2
- package/lib/commonjs/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
- package/lib/commonjs/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js +16 -7
- package/lib/commonjs/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/commonjs/contexts/themeContext/utils/theme.js +1 -0
- package/lib/commonjs/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/commonjs/native.js +1 -1
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/store/QuickSqliteClient.js +46 -1
- package/lib/commonjs/store/QuickSqliteClient.js.map +1 -1
- package/lib/commonjs/store/QuickSqliteClient_v4.js +112 -0
- package/lib/commonjs/store/QuickSqliteClient_v4.js.map +1 -0
- package/lib/commonjs/store/apis/getAppSettings.js +23 -0
- package/lib/commonjs/store/apis/getAppSettings.js.map +1 -0
- package/lib/commonjs/store/apis/getPendingTasks.js.map +1 -1
- package/lib/commonjs/store/apis/index.js +26 -0
- package/lib/commonjs/store/apis/index.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectChannels.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectMembersForChannels.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectMessagesForChannels.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectReactionsForMessages.js.map +1 -1
- package/lib/commonjs/store/apis/queries/selectReadsForChannels.js.map +1 -1
- package/lib/commonjs/store/apis/upsertAppSettings.js +26 -0
- package/lib/commonjs/store/apis/upsertAppSettings.js.map +1 -0
- package/lib/commonjs/store/schema.js +1 -0
- package/lib/commonjs/store/schema.js.map +1 -1
- package/lib/commonjs/version.json +1 -1
- package/lib/module/components/Channel/Channel.js +23 -17
- package/lib/module/components/Channel/Channel.js.map +1 -1
- package/lib/module/components/Chat/Chat.js +1 -1
- package/lib/module/components/Chat/Chat.js.map +1 -1
- package/lib/module/components/Chat/hooks/useAppSettings.js +51 -22
- package/lib/module/components/Chat/hooks/useAppSettings.js.map +1 -1
- package/lib/module/components/Chat/hooks/useIsOnline.js +1 -1
- package/lib/module/components/Chat/hooks/useIsOnline.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGrid.js +4 -1
- package/lib/module/components/ImageGallery/components/ImageGrid.js.map +1 -1
- package/lib/module/components/ImageGallery/components/ImageGridHandle.js +2 -2
- package/lib/module/components/ImageGallery/components/ImageGridHandle.js.map +1 -1
- package/lib/module/contexts/chatContext/ChatContext.js.map +1 -1
- package/lib/module/contexts/messageInputContext/MessageInputContext.js +16 -7
- package/lib/module/contexts/messageInputContext/MessageInputContext.js.map +1 -1
- package/lib/module/contexts/themeContext/utils/theme.js +1 -0
- package/lib/module/contexts/themeContext/utils/theme.js.map +1 -1
- package/lib/module/native.js +1 -1
- package/lib/module/native.js.map +1 -1
- package/lib/module/store/QuickSqliteClient.js +46 -1
- package/lib/module/store/QuickSqliteClient.js.map +1 -1
- package/lib/module/store/QuickSqliteClient_v4.js +112 -0
- package/lib/module/store/QuickSqliteClient_v4.js.map +1 -0
- package/lib/module/store/apis/getAppSettings.js +23 -0
- package/lib/module/store/apis/getAppSettings.js.map +1 -0
- package/lib/module/store/apis/getPendingTasks.js.map +1 -1
- package/lib/module/store/apis/index.js +26 -0
- package/lib/module/store/apis/index.js.map +1 -1
- package/lib/module/store/apis/queries/selectChannels.js.map +1 -1
- package/lib/module/store/apis/queries/selectMembersForChannels.js.map +1 -1
- package/lib/module/store/apis/queries/selectMessagesForChannels.js.map +1 -1
- package/lib/module/store/apis/queries/selectReactionsForMessages.js.map +1 -1
- package/lib/module/store/apis/queries/selectReadsForChannels.js.map +1 -1
- package/lib/module/store/apis/upsertAppSettings.js +26 -0
- package/lib/module/store/apis/upsertAppSettings.js.map +1 -0
- package/lib/module/store/schema.js +1 -0
- package/lib/module/store/schema.js.map +1 -1
- package/lib/module/version.json +1 -1
- package/lib/typescript/components/Chat/hooks/useAppSettings.d.ts +2 -2
- package/lib/typescript/components/Chat/hooks/useIsOnline.d.ts +1 -1
- package/lib/typescript/contexts/chatContext/ChatContext.d.ts +1 -1
- package/lib/typescript/contexts/themeContext/utils/theme.d.ts +1 -0
- package/lib/typescript/store/QuickSqliteClient.d.ts +4 -1
- package/lib/typescript/store/QuickSqliteClient_v4.d.ts +12 -0
- package/lib/typescript/store/apis/getAppSettings.d.ts +4 -0
- package/lib/typescript/store/apis/getPendingTasks.d.ts +1 -1
- package/lib/typescript/store/apis/index.d.ts +2 -0
- package/lib/typescript/store/apis/upsertAppSettings.d.ts +6 -0
- package/lib/typescript/store/schema.d.ts +1 -0
- package/package.json +2 -2
- package/src/components/Attachment/__tests__/Gallery.test.js +9 -2
- package/src/components/Attachment/__tests__/Giphy.test.js +9 -5
- package/src/components/Channel/Channel.tsx +11 -3
- package/src/components/Chat/Chat.tsx +1 -1
- package/src/components/Chat/hooks/__tests__/useAppSettings.test.tsx +1 -0
- package/src/components/Chat/hooks/useAppSettings.ts +19 -6
- package/src/components/Chat/hooks/useIsOnline.ts +1 -1
- package/src/components/ImageGallery/__tests__/ImageGallery.test.tsx +29 -15
- package/src/components/ImageGallery/__tests__/ImageGalleryFooter.test.tsx +12 -6
- package/src/components/ImageGallery/__tests__/ImageGalleryHeader.test.tsx +9 -4
- package/src/components/ImageGallery/components/ImageGrid.tsx +2 -1
- package/src/components/ImageGallery/components/ImageGridHandle.tsx +2 -2
- package/src/contexts/chatContext/ChatContext.tsx +1 -1
- package/src/contexts/messageInputContext/MessageInputContext.tsx +7 -0
- package/src/contexts/messageInputContext/__tests__/MessageInputContext.test.tsx +8 -3
- package/src/contexts/messageInputContext/__tests__/uploadFile.test.tsx +16 -6
- package/src/contexts/themeContext/utils/theme.ts +2 -0
- package/src/native.ts +1 -1
- package/src/store/QuickSqliteClient.ts +49 -5
- package/src/store/QuickSqliteClient_v4.ts +98 -0
- package/src/store/apis/getAppSettings.ts +19 -0
- package/src/store/apis/getPendingTasks.ts +2 -1
- package/src/store/apis/index.ts +2 -0
- package/src/store/apis/queries/selectChannels.ts +4 -1
- package/src/store/apis/queries/selectMembersForChannels.ts +1 -1
- package/src/store/apis/queries/selectMessagesForChannels.ts +1 -1
- package/src/store/apis/queries/selectReactionsForMessages.ts +1 -1
- package/src/store/apis/queries/selectReadsForChannels.ts +1 -1
- package/src/store/apis/upsertAppSettings.ts +23 -0
- package/src/store/schema.ts +2 -0
- package/src/version.json +1 -1
|
@@ -123,7 +123,7 @@ var ChatWithContext = function ChatWithContext(props) {
|
|
|
123
123
|
return setChannel(newChannel);
|
|
124
124
|
};
|
|
125
125
|
|
|
126
|
-
var appSettings = (0, _useAppSettings.useAppSettings)(client, isOnline);
|
|
126
|
+
var appSettings = (0, _useAppSettings.useAppSettings)(client, isOnline, enableOfflineSupport);
|
|
127
127
|
var chatContext = (0, _useCreateChatContext.useCreateChatContext)({
|
|
128
128
|
appSettings: appSettings,
|
|
129
129
|
channel: channel,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Chat.tsx"],"names":["ChatWithContext","props","children","client","closeConnectionOnBackground","enableOfflineSupport","i18nInstance","ImageComponent","Image","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","debugRef","isDebugModeEnabled","__DEV__","current","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","persistUserOnConnectionFailure","setEventType","setSendEventParams","action","data","user","setActiveChannel","newChannel","appSettings","chatContext","id","QuickSqliteClient","initializeDatabase","DBSyncManager","init","userLanguage","language","DEFAULT_USER_LANGUAGE","Chat"],"mappings":";;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AAIA;;AACA;;AACA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;AACA;;AACA;;AAEA;;AAKA;;AACA;;AAEA;;AACA;;AAEA;;AAEA;;;;;;;;;AAEA;;AAoGA,IAAMA,eAAe,GAAG,SAAlBA,eAAkB,CAGtBC,KAHsB,EAInB;AAAA;;AACH,MACEC,QADF,GAQID,KARJ,CACEC,QADF;AAAA,MAEEC,MAFF,GAQIF,KARJ,CAEEE,MAFF;AAAA,8BAQIF,KARJ,CAGEG,2BAHF;AAAA,MAGEA,2BAHF,sCAGgC,IAHhC;AAAA,8BAQIH,KARJ,CAIEI,oBAJF;AAAA,MAIEA,oBAJF,sCAIyB,KAJzB;AAAA,MAKEC,YALF,GAQIL,KARJ,CAKEK,YALF;AAAA,8BAQIL,KARJ,CAMEM,cANF;AAAA,MAMEA,cANF,sCAMmBC,kBANnB;AAAA,MAOEC,KAPF,GAQIR,KARJ,CAOEQ,KAPF;;AAUA,kBAA8B,sBAA9B;AAAA;AAAA,MAAOC,OAAP;AAAA,MAAgBC,UAAhB;;AACA,mBAAsC,qBAA8B;AAClEC,IAAAA,CAAC,EAAE,WAACC,GAAD;AAAA,aAAiBA,GAAjB;AAAA,KAD+D;AAElEC,IAAAA,eAAe,EAAE,yBAACC,KAAD;AAAA,aAAoC,uBAAMA,KAAN,CAApC;AAAA;AAFiD,GAA9B,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AAQA,MAAMC,kBAAkB,GAAG,kCAAc;AAAEZ,IAAAA,YAAY,EAAZA,YAAF;AAAgBW,IAAAA,cAAc,EAAdA;AAAhB,GAAd,CAA3B;;AAKA,qBAA2C,+BACzCd,MADyC,EAEzCC,2BAFyC,CAA3C;AAAA,MAAQe,oBAAR,gBAAQA,oBAAR;AAAA,MAA8BC,QAA9B,gBAA8BA,QAA9B;;AASA,MAAMC,UAAU,GAAG,kCAAkClB,MAAlC,CAAnB;AAEA,MAAMmB,QAAQ,GAAG,oCAAjB;AACA,MAAMC,kBAAkB,GAAGC,OAAO,IAAIF,QAAX,IAAuBA,QAAQ,CAACG,OAA3D;AAEA,wBAAU,YAAM;AACd,QAAItB,MAAJ,EAAY;AACVA,MAAAA,MAAM,CAACuB,YAAP,CAAuBC,WAAvB,SAA8BC,sBAASC,EAAvC,SAA6CC,gBAA7C;AAEA3B,MAAAA,MAAM,CAAC4B,uBAAP,GAAiC,KAAjC;AACA5B,MAAAA,MAAM,CAAC6B,8BAAP,GAAwC3B,oBAAxC;AACD;;AAED,QAAIkB,kBAAJ,EAAwB;AACtB,UAAID,QAAQ,CAACG,OAAT,CAAiBQ,YAArB,EAAmCX,QAAQ,CAACG,OAAT,CAAiBQ,YAAjB,CAA8B,MAA9B;AACnC,UAAIX,QAAQ,CAACG,OAAT,CAAiBS,kBAArB,EACEZ,QAAQ,CAACG,OAAT,CAAiBS,kBAAjB,CAAoC;AAClCC,QAAAA,MAAM,EAAE,QAD0B;AAElCC,QAAAA,IAAI,EAAEjC,MAAM,CAACkC;AAFqB,OAApC;AAIH;AACF,GAhBD,EAgBG,CAAClC,MAAD,CAhBH;;AAkBA,MAAMmC,gBAAgB,GAAG,SAAnBA,gBAAmB,CAACC,UAAD;AAAA,WAA8C5B,UAAU,CAAC4B,UAAD,CAAxD;AAAA,GAAzB;;AAEA,MAAMC,WAAW,GAAG,oCAAerC,MAAf,EAAuBiB,QAAvB,CAApB;AAEA,MAAMqB,WAAW,GAAG,gDAAqB;AACvCD,IAAAA,WAAW,EAAXA,WADuC;AAEvC9B,IAAAA,OAAO,EAAPA,OAFuC;AAGvCP,IAAAA,MAAM,EAANA,MAHuC;AAIvCgB,IAAAA,oBAAoB,EAApBA,oBAJuC;AAKvCd,IAAAA,oBAAoB,EAApBA,oBALuC;AAMvCE,IAAAA,cAAc,EAAdA,cANuC;AAOvCa,IAAAA,QAAQ,EAARA,QAPuC;AAQvCC,IAAAA,UAAU,EAAVA,UARuC;AASvCiB,IAAAA,gBAAgB,EAAhBA;AATuC,GAArB,CAApB;AAYA,wBAAU,YAAM;AAAA;;AACd,QAAI,gBAAAnC,MAAM,CAACkC,IAAP,0BAAaK,EAAb,IAAmBrC,oBAAvB,EAA6C;AAC3CsC,2CAAkBC,kBAAlB;;AACAC,mCAAcC,IAAd,CAAmB3C,MAAnB;AACD;AACF,GALD,EAKG,CAACA,MAAD,qCAACA,MAAM,CAAEkC,IAAT,qBAAC,cAAcK,EAAf,CALH;AAOA,wCAAgB;AACdvC,IAAAA,MAAM,EAANA,MADc;AAEdE,IAAAA,oBAAoB,EAApBA;AAFc,GAAhB;AAKA,MAAIa,kBAAJ,EAAwB,OAAO,IAAP;AAExB,SACE,gCAAC,yBAAD;AAAkC,IAAA,KAAK,EAAEuB,WAAzC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,uCAAD;AACE,IAAA,KAAK,gCAAOzB,WAAP;AAAoB+B,MAAAA,YAAY,EAAE,kBAAA5C,MAAM,CAACkC,IAAP,mCAAaW,QAAb,KAAyBC;AAA3D,MADP;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAGE,gCAAC,2BAAD;AAAe,IAAA,KAAK,EAAExC,KAAtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,2CAAD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA4CP,QAA5C,CADF,CAHF,CADF,CADF;AAWD,CAtGD;;AA6HO,IAAMgD,IAAI,GAAG,SAAPA,IAAO,CAGlBjD,KAHkB,EAIf;AACH,2BAAkB,wCAAlB;AAAA,MAAQQ,KAAR,sBAAQA,KAAR;;AAEA,SAAO,gCAAC,eAAD;AAAuBA,IAAAA,KAAK,EAALA;AAAvB,KAAoCR,KAApC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAAP;AACD,CARM","sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Image, Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel, StreamChat } from 'stream-chat';\n\nimport { useAppSettings } from './hooks/useAppSettings';\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { useSyncDatabase } from './hooks/useSyncDatabase';\n\nimport { ChannelsStateProvider } from '../../contexts/channelsStateContext/ChannelsStateContext';\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\nimport { QuickSqliteClient } from '../../store/QuickSqliteClient';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\ninit();\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Partial<Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Enables offline storage and loading for chat data.\n */\n enableOfflineSupport?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n };\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const {\n children,\n client,\n closeConnectionOnBackground = true,\n enableOfflineSupport = false,\n i18nInstance,\n ImageComponent = Image,\n style,\n } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n /**\n * Setup muted user listener\n * TODO: reimplement\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n const debugRef = useDebugContext();\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n useEffect(() => {\n if (client) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n client.persistUserOnConnectionFailure = enableOfflineSupport;\n }\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: 'Client',\n data: client.user,\n });\n }\n }, [client]);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const appSettings = useAppSettings(client, isOnline);\n\n const chatContext = useCreateChatContext({\n appSettings,\n channel,\n client,\n connectionRecovering,\n enableOfflineSupport,\n ImageComponent,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n useEffect(() => {\n if (client.user?.id && enableOfflineSupport) {\n QuickSqliteClient.initializeDatabase();\n DBSyncManager.init(client as unknown as StreamChat);\n }\n }, [client?.user?.id]);\n\n useSyncDatabase({\n client,\n enableOfflineSupport,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider\n value={{ ...translators, userLanguage: client.user?.language || DEFAULT_USER_LANGUAGE }}\n >\n <ThemeProvider style={style}>\n <ChannelsStateProvider<StreamChatGenerics>>{children}</ChannelsStateProvider>\n </ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["Chat.tsx"],"names":["ChatWithContext","props","children","client","closeConnectionOnBackground","enableOfflineSupport","i18nInstance","ImageComponent","Image","style","channel","setChannel","t","key","tDateTimeParser","input","translators","setTranslators","loadingTranslators","connectionRecovering","isOnline","mutedUsers","debugRef","isDebugModeEnabled","__DEV__","current","setUserAgent","SDK","Platform","OS","version","recoverStateOnReconnect","persistUserOnConnectionFailure","setEventType","setSendEventParams","action","data","user","setActiveChannel","newChannel","appSettings","chatContext","id","QuickSqliteClient","initializeDatabase","DBSyncManager","init","userLanguage","language","DEFAULT_USER_LANGUAGE","Chat"],"mappings":"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","sourcesContent":["import React, { PropsWithChildren, useEffect, useState } from 'react';\nimport { Image, Platform } from 'react-native';\n\nimport Dayjs from 'dayjs';\n\nimport type { Channel, StreamChat } from 'stream-chat';\n\nimport { useAppSettings } from './hooks/useAppSettings';\nimport { useCreateChatContext } from './hooks/useCreateChatContext';\nimport { useIsOnline } from './hooks/useIsOnline';\nimport { useMutedUsers } from './hooks/useMutedUsers';\n\nimport { useSyncDatabase } from './hooks/useSyncDatabase';\n\nimport { ChannelsStateProvider } from '../../contexts/channelsStateContext/ChannelsStateContext';\nimport { ChatContextValue, ChatProvider } from '../../contexts/chatContext/ChatContext';\nimport { useDebugContext } from '../../contexts/debugContext/DebugContext';\nimport { useOverlayContext } from '../../contexts/overlayContext/OverlayContext';\nimport { DeepPartial, ThemeProvider } from '../../contexts/themeContext/ThemeContext';\nimport type { Theme } from '../../contexts/themeContext/utils/theme';\nimport {\n DEFAULT_USER_LANGUAGE,\n TranslationProvider,\n TranslatorFunctions,\n} from '../../contexts/translationContext/TranslationContext';\nimport { useStreami18n } from '../../hooks/useStreami18n';\nimport init from '../../init';\n\nimport { SDK } from '../../native';\nimport { QuickSqliteClient } from '../../store/QuickSqliteClient';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { DBSyncManager } from '../../utils/DBSyncManager';\nimport type { Streami18n } from '../../utils/Streami18n';\nimport { version } from '../../version.json';\n\ninit();\n\nexport type ChatProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ChatContextValue<StreamChatGenerics>, 'client'> &\n Partial<Pick<ChatContextValue<StreamChatGenerics>, 'ImageComponent'>> & {\n /**\n * When false, ws connection won't be disconnection upon backgrounding the app.\n * To receive push notifications, its necessary that user doesn't have active\n * websocket connection. So by default, we disconnect websocket connection when\n * app goes to background, and reconnect when app comes to foreground.\n */\n closeConnectionOnBackground?: boolean;\n /**\n * Enables offline storage and loading for chat data.\n */\n enableOfflineSupport?: boolean;\n /**\n * Instance of Streami18n class should be provided to Chat component to enable internationalization.\n *\n * Stream provides following list of in-built translations:\n * 1. English (en)\n * 2. Dutch (nl)\n * 3. ...\n * 4. ...\n *\n * Simplest way to start using chat components in one of the in-built languages would be following:\n *\n * ```\n * const i18n = new Streami18n('nl');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * If you would like to override certain keys in in-built translation.\n * UI will be automatically updated in this case.\n *\n * ```\n * const i18n = new Streami18n('nl');\n *\n * i18n.registerTranslation('nl', {\n * 'Nothing yet...': 'Nog Niet ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} en {{ secondUser }} zijn aan het typen...',\n * });\n *\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n *\n * You can use the same function to add whole new language.\n *\n * ```\n * const i18n = new Streami18n('it');\n *\n * i18n.registerTranslation('it', {\n * 'Nothing yet...': 'Non ancora ...',\n * '{{ firstUser }} and {{ secondUser }} are typing...': '{{ firstUser }} a {{ secondUser }} stanno scrivendo...',\n * });\n *\n * // Make sure to call setLanguage to reflect new language in UI.\n * i18n.setLanguage('it');\n * <Chat client={chatClient} i18nInstance={i18n}>\n * ...\n * </Chat>\n * ```\n */\n i18nInstance?: Streami18n;\n /**\n * You can pass the theme object to customize the styles of Chat components. You can check the default theme in [theme.ts](https://github.com/GetStream/stream-chat-react-native/blob/main/package/src/contexts/themeContext/utils/theme.ts)\n *\n * Please check section about [themes in cookbook](https://github.com/GetStream/stream-chat-react-native/wiki/Cookbook-v3.0#theme) for details.\n *\n * ```\n * import type { DeepPartial, Theme } from 'stream-chat-react-native';\n *\n * const theme: DeepPartial<Theme> = {\n * messageSimple: {\n * file: {\n * container: {\n * backgroundColor: 'red',\n * },\n * icon: {\n * height: 16,\n * width: 16,\n * },\n * },\n * },\n * };\n *\n * <Chat style={theme}>\n * </Chat>\n * ```\n *\n * @overrideType object\n */\n style?: DeepPartial<Theme>;\n };\n\nconst ChatWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const {\n children,\n client,\n closeConnectionOnBackground = true,\n enableOfflineSupport = false,\n i18nInstance,\n ImageComponent = Image,\n style,\n } = props;\n\n const [channel, setChannel] = useState<Channel<StreamChatGenerics>>();\n const [translators, setTranslators] = useState<TranslatorFunctions>({\n t: (key: string) => key,\n tDateTimeParser: (input?: string | number | Date) => Dayjs(input),\n });\n\n /**\n * Setup translators\n */\n const loadingTranslators = useStreami18n({ i18nInstance, setTranslators });\n\n /**\n * Setup connection event listeners\n */\n const { connectionRecovering, isOnline } = useIsOnline<StreamChatGenerics>(\n client,\n closeConnectionOnBackground,\n );\n\n /**\n * Setup muted user listener\n * TODO: reimplement\n */\n const mutedUsers = useMutedUsers<StreamChatGenerics>(client);\n\n const debugRef = useDebugContext();\n const isDebugModeEnabled = __DEV__ && debugRef && debugRef.current;\n\n useEffect(() => {\n if (client) {\n client.setUserAgent(`${SDK}-${Platform.OS}-${version}`);\n // This is to disable recovery related logic in js client, since we handle it in this SDK\n client.recoverStateOnReconnect = false;\n client.persistUserOnConnectionFailure = enableOfflineSupport;\n }\n\n if (isDebugModeEnabled) {\n if (debugRef.current.setEventType) debugRef.current.setEventType('send');\n if (debugRef.current.setSendEventParams)\n debugRef.current.setSendEventParams({\n action: 'Client',\n data: client.user,\n });\n }\n }, [client]);\n\n const setActiveChannel = (newChannel?: Channel<StreamChatGenerics>) => setChannel(newChannel);\n\n const appSettings = useAppSettings(client, isOnline, enableOfflineSupport);\n\n const chatContext = useCreateChatContext({\n appSettings,\n channel,\n client,\n connectionRecovering,\n enableOfflineSupport,\n ImageComponent,\n isOnline,\n mutedUsers,\n setActiveChannel,\n });\n\n useEffect(() => {\n if (client.user?.id && enableOfflineSupport) {\n QuickSqliteClient.initializeDatabase();\n DBSyncManager.init(client as unknown as StreamChat);\n }\n }, [client?.user?.id]);\n\n useSyncDatabase({\n client,\n enableOfflineSupport,\n });\n\n if (loadingTranslators) return null;\n\n return (\n <ChatProvider<StreamChatGenerics> value={chatContext}>\n <TranslationProvider\n value={{ ...translators, userLanguage: client.user?.language || DEFAULT_USER_LANGUAGE }}\n >\n <ThemeProvider style={style}>\n <ChannelsStateProvider<StreamChatGenerics>>{children}</ChannelsStateProvider>\n </ThemeProvider>\n </TranslationProvider>\n </ChatProvider>\n );\n};\n\n/**\n * Chat - Wrapper component for Chat. The needs to be placed around any other chat components.\n * This Chat component provides the ChatContext to all other components.\n *\n * The ChatContext provides the following props:\n *\n * - channel - currently active channel\n * - client - client connection\n * - connectionRecovering - whether or not websocket is reconnecting\n * - isOnline - whether or not set user is active\n * - setActiveChannel - function to set the currently active channel\n *\n * The Chat Component takes the following generics in order:\n * - At (AttachmentType) - custom Attachment object extension\n * - Ct (ChannelType) - custom Channel object extension\n * - Co (CommandType) - custom Command string union extension\n * - Ev (EventType) - custom Event object extension\n * - Me (MessageType) - custom Message object extension\n * - Re (ReactionType) - custom Reaction object extension\n * - Us (UserType) - custom User object extension\n */\nexport const Chat = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: PropsWithChildren<ChatProps<StreamChatGenerics>>,\n) => {\n const { style } = useOverlayContext();\n\n return <ChatWithContext {...{ style }} {...props} />;\n};\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
2
2
|
|
|
3
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
4
|
+
|
|
3
5
|
Object.defineProperty(exports, "__esModule", {
|
|
4
6
|
value: true
|
|
5
7
|
});
|
|
@@ -13,7 +15,13 @@ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/sli
|
|
|
13
15
|
|
|
14
16
|
var _react = require("react");
|
|
15
17
|
|
|
16
|
-
var
|
|
18
|
+
var dbApi = _interopRequireWildcard(require("../../../store/apis"));
|
|
19
|
+
|
|
20
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
21
|
+
|
|
22
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
23
|
+
|
|
24
|
+
var useAppSettings = function useAppSettings(client, isOnline, enableOfflineSupport) {
|
|
17
25
|
var _useState = (0, _react.useState)(null),
|
|
18
26
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
19
27
|
appSettings = _useState2[0],
|
|
@@ -21,54 +29,75 @@ var useAppSettings = function useAppSettings(client, isOnline) {
|
|
|
21
29
|
|
|
22
30
|
var isMounted = (0, _react.useRef)(true);
|
|
23
31
|
(0, _react.useEffect)(function () {
|
|
24
|
-
function
|
|
25
|
-
return
|
|
32
|
+
function enforeAppSettings() {
|
|
33
|
+
return _enforeAppSettings.apply(this, arguments);
|
|
26
34
|
}
|
|
27
35
|
|
|
28
|
-
function
|
|
29
|
-
|
|
30
|
-
var _appSettings;
|
|
36
|
+
function _enforeAppSettings() {
|
|
37
|
+
_enforeAppSettings = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee() {
|
|
38
|
+
var _appSettings, _appSettings2;
|
|
31
39
|
|
|
32
40
|
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
33
41
|
while (1) {
|
|
34
42
|
switch (_context.prev = _context.next) {
|
|
35
43
|
case 0:
|
|
36
|
-
|
|
37
|
-
|
|
44
|
+
if (client.userID) {
|
|
45
|
+
_context.next = 2;
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return _context.abrupt("return");
|
|
50
|
+
|
|
51
|
+
case 2:
|
|
52
|
+
if (!(!isOnline && enableOfflineSupport)) {
|
|
53
|
+
_context.next = 6;
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
_appSettings = dbApi.getAppSettings({
|
|
58
|
+
currentUserId: client.userID
|
|
59
|
+
});
|
|
60
|
+
setAppSettings(_appSettings);
|
|
61
|
+
return _context.abrupt("return");
|
|
62
|
+
|
|
63
|
+
case 6:
|
|
64
|
+
_context.prev = 6;
|
|
65
|
+
_context.next = 9;
|
|
38
66
|
return client.getAppSettings();
|
|
39
67
|
|
|
40
|
-
case
|
|
41
|
-
|
|
68
|
+
case 9:
|
|
69
|
+
_appSettings2 = _context.sent;
|
|
42
70
|
|
|
43
71
|
if (isMounted.current) {
|
|
44
|
-
setAppSettings(
|
|
72
|
+
setAppSettings(_appSettings2);
|
|
73
|
+
enableOfflineSupport && dbApi.upsertAppSettings({
|
|
74
|
+
appSettings: _appSettings2,
|
|
75
|
+
currentUserId: client.userID
|
|
76
|
+
});
|
|
45
77
|
}
|
|
46
78
|
|
|
47
|
-
_context.next =
|
|
79
|
+
_context.next = 16;
|
|
48
80
|
break;
|
|
49
81
|
|
|
50
|
-
case
|
|
51
|
-
_context.prev =
|
|
52
|
-
_context.t0 = _context["catch"](
|
|
82
|
+
case 13:
|
|
83
|
+
_context.prev = 13;
|
|
84
|
+
_context.t0 = _context["catch"](6);
|
|
53
85
|
|
|
54
86
|
if (_context.t0 instanceof Error) {
|
|
55
87
|
console.error("An error occurred while getting app settings: " + _context.t0);
|
|
56
88
|
}
|
|
57
89
|
|
|
58
|
-
case
|
|
90
|
+
case 16:
|
|
59
91
|
case "end":
|
|
60
92
|
return _context.stop();
|
|
61
93
|
}
|
|
62
94
|
}
|
|
63
|
-
}, _callee, null, [[
|
|
95
|
+
}, _callee, null, [[6, 13]]);
|
|
64
96
|
}));
|
|
65
|
-
return
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
if (isOnline && client.userID) {
|
|
69
|
-
getAppSettings();
|
|
97
|
+
return _enforeAppSettings.apply(this, arguments);
|
|
70
98
|
}
|
|
71
99
|
|
|
100
|
+
enforeAppSettings();
|
|
72
101
|
return function () {
|
|
73
102
|
isMounted.current = false;
|
|
74
103
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useAppSettings.ts"],"names":["useAppSettings","client","isOnline","appSettings","setAppSettings","isMounted","getAppSettings","current","Error","console","error"
|
|
1
|
+
{"version":3,"sources":["useAppSettings.ts"],"names":["useAppSettings","client","isOnline","enableOfflineSupport","appSettings","setAppSettings","isMounted","enforeAppSettings","userID","dbApi","getAppSettings","currentUserId","current","upsertAppSettings","Error","console","error"],"mappings":";;;;;;;;;;;;;;;AAAA;;AAIA;;;;;;AAEO,IAAMA,cAAc,GAAG,SAAjBA,cAAiB,CAG5BC,MAH4B,EAI5BC,QAJ4B,EAK5BC,oBAL4B,EAMM;AAClC,kBAAsC,qBAAwC,IAAxC,CAAtC;AAAA;AAAA,MAAOC,WAAP;AAAA,MAAoBC,cAApB;;AACA,MAAMC,SAAS,GAAG,mBAAO,IAAP,CAAlB;AAEA,wBAAU,YAAM;AAAA,aACCC,iBADD;AAAA;AAAA;;AAAA;AAAA,2FACd;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA,oBACON,MAAM,CAACO,MADd;AAAA;AAAA;AAAA;;AAAA;;AAAA;AAAA,sBAGM,CAACN,QAAD,IAAaC,oBAHnB;AAAA;AAAA;AAAA;;AAIUC,gBAAAA,YAJV,GAIwBK,KAAK,CAACC,cAAN,CAAqB;AAAEC,kBAAAA,aAAa,EAAEV,MAAM,CAACO;AAAxB,iBAArB,CAJxB;AAKIH,gBAAAA,cAAc,CAACD,YAAD,CAAd;AALJ;;AAAA;AAAA;AAAA;AAAA,uBAU8BH,MAAM,CAACS,cAAP,EAV9B;;AAAA;AAUUN,gBAAAA,aAVV;;AAWI,oBAAIE,SAAS,CAACM,OAAd,EAAuB;AACrBP,kBAAAA,cAAc,CAACD,aAAD,CAAd;AACAD,kBAAAA,oBAAoB,IAClBM,KAAK,CAACI,iBAAN,CAAwB;AACtBT,oBAAAA,WAAW,EAAXA,aADsB;AAEtBO,oBAAAA,aAAa,EAAEV,MAAM,CAACO;AAFA,mBAAxB,CADF;AAKD;;AAlBL;AAAA;;AAAA;AAAA;AAAA;;AAoBI,oBAAI,uBAAiBM,KAArB,EAA4B;AAC1BC,kBAAAA,OAAO,CAACC,KAAR;AACD;;AAtBL;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OADc;AAAA;AAAA;;AA2BdT,IAAAA,iBAAiB;AAEjB,WAAO,YAAM;AACXD,MAAAA,SAAS,CAACM,OAAV,GAAoB,KAApB;AACD,KAFD;AAGD,GAhCD,EAgCG,CAACX,MAAD,EAASC,QAAT,CAhCH;AAkCA,SAAOE,WAAP;AACD,CA7CM","sourcesContent":["import { useEffect, useRef, useState } from 'react';\n\nimport type { AppSettingsAPIResponse, StreamChat } from 'stream-chat';\n\nimport * as dbApi from '../../../store/apis';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nexport const useAppSettings = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n client: StreamChat<StreamChatGenerics>,\n isOnline: boolean | null,\n enableOfflineSupport: boolean,\n): AppSettingsAPIResponse | null => {\n const [appSettings, setAppSettings] = useState<AppSettingsAPIResponse | null>(null);\n const isMounted = useRef(true);\n\n useEffect(() => {\n async function enforeAppSettings() {\n if (!client.userID) return;\n\n if (!isOnline && enableOfflineSupport) {\n const appSettings = dbApi.getAppSettings({ currentUserId: client.userID });\n setAppSettings(appSettings);\n return;\n }\n\n try {\n const appSettings = await client.getAppSettings();\n if (isMounted.current) {\n setAppSettings(appSettings);\n enableOfflineSupport &&\n dbApi.upsertAppSettings({\n appSettings,\n currentUserId: client.userID as string,\n });\n }\n } catch (error: unknown) {\n if (error instanceof Error) {\n console.error(`An error occurred while getting app settings: ${error}`);\n }\n }\n }\n\n enforeAppSettings();\n\n return () => {\n isMounted.current = false;\n };\n }, [client, isOnline]);\n\n return appSettings;\n};\n"]}
|
|
@@ -22,7 +22,7 @@ var _native = require("../../../native");
|
|
|
22
22
|
var useIsOnline = function useIsOnline(client) {
|
|
23
23
|
var closeConnectionOnBackground = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
|
|
24
24
|
|
|
25
|
-
var _useState = (0, _react.useState)(
|
|
25
|
+
var _useState = (0, _react.useState)(null),
|
|
26
26
|
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
27
27
|
isOnline = _useState2[0],
|
|
28
28
|
setIsOnline = _useState2[1];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useIsOnline.ts"],"names":["useIsOnline","client","closeConnectionOnBackground","isOnline","setIsOnline","connectionRecovering","setConnectionRecovering","isMounted","clientExists","onBackground","cid","activeChannels","channel","state","setIsUpToDate","closeConnection","onForeground","openConnection","handleChangedEvent","event","online","handleRecoveredEvent","notifyChatClient","netInfoState","wsConnection","onlineStatusChanged","type","unsubscribeNetInfo","setNetInfoListener","NetInfo","addEventListener","isHealthy","setInitialOnlineState","fetch","status","current","chatListeners","push","on","forEach","listener","unsubscribe"],"mappings":";;;;;;;;;;;;;AAAA;;AAMA;;AACA;;AACA;;AAUO,IAAMA,WAAW,GAAG,SAAdA,WAAc,CAGzBC,MAHyB,EAKtB;AAAA,MADHC,2BACG,uEAD2B,IAC3B;;AACH,kBAAgC,
|
|
1
|
+
{"version":3,"sources":["useIsOnline.ts"],"names":["useIsOnline","client","closeConnectionOnBackground","isOnline","setIsOnline","connectionRecovering","setConnectionRecovering","isMounted","clientExists","onBackground","cid","activeChannels","channel","state","setIsUpToDate","closeConnection","onForeground","openConnection","handleChangedEvent","event","online","handleRecoveredEvent","notifyChatClient","netInfoState","wsConnection","onlineStatusChanged","type","unsubscribeNetInfo","setNetInfoListener","NetInfo","addEventListener","isHealthy","setInitialOnlineState","fetch","status","current","chatListeners","push","on","forEach","listener","unsubscribe"],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useState } from 'react';\n\nimport type { NetInfoSubscription } from '@react-native-community/netinfo';\n\nimport type { StreamChat, Event as StreamEvent } from 'stream-chat';\n\nimport { useAppStateListener } from '../../../hooks/useAppStateListener';\nimport { useIsMountedRef } from '../../../hooks/useIsMountedRef';\nimport { NetInfo } from '../../../native';\n\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\n\n/**\n * Disconnect the websocket connection when app goes to background,\n * and reconnect when app comes to foreground.\n * We do this to make sure the user receives push notifications when app is in the background.\n * You can't receive push notification until you have active websocket connection.\n */\nexport const useIsOnline = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n client: StreamChat<StreamChatGenerics>,\n closeConnectionOnBackground = true,\n) => {\n const [isOnline, setIsOnline] = useState<boolean | null>(null);\n const [connectionRecovering, setConnectionRecovering] = useState(false);\n const isMounted = useIsMountedRef();\n const clientExists = !!client;\n\n const onBackground = useCallback(() => {\n if (!closeConnectionOnBackground || !clientExists) return;\n\n for (const cid in client.activeChannels) {\n const channel = client.activeChannels[cid];\n channel?.state.setIsUpToDate(false);\n }\n\n client.closeConnection();\n setIsOnline(false);\n }, [closeConnectionOnBackground, client, clientExists]);\n\n const onForeground = useCallback(() => {\n if (!clientExists) return;\n\n client.openConnection();\n }, [client, clientExists]);\n\n useAppStateListener(onForeground, onBackground);\n\n useEffect(() => {\n const handleChangedEvent = (event: StreamEvent<StreamChatGenerics>) => {\n setConnectionRecovering(!event.online);\n setIsOnline(event.online || false);\n };\n\n const handleRecoveredEvent = () => setConnectionRecovering(false);\n\n const notifyChatClient = (netInfoState: boolean) => {\n if (client?.wsConnection) {\n if (netInfoState) {\n client.wsConnection.onlineStatusChanged({\n type: 'online',\n } as Event);\n } else {\n client.wsConnection.onlineStatusChanged({\n type: 'offline',\n } as Event);\n }\n }\n };\n\n let unsubscribeNetInfo: NetInfoSubscription;\n const setNetInfoListener = () => {\n unsubscribeNetInfo = NetInfo.addEventListener((netInfoState) => {\n if (netInfoState === false && !client.wsConnection?.isHealthy) {\n setConnectionRecovering(true);\n setIsOnline(false);\n }\n notifyChatClient(netInfoState);\n });\n };\n\n const setInitialOnlineState = async () => {\n const status = await NetInfo.fetch();\n if (isMounted.current) {\n setIsOnline(status);\n notifyChatClient(status);\n }\n };\n\n setInitialOnlineState();\n const chatListeners: Array<ReturnType<StreamChat['on']>> = [];\n\n if (client) {\n chatListeners.push(client.on('connection.changed', handleChangedEvent));\n chatListeners.push(client.on('connection.recovered', handleRecoveredEvent));\n setNetInfoListener();\n }\n\n return () => {\n chatListeners.forEach((listener) => listener.unsubscribe?.());\n unsubscribeNetInfo?.();\n };\n }, [clientExists]);\n\n return { connectionRecovering, isOnline };\n};\n"]}
|
|
@@ -135,7 +135,9 @@ var ImageGrid = function ImageGrid(props) {
|
|
|
135
135
|
var _useTheme2 = (0, _ThemeContext.useTheme)(),
|
|
136
136
|
_useTheme2$theme = _useTheme2.theme,
|
|
137
137
|
white = _useTheme2$theme.colors.white,
|
|
138
|
-
|
|
138
|
+
_useTheme2$theme$imag = _useTheme2$theme.imageGallery.grid,
|
|
139
|
+
container = _useTheme2$theme$imag.container,
|
|
140
|
+
contentContainer = _useTheme2$theme$imag.contentContainer;
|
|
139
141
|
|
|
140
142
|
var imageGridItems = photos.map(function (photo) {
|
|
141
143
|
return (0, _extends2["default"])({}, photo, {
|
|
@@ -162,6 +164,7 @@ var ImageGrid = function ImageGrid(props) {
|
|
|
162
164
|
},
|
|
163
165
|
numColumns: numberOfImageGalleryGridColumns || 3,
|
|
164
166
|
renderItem: renderItem,
|
|
167
|
+
style: container,
|
|
165
168
|
__self: _this,
|
|
166
169
|
__source: {
|
|
167
170
|
fileName: _jsxFileName,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImageGrid.tsx"],"names":["styles","StyleSheet","create","avatarImage","borderRadius","height","width","avatarImageWrapper","borderWidth","margin","contentContainer","flexGrow","image","GridImage","item","gridImage","theme","imageGallery","grid","imageComponent","restItem","numberOfImageGalleryGridColumns","selectAndClose","type","uri","size","renderItem","ImageGrid","props","avatarComponent","closeGridView","photos","setSelectedMessage","white","colors","imageGridItems","map","photo","messageId","url","backgroundColor","index","displayName"],"mappings":"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
|
|
1
|
+
{"version":3,"sources":["ImageGrid.tsx"],"names":["styles","StyleSheet","create","avatarImage","borderRadius","height","width","avatarImageWrapper","borderWidth","margin","contentContainer","flexGrow","image","GridImage","item","gridImage","theme","imageGallery","grid","imageComponent","restItem","numberOfImageGalleryGridColumns","selectAndClose","type","uri","size","renderItem","ImageGrid","props","avatarComponent","closeGridView","photos","setSelectedMessage","white","colors","container","imageGridItems","map","photo","messageId","url","backgroundColor","index","displayName"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { Image, StyleSheet, View } from 'react-native';\n\nimport { BottomSheetFlatList, TouchableOpacity } from '@gorhom/bottom-sheet';\n\nimport { VideoThumbnail } from '../../../components/Attachment/VideoThumbnail';\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport type { DefaultStreamChatGenerics } from '../../../types/types';\nimport { vw } from '../../../utils/utils';\n\nimport type { Photo } from '../ImageGallery';\n\nconst styles = StyleSheet.create({\n avatarImage: {\n borderRadius: 22,\n height: 22,\n width: 22,\n },\n avatarImageWrapper: {\n borderRadius: 24,\n borderWidth: 1,\n height: 24,\n margin: 8,\n width: 24,\n },\n contentContainer: {\n flexGrow: 1,\n },\n image: {\n margin: 1,\n },\n});\n\nexport type ImageGalleryGridImageComponent<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ({\n item,\n}: {\n item: Photo<StreamChatGenerics> & {\n selectAndClose: () => void;\n numberOfImageGalleryGridColumns?: number;\n };\n}) => React.ReactElement | null;\n\nexport type ImageGalleryGridImageComponents<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n avatarComponent?: ImageGalleryGridImageComponent<StreamChatGenerics>;\n imageComponent?: ImageGalleryGridImageComponent<StreamChatGenerics>;\n};\n\nexport type GridImageItem<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Photo<StreamChatGenerics> &\n ImageGalleryGridImageComponents<StreamChatGenerics> & {\n selectAndClose: () => void;\n numberOfImageGalleryGridColumns?: number;\n };\n\nconst GridImage = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: GridImageItem<StreamChatGenerics>;\n}) => {\n const {\n theme: {\n imageGallery: {\n grid: { gridImage },\n },\n },\n } = useTheme();\n const { imageComponent, ...restItem } = item;\n\n const { numberOfImageGalleryGridColumns, selectAndClose, type, uri } = restItem;\n\n const size = vw(100) / (numberOfImageGalleryGridColumns || 3) - 2;\n\n if (imageComponent) {\n return imageComponent({ item: restItem });\n }\n\n return (\n <TouchableOpacity accessibilityLabel='Grid Image' onPress={selectAndClose}>\n {type === 'video' ? (\n <View style={[styles.image, { height: size, width: size }, gridImage]}>\n <VideoThumbnail />\n </View>\n ) : (\n <Image source={{ uri }} style={[styles.image, { height: size, width: size }]} />\n )}\n </TouchableOpacity>\n );\n};\n\nconst renderItem = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n item,\n}: {\n item: GridImageItem<StreamChatGenerics>;\n}) => <GridImage item={item} />;\n\nexport type ImageGridType<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = ImageGalleryGridImageComponents<StreamChatGenerics> & {\n closeGridView: () => void;\n photos: Photo<StreamChatGenerics>[];\n setSelectedMessage: React.Dispatch<\n React.SetStateAction<\n | {\n messageId?: string | undefined;\n url?: string | undefined;\n }\n | undefined\n >\n >;\n numberOfImageGalleryGridColumns?: number;\n};\n\nexport const ImageGrid = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: ImageGridType<StreamChatGenerics>,\n) => {\n const {\n avatarComponent,\n closeGridView,\n imageComponent,\n numberOfImageGalleryGridColumns,\n photos,\n setSelectedMessage,\n } = props;\n\n const {\n theme: {\n colors: { white },\n imageGallery: {\n grid: { container, contentContainer },\n },\n },\n } = useTheme();\n\n const imageGridItems = photos.map((photo) => ({\n ...photo,\n avatarComponent,\n imageComponent,\n numberOfImageGalleryGridColumns,\n selectAndClose: () => {\n setSelectedMessage({ messageId: photo.messageId, url: photo.uri });\n closeGridView();\n },\n }));\n\n return (\n <BottomSheetFlatList<GridImageItem<StreamChatGenerics>>\n accessibilityLabel='Image Grid'\n contentContainerStyle={[\n styles.contentContainer,\n { backgroundColor: white },\n contentContainer,\n ]}\n data={imageGridItems as GridImageItem<StreamChatGenerics>[]}\n keyExtractor={(item, index) => `${item.uri}-${index}`}\n numColumns={numberOfImageGalleryGridColumns || 3}\n renderItem={renderItem}\n style={container}\n />\n );\n};\n\nImageGrid.displayName = 'ImageGrid{imageGallery{grid}}';\n"]}
|
|
@@ -26,8 +26,8 @@ var styles = _reactNative.StyleSheet.create({
|
|
|
26
26
|
},
|
|
27
27
|
handle: {
|
|
28
28
|
alignItems: 'center',
|
|
29
|
-
borderTopLeftRadius:
|
|
30
|
-
borderTopRightRadius:
|
|
29
|
+
borderTopLeftRadius: 12,
|
|
30
|
+
borderTopRightRadius: 12,
|
|
31
31
|
flexDirection: 'row',
|
|
32
32
|
height: 40,
|
|
33
33
|
justifyContent: 'center'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ImageGridHandle.tsx"],"names":["styles","StyleSheet","create","closeButton","marginRight","handle","alignItems","borderTopLeftRadius","borderTopRightRadius","flexDirection","height","justifyContent","leftContainer","marginLeft","width","text","flex","fontSize","fontWeight","textAlign","ImageGridHandle","props","centerComponent","closeGridView","leftComponent","rightComponent","theme","colors","black","white","imageGallery","grid","handleText","t","backgroundColor","color","displayName"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,WAAW,EAAE;AACXC,IAAAA,WAAW,EAAE;AADF,GADkB;AAI/BC,EAAAA,MAAM,EAAE;AACNC,IAAAA,UAAU,EAAE,QADN;AAENC,IAAAA,mBAAmB,EAAE,EAFf;AAGNC,IAAAA,oBAAoB,EAAE,EAHhB;AAINC,IAAAA,aAAa,EAAE,KAJT;AAKNC,IAAAA,MAAM,EAAE,EALF;AAMNC,IAAAA,cAAc,EAAE;AANV,GAJuB;AAY/BC,EAAAA,aAAa,EAAE;AACbC,IAAAA,UAAU,EAAE,EADC;AAEbC,IAAAA,KAAK,EAAE;AAFM,GAZgB;AAgB/BC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE,CADF;AAEJC,IAAAA,QAAQ,EAAE,EAFN;AAGJC,IAAAA,UAAU,EAAE,KAHR;AAIJC,IAAAA,SAAS,EAAE;AAJP;AAhByB,CAAlB,CAAf;;AAwCO,IAAMC,eAAgC,GAAG,SAAnCA,eAAmC,CAACC,KAAD,EAAW;AACzD,MAAQC,eAAR,GAA0ED,KAA1E,CAAQC,eAAR;AAAA,MAAyBC,aAAzB,GAA0EF,KAA1E,CAAyBE,aAAzB;AAAA,MAAwCC,aAAxC,GAA0EH,KAA1E,CAAwCG,aAAxC;AAAA,MAAuDC,cAAvD,GAA0EJ,KAA1E,CAAuDI,cAAvD;;AACA,kBAOI,6BAPJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,KAFd,yBAEcA,KAFd;AAAA,MAEqBC,KAFrB,yBAEqBA,KAFrB;AAAA,8CAGIC,YAHJ,CAIMC,IAJN;AAAA,MAIc1B,MAJd,yBAIcA,MAJd;AAAA,MAIsB2B,UAJtB,yBAIsBA,UAJtB;;AAQA,8BAAc,gDAAd;AAAA,MAAQC,CAAR,yBAAQA,CAAR;;AAEA,SACE,gCAAC,iBAAD;AACE,IAAA,kBAAkB,EAAC,mBADrB;AAEE,IAAA,KAAK,EAAE,CAACjC,MAAM,CAACK,MAAR,EAAgB;AAAE6B,MAAAA,eAAe,EAAEL;AAAnB,KAAhB,EAA4CxB,MAA5C,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIGmB,aAAa,GAAGA,aAAa,CAAC;AAAED,IAAAA,aAAa,EAAbA;AAAF,GAAD,CAAhB,GAAsC,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAEvB,MAAM,CAACY,aAApB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAJtD,EAKGU,eAAe,GACdA,eAAe,CAAC;AAAEC,IAAAA,aAAa,EAAbA;AAAF,GAAD,CADD,GAGd,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACvB,MAAM,CAACe,IAAR,EAAc;AAAEoB,MAAAA,KAAK,EAAEP;AAAT,KAAd,EAAgCI,UAAhC,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA2DC,CAAC,CAAC,mBAAD,CAA5D,CARJ,EAUGR,cAAc,GACbA,cAAc,CAAC;AAAEF,IAAAA,aAAa,EAAbA;AAAF,GAAD,CADD,GAGb,gCAAC,6BAAD;AAAkB,IAAA,OAAO,EAAEA,aAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,YAAD;AAAO,IAAA,KAAK,EAAEvB,MAAM,CAACG,WAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CAbJ,CADF;AAoBD,CAhCM;;;AAkCPiB,eAAe,CAACgB,WAAhB,GAA8B,6CAA9B","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../../icons';\n\nconst styles = StyleSheet.create({\n closeButton: {\n marginRight: 16,\n },\n handle: {\n alignItems: 'center',\n borderTopLeftRadius:
|
|
1
|
+
{"version":3,"sources":["ImageGridHandle.tsx"],"names":["styles","StyleSheet","create","closeButton","marginRight","handle","alignItems","borderTopLeftRadius","borderTopRightRadius","flexDirection","height","justifyContent","leftContainer","marginLeft","width","text","flex","fontSize","fontWeight","textAlign","ImageGridHandle","props","centerComponent","closeGridView","leftComponent","rightComponent","theme","colors","black","white","imageGallery","grid","handleText","t","backgroundColor","color","displayName"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AAEA;;AACA;;AACA;;;;;AAEA,IAAMA,MAAM,GAAGC,wBAAWC,MAAX,CAAkB;AAC/BC,EAAAA,WAAW,EAAE;AACXC,IAAAA,WAAW,EAAE;AADF,GADkB;AAI/BC,EAAAA,MAAM,EAAE;AACNC,IAAAA,UAAU,EAAE,QADN;AAENC,IAAAA,mBAAmB,EAAE,EAFf;AAGNC,IAAAA,oBAAoB,EAAE,EAHhB;AAINC,IAAAA,aAAa,EAAE,KAJT;AAKNC,IAAAA,MAAM,EAAE,EALF;AAMNC,IAAAA,cAAc,EAAE;AANV,GAJuB;AAY/BC,EAAAA,aAAa,EAAE;AACbC,IAAAA,UAAU,EAAE,EADC;AAEbC,IAAAA,KAAK,EAAE;AAFM,GAZgB;AAgB/BC,EAAAA,IAAI,EAAE;AACJC,IAAAA,IAAI,EAAE,CADF;AAEJC,IAAAA,QAAQ,EAAE,EAFN;AAGJC,IAAAA,UAAU,EAAE,KAHR;AAIJC,IAAAA,SAAS,EAAE;AAJP;AAhByB,CAAlB,CAAf;;AAwCO,IAAMC,eAAgC,GAAG,SAAnCA,eAAmC,CAACC,KAAD,EAAW;AACzD,MAAQC,eAAR,GAA0ED,KAA1E,CAAQC,eAAR;AAAA,MAAyBC,aAAzB,GAA0EF,KAA1E,CAAyBE,aAAzB;AAAA,MAAwCC,aAAxC,GAA0EH,KAA1E,CAAwCG,aAAxC;AAAA,MAAuDC,cAAvD,GAA0EJ,KAA1E,CAAuDI,cAAvD;;AACA,kBAOI,6BAPJ;AAAA,kCACEC,KADF;AAAA,8CAEIC,MAFJ;AAAA,MAEcC,KAFd,yBAEcA,KAFd;AAAA,MAEqBC,KAFrB,yBAEqBA,KAFrB;AAAA,8CAGIC,YAHJ,CAIMC,IAJN;AAAA,MAIc1B,MAJd,yBAIcA,MAJd;AAAA,MAIsB2B,UAJtB,yBAIsBA,UAJtB;;AAQA,8BAAc,gDAAd;AAAA,MAAQC,CAAR,yBAAQA,CAAR;;AAEA,SACE,gCAAC,iBAAD;AACE,IAAA,kBAAkB,EAAC,mBADrB;AAEE,IAAA,KAAK,EAAE,CAACjC,MAAM,CAACK,MAAR,EAAgB;AAAE6B,MAAAA,eAAe,EAAEL;AAAnB,KAAhB,EAA4CxB,MAA5C,CAFT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAIGmB,aAAa,GAAGA,aAAa,CAAC;AAAED,IAAAA,aAAa,EAAbA;AAAF,GAAD,CAAhB,GAAsC,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAEvB,MAAM,CAACY,aAApB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAJtD,EAKGU,eAAe,GACdA,eAAe,CAAC;AAAEC,IAAAA,aAAa,EAAbA;AAAF,GAAD,CADD,GAGd,gCAAC,iBAAD;AAAM,IAAA,KAAK,EAAE,CAACvB,MAAM,CAACe,IAAR,EAAc;AAAEoB,MAAAA,KAAK,EAAEP;AAAT,KAAd,EAAgCI,UAAhC,CAAb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KAA2DC,CAAC,CAAC,mBAAD,CAA5D,CARJ,EAUGR,cAAc,GACbA,cAAc,CAAC;AAAEF,IAAAA,aAAa,EAAbA;AAAF,GAAD,CADD,GAGb,gCAAC,6BAAD;AAAkB,IAAA,OAAO,EAAEA,aAA3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACE,gCAAC,YAAD;AAAO,IAAA,KAAK,EAAEvB,MAAM,CAACG,WAArB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IADF,CAbJ,CADF;AAoBD,CAhCM;;;AAkCPiB,eAAe,CAACgB,WAAhB,GAA8B,6CAA9B","sourcesContent":["import React from 'react';\nimport { StyleSheet, Text, View } from 'react-native';\n\nimport { TouchableOpacity } from '@gorhom/bottom-sheet';\n\nimport { useTheme } from '../../../contexts/themeContext/ThemeContext';\nimport { useTranslationContext } from '../../../contexts/translationContext/TranslationContext';\nimport { Close } from '../../../icons';\n\nconst styles = StyleSheet.create({\n closeButton: {\n marginRight: 16,\n },\n handle: {\n alignItems: 'center',\n borderTopLeftRadius: 12,\n borderTopRightRadius: 12,\n flexDirection: 'row',\n height: 40,\n justifyContent: 'center',\n },\n leftContainer: {\n marginLeft: 16,\n width: 24, // Close icon width on right\n },\n text: {\n flex: 1,\n fontSize: 16,\n fontWeight: '600',\n textAlign: 'center',\n },\n});\n\nexport type ImageGalleryGridHandleCustomComponent = ({\n closeGridView,\n}: {\n closeGridView: () => void;\n}) => React.ReactElement | null;\n\nexport type ImageGalleryGridHandleCustomComponentProps = {\n centerComponent?: ImageGalleryGridHandleCustomComponent;\n leftComponent?: ImageGalleryGridHandleCustomComponent;\n rightComponent?: ImageGalleryGridHandleCustomComponent;\n};\n\ntype Props = ImageGalleryGridHandleCustomComponentProps & {\n closeGridView: () => void;\n};\n\nexport const ImageGridHandle: React.FC<Props> = (props) => {\n const { centerComponent, closeGridView, leftComponent, rightComponent } = props;\n const {\n theme: {\n colors: { black, white },\n imageGallery: {\n grid: { handle, handleText },\n },\n },\n } = useTheme();\n const { t } = useTranslationContext();\n\n return (\n <View\n accessibilityLabel='Image Grid Handle'\n style={[styles.handle, { backgroundColor: white }, handle]}\n >\n {leftComponent ? leftComponent({ closeGridView }) : <View style={styles.leftContainer} />}\n {centerComponent ? (\n centerComponent({ closeGridView })\n ) : (\n <Text style={[styles.text, { color: black }, handleText]}>{t('Photos and Videos')}</Text>\n )}\n {rightComponent ? (\n rightComponent({ closeGridView })\n ) : (\n <TouchableOpacity onPress={closeGridView}>\n <Close style={styles.closeButton} />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nImageGridHandle.displayName = 'ImageGridHandle{imageGallery{grid{handle}}}';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ChatContext.tsx"],"names":["ChatContext","React","createContext","DEFAULT_BASE_CONTEXT_VALUE","ChatProvider","children","value","useChatContext","contextValue","Error","withChatContext","Component","WithChatContextComponent","props","chatContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAMA;;AAEA;;AACA;;;;;;;;;AAyDO,IAAMA,WAAW,GAAGC,kBAAMC,aAAN,CAAoBC,mDAApB,CAApB;;;;AAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe;AAAA,MAG1BC,QAH0B,QAG1BA,QAH0B;AAAA,MAI1BC,KAJ0B,QAI1BA,KAJ0B;AAAA,SAQ1B,gCAAC,WAAD,CAAa,QAAb;AAAsB,IAAA,KAAK,EAAEA,KAA7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGD,QADH,CAR0B;AAAA,CAArB;;;;AAaA,IAAME,cAAc,GAAG,SAAjBA,cAAiB,GAEvB;AACL,MAAMC,YAAY,GAAG,uBAAWR,WAAX,CAArB;;AAEA,MAAIQ,YAAY,KAAKL,mDAAjB,IAA+C,CAAC,2CAApD,EAAyE;AACvE,UAAM,IAAIM,KAAJ,+MAAN;AAGD;;AAED,SAAOD,YAAP;AACD,CAZM;;;;AAmBA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAI7BC,SAJ6B,EAKqC;AAClE,MAAMC,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,KAAD,EAAgE;AAC/F,QAAMC,WAAW,GAAGP,cAAc,EAAlC;AAEA,WAAO,gCAAC,SAAD,gCAAgBM,KAAhB,EAAiCC,WAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAJD;;AAKAF,EAAAA,wBAAwB,CAACG,WAAzB,uBAAyD,oCAAeJ,SAAf,CAAzD;AACA,SAAOC,wBAAP;AACD,CAbM","sourcesContent":["import React, { PropsWithChildren, useContext } from 'react';\nimport type { ImageProps } from 'react-native';\n\nimport type { AppSettingsAPIResponse, Channel, Mute, StreamChat } from 'stream-chat';\n\nimport type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';\nimport { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';\n\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\n\nexport type ChatContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Object of application settings returned from Stream.\n * */\n appSettings: AppSettingsAPIResponse<StreamChatGenerics> | null;\n /**\n * The StreamChat client object\n *\n * ```\n * import { StreamChat } from 'stream-chat';\n * import { Chat } from 'stream-chat-react-native';\n *\n * const client = StreamChat.getInstance('api_key);\n * await client.connectUser('user_id', 'userToken');\n *\n * <Chat client={client}>\n * </Chat>\n * ```\n *\n * @overrideType StreamChat\n * */\n client: StreamChat<StreamChatGenerics>;\n connectionRecovering: boolean;\n enableOfflineSupport: boolean;\n ImageComponent: React.ComponentType<ImageProps>;\n isOnline: boolean;\n mutedUsers: Mute<StreamChatGenerics>[];\n /**\n * @param newChannel Channel to set as active.\n *\n * @overrideType Function\n */\n setActiveChannel: (newChannel?: Channel<StreamChatGenerics>) => void;\n /**\n * Instance of channel object from stream-chat package.\n *\n * Please check the docs around how to create or query channel - https://getstream.io/chat/docs/javascript/creating_channels/?language=javascript\n *\n * ```\n * import { StreamChat, Channel } from 'stream-chat';\n * import { Chat, Channel} from 'stream-chat-react-native';\n *\n * const client = StreamChat.getInstance('api_key');\n * await client.connectUser('user_id', 'user_token');\n * const channel = client.channel('messaging', 'channel_id');\n * await channel.watch();\n * ```\n *\n * @overrideType Channel\n */\n channel?: Channel<StreamChatGenerics>;\n};\n\nexport const ChatContext = React.createContext(DEFAULT_BASE_CONTEXT_VALUE as ChatContextValue);\n\nexport const ChatProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value?: ChatContextValue<StreamChatGenerics>;\n}>) => (\n <ChatContext.Provider value={value as unknown as ChatContextValue}>\n {children}\n </ChatContext.Provider>\n);\n\nexport const useChatContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(ChatContext) as unknown as ChatContextValue<StreamChatGenerics>;\n\n if (contextValue === DEFAULT_BASE_CONTEXT_VALUE && !isTestEnvironment()) {\n throw new Error(\n `The useChatContext hook was called outside the ChatContext Provider. Make sure you have configured Chat component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#chat`,\n );\n }\n\n return contextValue;\n};\n\n/**\n * Typescript currently does not support partial inference so if ChatContext\n * typing is desired while using the HOC withChatContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withChatContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof ChatContextValue<StreamChatGenerics>>> => {\n const WithChatContextComponent = (props: Omit<P, keyof ChatContextValue<StreamChatGenerics>>) => {\n const chatContext = useChatContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...chatContext} />;\n };\n WithChatContextComponent.displayName = `WithChatContext${getDisplayName(Component)}`;\n return WithChatContextComponent;\n};\n"]}
|
|
1
|
+
{"version":3,"sources":["ChatContext.tsx"],"names":["ChatContext","React","createContext","DEFAULT_BASE_CONTEXT_VALUE","ChatProvider","children","value","useChatContext","contextValue","Error","withChatContext","Component","WithChatContextComponent","props","chatContext","displayName"],"mappings":";;;;;;;;;;;AAAA;;AAMA;;AAEA;;AACA;;;;;;;;;AAyDO,IAAMA,WAAW,GAAGC,kBAAMC,aAAN,CAAoBC,mDAApB,CAApB;;;;AAEA,IAAMC,YAAY,GAAG,SAAfA,YAAe;AAAA,MAG1BC,QAH0B,QAG1BA,QAH0B;AAAA,MAI1BC,KAJ0B,QAI1BA,KAJ0B;AAAA,SAQ1B,gCAAC,WAAD,CAAa,QAAb;AAAsB,IAAA,KAAK,EAAEA,KAA7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,KACGD,QADH,CAR0B;AAAA,CAArB;;;;AAaA,IAAME,cAAc,GAAG,SAAjBA,cAAiB,GAEvB;AACL,MAAMC,YAAY,GAAG,uBAAWR,WAAX,CAArB;;AAEA,MAAIQ,YAAY,KAAKL,mDAAjB,IAA+C,CAAC,2CAApD,EAAyE;AACvE,UAAM,IAAIM,KAAJ,+MAAN;AAGD;;AAED,SAAOD,YAAP;AACD,CAZM;;;;AAmBA,IAAME,eAAe,GAAG,SAAlBA,eAAkB,CAI7BC,SAJ6B,EAKqC;AAClE,MAAMC,wBAAwB,GAAG,SAA3BA,wBAA2B,CAACC,KAAD,EAAgE;AAC/F,QAAMC,WAAW,GAAGP,cAAc,EAAlC;AAEA,WAAO,gCAAC,SAAD,gCAAgBM,KAAhB,EAAiCC,WAAjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,OAAP;AACD,GAJD;;AAKAF,EAAAA,wBAAwB,CAACG,WAAzB,uBAAyD,oCAAeJ,SAAf,CAAzD;AACA,SAAOC,wBAAP;AACD,CAbM","sourcesContent":["import React, { PropsWithChildren, useContext } from 'react';\nimport type { ImageProps } from 'react-native';\n\nimport type { AppSettingsAPIResponse, Channel, Mute, StreamChat } from 'stream-chat';\n\nimport type { DefaultStreamChatGenerics, UnknownType } from '../../types/types';\nimport { DEFAULT_BASE_CONTEXT_VALUE } from '../utils/defaultBaseContextValue';\n\nimport { getDisplayName } from '../utils/getDisplayName';\nimport { isTestEnvironment } from '../utils/isTestEnvironment';\n\nexport type ChatContextValue<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n /**\n * Object of application settings returned from Stream.\n * */\n appSettings: AppSettingsAPIResponse<StreamChatGenerics> | null;\n /**\n * The StreamChat client object\n *\n * ```\n * import { StreamChat } from 'stream-chat';\n * import { Chat } from 'stream-chat-react-native';\n *\n * const client = StreamChat.getInstance('api_key);\n * await client.connectUser('user_id', 'userToken');\n *\n * <Chat client={client}>\n * </Chat>\n * ```\n *\n * @overrideType StreamChat\n * */\n client: StreamChat<StreamChatGenerics>;\n connectionRecovering: boolean;\n enableOfflineSupport: boolean;\n ImageComponent: React.ComponentType<ImageProps>;\n isOnline: boolean | null;\n mutedUsers: Mute<StreamChatGenerics>[];\n /**\n * @param newChannel Channel to set as active.\n *\n * @overrideType Function\n */\n setActiveChannel: (newChannel?: Channel<StreamChatGenerics>) => void;\n /**\n * Instance of channel object from stream-chat package.\n *\n * Please check the docs around how to create or query channel - https://getstream.io/chat/docs/javascript/creating_channels/?language=javascript\n *\n * ```\n * import { StreamChat, Channel } from 'stream-chat';\n * import { Chat, Channel} from 'stream-chat-react-native';\n *\n * const client = StreamChat.getInstance('api_key');\n * await client.connectUser('user_id', 'user_token');\n * const channel = client.channel('messaging', 'channel_id');\n * await channel.watch();\n * ```\n *\n * @overrideType Channel\n */\n channel?: Channel<StreamChatGenerics>;\n};\n\nexport const ChatContext = React.createContext(DEFAULT_BASE_CONTEXT_VALUE as ChatContextValue);\n\nexport const ChatProvider = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n children,\n value,\n}: PropsWithChildren<{\n value?: ChatContextValue<StreamChatGenerics>;\n}>) => (\n <ChatContext.Provider value={value as unknown as ChatContextValue}>\n {children}\n </ChatContext.Provider>\n);\n\nexport const useChatContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>() => {\n const contextValue = useContext(ChatContext) as unknown as ChatContextValue<StreamChatGenerics>;\n\n if (contextValue === DEFAULT_BASE_CONTEXT_VALUE && !isTestEnvironment()) {\n throw new Error(\n `The useChatContext hook was called outside the ChatContext Provider. Make sure you have configured Chat component correctly - https://getstream.io/chat/docs/sdk/reactnative/basics/hello_stream_chat/#chat`,\n );\n }\n\n return contextValue;\n};\n\n/**\n * Typescript currently does not support partial inference so if ChatContext\n * typing is desired while using the HOC withChatContext the Props for the\n * wrapped component must be provided as the first generic.\n */\nexport const withChatContext = <\n P extends UnknownType,\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n Component: React.ComponentType<P>,\n): React.FC<Omit<P, keyof ChatContextValue<StreamChatGenerics>>> => {\n const WithChatContextComponent = (props: Omit<P, keyof ChatContextValue<StreamChatGenerics>>) => {\n const chatContext = useChatContext<StreamChatGenerics>();\n\n return <Component {...(props as P)} {...chatContext} />;\n };\n WithChatContextComponent.displayName = `WithChatContext${getDisplayName(Component)}`;\n return WithChatContextComponent;\n};\n"]}
|
|
@@ -296,22 +296,31 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
296
296
|
while (1) {
|
|
297
297
|
switch (_context.prev = _context.next) {
|
|
298
298
|
case 0:
|
|
299
|
-
if (!(
|
|
299
|
+
if (!(_native.pickDocument === null)) {
|
|
300
300
|
_context.next = 3;
|
|
301
301
|
break;
|
|
302
302
|
}
|
|
303
303
|
|
|
304
|
+
console.log('The file picker is not installed. Check our Getting Started documentation to install it.');
|
|
305
|
+
return _context.abrupt("return");
|
|
306
|
+
|
|
307
|
+
case 3:
|
|
308
|
+
if (!(numberOfUploads >= value.maxNumberOfFiles)) {
|
|
309
|
+
_context.next = 6;
|
|
310
|
+
break;
|
|
311
|
+
}
|
|
312
|
+
|
|
304
313
|
_reactNative.Alert.alert('Maximum number of files reached');
|
|
305
314
|
|
|
306
315
|
return _context.abrupt("return");
|
|
307
316
|
|
|
308
|
-
case
|
|
309
|
-
_context.next =
|
|
317
|
+
case 6:
|
|
318
|
+
_context.next = 8;
|
|
310
319
|
return (0, _native.pickDocument)({
|
|
311
320
|
maxNumberOfFiles: value.maxNumberOfFiles - numberOfUploads
|
|
312
321
|
});
|
|
313
322
|
|
|
314
|
-
case
|
|
323
|
+
case 8:
|
|
315
324
|
result = _context.sent;
|
|
316
325
|
|
|
317
326
|
if (!result.cancelled && result.docs) {
|
|
@@ -320,7 +329,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
320
329
|
});
|
|
321
330
|
}
|
|
322
331
|
|
|
323
|
-
case
|
|
332
|
+
case 10:
|
|
324
333
|
case "end":
|
|
325
334
|
return _context.stop();
|
|
326
335
|
}
|
|
@@ -1231,7 +1240,7 @@ var MessageInputProvider = function MessageInputProvider(_ref) {
|
|
|
1231
1240
|
__self: _this,
|
|
1232
1241
|
__source: {
|
|
1233
1242
|
fileName: _jsxFileName,
|
|
1234
|
-
lineNumber:
|
|
1243
|
+
lineNumber: 1188,
|
|
1235
1244
|
columnNumber: 5
|
|
1236
1245
|
}
|
|
1237
1246
|
}, children);
|
|
@@ -1258,7 +1267,7 @@ var withMessageInputContext = function withMessageInputContext(Component) {
|
|
|
1258
1267
|
__self: _this,
|
|
1259
1268
|
__source: {
|
|
1260
1269
|
fileName: _jsxFileName,
|
|
1261
|
-
lineNumber:
|
|
1270
|
+
lineNumber: 1228,
|
|
1262
1271
|
columnNumber: 12
|
|
1263
1272
|
}
|
|
1264
1273
|
}));
|