@sendbird/uikit-react-native 1.1.1 → 1.1.2

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.
Files changed (87) hide show
  1. package/lib/commonjs/components/FileViewer.js +8 -3
  2. package/lib/commonjs/components/FileViewer.js.map +1 -1
  3. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js +47 -15
  4. package/lib/commonjs/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  5. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js +51 -34
  6. package/lib/commonjs/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  7. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js +2 -1
  8. package/lib/commonjs/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
  9. package/lib/commonjs/components/MessageRenderer/index.js +7 -2
  10. package/lib/commonjs/components/MessageRenderer/index.js.map +1 -1
  11. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js +39 -6
  12. package/lib/commonjs/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  13. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
  14. package/lib/commonjs/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  15. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js +35 -2
  16. package/lib/commonjs/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  17. package/lib/commonjs/fragments/createGroupChannelListFragment.js +1 -1
  18. package/lib/commonjs/fragments/createGroupChannelListFragment.js.map +1 -1
  19. package/lib/commonjs/libs/SBUError.js +41 -0
  20. package/lib/commonjs/libs/SBUError.js.map +1 -0
  21. package/lib/commonjs/libs/SBUUtils.js +20 -0
  22. package/lib/commonjs/libs/SBUUtils.js.map +1 -0
  23. package/lib/commonjs/localization/StringSet.type.js +6 -0
  24. package/lib/commonjs/localization/StringSet.type.js.map +1 -1
  25. package/lib/commonjs/platform/createFileService.expo.js +6 -4
  26. package/lib/commonjs/platform/createFileService.expo.js.map +1 -1
  27. package/lib/commonjs/platform/createFileService.native.js +20 -8
  28. package/lib/commonjs/platform/createFileService.native.js.map +1 -1
  29. package/lib/commonjs/platform/types.js +4 -0
  30. package/lib/commonjs/platform/types.js.map +1 -1
  31. package/lib/commonjs/version.js +1 -1
  32. package/lib/commonjs/version.js.map +1 -1
  33. package/lib/module/components/FileViewer.js +9 -4
  34. package/lib/module/components/FileViewer.js.map +1 -1
  35. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js +48 -17
  36. package/lib/module/components/MessageRenderer/FileMessage/ImageFileMessage.js.map +1 -1
  37. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js +52 -35
  38. package/lib/module/components/MessageRenderer/FileMessage/VideoFileMessage.js.map +1 -1
  39. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js +2 -1
  40. package/lib/module/components/MessageRenderer/MessageIncomingSenderName.js.map +1 -1
  41. package/lib/module/components/MessageRenderer/index.js +7 -2
  42. package/lib/module/components/MessageRenderer/index.js.map +1 -1
  43. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js +38 -7
  44. package/lib/module/domain/groupChannel/component/GroupChannelInput/SendInput.js.map +1 -1
  45. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js +1 -1
  46. package/lib/module/domain/groupChannelSettings/component/GroupChannelSettingsInfo.js.map +1 -1
  47. package/lib/module/domain/groupChannelSettings/module/moduleContext.js +34 -3
  48. package/lib/module/domain/groupChannelSettings/module/moduleContext.js.map +1 -1
  49. package/lib/module/fragments/createGroupChannelListFragment.js +1 -1
  50. package/lib/module/fragments/createGroupChannelListFragment.js.map +1 -1
  51. package/lib/module/libs/SBUError.js +32 -0
  52. package/lib/module/libs/SBUError.js.map +1 -0
  53. package/lib/module/libs/SBUUtils.js +10 -0
  54. package/lib/module/libs/SBUUtils.js.map +1 -0
  55. package/lib/module/localization/StringSet.type.js +6 -0
  56. package/lib/module/localization/StringSet.type.js.map +1 -1
  57. package/lib/module/platform/createFileService.expo.js +5 -4
  58. package/lib/module/platform/createFileService.expo.js.map +1 -1
  59. package/lib/module/platform/createFileService.native.js +18 -8
  60. package/lib/module/platform/createFileService.native.js.map +1 -1
  61. package/lib/module/platform/types.js +1 -1
  62. package/lib/module/platform/types.js.map +1 -1
  63. package/lib/module/version.js +1 -1
  64. package/lib/module/version.js.map +1 -1
  65. package/lib/typescript/src/containers/SendbirdUIKitContainer.d.ts +1 -1
  66. package/lib/typescript/src/libs/SBUError.d.ts +14 -0
  67. package/lib/typescript/src/libs/SBUUtils.d.ts +3 -0
  68. package/lib/typescript/src/localization/StringSet.type.d.ts +3 -0
  69. package/lib/typescript/src/platform/types.d.ts +2 -1
  70. package/lib/typescript/src/version.d.ts +1 -1
  71. package/package.json +5 -5
  72. package/src/components/FileViewer.tsx +12 -4
  73. package/src/components/MessageRenderer/FileMessage/ImageFileMessage.tsx +55 -12
  74. package/src/components/MessageRenderer/FileMessage/VideoFileMessage.tsx +38 -30
  75. package/src/components/MessageRenderer/MessageIncomingSenderName.tsx +1 -1
  76. package/src/components/MessageRenderer/index.tsx +5 -2
  77. package/src/domain/groupChannel/component/GroupChannelInput/SendInput.tsx +28 -4
  78. package/src/domain/groupChannelSettings/component/GroupChannelSettingsInfo.tsx +1 -1
  79. package/src/domain/groupChannelSettings/module/moduleContext.tsx +26 -3
  80. package/src/fragments/createGroupChannelListFragment.tsx +1 -1
  81. package/src/libs/SBUError.ts +26 -0
  82. package/src/libs/SBUUtils.ts +9 -0
  83. package/src/localization/StringSet.type.ts +10 -0
  84. package/src/platform/createFileService.expo.ts +5 -4
  85. package/src/platform/createFileService.native.ts +17 -8
  86. package/src/platform/types.ts +3 -1
  87. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["SendInput","onSendUserMessage","onSendFileMessage","text","setText","disabled","STRINGS","useLocalization","openSheet","useBottomSheet","fileService","usePlatformService","colors","useUIKitTheme","toast","useToast","onPressSend","catch","show","TOAST","SEND_MSG_ERROR","onPressAttachment","sheetItems","title","GROUP_CHANNEL","DIALOG_ATTACHMENT_CAMERA","icon","onPress","photo","openCamera","mediaType","onOpenFailureWithToastMessage","OPEN_CAMERA_ERROR","DIALOG_ATTACHMENT_PHOTO_LIBRARY","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","DIALOG_ATTACHMENT_FILES","file","openDocument","OPEN_FILES_ERROR","styles","sendInputContainer","ui","input","default","highlight","active","iconAttach","conditionChaining","INPUT_PLACEHOLDER_DISABLED","INPUT_PLACEHOLDER_ACTIVE","Boolean","trim","iconSend","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","maxHeight","Platform","select","ios","borderRadius","padding","marginLeft"],"sources":["SendInput.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, TouchableOpacity, View } from 'react-native';\n\nimport {\n Icon,\n TextInput,\n createStyleSheet,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../../../hooks/useContext';\nimport type { GroupChannelProps } from '../../types';\n\ntype SendInputProps = GroupChannelProps['Input'] & {\n text: string;\n setText: (val: string) => void;\n disabled: boolean;\n};\nconst SendInput = ({ onSendUserMessage, onSendFileMessage, text, setText, disabled }: SendInputProps) => {\n const { STRINGS } = useLocalization();\n const { openSheet } = useBottomSheet();\n const { fileService } = usePlatformService();\n const { colors } = useUIKitTheme();\n const toast = useToast();\n\n const onPressSend = () => {\n onSendUserMessage(text).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n setText('');\n };\n const onPressAttachment = () => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA,\n icon: 'camera',\n onPress: async () => {\n const photo = await fileService.openCamera({\n mediaType: 'all',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error'),\n });\n\n if (photo) {\n onSendFileMessage(photo).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const photo = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'all',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error'),\n });\n\n if (photo && photo[0]) {\n onSendFileMessage(photo[0]).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const file = await fileService.openDocument({\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (file) {\n onSendFileMessage(file).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n ],\n });\n };\n\n return (\n <View style={styles.sendInputContainer}>\n <TouchableOpacity onPress={onPressAttachment} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'add'}\n size={24}\n containerStyle={styles.iconAttach}\n />\n </TouchableOpacity>\n <TextInput\n multiline\n editable={!disabled}\n value={text}\n onChangeText={setText}\n style={styles.input}\n placeholder={conditionChaining(\n [disabled],\n [STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_DISABLED, STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_ACTIVE],\n )}\n />\n {Boolean(text.trim()) && (\n <TouchableOpacity onPress={onPressSend} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'send'}\n size={24}\n containerStyle={styles.iconSend}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n iconAttach: {\n marginRight: 8,\n padding: 4,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
1
+ {"version":3,"names":["SendInput","onSendUserMessage","onSendFileMessage","text","setText","disabled","STRINGS","useLocalization","fileService","usePlatformService","colors","useUIKitTheme","openSheet","useBottomSheet","alert","useAlert","toast","useToast","onPressSend","catch","show","TOAST","SEND_MSG_ERROR","onPressAttachment","sheetItems","title","GROUP_CHANNEL","DIALOG_ATTACHMENT_CAMERA","icon","onPress","photo","openCamera","mediaType","onOpenFailure","error","code","SBUError","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","buttons","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","OPEN_CAMERA_ERROR","DIALOG_ATTACHMENT_PHOTO_LIBRARY","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","DIALOG_ATTACHMENT_FILES","file","openDocument","OPEN_FILES_ERROR","styles","sendInputContainer","ui","input","default","highlight","active","iconAttach","conditionChaining","INPUT_PLACEHOLDER_DISABLED","INPUT_PLACEHOLDER_ACTIVE","Boolean","trim","iconSend","createStyleSheet","paddingVertical","paddingHorizontal","alignItems","flexDirection","flex","marginRight","minHeight","maxHeight","Platform","select","ios","borderRadius","padding","marginLeft"],"sources":["SendInput.tsx"],"sourcesContent":["import React from 'react';\nimport { Platform, TouchableOpacity, View } from 'react-native';\n\nimport {\n Icon,\n TextInput,\n createStyleSheet,\n useAlert,\n useBottomSheet,\n useToast,\n useUIKitTheme,\n} from '@sendbird/uikit-react-native-foundation';\nimport { conditionChaining } from '@sendbird/uikit-utils';\n\nimport { useLocalization, usePlatformService } from '../../../../hooks/useContext';\nimport SBUError from '../../../../libs/SBUError';\nimport SBUUtils from '../../../../libs/SBUUtils';\nimport type { GroupChannelProps } from '../../types';\n\ntype SendInputProps = GroupChannelProps['Input'] & {\n text: string;\n setText: (val: string) => void;\n disabled: boolean;\n};\nconst SendInput = ({ onSendUserMessage, onSendFileMessage, text, setText, disabled }: SendInputProps) => {\n const { STRINGS } = useLocalization();\n const { fileService } = usePlatformService();\n const { colors } = useUIKitTheme();\n const { openSheet } = useBottomSheet();\n const { alert } = useAlert();\n const toast = useToast();\n\n const onPressSend = () => {\n onSendUserMessage(text).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n setText('');\n };\n const onPressAttachment = () => {\n openSheet({\n sheetItems: [\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_CAMERA,\n icon: 'camera',\n onPress: async () => {\n const photo = await fileService.openCamera({\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n\n if (photo) {\n onSendFileMessage(photo).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_PHOTO_LIBRARY,\n icon: 'photo',\n onPress: async () => {\n const photo = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'all',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n\n if (photo && photo[0]) {\n onSendFileMessage(photo[0]).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL.DIALOG_ATTACHMENT_FILES,\n icon: 'document',\n onPress: async () => {\n const file = await fileService.openDocument({\n onOpenFailure: () => toast.show(STRINGS.TOAST.OPEN_FILES_ERROR, 'error'),\n });\n\n if (file) {\n onSendFileMessage(file).catch(() => toast.show(STRINGS.TOAST.SEND_MSG_ERROR, 'error'));\n }\n },\n },\n ],\n });\n };\n\n return (\n <View style={styles.sendInputContainer}>\n <TouchableOpacity onPress={onPressAttachment} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'add'}\n size={24}\n containerStyle={styles.iconAttach}\n />\n </TouchableOpacity>\n <TextInput\n multiline\n editable={!disabled}\n value={text}\n onChangeText={setText}\n style={styles.input}\n placeholder={conditionChaining(\n [disabled],\n [STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_DISABLED, STRINGS.GROUP_CHANNEL.INPUT_PLACEHOLDER_ACTIVE],\n )}\n />\n {Boolean(text.trim()) && (\n <TouchableOpacity onPress={onPressSend} disabled={disabled}>\n <Icon\n color={disabled ? colors.ui.input.default.disabled.highlight : colors.ui.input.default.active.highlight}\n icon={'send'}\n size={24}\n containerStyle={styles.iconSend}\n />\n </TouchableOpacity>\n )}\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n sendInputContainer: {\n paddingVertical: 10,\n paddingHorizontal: 12,\n alignItems: 'center',\n flexDirection: 'row',\n },\n input: {\n flex: 1,\n marginRight: 4,\n minHeight: 36,\n maxHeight: 36 * Platform.select({ ios: 2.5, default: 2 }),\n borderRadius: 20,\n },\n iconAttach: {\n marginRight: 8,\n padding: 4,\n },\n iconSend: {\n marginLeft: 4,\n padding: 4,\n },\n});\n\nexport default SendInput;\n"],"mappings":"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"}
@@ -37,7 +37,7 @@ const GroupChannelSettingsInfo = _ => {
37
37
  } = (0, _useContext.useLocalization)();
38
38
 
39
39
  if (!currentUser) {
40
- _uikitUtils.Logger.warn('Cannot render GroupChannelSettingsInfo, User is not connected');
40
+ _uikitUtils.Logger.warn('Cannot render GroupChannelSettingsInfo, please connect using `useConnection()` hook first');
41
41
 
42
42
  return null;
43
43
  }
@@ -1 +1 @@
1
- {"version":3,"names":["GroupChannelSettingsInfo","_","channel","useContext","GroupChannelSettingsContexts","Fragment","currentUser","useSendbirdChat","STRINGS","useLocalization","Logger","warn","styles","userInfoContainer","avatarContainer","getGroupChannelTitle","userId","LABELS","USER_NO_NAME","CHANNEL_NO_MEMBERS","createStyleSheet","container","flex","paddingVertical","alignItems","marginBottom","userIdContainer","userIdLabel"],"sources":["GroupChannelSettingsInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { Divider, Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, getGroupChannelTitle } from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../../../components/ChannelCover';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelSettingsContexts } from '../module/moduleContext';\nimport type { GroupChannelSettingsProps } from '../types';\n\nconst GroupChannelSettingsInfo = (_: GroupChannelSettingsProps['Info']) => {\n const { channel } = useContext(GroupChannelSettingsContexts.Fragment);\n const { currentUser } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelSettingsInfo, User is not connected');\n return null;\n }\n\n return (\n <View>\n <View style={styles.userInfoContainer}>\n <ChannelCover channel={channel} size={80} containerStyle={styles.avatarContainer} />\n <Text h1 numberOfLines={1}>\n {getGroupChannelTitle(\n currentUser.userId,\n channel,\n STRINGS.LABELS.USER_NO_NAME,\n STRINGS.LABELS.CHANNEL_NO_MEMBERS,\n )}\n </Text>\n </View>\n <Divider />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: { flex: 1 },\n userInfoContainer: { paddingVertical: 24, alignItems: 'center' },\n avatarContainer: { marginBottom: 12 },\n userIdContainer: { paddingVertical: 16 },\n userIdLabel: { marginBottom: 4 },\n});\nexport default GroupChannelSettingsInfo;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;AAGA,MAAMA,wBAAwB,GAAIC,CAAD,IAA0C;EACzE,MAAM;IAAEC;EAAF,IAAc,IAAAC,iBAAA,EAAWC,2CAAA,CAA6BC,QAAxC,CAApB;EACA,MAAM;IAAEC;EAAF,IAAkB,IAAAC,2BAAA,GAAxB;EACA,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;;EAEA,IAAI,CAACH,WAAL,EAAkB;IAChBI,kBAAA,CAAOC,IAAP,CAAY,+DAAZ;;IACA,OAAO,IAAP;EACD;;EAED,oBACE,6BAAC,iBAAD,qBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,qBAAD;IAAc,OAAO,EAAEX,OAAvB;IAAgC,IAAI,EAAE,EAAtC;IAA0C,cAAc,EAAEU,MAAM,CAACE;EAAjE,EADF,eAEE,6BAAC,gCAAD;IAAM,EAAE,MAAR;IAAS,aAAa,EAAE;EAAxB,GACG,IAAAC,gCAAA,EACCT,WAAW,CAACU,MADb,EAECd,OAFD,EAGCM,OAAO,CAACS,MAAR,CAAeC,YAHhB,EAICV,OAAO,CAACS,MAAR,CAAeE,kBAJhB,CADH,CAFF,CADF,eAYE,6BAAC,mCAAD,OAZF,CADF;AAgBD,CA1BD;;AA4BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BC,SAAS,EAAE;IAAEC,IAAI,EAAE;EAAR,CADmB;EAE9BT,iBAAiB,EAAE;IAAEU,eAAe,EAAE,EAAnB;IAAuBC,UAAU,EAAE;EAAnC,CAFW;EAG9BV,eAAe,EAAE;IAAEW,YAAY,EAAE;EAAhB,CAHa;EAI9BC,eAAe,EAAE;IAAEH,eAAe,EAAE;EAAnB,CAJa;EAK9BI,WAAW,EAAE;IAAEF,YAAY,EAAE;EAAhB;AALiB,CAAjB,CAAf;eAOezB,wB"}
1
+ {"version":3,"names":["GroupChannelSettingsInfo","_","channel","useContext","GroupChannelSettingsContexts","Fragment","currentUser","useSendbirdChat","STRINGS","useLocalization","Logger","warn","styles","userInfoContainer","avatarContainer","getGroupChannelTitle","userId","LABELS","USER_NO_NAME","CHANNEL_NO_MEMBERS","createStyleSheet","container","flex","paddingVertical","alignItems","marginBottom","userIdContainer","userIdLabel"],"sources":["GroupChannelSettingsInfo.tsx"],"sourcesContent":["import React, { useContext } from 'react';\nimport { View } from 'react-native';\n\nimport { Divider, Text, createStyleSheet } from '@sendbird/uikit-react-native-foundation';\nimport { Logger, getGroupChannelTitle } from '@sendbird/uikit-utils';\n\nimport ChannelCover from '../../../components/ChannelCover';\nimport { useLocalization, useSendbirdChat } from '../../../hooks/useContext';\nimport { GroupChannelSettingsContexts } from '../module/moduleContext';\nimport type { GroupChannelSettingsProps } from '../types';\n\nconst GroupChannelSettingsInfo = (_: GroupChannelSettingsProps['Info']) => {\n const { channel } = useContext(GroupChannelSettingsContexts.Fragment);\n const { currentUser } = useSendbirdChat();\n const { STRINGS } = useLocalization();\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelSettingsInfo, please connect using `useConnection()` hook first');\n return null;\n }\n\n return (\n <View>\n <View style={styles.userInfoContainer}>\n <ChannelCover channel={channel} size={80} containerStyle={styles.avatarContainer} />\n <Text h1 numberOfLines={1}>\n {getGroupChannelTitle(\n currentUser.userId,\n channel,\n STRINGS.LABELS.USER_NO_NAME,\n STRINGS.LABELS.CHANNEL_NO_MEMBERS,\n )}\n </Text>\n </View>\n <Divider />\n </View>\n );\n};\n\nconst styles = createStyleSheet({\n container: { flex: 1 },\n userInfoContainer: { paddingVertical: 24, alignItems: 'center' },\n avatarContainer: { marginBottom: 12 },\n userIdContainer: { paddingVertical: 16 },\n userIdLabel: { marginBottom: 4 },\n});\nexport default GroupChannelSettingsInfo;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;;;;;;;AAGA,MAAMA,wBAAwB,GAAIC,CAAD,IAA0C;EACzE,MAAM;IAAEC;EAAF,IAAc,IAAAC,iBAAA,EAAWC,2CAAA,CAA6BC,QAAxC,CAApB;EACA,MAAM;IAAEC;EAAF,IAAkB,IAAAC,2BAAA,GAAxB;EACA,MAAM;IAAEC;EAAF,IAAc,IAAAC,2BAAA,GAApB;;EAEA,IAAI,CAACH,WAAL,EAAkB;IAChBI,kBAAA,CAAOC,IAAP,CAAY,2FAAZ;;IACA,OAAO,IAAP;EACD;;EAED,oBACE,6BAAC,iBAAD,qBACE,6BAAC,iBAAD;IAAM,KAAK,EAAEC,MAAM,CAACC;EAApB,gBACE,6BAAC,qBAAD;IAAc,OAAO,EAAEX,OAAvB;IAAgC,IAAI,EAAE,EAAtC;IAA0C,cAAc,EAAEU,MAAM,CAACE;EAAjE,EADF,eAEE,6BAAC,gCAAD;IAAM,EAAE,MAAR;IAAS,aAAa,EAAE;EAAxB,GACG,IAAAC,gCAAA,EACCT,WAAW,CAACU,MADb,EAECd,OAFD,EAGCM,OAAO,CAACS,MAAR,CAAeC,YAHhB,EAICV,OAAO,CAACS,MAAR,CAAeE,kBAJhB,CADH,CAFF,CADF,eAYE,6BAAC,mCAAD,OAZF,CADF;AAgBD,CA1BD;;AA4BA,MAAMP,MAAM,GAAG,IAAAQ,4CAAA,EAAiB;EAC9BC,SAAS,EAAE;IAAEC,IAAI,EAAE;EAAR,CADmB;EAE9BT,iBAAiB,EAAE;IAAEU,eAAe,EAAE,EAAnB;IAAuBC,UAAU,EAAE;EAAnC,CAFW;EAG9BV,eAAe,EAAE;IAAEW,YAAY,EAAE;EAAhB,CAHa;EAI9BC,eAAe,EAAE;IAAEH,eAAe,EAAE;EAAnB,CAJa;EAK9BI,WAAW,EAAE;IAAEF,YAAY,EAAE;EAAhB;AALiB,CAAjB,CAAf;eAOezB,wB"}
@@ -17,6 +17,10 @@ var _ProviderLayout = _interopRequireDefault(require("../../../components/Provid
17
17
 
18
18
  var _useContext = require("../../../hooks/useContext");
19
19
 
20
+ var _SBUError = _interopRequireDefault(require("../../../libs/SBUError"));
21
+
22
+ var _SBUUtils = _interopRequireDefault(require("../../../libs/SBUUtils"));
23
+
20
24
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
25
 
22
26
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -50,6 +54,9 @@ const GroupChannelSettingsContextsProvider = _ref => {
50
54
  const {
51
55
  fileService
52
56
  } = (0, _useContext.usePlatformService)();
57
+ const {
58
+ alert
59
+ } = (0, _uikitReactNativeFoundation.useAlert)();
53
60
  const {
54
61
  activeChannel,
55
62
  setActiveChannel
@@ -102,7 +109,20 @@ const GroupChannelSettingsContextsProvider = _ref => {
102
109
  onPress: async () => {
103
110
  const file = await fileService.openCamera({
104
111
  mediaType: 'photo',
105
- onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error')
112
+ onOpenFailure: error => {
113
+ if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
114
+ alert({
115
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
116
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),
117
+ buttons: [{
118
+ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
119
+ onPress: () => _SBUUtils.default.openSettings()
120
+ }]
121
+ });
122
+ } else {
123
+ toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');
124
+ }
125
+ }
106
126
  });
107
127
  if (!file) return;
108
128
  const params = new sdk.GroupChannelParams();
@@ -115,7 +135,20 @@ const GroupChannelSettingsContextsProvider = _ref => {
115
135
  const files = await fileService.openMediaLibrary({
116
136
  selectionLimit: 1,
117
137
  mediaType: 'photo',
118
- onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error')
138
+ onOpenFailure: error => {
139
+ if (error.code === _SBUError.default.CODE.ERR_PERMISSIONS_DENIED) {
140
+ alert({
141
+ title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,
142
+ message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),
143
+ buttons: [{
144
+ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK,
145
+ onPress: () => _SBUUtils.default.openSettings()
146
+ }]
147
+ });
148
+ } else {
149
+ toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');
150
+ }
151
+ }
119
152
  });
120
153
  if (!files || !files[0]) return;
121
154
  const params = new sdk.GroupChannelParams();
@@ -1 +1 @@
1
- {"version":3,"names":["GroupChannelSettingsContexts","Fragment","createContext","channel","headerTitle","headerRight","onPressHeaderRight","NOOP","HOOK_NAME","GroupChannelSettingsContextsProvider","children","uniqId","useUniqId","forceUpdate","useForceUpdate","STRINGS","useLocalization","sdk","useSendbirdChat","fileService","usePlatformService","activeChannel","setActiveChannel","useActiveGroupChannel","onChannelChanged","isDifferentChannel","isGroupChannel","useChannelHandler","onChannelFrozen","onChannelUnfrozen","toast","useToast","openSheet","useBottomSheet","openPrompt","usePrompt","openMenu","useActionMenu","updateChannel","useCallback","params","updatedChannel","changeChannelName","title","GROUP_CHANNEL_SETTINGS","DIALOG_CHANGE_NAME_PROMPT_TITLE","submitLabel","DIALOG_CHANGE_NAME_PROMPT_OK","placeholder","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","defaultValue","name","onSubmit","channelName","GroupChannelParams","changeChannelImage","DIALOG_CHANGE_IMAGE_MENU_TITLE","menuItems","DIALOG_CHANGE_IMAGE_MENU_CAMERA","onPress","file","openCamera","mediaType","onOpenFailureWithToastMessage","show","TOAST","OPEN_CAMERA_ERROR","coverImage","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","files","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","sheetItems","DIALOG_CHANGE_NAME","DIALOG_CHANGE_IMAGE","HEADER_TITLE","HEADER_RIGHT"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback } from 'react';\n\nimport { useActiveGroupChannel, useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useActionMenu, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';\nimport {\n NOOP,\n SendbirdGroupChannel,\n SendbirdGroupChannelParams,\n SendbirdOpenChannel,\n isDifferentChannel,\n useForceUpdate,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport type { GroupChannelSettingsContextsType, GroupChannelSettingsModule } from '../types';\n\nexport const GroupChannelSettingsContexts: GroupChannelSettingsContextsType = {\n Fragment: createContext({\n channel: {} as SendbirdGroupChannel,\n headerTitle: '',\n headerRight: '',\n onPressHeaderRight: NOOP,\n }),\n};\n\nconst HOOK_NAME = 'GroupChannelSettingsContextsProvider';\nexport const GroupChannelSettingsContextsProvider: GroupChannelSettingsModule['Provider'] = ({ children, channel }) => {\n const uniqId = useUniqId(HOOK_NAME);\n const forceUpdate = useForceUpdate();\n const { STRINGS } = useLocalization();\n const { sdk } = useSendbirdChat();\n const { fileService } = usePlatformService();\n\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n\n const onChannelChanged = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (isDifferentChannel(channel, activeChannel) || !channel.isGroupChannel()) return;\n setActiveChannel(channel);\n forceUpdate();\n };\n\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onChannelChanged: onChannelChanged,\n onChannelFrozen: onChannelChanged,\n onChannelUnfrozen: onChannelChanged,\n });\n\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { openPrompt } = usePrompt();\n const { openMenu } = useActionMenu();\n\n const updateChannel = useCallback(\n async (params: SendbirdGroupChannelParams) => {\n const updatedChannel = await activeChannel.updateChannel(params);\n setActiveChannel(updatedChannel);\n forceUpdate();\n },\n [activeChannel],\n );\n\n const changeChannelName = useCallback(() => {\n openPrompt({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_TITLE,\n submitLabel: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_OK,\n placeholder: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER,\n defaultValue: activeChannel.name,\n onSubmit: async (channelName) => {\n const params = new sdk.GroupChannelParams();\n params.name = channelName;\n await updateChannel(params);\n },\n });\n }, [STRINGS, updateChannel, activeChannel.name]);\n\n const changeChannelImage = useCallback(() => {\n openMenu({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_TITLE,\n menuItems: [\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const file = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error'),\n });\n if (!file) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = file;\n await updateChannel(params);\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const files = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailureWithToastMessage: () => toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error'),\n });\n if (!files || !files[0]) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = files[0];\n await updateChannel(params);\n },\n },\n ],\n });\n }, [STRINGS, updateChannel]);\n\n const onPressHeaderRight = useCallback(() => {\n openSheet({\n sheetItems: [\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME, onPress: changeChannelName },\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE, onPress: changeChannelImage },\n ],\n });\n }, [STRINGS, changeChannelImage, changeChannelName]);\n\n return (\n <ProviderLayout>\n <GroupChannelSettingsContexts.Fragment.Provider\n value={{\n channel: activeChannel,\n headerTitle: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_TITLE,\n headerRight: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_RIGHT,\n onPressHeaderRight,\n }}\n >\n {children}\n </GroupChannelSettingsContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["GroupChannelSettingsContexts","Fragment","createContext","channel","headerTitle","headerRight","onPressHeaderRight","NOOP","HOOK_NAME","GroupChannelSettingsContextsProvider","children","uniqId","useUniqId","forceUpdate","useForceUpdate","STRINGS","useLocalization","sdk","useSendbirdChat","fileService","usePlatformService","alert","useAlert","activeChannel","setActiveChannel","useActiveGroupChannel","onChannelChanged","isDifferentChannel","isGroupChannel","useChannelHandler","onChannelFrozen","onChannelUnfrozen","toast","useToast","openSheet","useBottomSheet","openPrompt","usePrompt","openMenu","useActionMenu","updateChannel","useCallback","params","updatedChannel","changeChannelName","title","GROUP_CHANNEL_SETTINGS","DIALOG_CHANGE_NAME_PROMPT_TITLE","submitLabel","DIALOG_CHANGE_NAME_PROMPT_OK","placeholder","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","defaultValue","name","onSubmit","channelName","GroupChannelParams","changeChannelImage","DIALOG_CHANGE_IMAGE_MENU_TITLE","menuItems","DIALOG_CHANGE_IMAGE_MENU_CAMERA","onPress","file","openCamera","mediaType","onOpenFailure","error","code","SBUError","CODE","ERR_PERMISSIONS_DENIED","DIALOG","ALERT_PERMISSIONS_TITLE","message","ALERT_PERMISSIONS_MESSAGE","buttons","text","ALERT_PERMISSIONS_OK","SBUUtils","openSettings","show","TOAST","OPEN_CAMERA_ERROR","coverImage","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","files","openMediaLibrary","selectionLimit","OPEN_PHOTO_LIBRARY_ERROR","sheetItems","DIALOG_CHANGE_NAME","DIALOG_CHANGE_IMAGE","HEADER_TITLE","HEADER_RIGHT"],"sources":["moduleContext.tsx"],"sourcesContent":["import React, { createContext, useCallback } from 'react';\n\nimport { useActiveGroupChannel, useChannelHandler } from '@sendbird/uikit-chat-hooks';\nimport { useActionMenu, useAlert, useBottomSheet, usePrompt, useToast } from '@sendbird/uikit-react-native-foundation';\nimport {\n NOOP,\n SendbirdGroupChannel,\n SendbirdGroupChannelParams,\n SendbirdOpenChannel,\n isDifferentChannel,\n useForceUpdate,\n useUniqId,\n} from '@sendbird/uikit-utils';\n\nimport ProviderLayout from '../../../components/ProviderLayout';\nimport { useLocalization, usePlatformService, useSendbirdChat } from '../../../hooks/useContext';\nimport SBUError from '../../../libs/SBUError';\nimport SBUUtils from '../../../libs/SBUUtils';\nimport type { GroupChannelSettingsContextsType, GroupChannelSettingsModule } from '../types';\n\nexport const GroupChannelSettingsContexts: GroupChannelSettingsContextsType = {\n Fragment: createContext({\n channel: {} as SendbirdGroupChannel,\n headerTitle: '',\n headerRight: '',\n onPressHeaderRight: NOOP,\n }),\n};\n\nconst HOOK_NAME = 'GroupChannelSettingsContextsProvider';\nexport const GroupChannelSettingsContextsProvider: GroupChannelSettingsModule['Provider'] = ({ children, channel }) => {\n const uniqId = useUniqId(HOOK_NAME);\n const forceUpdate = useForceUpdate();\n const { STRINGS } = useLocalization();\n const { sdk } = useSendbirdChat();\n const { fileService } = usePlatformService();\n const { alert } = useAlert();\n\n const { activeChannel, setActiveChannel } = useActiveGroupChannel(sdk, channel);\n\n const onChannelChanged = (channel: SendbirdGroupChannel | SendbirdOpenChannel) => {\n if (isDifferentChannel(channel, activeChannel) || !channel.isGroupChannel()) return;\n setActiveChannel(channel);\n forceUpdate();\n };\n\n useChannelHandler(sdk, `${HOOK_NAME}_${uniqId}`, {\n onChannelChanged: onChannelChanged,\n onChannelFrozen: onChannelChanged,\n onChannelUnfrozen: onChannelChanged,\n });\n\n const toast = useToast();\n const { openSheet } = useBottomSheet();\n const { openPrompt } = usePrompt();\n const { openMenu } = useActionMenu();\n\n const updateChannel = useCallback(\n async (params: SendbirdGroupChannelParams) => {\n const updatedChannel = await activeChannel.updateChannel(params);\n setActiveChannel(updatedChannel);\n forceUpdate();\n },\n [activeChannel],\n );\n\n const changeChannelName = useCallback(() => {\n openPrompt({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_TITLE,\n submitLabel: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_OK,\n placeholder: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER,\n defaultValue: activeChannel.name,\n onSubmit: async (channelName) => {\n const params = new sdk.GroupChannelParams();\n params.name = channelName;\n await updateChannel(params);\n },\n });\n }, [STRINGS, updateChannel, activeChannel.name]);\n\n const changeChannelImage = useCallback(() => {\n openMenu({\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_TITLE,\n menuItems: [\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_CAMERA,\n onPress: async () => {\n const file = await fileService.openCamera({\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('camera', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_CAMERA_ERROR, 'error');\n }\n },\n });\n if (!file) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = file;\n await updateChannel(params);\n },\n },\n {\n title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY,\n onPress: async () => {\n const files = await fileService.openMediaLibrary({\n selectionLimit: 1,\n mediaType: 'photo',\n onOpenFailure: (error) => {\n if (error.code === SBUError.CODE.ERR_PERMISSIONS_DENIED) {\n alert({\n title: STRINGS.DIALOG.ALERT_PERMISSIONS_TITLE,\n message: STRINGS.DIALOG.ALERT_PERMISSIONS_MESSAGE('device storage', 'UIKitSample'),\n buttons: [{ text: STRINGS.DIALOG.ALERT_PERMISSIONS_OK, onPress: () => SBUUtils.openSettings() }],\n });\n } else {\n toast.show(STRINGS.TOAST.OPEN_PHOTO_LIBRARY_ERROR, 'error');\n }\n },\n });\n if (!files || !files[0]) return;\n\n const params = new sdk.GroupChannelParams();\n params.coverImage = files[0];\n await updateChannel(params);\n },\n },\n ],\n });\n }, [STRINGS, updateChannel]);\n\n const onPressHeaderRight = useCallback(() => {\n openSheet({\n sheetItems: [\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_NAME, onPress: changeChannelName },\n { title: STRINGS.GROUP_CHANNEL_SETTINGS.DIALOG_CHANGE_IMAGE, onPress: changeChannelImage },\n ],\n });\n }, [STRINGS, changeChannelImage, changeChannelName]);\n\n return (\n <ProviderLayout>\n <GroupChannelSettingsContexts.Fragment.Provider\n value={{\n channel: activeChannel,\n headerTitle: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_TITLE,\n headerRight: STRINGS.GROUP_CHANNEL_SETTINGS.HEADER_RIGHT,\n onPressHeaderRight,\n }}\n >\n {children}\n </GroupChannelSettingsContexts.Fragment.Provider>\n </ProviderLayout>\n );\n};\n"],"mappings":"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"}
@@ -77,7 +77,7 @@ const createGroupChannelListFragment = initModule => {
77
77
  });
78
78
 
79
79
  if (!currentUser) {
80
- _uikitUtils.Logger.warn('Cannot render GroupChannelListFragment, User is not connected');
80
+ _uikitUtils.Logger.warn('Cannot render GroupChannelListFragment, please connect using `useConnection()` hook first');
81
81
 
82
82
  return null;
83
83
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createGroupChannelListFragment","initModule","GroupChannelListModule","createGroupChannelListModule","TypeSelectorHeader","onPressChannel","onPressCreateChannel","queryCreator","collectionCreator","renderGroupChannelPreview","flatListProps","menuItemCreator","PASS","sdk","currentUser","features","markAsDeliveredWithChannel","useSendbirdChat","groupChannels","next","loading","useGroupChannelList","userId","enableCollectionWithoutLocalCache","deliveryReceiptEnabled","useEffect","listener","AppState","addEventListener","status","forEach","remove","_renderGroupChannelPreview","useFreshCallback","channel","onLongPressChannel","Logger","warn","ListEmptyComponent","contentContainerStyle","flexGrow"],"sources":["createGroupChannelListFragment.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { AppState } from 'react-native';\n\nimport { useGroupChannelList } from '@sendbird/uikit-chat-hooks';\nimport { Logger, PASS, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport StatusComposition from '../components/StatusComposition';\nimport GroupChannelPreviewContainer from '../containers/GroupChannelPreviewContainer';\nimport createGroupChannelListModule from '../domain/groupChannelList/module/createGroupChannelListModule';\nimport type {\n GroupChannelListFragment,\n GroupChannelListModule,\n GroupChannelListProps,\n} from '../domain/groupChannelList/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\nconst createGroupChannelListFragment = (initModule?: Partial<GroupChannelListModule>): GroupChannelListFragment => {\n const GroupChannelListModule = createGroupChannelListModule(initModule);\n return ({\n TypeSelectorHeader,\n onPressChannel,\n onPressCreateChannel,\n queryCreator,\n collectionCreator,\n renderGroupChannelPreview,\n // skipTypeSelection = true,\n flatListProps = {},\n menuItemCreator = PASS,\n }) => {\n const { sdk, currentUser, features, markAsDeliveredWithChannel } = useSendbirdChat();\n const { groupChannels, next, loading } = useGroupChannelList(sdk, currentUser?.userId, {\n queryCreator,\n collectionCreator,\n enableCollectionWithoutLocalCache: !queryCreator,\n });\n\n if (features.deliveryReceiptEnabled) {\n useEffect(() => {\n const listener = AppState.addEventListener('change', (status) => {\n if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel);\n });\n return () => listener.remove();\n }, []);\n }\n\n const _renderGroupChannelPreview: GroupChannelListProps['List']['renderGroupChannelPreview'] = useFreshCallback(\n (channel, onLongPressChannel) => {\n if (renderGroupChannelPreview) return renderGroupChannelPreview(channel, onLongPressChannel);\n return (\n <GroupChannelPreviewContainer\n channel={channel}\n onPress={() => onPressChannel(channel)}\n onLongPress={() => onLongPressChannel()}\n />\n );\n },\n );\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelListFragment, User is not connected');\n return null;\n }\n\n return (\n <GroupChannelListModule.Provider>\n <GroupChannelListModule.Header />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelListModule.StatusLoading />}>\n <GroupChannelListModule.List\n menuItemCreator={menuItemCreator}\n renderGroupChannelPreview={_renderGroupChannelPreview}\n groupChannels={groupChannels}\n onLoadNext={next}\n flatListProps={{\n ListEmptyComponent: <GroupChannelListModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }}\n />\n </StatusComposition>\n <GroupChannelListModule.TypeSelector\n // NOTE: not included in first iteration\n skipTypeSelection\n Header={TypeSelectorHeader}\n onSelectType={onPressCreateChannel}\n />\n </GroupChannelListModule.Provider>\n );\n };\n};\n\nexport default createGroupChannelListFragment;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;AAMA;;;;;;;;AAEA,MAAMA,8BAA8B,GAAIC,UAAD,IAA4E;EACjH,MAAMC,sBAAsB,GAAG,IAAAC,qCAAA,EAA6BF,UAA7B,CAA/B;EACA,OAAO,QAUD;IAAA,IAVE;MACNG,kBADM;MAENC,cAFM;MAGNC,oBAHM;MAINC,YAJM;MAKNC,iBALM;MAMNC,yBANM;MAON;MACAC,aAAa,GAAG,EARV;MASNC,eAAe,GAAGC;IATZ,CAUF;IACJ,MAAM;MAAEC,GAAF;MAAOC,WAAP;MAAoBC,QAApB;MAA8BC;IAA9B,IAA6D,IAAAC,2BAAA,GAAnE;IACA,MAAM;MAAEC,aAAF;MAAiBC,IAAjB;MAAuBC;IAAvB,IAAmC,IAAAC,mCAAA,EAAoBR,GAApB,EAAyBC,WAAzB,aAAyBA,WAAzB,uBAAyBA,WAAW,CAAEQ,MAAtC,EAA8C;MACrFf,YADqF;MAErFC,iBAFqF;MAGrFe,iCAAiC,EAAE,CAAChB;IAHiD,CAA9C,CAAzC;;IAMA,IAAIQ,QAAQ,CAACS,sBAAb,EAAqC;MACnC,IAAAC,gBAAA,EAAU,MAAM;QACd,MAAMC,QAAQ,GAAGC,qBAAA,CAASC,gBAAT,CAA0B,QAA1B,EAAqCC,MAAD,IAAY;UAC/D,IAAIA,MAAM,KAAK,QAAf,EAAyBX,aAAa,CAACY,OAAd,CAAsBd,0BAAtB;QAC1B,CAFgB,CAAjB;;QAGA,OAAO,MAAMU,QAAQ,CAACK,MAAT,EAAb;MACD,CALD,EAKG,EALH;IAMD;;IAED,MAAMC,0BAAsF,GAAG,IAAAC,4BAAA,EAC7F,CAACC,OAAD,EAAUC,kBAAV,KAAiC;MAC/B,IAAI1B,yBAAJ,EAA+B,OAAOA,yBAAyB,CAACyB,OAAD,EAAUC,kBAAV,CAAhC;MAC/B,oBACE,6BAAC,qCAAD;QACE,OAAO,EAAED,OADX;QAEE,OAAO,EAAE,MAAM7B,cAAc,CAAC6B,OAAD,CAF/B;QAGE,WAAW,EAAE,MAAMC,kBAAkB;MAHvC,EADF;IAOD,CAV4F,CAA/F;;IAaA,IAAI,CAACrB,WAAL,EAAkB;MAChBsB,kBAAA,CAAOC,IAAP,CAAY,+DAAZ;;MACA,OAAO,IAAP;IACD;;IAED,oBACE,6BAAC,sBAAD,CAAwB,QAAxB,qBACE,6BAAC,sBAAD,CAAwB,MAAxB,OADF,eAEE,6BAAC,0BAAD;MAAmB,OAAO,EAAEjB,OAA5B;MAAqC,gBAAgB,eAAE,6BAAC,sBAAD,CAAwB,aAAxB;IAAvD,gBACE,6BAAC,sBAAD,CAAwB,IAAxB;MACE,eAAe,EAAET,eADnB;MAEE,yBAAyB,EAAEqB,0BAF7B;MAGE,aAAa,EAAEd,aAHjB;MAIE,UAAU,EAAEC,IAJd;MAKE,aAAa,EAAE;QACbmB,kBAAkB,eAAE,6BAAC,sBAAD,CAAwB,WAAxB,OADP;QAEbC,qBAAqB,EAAE;UAAEC,QAAQ,EAAE;QAAZ,CAFV;QAGb,GAAG9B;MAHU;IALjB,EADF,CAFF,eAeE,6BAAC,sBAAD,CAAwB,YAAxB;MACE;MACA,iBAAiB,MAFnB;MAGE,MAAM,EAAEN,kBAHV;MAIE,YAAY,EAAEE;IAJhB,EAfF,CADF;EAwBD,CArED;AAsED,CAxED;;eA0EeN,8B"}
1
+ {"version":3,"names":["createGroupChannelListFragment","initModule","GroupChannelListModule","createGroupChannelListModule","TypeSelectorHeader","onPressChannel","onPressCreateChannel","queryCreator","collectionCreator","renderGroupChannelPreview","flatListProps","menuItemCreator","PASS","sdk","currentUser","features","markAsDeliveredWithChannel","useSendbirdChat","groupChannels","next","loading","useGroupChannelList","userId","enableCollectionWithoutLocalCache","deliveryReceiptEnabled","useEffect","listener","AppState","addEventListener","status","forEach","remove","_renderGroupChannelPreview","useFreshCallback","channel","onLongPressChannel","Logger","warn","ListEmptyComponent","contentContainerStyle","flexGrow"],"sources":["createGroupChannelListFragment.tsx"],"sourcesContent":["import React, { useEffect } from 'react';\nimport { AppState } from 'react-native';\n\nimport { useGroupChannelList } from '@sendbird/uikit-chat-hooks';\nimport { Logger, PASS, useFreshCallback } from '@sendbird/uikit-utils';\n\nimport StatusComposition from '../components/StatusComposition';\nimport GroupChannelPreviewContainer from '../containers/GroupChannelPreviewContainer';\nimport createGroupChannelListModule from '../domain/groupChannelList/module/createGroupChannelListModule';\nimport type {\n GroupChannelListFragment,\n GroupChannelListModule,\n GroupChannelListProps,\n} from '../domain/groupChannelList/types';\nimport { useSendbirdChat } from '../hooks/useContext';\n\nconst createGroupChannelListFragment = (initModule?: Partial<GroupChannelListModule>): GroupChannelListFragment => {\n const GroupChannelListModule = createGroupChannelListModule(initModule);\n return ({\n TypeSelectorHeader,\n onPressChannel,\n onPressCreateChannel,\n queryCreator,\n collectionCreator,\n renderGroupChannelPreview,\n // skipTypeSelection = true,\n flatListProps = {},\n menuItemCreator = PASS,\n }) => {\n const { sdk, currentUser, features, markAsDeliveredWithChannel } = useSendbirdChat();\n const { groupChannels, next, loading } = useGroupChannelList(sdk, currentUser?.userId, {\n queryCreator,\n collectionCreator,\n enableCollectionWithoutLocalCache: !queryCreator,\n });\n\n if (features.deliveryReceiptEnabled) {\n useEffect(() => {\n const listener = AppState.addEventListener('change', (status) => {\n if (status === 'active') groupChannels.forEach(markAsDeliveredWithChannel);\n });\n return () => listener.remove();\n }, []);\n }\n\n const _renderGroupChannelPreview: GroupChannelListProps['List']['renderGroupChannelPreview'] = useFreshCallback(\n (channel, onLongPressChannel) => {\n if (renderGroupChannelPreview) return renderGroupChannelPreview(channel, onLongPressChannel);\n return (\n <GroupChannelPreviewContainer\n channel={channel}\n onPress={() => onPressChannel(channel)}\n onLongPress={() => onLongPressChannel()}\n />\n );\n },\n );\n\n if (!currentUser) {\n Logger.warn('Cannot render GroupChannelListFragment, please connect using `useConnection()` hook first');\n return null;\n }\n\n return (\n <GroupChannelListModule.Provider>\n <GroupChannelListModule.Header />\n <StatusComposition loading={loading} LoadingComponent={<GroupChannelListModule.StatusLoading />}>\n <GroupChannelListModule.List\n menuItemCreator={menuItemCreator}\n renderGroupChannelPreview={_renderGroupChannelPreview}\n groupChannels={groupChannels}\n onLoadNext={next}\n flatListProps={{\n ListEmptyComponent: <GroupChannelListModule.StatusEmpty />,\n contentContainerStyle: { flexGrow: 1 },\n ...flatListProps,\n }}\n />\n </StatusComposition>\n <GroupChannelListModule.TypeSelector\n // NOTE: not included in first iteration\n skipTypeSelection\n Header={TypeSelectorHeader}\n onSelectType={onPressCreateChannel}\n />\n </GroupChannelListModule.Provider>\n );\n };\n};\n\nexport default createGroupChannelListFragment;\n"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;AACA;;AAEA;;AACA;;AACA;;AAMA;;;;;;;;AAEA,MAAMA,8BAA8B,GAAIC,UAAD,IAA4E;EACjH,MAAMC,sBAAsB,GAAG,IAAAC,qCAAA,EAA6BF,UAA7B,CAA/B;EACA,OAAO,QAUD;IAAA,IAVE;MACNG,kBADM;MAENC,cAFM;MAGNC,oBAHM;MAINC,YAJM;MAKNC,iBALM;MAMNC,yBANM;MAON;MACAC,aAAa,GAAG,EARV;MASNC,eAAe,GAAGC;IATZ,CAUF;IACJ,MAAM;MAAEC,GAAF;MAAOC,WAAP;MAAoBC,QAApB;MAA8BC;IAA9B,IAA6D,IAAAC,2BAAA,GAAnE;IACA,MAAM;MAAEC,aAAF;MAAiBC,IAAjB;MAAuBC;IAAvB,IAAmC,IAAAC,mCAAA,EAAoBR,GAApB,EAAyBC,WAAzB,aAAyBA,WAAzB,uBAAyBA,WAAW,CAAEQ,MAAtC,EAA8C;MACrFf,YADqF;MAErFC,iBAFqF;MAGrFe,iCAAiC,EAAE,CAAChB;IAHiD,CAA9C,CAAzC;;IAMA,IAAIQ,QAAQ,CAACS,sBAAb,EAAqC;MACnC,IAAAC,gBAAA,EAAU,MAAM;QACd,MAAMC,QAAQ,GAAGC,qBAAA,CAASC,gBAAT,CAA0B,QAA1B,EAAqCC,MAAD,IAAY;UAC/D,IAAIA,MAAM,KAAK,QAAf,EAAyBX,aAAa,CAACY,OAAd,CAAsBd,0BAAtB;QAC1B,CAFgB,CAAjB;;QAGA,OAAO,MAAMU,QAAQ,CAACK,MAAT,EAAb;MACD,CALD,EAKG,EALH;IAMD;;IAED,MAAMC,0BAAsF,GAAG,IAAAC,4BAAA,EAC7F,CAACC,OAAD,EAAUC,kBAAV,KAAiC;MAC/B,IAAI1B,yBAAJ,EAA+B,OAAOA,yBAAyB,CAACyB,OAAD,EAAUC,kBAAV,CAAhC;MAC/B,oBACE,6BAAC,qCAAD;QACE,OAAO,EAAED,OADX;QAEE,OAAO,EAAE,MAAM7B,cAAc,CAAC6B,OAAD,CAF/B;QAGE,WAAW,EAAE,MAAMC,kBAAkB;MAHvC,EADF;IAOD,CAV4F,CAA/F;;IAaA,IAAI,CAACrB,WAAL,EAAkB;MAChBsB,kBAAA,CAAOC,IAAP,CAAY,2FAAZ;;MACA,OAAO,IAAP;IACD;;IAED,oBACE,6BAAC,sBAAD,CAAwB,QAAxB,qBACE,6BAAC,sBAAD,CAAwB,MAAxB,OADF,eAEE,6BAAC,0BAAD;MAAmB,OAAO,EAAEjB,OAA5B;MAAqC,gBAAgB,eAAE,6BAAC,sBAAD,CAAwB,aAAxB;IAAvD,gBACE,6BAAC,sBAAD,CAAwB,IAAxB;MACE,eAAe,EAAET,eADnB;MAEE,yBAAyB,EAAEqB,0BAF7B;MAGE,aAAa,EAAEd,aAHjB;MAIE,UAAU,EAAEC,IAJd;MAKE,aAAa,EAAE;QACbmB,kBAAkB,eAAE,6BAAC,sBAAD,CAAwB,WAAxB,OADP;QAEbC,qBAAqB,EAAE;UAAEC,QAAQ,EAAE;QAAZ,CAFV;QAGb,GAAG9B;MAHU;IALjB,EADF,CAFF,eAeE,6BAAC,sBAAD,CAAwB,YAAxB;MACE;MACA,iBAAiB,MAFnB;MAGE,MAAM,EAAEN,kBAHV;MAIE,YAAY,EAAEE;IAJhB,EAfF,CADF;EAwBD,CArED;AAsED,CAxED;;eA0EeN,8B"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
9
+
10
+ var SBUErrorCode;
11
+
12
+ (function (SBUErrorCode) {
13
+ SBUErrorCode[SBUErrorCode["ERR_UNKNOWN"] = 90000000] = "ERR_UNKNOWN";
14
+ SBUErrorCode[SBUErrorCode["ERR_PERMISSIONS_DENIED"] = 91001000] = "ERR_PERMISSIONS_DENIED";
15
+ SBUErrorCode[SBUErrorCode["ERR_DEVICE_UNAVAILABLE"] = 91001001] = "ERR_DEVICE_UNAVAILABLE";
16
+ })(SBUErrorCode || (SBUErrorCode = {}));
17
+
18
+ class SBUError extends Error {
19
+ static get UNKNOWN() {
20
+ return new SBUError(SBUErrorCode.ERR_UNKNOWN);
21
+ }
22
+
23
+ static get PERMISSIONS_DENIED() {
24
+ return new SBUError(SBUErrorCode.ERR_PERMISSIONS_DENIED);
25
+ }
26
+
27
+ static get DEVICE_UNAVAILABLE() {
28
+ return new SBUError(SBUErrorCode.ERR_DEVICE_UNAVAILABLE);
29
+ }
30
+
31
+ constructor(code, message) {
32
+ super(message);
33
+ this.code = code;
34
+ }
35
+
36
+ }
37
+
38
+ exports.default = SBUError;
39
+
40
+ _defineProperty(SBUError, "CODE", SBUErrorCode);
41
+ //# sourceMappingURL=SBUError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SBUErrorCode","SBUError","Error","UNKNOWN","ERR_UNKNOWN","PERMISSIONS_DENIED","ERR_PERMISSIONS_DENIED","DEVICE_UNAVAILABLE","ERR_DEVICE_UNAVAILABLE","constructor","code","message"],"sources":["SBUError.ts"],"sourcesContent":["enum SBUErrorCode {\n ERR_UNKNOWN = 90000000,\n\n // Platform service - 91001000 ~\n ERR_PERMISSIONS_DENIED = 91001000,\n ERR_DEVICE_UNAVAILABLE,\n}\n\nexport default class SBUError extends Error {\n static CODE = SBUErrorCode;\n\n static get UNKNOWN() {\n return new SBUError(SBUErrorCode.ERR_UNKNOWN);\n }\n\n static get PERMISSIONS_DENIED() {\n return new SBUError(SBUErrorCode.ERR_PERMISSIONS_DENIED);\n }\n static get DEVICE_UNAVAILABLE() {\n return new SBUError(SBUErrorCode.ERR_DEVICE_UNAVAILABLE);\n }\n\n constructor(public code: SBUErrorCode, message?: string) {\n super(message);\n }\n}\n"],"mappings":";;;;;;;;;IAAKA,Y;;WAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;EAAAA,Y,CAAAA,Y;GAAAA,Y,KAAAA,Y;;AAQU,MAAMC,QAAN,SAAuBC,KAAvB,CAA6B;EAGxB,WAAPC,OAAO,GAAG;IACnB,OAAO,IAAIF,QAAJ,CAAaD,YAAY,CAACI,WAA1B,CAAP;EACD;;EAE4B,WAAlBC,kBAAkB,GAAG;IAC9B,OAAO,IAAIJ,QAAJ,CAAaD,YAAY,CAACM,sBAA1B,CAAP;EACD;;EAC4B,WAAlBC,kBAAkB,GAAG;IAC9B,OAAO,IAAIN,QAAJ,CAAaD,YAAY,CAACQ,sBAA1B,CAAP;EACD;;EAEDC,WAAW,CAAQC,IAAR,EAA4BC,OAA5B,EAA8C;IACvD,MAAMA,OAAN;IADuD,KAAtCD,IAAsC,GAAtCA,IAAsC;EAExD;;AAhByC;;;;gBAAvBT,Q,UACLD,Y"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _reactNative = require("react-native");
9
+
10
+ class SBUUtils {
11
+ static openSettings() {
12
+ _reactNative.Linking.openSettings().catch(() => {
13
+ if (_reactNative.Platform.OS === 'ios') _reactNative.Linking.openURL('App-Prefs:root');
14
+ });
15
+ }
16
+
17
+ }
18
+
19
+ exports.default = SBUUtils;
20
+ //# sourceMappingURL=SBUUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["SBUUtils","openSettings","Linking","catch","Platform","OS","openURL"],"sources":["SBUUtils.ts"],"sourcesContent":["import { Linking, Platform } from 'react-native';\n\nexport default class SBUUtils {\n static openSettings() {\n Linking.openSettings().catch(() => {\n if (Platform.OS === 'ios') Linking.openURL('App-Prefs:root');\n });\n }\n}\n"],"mappings":";;;;;;;AAAA;;AAEe,MAAMA,QAAN,CAAe;EACT,OAAZC,YAAY,GAAG;IACpBC,oBAAA,CAAQD,YAAR,GAAuBE,KAAvB,CAA6B,MAAM;MACjC,IAAIC,qBAAA,CAASC,EAAT,KAAgB,KAApB,EAA2BH,oBAAA,CAAQI,OAAR,CAAgB,gBAAhB;IAC5B,CAFD;EAGD;;AAL2B"}
@@ -157,6 +157,12 @@ const createBaseStringSet = _ref => {
157
157
  },
158
158
  DIALOG: {
159
159
  ALERT_DEFAULT_OK: 'OK',
160
+ ALERT_PERMISSIONS_TITLE: 'Allow permission',
161
+ ALERT_PERMISSIONS_MESSAGE: function (permission) {
162
+ let appName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'Application';
163
+ return `${appName} need permission to access your ${permission}. Go to Settings to allow access`;
164
+ },
165
+ ALERT_PERMISSIONS_OK: 'SETTINGS',
160
166
  PROMPT_DEFAULT_OK: 'Submit',
161
167
  PROMPT_DEFAULT_CANCEL: 'Cancel',
162
168
  PROMPT_DEFAULT_PLACEHOLDER: 'Enter',
@@ -1 +1 @@
1
- {"version":3,"names":["createBaseStringSet","dateLocale","overrides","USER_NO_NAME","LABELS","CHANNEL_NO_MEMBERS","GROUP_CHANNEL","HEADER_TITLE","currentUserId","channel","getGroupChannelTitle","LIST_BANNER_FROZEN","LIST_DATE_SEPARATOR","date","locale","dateSeparator","LIST_BUTTON_NEW_MSG","newMessages","length","MESSAGE_BUBBLE_TIME","message","messageTime","Date","createdAt","MESSAGE_BUBBLE_FILE_TITLE","name","MESSAGE_BUBBLE_EDITED_POSTFIX","MESSAGE_BUBBLE_UNKNOWN_TITLE","MESSAGE_BUBBLE_UNKNOWN_DESC","INPUT_PLACEHOLDER_ACTIVE","INPUT_PLACEHOLDER_DISABLED","INPUT_EDIT_OK","INPUT_EDIT_CANCEL","DIALOG_MESSAGE_COPY","DIALOG_MESSAGE_EDIT","DIALOG_MESSAGE_SAVE","DIALOG_MESSAGE_DELETE","DIALOG_MESSAGE_DELETE_CONFIRM_TITLE","DIALOG_MESSAGE_DELETE_CONFIRM_OK","DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL","DIALOG_MESSAGE_FAILED_RETRY","DIALOG_MESSAGE_FAILED_REMOVE","DIALOG_ATTACHMENT_CAMERA","DIALOG_ATTACHMENT_PHOTO_LIBRARY","DIALOG_ATTACHMENT_FILES","GROUP_CHANNEL_SETTINGS","HEADER_RIGHT","MENU_NOTIFICATION","MENU_MEMBERS","MENU_LEAVE_CHANNEL","DIALOG_CHANGE_NAME","DIALOG_CHANGE_NAME_PROMPT_TITLE","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","DIALOG_CHANGE_NAME_PROMPT_OK","DIALOG_CHANGE_NAME_PROMPT_CANCEL","DIALOG_CHANGE_IMAGE","DIALOG_CHANGE_IMAGE_MENU_TITLE","DIALOG_CHANGE_IMAGE_MENU_CAMERA","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","getGroupChannelPreviewTime","CHANNEL_PREVIEW_BODY","getGroupChannelLastMessage","TYPE_SELECTOR_HEADER_TITLE","TYPE_SELECTOR_GROUP","TYPE_SELECTOR_SUPER_GROUP","TYPE_SELECTOR_BROADCAST","DIALOG_CHANNEL_TITLE","DIALOG_CHANNEL_NOTIFICATION","myPushTriggerOption","DIALOG_CHANNEL_LEAVE","GROUP_CHANNEL_MEMBERS","USER_BAR_ME_POSTFIX","USER_BAR_OPERATOR","DIALOG_USER_DISMISS_OPERATOR","DIALOG_USER_MUTE","DIALOG_USER_BAN","GROUP_CHANNEL_CREATE","selectedUsers","len","GROUP_CHANNEL_INVITE","TYPING_INDICATOR_TYPINGS","users","NO_NAME","userNames","map","u","nickname","join","FILE_VIEWER","TITLE","sender","SUBTITLE","PLACEHOLDER","NO_BANNED_MEMBERS","NO_USERS","NO_CHANNELS","NO_MESSAGES","NO_MUTED_MEMBERS","NO_RESULTS_FOUND","ERROR","MESSAGE","RETRY_LABEL","DIALOG","ALERT_DEFAULT_OK","PROMPT_DEFAULT_OK","PROMPT_DEFAULT_CANCEL","PROMPT_DEFAULT_PLACEHOLDER","TOAST","COPY_OK","DOWNLOAD_START","DOWNLOAD_OK","DOWNLOAD_ERROR","OPEN_CAMERA_ERROR","OPEN_FILES_ERROR","OPEN_PHOTO_LIBRARY_ERROR","DELETE_MSG_ERROR","RESEND_MSG_ERROR","SEND_MSG_ERROR","UPDATE_MSG_ERROR","TURN_ON_NOTIFICATIONS_ERROR","TURN_OFF_NOTIFICATIONS_ERROR","LEAVE_CHANNEL_ERROR"],"sources":["StringSet.type.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type {\n PartialDeep,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport {\n dateSeparator,\n getGroupChannelLastMessage,\n getGroupChannelPreviewTime,\n getGroupChannelTitle,\n messageTime,\n} from '@sendbird/uikit-utils';\n\n/**\n * StringSet interface\n * Do not configure over 3 depths (for overrides easy)\n * */\nexport interface StringSet {\n GROUP_CHANNEL: {\n /** GroupChannel > Header */\n HEADER_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannel > List */\n LIST_BANNER_FROZEN: string;\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n\n /** GroupChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n /** GroupChannel > Input */\n INPUT_PLACEHOLDER_ACTIVE: string;\n INPUT_PLACEHOLDER_DISABLED: string;\n INPUT_EDIT_OK: string;\n INPUT_EDIT_CANCEL: string;\n\n /** GroupChannel > Dialog > Message */\n DIALOG_MESSAGE_COPY: string;\n DIALOG_MESSAGE_EDIT: string;\n DIALOG_MESSAGE_SAVE: string;\n DIALOG_MESSAGE_DELETE: string;\n /** GroupChannel > Dialog > Message > Delete confirm */\n DIALOG_MESSAGE_DELETE_CONFIRM_TITLE: string;\n DIALOG_MESSAGE_DELETE_CONFIRM_OK: string;\n DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL: string;\n /** GroupChannel > Dialog > Message > Failed */\n DIALOG_MESSAGE_FAILED_RETRY: string;\n DIALOG_MESSAGE_FAILED_REMOVE: string;\n\n /** GroupChannel > Dialog > Attachments */\n DIALOG_ATTACHMENT_CAMERA: string;\n DIALOG_ATTACHMENT_PHOTO_LIBRARY: string;\n DIALOG_ATTACHMENT_FILES: string;\n };\n GROUP_CHANNEL_SETTINGS: {\n /** GroupChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** GroupChannelSettings > Menu */\n MENU_NOTIFICATION: string;\n MENU_MEMBERS: string;\n MENU_LEAVE_CHANNEL: string;\n\n /** GroupChannelSettings > Dialog */\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n GROUP_CHANNEL_LIST: {\n /** GroupChannelList > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel: SendbirdGroupChannel, locale?: Locale) => string;\n CHANNEL_PREVIEW_BODY: (channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelList > TypeSelector > Header */\n TYPE_SELECTOR_HEADER_TITLE: string;\n /** GroupChannelList > TypeSelector > Type string */\n TYPE_SELECTOR_GROUP: string;\n TYPE_SELECTOR_SUPER_GROUP: string;\n TYPE_SELECTOR_BROADCAST: string;\n\n /** GroupChannelList > Dialog > Channel */\n DIALOG_CHANNEL_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_NOTIFICATION: (channel?: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_LEAVE: string;\n };\n GROUP_CHANNEL_MEMBERS: {\n /** GroupChannelMembers > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelMembers > UserBar */\n USER_BAR_ME_POSTFIX: string;\n USER_BAR_OPERATOR: string;\n\n /** GroupChannelMembers > Dialog */\n DIALOG_USER_DISMISS_OPERATOR: string;\n DIALOG_USER_MUTE: string;\n DIALOG_USER_BAN: string;\n };\n GROUP_CHANNEL_INVITE: {\n /** GroupChannelInvite > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n GROUP_CHANNEL_CREATE: {\n /** GroupChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n // UI\n LABELS: {\n USER_NO_NAME: string;\n CHANNEL_NO_MEMBERS: string;\n TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;\n };\n FILE_VIEWER: {\n TITLE: (message: SendbirdFileMessage) => string;\n SUBTITLE: (message: SendbirdFileMessage) => string;\n };\n PLACEHOLDER: {\n NO_BANNED_MEMBERS: string;\n NO_USERS: string;\n NO_CHANNELS: string;\n NO_MESSAGES: string;\n NO_MUTED_MEMBERS: string;\n NO_RESULTS_FOUND: string;\n ERROR: {\n MESSAGE: string;\n RETRY_LABEL: string;\n };\n };\n DIALOG: {\n ALERT_DEFAULT_OK: string;\n PROMPT_DEFAULT_OK: string;\n PROMPT_DEFAULT_CANCEL: string;\n PROMPT_DEFAULT_PLACEHOLDER: string;\n };\n TOAST: {\n COPY_OK: string;\n DOWNLOAD_START: string;\n DOWNLOAD_OK: string;\n DOWNLOAD_ERROR: string;\n OPEN_CAMERA_ERROR: string;\n OPEN_PHOTO_LIBRARY_ERROR: string;\n OPEN_FILES_ERROR: string;\n RESEND_MSG_ERROR: string;\n DELETE_MSG_ERROR: string;\n SEND_MSG_ERROR: string;\n UPDATE_MSG_ERROR: string;\n TURN_ON_NOTIFICATIONS_ERROR: string;\n TURN_OFF_NOTIFICATIONS_ERROR: string;\n LEAVE_CHANNEL_ERROR: string;\n };\n}\n\ntype StringSetCreateOptions = {\n dateLocale: Locale;\n overrides?: PartialDeep<StringSet>;\n};\n\n/**\n * Create string set\n * You can create localized String set, you should provide locale for date and string as a parameters\n *\n * @param {StringSetCreateOptions.dateLocale} dateLocale Date locale (from date-fns)\n * @param {StringSetCreateOptions.overrides} [overrides] Localized strings\n * */\nexport const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOptions): StringSet => {\n const USER_NO_NAME = overrides?.LABELS?.USER_NO_NAME ?? '(No name)';\n const CHANNEL_NO_MEMBERS = overrides?.LABELS?.CHANNEL_NO_MEMBERS ?? '(No members)';\n return {\n GROUP_CHANNEL: {\n HEADER_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n LIST_BANNER_FROZEN: 'Channel is frozen',\n LIST_DATE_SEPARATOR: (date, locale) => dateSeparator(date, locale ?? dateLocale),\n LIST_BUTTON_NEW_MSG: (newMessages) => `${newMessages.length} new messages`,\n\n MESSAGE_BUBBLE_TIME: (message, locale) => messageTime(new Date(message.createdAt), locale ?? dateLocale),\n MESSAGE_BUBBLE_FILE_TITLE: (message) => message.name,\n MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',\n MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',\n MESSAGE_BUBBLE_UNKNOWN_DESC: () => 'Cannot read this message.',\n\n INPUT_PLACEHOLDER_ACTIVE: 'Enter message',\n INPUT_PLACEHOLDER_DISABLED: 'Chat is unavailable in this channel',\n INPUT_EDIT_OK: 'Save',\n INPUT_EDIT_CANCEL: 'Cancel',\n\n DIALOG_MESSAGE_COPY: 'Copy',\n DIALOG_MESSAGE_EDIT: 'Edit',\n DIALOG_MESSAGE_SAVE: 'Save',\n DIALOG_MESSAGE_DELETE: 'Delete',\n DIALOG_MESSAGE_DELETE_CONFIRM_TITLE: 'Delete message?',\n DIALOG_MESSAGE_DELETE_CONFIRM_OK: 'Delete',\n DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL: 'Cancel',\n DIALOG_MESSAGE_FAILED_RETRY: 'Retry',\n DIALOG_MESSAGE_FAILED_REMOVE: 'Remove',\n\n DIALOG_ATTACHMENT_CAMERA: 'Camera',\n DIALOG_ATTACHMENT_PHOTO_LIBRARY: 'Photo library',\n DIALOG_ATTACHMENT_FILES: 'Files',\n ...overrides?.GROUP_CHANNEL,\n },\n GROUP_CHANNEL_SETTINGS: {\n HEADER_TITLE: 'Channel information',\n HEADER_RIGHT: 'Edit',\n MENU_NOTIFICATION: 'Notifications',\n MENU_MEMBERS: 'Members',\n MENU_LEAVE_CHANNEL: 'Leave channel',\n DIALOG_CHANGE_NAME: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',\n DIALOG_CHANGE_NAME_PROMPT_OK: 'Save',\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: 'Cancel',\n DIALOG_CHANGE_IMAGE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_TITLE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.GROUP_CHANNEL_SETTINGS,\n },\n GROUP_CHANNEL_LIST: {\n HEADER_TITLE: 'Channels',\n CHANNEL_PREVIEW_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel, locale) => getGroupChannelPreviewTime(channel, locale ?? dateLocale),\n CHANNEL_PREVIEW_BODY: (channel) => getGroupChannelLastMessage(channel),\n TYPE_SELECTOR_HEADER_TITLE: 'Channel type',\n TYPE_SELECTOR_GROUP: 'Group',\n TYPE_SELECTOR_SUPER_GROUP: 'Super group',\n TYPE_SELECTOR_BROADCAST: 'Broadcast',\n DIALOG_CHANNEL_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n DIALOG_CHANNEL_NOTIFICATION: (channel) => {\n if (!channel) return '';\n if (channel.myPushTriggerOption === 'off') return 'Turn on notifications';\n return 'Turn off notifications';\n },\n DIALOG_CHANNEL_LEAVE: 'Leave channel',\n ...overrides?.GROUP_CHANNEL_LIST,\n },\n GROUP_CHANNEL_MEMBERS: {\n HEADER_TITLE: 'Members',\n USER_BAR_ME_POSTFIX: ' (You)',\n USER_BAR_OPERATOR: 'Operator',\n DIALOG_USER_DISMISS_OPERATOR: 'Dismiss operator',\n DIALOG_USER_MUTE: 'Mute',\n DIALOG_USER_BAN: 'Ban',\n ...overrides?.GROUP_CHANNEL_MEMBERS,\n },\n GROUP_CHANNEL_CREATE: {\n HEADER_TITLE: 'New channel',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Create';\n return `Create (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_CREATE,\n },\n GROUP_CHANNEL_INVITE: {\n HEADER_TITLE: 'Invite users',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Invite';\n return `Invite (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_INVITE,\n },\n LABELS: {\n USER_NO_NAME,\n CHANNEL_NO_MEMBERS,\n TYPING_INDICATOR_TYPINGS: (users, NO_NAME = USER_NO_NAME) => {\n const userNames = users.map((u) => u.nickname || NO_NAME);\n if (userNames.length === 0) return;\n if (userNames.length === 1) return `${userNames[0]} is typing...`;\n if (users.length === 2) return `${userNames.join(' and ')} are typing...`;\n return 'Several people are typing...';\n },\n ...overrides?.LABELS,\n },\n FILE_VIEWER: {\n TITLE: (message) => message.sender?.nickname || USER_NO_NAME,\n SUBTITLE: (message) => messageTime(new Date(message.createdAt), dateLocale),\n },\n PLACEHOLDER: {\n NO_BANNED_MEMBERS: 'No banned members',\n NO_USERS: 'No users',\n NO_CHANNELS: 'No channels',\n NO_MESSAGES: 'No messages',\n NO_MUTED_MEMBERS: 'No muted members',\n NO_RESULTS_FOUND: 'No results found',\n ...overrides?.PLACEHOLDER,\n ERROR: {\n MESSAGE: 'Something went wrong',\n RETRY_LABEL: 'Retry',\n ...overrides?.PLACEHOLDER?.ERROR,\n },\n },\n DIALOG: {\n ALERT_DEFAULT_OK: 'OK',\n PROMPT_DEFAULT_OK: 'Submit',\n PROMPT_DEFAULT_CANCEL: 'Cancel',\n PROMPT_DEFAULT_PLACEHOLDER: 'Enter',\n ...overrides?.DIALOG,\n },\n TOAST: {\n COPY_OK: 'Copied',\n DOWNLOAD_START: 'Downloading...',\n DOWNLOAD_OK: 'File saved',\n DOWNLOAD_ERROR: \"Couldn't download file.\",\n OPEN_CAMERA_ERROR: \"Couldn't open camera.\",\n OPEN_FILES_ERROR: \"Couldn't open files.\",\n OPEN_PHOTO_LIBRARY_ERROR: \"Couldn't open photo library.\",\n DELETE_MSG_ERROR: \"Couldn't delete message.\",\n RESEND_MSG_ERROR: \"Couldn't send message.\",\n SEND_MSG_ERROR: \"Couldn't send message.\",\n UPDATE_MSG_ERROR: \"Couldn't edit message.\",\n TURN_ON_NOTIFICATIONS_ERROR: \"Couldn't turn on notifications.\",\n TURN_OFF_NOTIFICATIONS_ERROR: \"Couldn't turn off notifications.\",\n LEAVE_CHANNEL_ERROR: \"Couldn't leave channel.\",\n ...overrides?.TOAST,\n },\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"names":["createBaseStringSet","dateLocale","overrides","USER_NO_NAME","LABELS","CHANNEL_NO_MEMBERS","GROUP_CHANNEL","HEADER_TITLE","currentUserId","channel","getGroupChannelTitle","LIST_BANNER_FROZEN","LIST_DATE_SEPARATOR","date","locale","dateSeparator","LIST_BUTTON_NEW_MSG","newMessages","length","MESSAGE_BUBBLE_TIME","message","messageTime","Date","createdAt","MESSAGE_BUBBLE_FILE_TITLE","name","MESSAGE_BUBBLE_EDITED_POSTFIX","MESSAGE_BUBBLE_UNKNOWN_TITLE","MESSAGE_BUBBLE_UNKNOWN_DESC","INPUT_PLACEHOLDER_ACTIVE","INPUT_PLACEHOLDER_DISABLED","INPUT_EDIT_OK","INPUT_EDIT_CANCEL","DIALOG_MESSAGE_COPY","DIALOG_MESSAGE_EDIT","DIALOG_MESSAGE_SAVE","DIALOG_MESSAGE_DELETE","DIALOG_MESSAGE_DELETE_CONFIRM_TITLE","DIALOG_MESSAGE_DELETE_CONFIRM_OK","DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL","DIALOG_MESSAGE_FAILED_RETRY","DIALOG_MESSAGE_FAILED_REMOVE","DIALOG_ATTACHMENT_CAMERA","DIALOG_ATTACHMENT_PHOTO_LIBRARY","DIALOG_ATTACHMENT_FILES","GROUP_CHANNEL_SETTINGS","HEADER_RIGHT","MENU_NOTIFICATION","MENU_MEMBERS","MENU_LEAVE_CHANNEL","DIALOG_CHANGE_NAME","DIALOG_CHANGE_NAME_PROMPT_TITLE","DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER","DIALOG_CHANGE_NAME_PROMPT_OK","DIALOG_CHANGE_NAME_PROMPT_CANCEL","DIALOG_CHANGE_IMAGE","DIALOG_CHANGE_IMAGE_MENU_TITLE","DIALOG_CHANGE_IMAGE_MENU_CAMERA","DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY","GROUP_CHANNEL_LIST","CHANNEL_PREVIEW_TITLE","CHANNEL_PREVIEW_TITLE_CAPTION","getGroupChannelPreviewTime","CHANNEL_PREVIEW_BODY","getGroupChannelLastMessage","TYPE_SELECTOR_HEADER_TITLE","TYPE_SELECTOR_GROUP","TYPE_SELECTOR_SUPER_GROUP","TYPE_SELECTOR_BROADCAST","DIALOG_CHANNEL_TITLE","DIALOG_CHANNEL_NOTIFICATION","myPushTriggerOption","DIALOG_CHANNEL_LEAVE","GROUP_CHANNEL_MEMBERS","USER_BAR_ME_POSTFIX","USER_BAR_OPERATOR","DIALOG_USER_DISMISS_OPERATOR","DIALOG_USER_MUTE","DIALOG_USER_BAN","GROUP_CHANNEL_CREATE","selectedUsers","len","GROUP_CHANNEL_INVITE","TYPING_INDICATOR_TYPINGS","users","NO_NAME","userNames","map","u","nickname","join","FILE_VIEWER","TITLE","sender","SUBTITLE","PLACEHOLDER","NO_BANNED_MEMBERS","NO_USERS","NO_CHANNELS","NO_MESSAGES","NO_MUTED_MEMBERS","NO_RESULTS_FOUND","ERROR","MESSAGE","RETRY_LABEL","DIALOG","ALERT_DEFAULT_OK","ALERT_PERMISSIONS_TITLE","ALERT_PERMISSIONS_MESSAGE","permission","appName","ALERT_PERMISSIONS_OK","PROMPT_DEFAULT_OK","PROMPT_DEFAULT_CANCEL","PROMPT_DEFAULT_PLACEHOLDER","TOAST","COPY_OK","DOWNLOAD_START","DOWNLOAD_OK","DOWNLOAD_ERROR","OPEN_CAMERA_ERROR","OPEN_FILES_ERROR","OPEN_PHOTO_LIBRARY_ERROR","DELETE_MSG_ERROR","RESEND_MSG_ERROR","SEND_MSG_ERROR","UPDATE_MSG_ERROR","TURN_ON_NOTIFICATIONS_ERROR","TURN_OFF_NOTIFICATIONS_ERROR","LEAVE_CHANNEL_ERROR"],"sources":["StringSet.type.ts"],"sourcesContent":["import type { Locale } from 'date-fns';\n\nimport type {\n PartialDeep,\n SendbirdFileMessage,\n SendbirdGroupChannel,\n SendbirdMessage,\n SendbirdUser,\n} from '@sendbird/uikit-utils';\nimport {\n dateSeparator,\n getGroupChannelLastMessage,\n getGroupChannelPreviewTime,\n getGroupChannelTitle,\n messageTime,\n} from '@sendbird/uikit-utils';\n\n/**\n * StringSet interface\n * Do not configure over 3 depths (for overrides easy)\n * */\nexport interface StringSet {\n GROUP_CHANNEL: {\n /** GroupChannel > Header */\n HEADER_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n\n /** GroupChannel > List */\n LIST_BANNER_FROZEN: string;\n LIST_DATE_SEPARATOR: (date: Date, locale?: Locale) => string;\n LIST_BUTTON_NEW_MSG: (newMessages: SendbirdMessage[]) => string;\n\n /** GroupChannel > Message bubble */\n MESSAGE_BUBBLE_TIME: (message: SendbirdMessage, locale?: Locale) => string;\n MESSAGE_BUBBLE_FILE_TITLE: (message: SendbirdFileMessage) => string;\n MESSAGE_BUBBLE_EDITED_POSTFIX: string;\n MESSAGE_BUBBLE_UNKNOWN_TITLE: (message: SendbirdMessage) => string;\n MESSAGE_BUBBLE_UNKNOWN_DESC: (message: SendbirdMessage) => string;\n\n /** GroupChannel > Input */\n INPUT_PLACEHOLDER_ACTIVE: string;\n INPUT_PLACEHOLDER_DISABLED: string;\n INPUT_EDIT_OK: string;\n INPUT_EDIT_CANCEL: string;\n\n /** GroupChannel > Dialog > Message */\n DIALOG_MESSAGE_COPY: string;\n DIALOG_MESSAGE_EDIT: string;\n DIALOG_MESSAGE_SAVE: string;\n DIALOG_MESSAGE_DELETE: string;\n /** GroupChannel > Dialog > Message > Delete confirm */\n DIALOG_MESSAGE_DELETE_CONFIRM_TITLE: string;\n DIALOG_MESSAGE_DELETE_CONFIRM_OK: string;\n DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL: string;\n /** GroupChannel > Dialog > Message > Failed */\n DIALOG_MESSAGE_FAILED_RETRY: string;\n DIALOG_MESSAGE_FAILED_REMOVE: string;\n\n /** GroupChannel > Dialog > Attachments */\n DIALOG_ATTACHMENT_CAMERA: string;\n DIALOG_ATTACHMENT_PHOTO_LIBRARY: string;\n DIALOG_ATTACHMENT_FILES: string;\n };\n GROUP_CHANNEL_SETTINGS: {\n /** GroupChannelSettings > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: string;\n\n /** GroupChannelSettings > Menu */\n MENU_NOTIFICATION: string;\n MENU_MEMBERS: string;\n MENU_LEAVE_CHANNEL: string;\n\n /** GroupChannelSettings > Dialog */\n DIALOG_CHANGE_NAME: string;\n DIALOG_CHANGE_IMAGE: string;\n DIALOG_CHANGE_NAME_PROMPT_TITLE: string;\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: string;\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: string;\n DIALOG_CHANGE_NAME_PROMPT_OK: string;\n DIALOG_CHANGE_IMAGE_MENU_TITLE: string;\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: string;\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: string;\n };\n GROUP_CHANNEL_LIST: {\n /** GroupChannelList > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelList > Channel preview */\n CHANNEL_PREVIEW_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel: SendbirdGroupChannel, locale?: Locale) => string;\n CHANNEL_PREVIEW_BODY: (channel: SendbirdGroupChannel) => string;\n\n /** GroupChannelList > TypeSelector > Header */\n TYPE_SELECTOR_HEADER_TITLE: string;\n /** GroupChannelList > TypeSelector > Type string */\n TYPE_SELECTOR_GROUP: string;\n TYPE_SELECTOR_SUPER_GROUP: string;\n TYPE_SELECTOR_BROADCAST: string;\n\n /** GroupChannelList > Dialog > Channel */\n DIALOG_CHANNEL_TITLE: (currentUserId: string, channel: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_NOTIFICATION: (channel?: SendbirdGroupChannel) => string;\n DIALOG_CHANNEL_LEAVE: string;\n };\n GROUP_CHANNEL_MEMBERS: {\n /** GroupChannelMembers > Header */\n HEADER_TITLE: string;\n\n /** GroupChannelMembers > UserBar */\n USER_BAR_ME_POSTFIX: string;\n USER_BAR_OPERATOR: string;\n\n /** GroupChannelMembers > Dialog */\n DIALOG_USER_DISMISS_OPERATOR: string;\n DIALOG_USER_MUTE: string;\n DIALOG_USER_BAN: string;\n };\n GROUP_CHANNEL_INVITE: {\n /** GroupChannelInvite > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n GROUP_CHANNEL_CREATE: {\n /** GroupChannelCreate > Header */\n HEADER_TITLE: string;\n HEADER_RIGHT: <T>(params: { selectedUsers: Array<T> }) => string;\n };\n // UI\n LABELS: {\n USER_NO_NAME: string;\n CHANNEL_NO_MEMBERS: string;\n TYPING_INDICATOR_TYPINGS: (users: SendbirdUser[]) => string | undefined;\n };\n FILE_VIEWER: {\n TITLE: (message: SendbirdFileMessage) => string;\n SUBTITLE: (message: SendbirdFileMessage) => string;\n };\n PLACEHOLDER: {\n NO_BANNED_MEMBERS: string;\n NO_USERS: string;\n NO_CHANNELS: string;\n NO_MESSAGES: string;\n NO_MUTED_MEMBERS: string;\n NO_RESULTS_FOUND: string;\n ERROR: {\n MESSAGE: string;\n RETRY_LABEL: string;\n };\n };\n DIALOG: {\n ALERT_DEFAULT_OK: string;\n\n ALERT_PERMISSIONS_TITLE: string;\n ALERT_PERMISSIONS_MESSAGE: (permission: string, appName: string) => string;\n ALERT_PERMISSIONS_OK: string;\n\n PROMPT_DEFAULT_OK: string;\n PROMPT_DEFAULT_CANCEL: string;\n PROMPT_DEFAULT_PLACEHOLDER: string;\n };\n TOAST: {\n COPY_OK: string;\n DOWNLOAD_START: string;\n DOWNLOAD_OK: string;\n DOWNLOAD_ERROR: string;\n OPEN_CAMERA_ERROR: string;\n OPEN_PHOTO_LIBRARY_ERROR: string;\n OPEN_FILES_ERROR: string;\n RESEND_MSG_ERROR: string;\n DELETE_MSG_ERROR: string;\n SEND_MSG_ERROR: string;\n UPDATE_MSG_ERROR: string;\n TURN_ON_NOTIFICATIONS_ERROR: string;\n TURN_OFF_NOTIFICATIONS_ERROR: string;\n LEAVE_CHANNEL_ERROR: string;\n };\n}\n\ntype StringSetCreateOptions = {\n dateLocale: Locale;\n overrides?: PartialDeep<StringSet>;\n};\n\n/**\n * Create string set\n * You can create localized String set, you should provide locale for date and string as a parameters\n *\n * @param {StringSetCreateOptions.dateLocale} dateLocale Date locale (from date-fns)\n * @param {StringSetCreateOptions.overrides} [overrides] Localized strings\n * */\nexport const createBaseStringSet = ({ dateLocale, overrides }: StringSetCreateOptions): StringSet => {\n const USER_NO_NAME = overrides?.LABELS?.USER_NO_NAME ?? '(No name)';\n const CHANNEL_NO_MEMBERS = overrides?.LABELS?.CHANNEL_NO_MEMBERS ?? '(No members)';\n return {\n GROUP_CHANNEL: {\n HEADER_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n LIST_BANNER_FROZEN: 'Channel is frozen',\n LIST_DATE_SEPARATOR: (date, locale) => dateSeparator(date, locale ?? dateLocale),\n LIST_BUTTON_NEW_MSG: (newMessages) => `${newMessages.length} new messages`,\n\n MESSAGE_BUBBLE_TIME: (message, locale) => messageTime(new Date(message.createdAt), locale ?? dateLocale),\n MESSAGE_BUBBLE_FILE_TITLE: (message) => message.name,\n MESSAGE_BUBBLE_EDITED_POSTFIX: ' (edited)',\n MESSAGE_BUBBLE_UNKNOWN_TITLE: () => '(Unknown message type)',\n MESSAGE_BUBBLE_UNKNOWN_DESC: () => 'Cannot read this message.',\n\n INPUT_PLACEHOLDER_ACTIVE: 'Enter message',\n INPUT_PLACEHOLDER_DISABLED: 'Chat is unavailable in this channel',\n INPUT_EDIT_OK: 'Save',\n INPUT_EDIT_CANCEL: 'Cancel',\n\n DIALOG_MESSAGE_COPY: 'Copy',\n DIALOG_MESSAGE_EDIT: 'Edit',\n DIALOG_MESSAGE_SAVE: 'Save',\n DIALOG_MESSAGE_DELETE: 'Delete',\n DIALOG_MESSAGE_DELETE_CONFIRM_TITLE: 'Delete message?',\n DIALOG_MESSAGE_DELETE_CONFIRM_OK: 'Delete',\n DIALOG_MESSAGE_DELETE_CONFIRM_CANCEL: 'Cancel',\n DIALOG_MESSAGE_FAILED_RETRY: 'Retry',\n DIALOG_MESSAGE_FAILED_REMOVE: 'Remove',\n\n DIALOG_ATTACHMENT_CAMERA: 'Camera',\n DIALOG_ATTACHMENT_PHOTO_LIBRARY: 'Photo library',\n DIALOG_ATTACHMENT_FILES: 'Files',\n ...overrides?.GROUP_CHANNEL,\n },\n GROUP_CHANNEL_SETTINGS: {\n HEADER_TITLE: 'Channel information',\n HEADER_RIGHT: 'Edit',\n MENU_NOTIFICATION: 'Notifications',\n MENU_MEMBERS: 'Members',\n MENU_LEAVE_CHANNEL: 'Leave channel',\n DIALOG_CHANGE_NAME: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_TITLE: 'Change channel name',\n DIALOG_CHANGE_NAME_PROMPT_PLACEHOLDER: 'Enter name',\n DIALOG_CHANGE_NAME_PROMPT_OK: 'Save',\n DIALOG_CHANGE_NAME_PROMPT_CANCEL: 'Cancel',\n DIALOG_CHANGE_IMAGE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_TITLE: 'Change channel image',\n DIALOG_CHANGE_IMAGE_MENU_CAMERA: 'Take photo',\n DIALOG_CHANGE_IMAGE_MENU_PHOTO_LIBRARY: 'Choose photo',\n ...overrides?.GROUP_CHANNEL_SETTINGS,\n },\n GROUP_CHANNEL_LIST: {\n HEADER_TITLE: 'Channels',\n CHANNEL_PREVIEW_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n CHANNEL_PREVIEW_TITLE_CAPTION: (channel, locale) => getGroupChannelPreviewTime(channel, locale ?? dateLocale),\n CHANNEL_PREVIEW_BODY: (channel) => getGroupChannelLastMessage(channel),\n TYPE_SELECTOR_HEADER_TITLE: 'Channel type',\n TYPE_SELECTOR_GROUP: 'Group',\n TYPE_SELECTOR_SUPER_GROUP: 'Super group',\n TYPE_SELECTOR_BROADCAST: 'Broadcast',\n DIALOG_CHANNEL_TITLE: (currentUserId, channel) =>\n getGroupChannelTitle(currentUserId, channel, USER_NO_NAME, CHANNEL_NO_MEMBERS),\n DIALOG_CHANNEL_NOTIFICATION: (channel) => {\n if (!channel) return '';\n if (channel.myPushTriggerOption === 'off') return 'Turn on notifications';\n return 'Turn off notifications';\n },\n DIALOG_CHANNEL_LEAVE: 'Leave channel',\n ...overrides?.GROUP_CHANNEL_LIST,\n },\n GROUP_CHANNEL_MEMBERS: {\n HEADER_TITLE: 'Members',\n USER_BAR_ME_POSTFIX: ' (You)',\n USER_BAR_OPERATOR: 'Operator',\n DIALOG_USER_DISMISS_OPERATOR: 'Dismiss operator',\n DIALOG_USER_MUTE: 'Mute',\n DIALOG_USER_BAN: 'Ban',\n ...overrides?.GROUP_CHANNEL_MEMBERS,\n },\n GROUP_CHANNEL_CREATE: {\n HEADER_TITLE: 'New channel',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Create';\n return `Create (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_CREATE,\n },\n GROUP_CHANNEL_INVITE: {\n HEADER_TITLE: 'Invite users',\n HEADER_RIGHT: ({ selectedUsers }) => {\n const len = selectedUsers.length;\n if (len === 0) return 'Invite';\n return `Invite (${len})`;\n },\n ...overrides?.GROUP_CHANNEL_INVITE,\n },\n LABELS: {\n USER_NO_NAME,\n CHANNEL_NO_MEMBERS,\n TYPING_INDICATOR_TYPINGS: (users, NO_NAME = USER_NO_NAME) => {\n const userNames = users.map((u) => u.nickname || NO_NAME);\n if (userNames.length === 0) return;\n if (userNames.length === 1) return `${userNames[0]} is typing...`;\n if (users.length === 2) return `${userNames.join(' and ')} are typing...`;\n return 'Several people are typing...';\n },\n ...overrides?.LABELS,\n },\n FILE_VIEWER: {\n TITLE: (message) => message.sender?.nickname || USER_NO_NAME,\n SUBTITLE: (message) => messageTime(new Date(message.createdAt), dateLocale),\n },\n PLACEHOLDER: {\n NO_BANNED_MEMBERS: 'No banned members',\n NO_USERS: 'No users',\n NO_CHANNELS: 'No channels',\n NO_MESSAGES: 'No messages',\n NO_MUTED_MEMBERS: 'No muted members',\n NO_RESULTS_FOUND: 'No results found',\n ...overrides?.PLACEHOLDER,\n ERROR: {\n MESSAGE: 'Something went wrong',\n RETRY_LABEL: 'Retry',\n ...overrides?.PLACEHOLDER?.ERROR,\n },\n },\n DIALOG: {\n ALERT_DEFAULT_OK: 'OK',\n ALERT_PERMISSIONS_TITLE: 'Allow permission',\n ALERT_PERMISSIONS_MESSAGE: (permission, appName = 'Application') => {\n return `${appName} need permission to access your ${permission}. Go to Settings to allow access`;\n },\n ALERT_PERMISSIONS_OK: 'SETTINGS',\n PROMPT_DEFAULT_OK: 'Submit',\n PROMPT_DEFAULT_CANCEL: 'Cancel',\n PROMPT_DEFAULT_PLACEHOLDER: 'Enter',\n ...overrides?.DIALOG,\n },\n TOAST: {\n COPY_OK: 'Copied',\n DOWNLOAD_START: 'Downloading...',\n DOWNLOAD_OK: 'File saved',\n DOWNLOAD_ERROR: \"Couldn't download file.\",\n OPEN_CAMERA_ERROR: \"Couldn't open camera.\",\n OPEN_FILES_ERROR: \"Couldn't open files.\",\n OPEN_PHOTO_LIBRARY_ERROR: \"Couldn't open photo library.\",\n DELETE_MSG_ERROR: \"Couldn't delete message.\",\n RESEND_MSG_ERROR: \"Couldn't send message.\",\n SEND_MSG_ERROR: \"Couldn't send message.\",\n UPDATE_MSG_ERROR: \"Couldn't edit message.\",\n TURN_ON_NOTIFICATIONS_ERROR: \"Couldn't turn on notifications.\",\n TURN_OFF_NOTIFICATIONS_ERROR: \"Couldn't turn off notifications.\",\n LEAVE_CHANNEL_ERROR: \"Couldn't leave channel.\",\n ...overrides?.TOAST,\n },\n };\n};\n"],"mappings":"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"}
@@ -7,6 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _uikitUtils = require("@sendbird/uikit-utils");
9
9
 
10
+ var _SBUError = _interopRequireDefault(require("../libs/SBUError"));
11
+
10
12
  var _expoPermissionGranted = _interopRequireDefault(require("../utils/expoPermissionGranted"));
11
13
 
12
14
  var _fileTypeGuard = _interopRequireDefault(require("../utils/fileTypeGuard"));
@@ -51,7 +53,7 @@ const createExpoFileService = _ref => {
51
53
  if (!granted) {
52
54
  var _options$onOpenFailur;
53
55
 
54
- options === null || options === void 0 ? void 0 : (_options$onOpenFailur = options.onOpenFailureWithToastMessage) === null || _options$onOpenFailur === void 0 ? void 0 : _options$onOpenFailur.call(options);
56
+ options === null || options === void 0 ? void 0 : (_options$onOpenFailur = options.onOpenFailure) === null || _options$onOpenFailur === void 0 ? void 0 : _options$onOpenFailur.call(options, _SBUError.default.PERMISSIONS_DENIED);
55
57
  return null;
56
58
  }
57
59
  }
@@ -99,7 +101,7 @@ const createExpoFileService = _ref => {
99
101
  if (!granted) {
100
102
  var _options$onOpenFailur2;
101
103
 
102
- options === null || options === void 0 ? void 0 : (_options$onOpenFailur2 = options.onOpenFailureWithToastMessage) === null || _options$onOpenFailur2 === void 0 ? void 0 : _options$onOpenFailur2.call(options);
104
+ options === null || options === void 0 ? void 0 : (_options$onOpenFailur2 = options.onOpenFailure) === null || _options$onOpenFailur2 === void 0 ? void 0 : _options$onOpenFailur2.call(options, _SBUError.default.PERMISSIONS_DENIED);
103
105
  return null;
104
106
  }
105
107
  }
@@ -156,10 +158,10 @@ const createExpoFileService = _ref => {
156
158
  name,
157
159
  type: mimeType
158
160
  });
159
- } catch {
161
+ } catch (e) {
160
162
  var _options$onOpenFailur3;
161
163
 
162
- options === null || options === void 0 ? void 0 : (_options$onOpenFailur3 = options.onOpenFailureWithToastMessage) === null || _options$onOpenFailur3 === void 0 ? void 0 : _options$onOpenFailur3.call(options);
164
+ options === null || options === void 0 ? void 0 : (_options$onOpenFailur3 = options.onOpenFailure) === null || _options$onOpenFailur3 === void 0 ? void 0 : _options$onOpenFailur3.call(options, _SBUError.default.UNKNOWN, e);
163
165
  return null;
164
166
  }
165
167
  }
@@ -1 +1 @@
1
- {"version":3,"names":["createExpoFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","ExpoFileServiceInterface","hasCameraPermission","res","getCameraPermissionsAsync","expoPermissionGranted","requestCameraPermission","requestCameraPermissionsAsync","hasMediaLibraryPermission","type","perms","getPermissionsAsync","requestMediaLibraryPermission","requestPermissionsAsync","openCamera","options","hasPermission","granted","onOpenFailureWithToastMessage","response","launchCameraAsync","mediaTypes","mediaType","MediaTypeOptions","Images","Videos","All","cancelled","uri","size","getInfoAsync","ext","getFileExtension","getFileType","fileTypeGuard","slice","name","Date","now","openMediaLibrary","launchImageLibraryAsync","openDocument","getDocumentAsync","mimeType","save","Error","basePath","documentDirectory","cacheDirectory","downloadPath","fileName","downloadAsync","fileUrl","fileType","match","saveToLibraryAsync"],"sources":["createFileService.expo.ts"],"sourcesContent":["import type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoMediaLibrary from 'expo-media-library';\n\nimport { getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport type { ExpoMediaLibraryPermissionResponse, ExpoPermissionResponse } from '../utils/expoPermissionGranted';\nimport expoPermissionGranted from '../utils/expoPermissionGranted';\nimport fileTypeGuard from '../utils/fileTypeGuard';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nconst createExpoFileService = ({\n imagePickerModule,\n documentPickerModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ExpoImagePicker;\n documentPickerModule: typeof ExpoDocumentPicker;\n mediaLibraryModule: typeof ExpoMediaLibrary;\n fsModule: typeof ExpoFs;\n}): FileServiceInterface => {\n class ExpoFileServiceInterface implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.getCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async requestCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.requestCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async hasMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.getPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n async requestMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.requestPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCameraAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n\n if (response.cancelled) return null;\n\n const { uri } = response;\n const { size } = await fsModule.getInfoAsync(response.uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n\n return fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext });\n }\n async openMediaLibrary(options: OpenMediaLibraryOptions) {\n const hasPermission = await this.hasMediaLibraryPermission('read');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('read');\n if (!granted) {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibraryAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n if (response.cancelled) return null;\n const { uri } = response;\n\n const { size } = await fsModule.getInfoAsync(uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n return [fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext })];\n }\n\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const response = await documentPickerModule.getDocumentAsync({ type: '*/*' });\n if (response.type === 'cancel') return null;\n const { mimeType, uri, size, name } = response;\n return fileTypeGuard({ uri, size, name, type: mimeType });\n } catch {\n options?.onOpenFailureWithToastMessage?.();\n return null;\n }\n }\n\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission('write');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('write');\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = fsModule.documentDirectory || fsModule.cacheDirectory;\n if (!basePath) throw new Error('Cannot determine directory');\n\n const downloadPath = `${basePath}/${options.fileName}`;\n\n const response = await fsModule.downloadAsync(options.fileUrl, downloadPath);\n if (getFileType(options.fileType || '').match(/video|image/)) {\n await mediaLibraryModule.saveToLibraryAsync(response.uri);\n }\n return response.uri;\n }\n }\n\n return new ExpoFileServiceInterface();\n};\n\nexport default createExpoFileService;\n"],"mappings":"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"}
1
+ {"version":3,"names":["createExpoFileService","imagePickerModule","documentPickerModule","mediaLibraryModule","fsModule","ExpoFileServiceInterface","hasCameraPermission","res","getCameraPermissionsAsync","expoPermissionGranted","requestCameraPermission","requestCameraPermissionsAsync","hasMediaLibraryPermission","type","perms","getPermissionsAsync","requestMediaLibraryPermission","requestPermissionsAsync","openCamera","options","hasPermission","granted","onOpenFailure","SBUError","PERMISSIONS_DENIED","response","launchCameraAsync","mediaTypes","mediaType","MediaTypeOptions","Images","Videos","All","cancelled","uri","size","getInfoAsync","ext","getFileExtension","getFileType","fileTypeGuard","slice","name","Date","now","openMediaLibrary","launchImageLibraryAsync","openDocument","getDocumentAsync","mimeType","e","UNKNOWN","save","Error","basePath","documentDirectory","cacheDirectory","downloadPath","fileName","downloadAsync","fileUrl","fileType","match","saveToLibraryAsync"],"sources":["createFileService.expo.ts"],"sourcesContent":["import type * as ExpoDocumentPicker from 'expo-document-picker';\nimport type * as ExpoFs from 'expo-file-system';\nimport type * as ExpoImagePicker from 'expo-image-picker';\nimport type * as ExpoMediaLibrary from 'expo-media-library';\n\nimport { getFileExtension, getFileType } from '@sendbird/uikit-utils';\n\nimport SBUError from '../libs/SBUError';\nimport type { ExpoMediaLibraryPermissionResponse, ExpoPermissionResponse } from '../utils/expoPermissionGranted';\nimport expoPermissionGranted from '../utils/expoPermissionGranted';\nimport fileTypeGuard from '../utils/fileTypeGuard';\nimport type {\n FilePickerResponse,\n FileServiceInterface,\n OpenCameraOptions,\n OpenDocumentOptions,\n OpenMediaLibraryOptions,\n SaveOptions,\n} from './types';\n\nconst createExpoFileService = ({\n imagePickerModule,\n documentPickerModule,\n mediaLibraryModule,\n fsModule,\n}: {\n imagePickerModule: typeof ExpoImagePicker;\n documentPickerModule: typeof ExpoDocumentPicker;\n mediaLibraryModule: typeof ExpoMediaLibrary;\n fsModule: typeof ExpoFs;\n}): FileServiceInterface => {\n class ExpoFileServiceInterface implements FileServiceInterface {\n async hasCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.getCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async requestCameraPermission(): Promise<boolean> {\n const res = (await imagePickerModule.requestCameraPermissionsAsync()) as ExpoPermissionResponse;\n return expoPermissionGranted([res]);\n }\n async hasMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.getPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n async requestMediaLibraryPermission(type: 'write' | 'read'): Promise<boolean> {\n const perms = (await mediaLibraryModule.requestPermissionsAsync(\n type === 'write',\n )) as ExpoMediaLibraryPermissionResponse;\n return expoPermissionGranted([perms]);\n }\n\n async openCamera(options?: OpenCameraOptions): Promise<FilePickerResponse> {\n const hasPermission = await this.hasCameraPermission();\n if (!hasPermission) {\n const granted = await this.requestCameraPermission();\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchCameraAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n\n if (response.cancelled) return null;\n\n const { uri } = response;\n const { size } = await fsModule.getInfoAsync(response.uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n\n return fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext });\n }\n async openMediaLibrary(options: OpenMediaLibraryOptions) {\n const hasPermission = await this.hasMediaLibraryPermission('read');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('read');\n if (!granted) {\n options?.onOpenFailure?.(SBUError.PERMISSIONS_DENIED);\n return null;\n }\n }\n\n const response = await imagePickerModule.launchImageLibraryAsync({\n mediaTypes: (() => {\n switch (options?.mediaType) {\n case 'photo':\n return imagePickerModule.MediaTypeOptions.Images;\n case 'video':\n return imagePickerModule.MediaTypeOptions.Videos;\n case 'all':\n return imagePickerModule.MediaTypeOptions.All;\n default:\n return imagePickerModule.MediaTypeOptions.Images;\n }\n })(),\n });\n if (response.cancelled) return null;\n const { uri } = response;\n\n const { size } = await fsModule.getInfoAsync(uri);\n const ext = getFileExtension(uri);\n const type = getFileType(ext);\n return [fileTypeGuard({ uri, size, type: `${type}/${ext.slice(1)}`, name: Date.now() + ext })];\n }\n\n async openDocument(options?: OpenDocumentOptions): Promise<FilePickerResponse> {\n try {\n const response = await documentPickerModule.getDocumentAsync({ type: '*/*' });\n if (response.type === 'cancel') return null;\n const { mimeType, uri, size, name } = response;\n return fileTypeGuard({ uri, size, name, type: mimeType });\n } catch (e) {\n options?.onOpenFailure?.(SBUError.UNKNOWN, e);\n return null;\n }\n }\n\n async save(options: SaveOptions): Promise<string> {\n const hasPermission = await this.hasMediaLibraryPermission('write');\n if (!hasPermission) {\n const granted = await this.requestMediaLibraryPermission('write');\n if (!granted) throw new Error('Permission not granted');\n }\n\n const basePath = fsModule.documentDirectory || fsModule.cacheDirectory;\n if (!basePath) throw new Error('Cannot determine directory');\n\n const downloadPath = `${basePath}/${options.fileName}`;\n\n const response = await fsModule.downloadAsync(options.fileUrl, downloadPath);\n if (getFileType(options.fileType || '').match(/video|image/)) {\n await mediaLibraryModule.saveToLibraryAsync(response.uri);\n }\n return response.uri;\n }\n }\n\n return new ExpoFileServiceInterface();\n};\n\nexport default createExpoFileService;\n"],"mappings":"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"}