stream-chat-react-native-core 5.27.0-beta.9 → 5.27.0

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 (96) hide show
  1. package/lib/commonjs/components/Attachment/Gallery.js +4 -4
  2. package/lib/commonjs/components/Attachment/Gallery.js.map +1 -1
  3. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js +1 -1
  4. package/lib/commonjs/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  5. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js +100 -37
  6. package/lib/commonjs/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  7. package/lib/commonjs/components/Chat/hooks/useSyncDatabase.js +3 -1
  8. package/lib/commonjs/components/Chat/hooks/useSyncDatabase.js.map +1 -1
  9. package/lib/commonjs/components/ImageGallery/ImageGallery.js +39 -21
  10. package/lib/commonjs/components/ImageGallery/ImageGallery.js.map +1 -1
  11. package/lib/commonjs/i18n/en.json +1 -1
  12. package/lib/commonjs/i18n/es.json +64 -64
  13. package/lib/commonjs/i18n/fr.json +64 -64
  14. package/lib/commonjs/i18n/he.json +64 -64
  15. package/lib/commonjs/i18n/hi.json +64 -64
  16. package/lib/commonjs/i18n/it.json +64 -64
  17. package/lib/commonjs/i18n/ja.json +64 -64
  18. package/lib/commonjs/i18n/ko.json +64 -64
  19. package/lib/commonjs/i18n/nl.json +64 -64
  20. package/lib/commonjs/i18n/pt-BR.json +64 -64
  21. package/lib/commonjs/i18n/ru.json +64 -64
  22. package/lib/commonjs/i18n/tr.json +64 -64
  23. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js +21 -0
  24. package/lib/commonjs/store/apis/upsertChannelDataFromChannel.js.map +1 -0
  25. package/lib/commonjs/store/mappers/mapChannelToStorable.js +63 -0
  26. package/lib/commonjs/store/mappers/mapChannelToStorable.js.map +1 -0
  27. package/lib/commonjs/utils/DBSyncManager.js +73 -68
  28. package/lib/commonjs/utils/DBSyncManager.js.map +1 -1
  29. package/lib/commonjs/version.json +1 -1
  30. package/lib/module/components/Attachment/Gallery.js +4 -4
  31. package/lib/module/components/Attachment/Gallery.js.map +1 -1
  32. package/lib/module/components/AttachmentPicker/AttachmentPicker.js +1 -1
  33. package/lib/module/components/AttachmentPicker/AttachmentPicker.js.map +1 -1
  34. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js +100 -37
  35. package/lib/module/components/Chat/hooks/handleEventToSyncDB.js.map +1 -1
  36. package/lib/module/components/Chat/hooks/useSyncDatabase.js +3 -1
  37. package/lib/module/components/Chat/hooks/useSyncDatabase.js.map +1 -1
  38. package/lib/module/components/ImageGallery/ImageGallery.js +39 -21
  39. package/lib/module/components/ImageGallery/ImageGallery.js.map +1 -1
  40. package/lib/module/i18n/en.json +1 -1
  41. package/lib/module/i18n/es.json +64 -64
  42. package/lib/module/i18n/fr.json +64 -64
  43. package/lib/module/i18n/he.json +64 -64
  44. package/lib/module/i18n/hi.json +64 -64
  45. package/lib/module/i18n/it.json +64 -64
  46. package/lib/module/i18n/ja.json +64 -64
  47. package/lib/module/i18n/ko.json +64 -64
  48. package/lib/module/i18n/nl.json +64 -64
  49. package/lib/module/i18n/pt-BR.json +64 -64
  50. package/lib/module/i18n/ru.json +64 -64
  51. package/lib/module/i18n/tr.json +64 -64
  52. package/lib/module/store/apis/upsertChannelDataFromChannel.js +21 -0
  53. package/lib/module/store/apis/upsertChannelDataFromChannel.js.map +1 -0
  54. package/lib/module/store/mappers/mapChannelToStorable.js +63 -0
  55. package/lib/module/store/mappers/mapChannelToStorable.js.map +1 -0
  56. package/lib/module/utils/DBSyncManager.js +73 -68
  57. package/lib/module/utils/DBSyncManager.js.map +1 -1
  58. package/lib/module/version.json +1 -1
  59. package/lib/typescript/components/Chat/hooks/handleEventToSyncDB.d.ts +4 -2
  60. package/lib/typescript/i18n/en.json +1 -1
  61. package/lib/typescript/i18n/es.json +64 -64
  62. package/lib/typescript/i18n/fr.json +64 -64
  63. package/lib/typescript/i18n/he.json +64 -64
  64. package/lib/typescript/i18n/hi.json +64 -64
  65. package/lib/typescript/i18n/it.json +64 -64
  66. package/lib/typescript/i18n/ja.json +64 -64
  67. package/lib/typescript/i18n/ko.json +64 -64
  68. package/lib/typescript/i18n/nl.json +64 -64
  69. package/lib/typescript/i18n/pt-BR.json +64 -64
  70. package/lib/typescript/i18n/ru.json +64 -64
  71. package/lib/typescript/i18n/tr.json +64 -64
  72. package/lib/typescript/store/apis/upsertChannelDataFromChannel.d.ts +6 -0
  73. package/lib/typescript/store/mappers/mapChannelToStorable.d.ts +4 -0
  74. package/lib/typescript/utils/DBSyncManager.d.ts +1 -1
  75. package/package.json +1 -1
  76. package/src/components/Attachment/Gallery.tsx +5 -5
  77. package/src/components/AttachmentPicker/AttachmentPicker.tsx +1 -1
  78. package/src/components/Chat/hooks/handleEventToSyncDB.ts +132 -46
  79. package/src/components/Chat/hooks/useSyncDatabase.ts +1 -1
  80. package/src/components/ImageGallery/ImageGallery.tsx +25 -2
  81. package/src/i18n/en.json +1 -1
  82. package/src/i18n/es.json +64 -64
  83. package/src/i18n/fr.json +64 -64
  84. package/src/i18n/he.json +64 -64
  85. package/src/i18n/hi.json +64 -64
  86. package/src/i18n/it.json +64 -64
  87. package/src/i18n/ja.json +64 -64
  88. package/src/i18n/ko.json +64 -64
  89. package/src/i18n/nl.json +64 -64
  90. package/src/i18n/pt-BR.json +64 -64
  91. package/src/i18n/ru.json +64 -64
  92. package/src/i18n/tr.json +64 -64
  93. package/src/store/apis/upsertChannelDataFromChannel.ts +25 -0
  94. package/src/store/mappers/mapChannelToStorable.ts +68 -0
  95. package/src/utils/DBSyncManager.ts +7 -3
  96. package/src/version.json +1 -1
@@ -105,73 +105,78 @@ DBSyncManager.onSyncStatusChange = function (listener) {
105
105
  }
106
106
  };
107
107
  };
108
- DBSyncManager.sync = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3() {
109
- var _DBSyncManager$client;
110
- var cids, lastSyncedAt, lastSyncedAtDate, lastSyncedAtDayJs, nowDayJs, diff, result, queries;
111
- return _regenerator["default"].wrap(function _callee3$(_context3) {
112
- while (1) switch (_context3.prev = _context3.next) {
113
- case 0:
114
- if ((_DBSyncManager$client = DBSyncManager.client) != null && _DBSyncManager$client.user) {
115
- _context3.next = 2;
116
- break;
117
- }
118
- return _context3.abrupt("return");
119
- case 2:
120
- cids = (0, _apis.getAllChannelIds)();
121
- if (!(cids.length === 0)) {
122
- _context3.next = 5;
123
- break;
124
- }
125
- return _context3.abrupt("return");
126
- case 5:
127
- lastSyncedAt = (0, _apis.getLastSyncedAt)({
128
- currentUserId: DBSyncManager.client.user.id
129
- });
130
- if (!lastSyncedAt) {
108
+ DBSyncManager.sync = function () {
109
+ var _ref3 = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee3(client) {
110
+ var _DBSyncManager$client;
111
+ var cids, lastSyncedAt, lastSyncedAtDate, lastSyncedAtDayJs, nowDayJs, diff, result, queries;
112
+ return _regenerator["default"].wrap(function _callee3$(_context3) {
113
+ while (1) switch (_context3.prev = _context3.next) {
114
+ case 0:
115
+ if ((_DBSyncManager$client = DBSyncManager.client) != null && _DBSyncManager$client.user) {
116
+ _context3.next = 2;
117
+ break;
118
+ }
119
+ return _context3.abrupt("return");
120
+ case 2:
121
+ cids = (0, _apis.getAllChannelIds)();
122
+ if (!(cids.length === 0)) {
123
+ _context3.next = 5;
124
+ break;
125
+ }
126
+ return _context3.abrupt("return");
127
+ case 5:
128
+ lastSyncedAt = (0, _apis.getLastSyncedAt)({
129
+ currentUserId: DBSyncManager.client.user.id
130
+ });
131
+ if (!lastSyncedAt) {
132
+ _context3.next = 26;
133
+ break;
134
+ }
135
+ lastSyncedAtDate = new Date(lastSyncedAt);
136
+ lastSyncedAtDayJs = (0, _dayjs["default"])(lastSyncedAtDate);
137
+ nowDayJs = (0, _dayjs["default"])();
138
+ diff = nowDayJs.diff(lastSyncedAtDayJs, 'days');
139
+ if (!(diff > 30)) {
140
+ _context3.next = 15;
141
+ break;
142
+ }
143
+ _QuickSqliteClient.QuickSqliteClient.resetDB();
131
144
  _context3.next = 26;
132
145
  break;
133
- }
134
- lastSyncedAtDate = new Date(lastSyncedAt);
135
- lastSyncedAtDayJs = (0, _dayjs["default"])(lastSyncedAtDate);
136
- nowDayJs = (0, _dayjs["default"])();
137
- diff = nowDayJs.diff(lastSyncedAtDayJs, 'days');
138
- if (!(diff > 30)) {
139
- _context3.next = 15;
146
+ case 15:
147
+ _context3.prev = 15;
148
+ _context3.next = 18;
149
+ return DBSyncManager.client.sync(cids, lastSyncedAtDate.toISOString());
150
+ case 18:
151
+ result = _context3.sent;
152
+ queries = result.events.reduce(function (queries, event) {
153
+ queries = queries.concat((0, _handleEventToSyncDB.handleEventToSyncDB)(event, client, false));
154
+ return queries;
155
+ }, []);
156
+ if (queries.length) {
157
+ _QuickSqliteClient.QuickSqliteClient.executeSqlBatch(queries);
158
+ }
159
+ _context3.next = 26;
140
160
  break;
141
- }
142
- _QuickSqliteClient.QuickSqliteClient.resetDB();
143
- _context3.next = 26;
144
- break;
145
- case 15:
146
- _context3.prev = 15;
147
- _context3.next = 18;
148
- return DBSyncManager.client.sync(cids, lastSyncedAtDate.toISOString());
149
- case 18:
150
- result = _context3.sent;
151
- queries = result.events.reduce(function (queries, event) {
152
- queries = queries.concat((0, _handleEventToSyncDB.handleEventToSyncDB)(event, false));
153
- return queries;
154
- }, []);
155
- if (queries.length) {
156
- _QuickSqliteClient.QuickSqliteClient.executeSqlBatch(queries);
157
- }
158
- _context3.next = 26;
159
- break;
160
- case 23:
161
- _context3.prev = 23;
162
- _context3.t0 = _context3["catch"](15);
163
- _QuickSqliteClient.QuickSqliteClient.resetDB();
164
- case 26:
165
- (0, _apis.upsertUserSyncStatus)({
166
- currentUserId: DBSyncManager.client.user.id,
167
- lastSyncedAt: new Date().toString()
168
- });
169
- case 27:
170
- case "end":
171
- return _context3.stop();
172
- }
173
- }, _callee3, null, [[15, 23]]);
174
- }));
161
+ case 23:
162
+ _context3.prev = 23;
163
+ _context3.t0 = _context3["catch"](15);
164
+ _QuickSqliteClient.QuickSqliteClient.resetDB();
165
+ case 26:
166
+ (0, _apis.upsertUserSyncStatus)({
167
+ currentUserId: DBSyncManager.client.user.id,
168
+ lastSyncedAt: new Date().toString()
169
+ });
170
+ case 27:
171
+ case "end":
172
+ return _context3.stop();
173
+ }
174
+ }, _callee3, null, [[15, 23]]);
175
+ }));
176
+ return function (_x3) {
177
+ return _ref3.apply(this, arguments);
178
+ };
179
+ }();
175
180
  DBSyncManager.syncAndExecutePendingTasks = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee4() {
176
181
  return _regenerator["default"].wrap(function _callee4$(_context4) {
177
182
  while (1) switch (_context4.prev = _context4.next) {
@@ -186,7 +191,7 @@ DBSyncManager.syncAndExecutePendingTasks = (0, _asyncToGenerator2["default"])(_r
186
191
  return DBSyncManager.executePendingTasks(DBSyncManager.client);
187
192
  case 4:
188
193
  _context4.next = 6;
189
- return DBSyncManager.sync();
194
+ return DBSyncManager.sync(DBSyncManager.client);
190
195
  case 6:
191
196
  case "end":
192
197
  return _context4.stop();
@@ -231,7 +236,7 @@ DBSyncManager.queueTask = function () {
231
236
  }
232
237
  }, _callee5, null, [[2, 8]]);
233
238
  }));
234
- return function (_x3) {
239
+ return function (_x4) {
235
240
  return _ref6.apply(this, arguments);
236
241
  };
237
242
  }();
@@ -277,7 +282,7 @@ DBSyncManager.executeTask = function () {
277
282
  }
278
283
  }, _callee6);
279
284
  }));
280
- return function (_x4) {
285
+ return function (_x5) {
281
286
  return _ref8.apply(this, arguments);
282
287
  };
283
288
  }();
@@ -336,7 +341,7 @@ DBSyncManager.executePendingTasks = function () {
336
341
  }
337
342
  }, _callee7, null, [[6, 11]]);
338
343
  }));
339
- return function (_x5) {
344
+ return function (_x6) {
340
345
  return _ref9.apply(this, arguments);
341
346
  };
342
347
  }();
@@ -1 +1 @@
1
- {"version":3,"names":["_dayjs","_interopRequireDefault","require","_handleEventToSyncDB","_apis","_addPendingTask","_deletePendingTask","_getPendingTasks","_QuickSqliteClient","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","restBeforeNextTask","Promise","resolve","setTimeout","DBSyncManager","_createClass2","_classCallCheck2","exports","syncStatus","listeners","client","getSyncStatus","init","_ref","_asyncToGenerator2","_regenerator","mark","_callee2","_client$user","_client$wsConnection","wrap","_callee2$","_context2","prev","user","id","wsConnection","isHealthy","syncAndExecutePendingTasks","forEach","l","on","_ref2","_callee","event","_callee$","_context","online","stop","_x2","apply","arguments","_x","onSyncStatusChange","listener","push","unsubscribe","filter","el","sync","_callee3","_DBSyncManager$client","cids","lastSyncedAt","lastSyncedAtDate","lastSyncedAtDayJs","nowDayJs","diff","result","queries","_callee3$","_context3","abrupt","getAllChannelIds","getLastSyncedAt","currentUserId","Date","dayjs","QuickSqliteClient","resetDB","toISOString","sent","events","reduce","concat","handleEventToSyncDB","executeSqlBatch","t0","upsertUserSyncStatus","_callee4","_callee4$","_context4","executePendingTasks","queueTask","_ref6","_callee5","_ref5","task","removeFromApi","response","_response","_response$data","_callee5$","_context5","addPendingTask","executeTask","data","code","_x3","_ref8","_callee6","_ref7","channel","_callee6$","_context6","channelType","channelId","type","sendReaction","_toConsumableArray2","payload","deleteReaction","deleteMessage","Error","_x4","_ref9","_callee7","queue","_iterator","_step","_response2","_response2$data","_callee7$","_context7","getPendingTasks","deletePendingTask","_x5","dropPendingTasks","conditions","tasks","_iterator2","_step2"],"sources":["DBSyncManager.ts"],"sourcesContent":["import type { AxiosError } from 'axios';\nimport dayjs from 'dayjs';\nimport type { APIErrorResponse, StreamChat } from 'stream-chat';\n\nimport { handleEventToSyncDB } from '../components/Chat/hooks/handleEventToSyncDB';\nimport { getAllChannelIds, getLastSyncedAt, upsertUserSyncStatus } from '../store/apis';\n\nimport { addPendingTask } from '../store/apis/addPendingTask';\n\nimport { deletePendingTask } from '../store/apis/deletePendingTask';\nimport { getPendingTasks } from '../store/apis/getPendingTasks';\nimport { QuickSqliteClient } from '../store/QuickSqliteClient';\nimport type { PendingTask, PreparedQueries } from '../store/types';\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\n/**\n * DBSyncManager has the responsibility to sync the channel states\n * within local database whenever possible.\n *\n * Components can get the current sync status using DBSyncManager.getCurrentStatus().\n * Or components can attach a listener for status change as following:\n *\n * ```tsx\n * useEffect(() => {\n * const unsubscribe = DBSyncManager.onSyncStatusChange((syncStatus) => {\n * if (syncStatus) {\n * doSomething();\n * }\n * })\n *\n * return () => unsubscribe();\n * })\n * ```\n */\nconst restBeforeNextTask = () => new Promise((resolve) => setTimeout(resolve, 500));\n\nexport class DBSyncManager {\n static syncStatus = false;\n static listeners: Array<(status: boolean) => void> = [];\n static client: StreamChat | null = null;\n\n /**\n * Returns weather channel states in local DB are synced with backend or not.\n * @returns boolean\n */\n static getSyncStatus = () => this.syncStatus;\n\n /**\n * Initializes the DBSyncManager. This function should be called only once\n * throughout the lifetime of SDK.\n *\n * @param client\n */\n static init = async (client: StreamChat) => {\n this.client = client;\n // If the websocket connection is already active, then straightaway\n // call the sync api and also execute pending api calls.\n // Otherwise wait for `connection.changed` event.\n if (client.user?.id && client.wsConnection?.isHealthy) {\n await this.syncAndExecutePendingTasks();\n this.syncStatus = true;\n this.listeners.forEach((l) => l(true));\n }\n\n this.client.on('connection.changed', async (event) => {\n if (event.online) {\n await this.syncAndExecutePendingTasks();\n this.syncStatus = true;\n this.listeners.forEach((l) => l(true));\n } else {\n this.syncStatus = false;\n this.listeners.forEach((l) => l(false));\n }\n });\n };\n\n /**\n * Subscribes a listener for sync status change.\n *\n * @param listener {function}\n * @returns {function} to unsubscribe the listener.\n */\n static onSyncStatusChange = (listener: (status: boolean) => void) => {\n this.listeners.push(listener);\n\n return {\n unsubscribe: () => {\n this.listeners = this.listeners.filter((el) => el !== listener);\n },\n };\n };\n\n static sync = async () => {\n if (!this.client?.user) return;\n const cids = getAllChannelIds();\n // If there are no channels, then there is no need to sync.\n if (cids.length === 0) return;\n\n const lastSyncedAt = getLastSyncedAt({\n currentUserId: this.client.user.id,\n });\n\n if (lastSyncedAt) {\n const lastSyncedAtDate = new Date(lastSyncedAt);\n const lastSyncedAtDayJs = dayjs(lastSyncedAtDate);\n const nowDayJs = dayjs();\n const diff = nowDayJs.diff(lastSyncedAtDayJs, 'days');\n if (diff > 30) {\n // stream backend will send an error if we try to sync after 30 days.\n // In that case reset the entire DB and start fresh.\n QuickSqliteClient.resetDB();\n } else {\n try {\n const result = await this.client.sync(cids, lastSyncedAtDate.toISOString());\n const queries = result.events.reduce<PreparedQueries[]>((queries, event) => {\n queries = queries.concat(handleEventToSyncDB(event, false));\n return queries;\n }, []);\n\n if (queries.length) {\n QuickSqliteClient.executeSqlBatch(queries);\n }\n } catch (e) {\n // Error will be raised by the sync API if there are too many events.\n // In that case reset the entire DB and start fresh.\n QuickSqliteClient.resetDB();\n }\n }\n }\n upsertUserSyncStatus({\n currentUserId: this.client.user.id,\n lastSyncedAt: new Date().toString(),\n });\n };\n\n static syncAndExecutePendingTasks = async () => {\n if (!this.client) return;\n\n await this.executePendingTasks(this.client);\n await this.sync();\n };\n\n static queueTask = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n >({\n client,\n task,\n }: {\n client: StreamChat<StreamChatGenerics>;\n task: PendingTask;\n }) => {\n const removeFromApi = addPendingTask(task);\n\n let response;\n try {\n response = await this.executeTask<StreamChatGenerics>({ client, task });\n } catch (e) {\n if ((e as AxiosError<APIErrorResponse>)?.response?.data?.code === 4) {\n // Error code 16 - message already exists\n // ignore\n } else {\n throw e;\n }\n }\n\n removeFromApi();\n\n return response;\n };\n\n static executeTask = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n >({\n client,\n task,\n }: {\n client: StreamChat<StreamChatGenerics>;\n task: PendingTask;\n }) => {\n const channel = client.channel(task.channelType, task.channelId);\n\n if (task.type === 'send-reaction') {\n return await channel.sendReaction(...task.payload);\n }\n\n if (task.type === 'delete-reaction') {\n return await channel.deleteReaction(...task.payload);\n }\n\n if (task.type === 'delete-message') {\n return await client.deleteMessage(...task.payload);\n }\n\n throw new Error('Invalid task type');\n };\n\n static executePendingTasks = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n >(\n client: StreamChat<StreamChatGenerics>,\n ) => {\n const queue = getPendingTasks();\n for (const task of queue) {\n if (!task.id) continue;\n\n try {\n await this.executeTask<StreamChatGenerics>({\n client,\n task,\n });\n } catch (e) {\n if ((e as AxiosError<APIErrorResponse>)?.response?.data?.code === 4) {\n // Error code 16 - message already exists\n // ignore\n } else {\n throw e;\n }\n }\n\n deletePendingTask({\n id: task.id,\n });\n await restBeforeNextTask();\n }\n };\n\n static dropPendingTasks = (conditions: { messageId: string }) => {\n const tasks = getPendingTasks(conditions);\n\n for (const task of tasks) {\n if (!task.id) continue;\n\n deletePendingTask({\n id: task.id,\n });\n }\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["_dayjs","_interopRequireDefault","require","_handleEventToSyncDB","_apis","_addPendingTask","_deletePendingTask","_getPendingTasks","_QuickSqliteClient","_createForOfIteratorHelperLoose","o","allowArrayLike","it","Symbol","iterator","call","next","bind","Array","isArray","_unsupportedIterableToArray","length","i","done","value","TypeError","minLen","_arrayLikeToArray","n","Object","prototype","toString","slice","constructor","name","from","test","arr","len","arr2","restBeforeNextTask","Promise","resolve","setTimeout","DBSyncManager","_createClass2","_classCallCheck2","exports","syncStatus","listeners","client","getSyncStatus","init","_ref","_asyncToGenerator2","_regenerator","mark","_callee2","_client$user","_client$wsConnection","wrap","_callee2$","_context2","prev","user","id","wsConnection","isHealthy","syncAndExecutePendingTasks","forEach","l","on","_ref2","_callee","event","_callee$","_context","online","stop","_x2","apply","arguments","_x","onSyncStatusChange","listener","push","unsubscribe","filter","el","sync","_ref3","_callee3","_DBSyncManager$client","cids","lastSyncedAt","lastSyncedAtDate","lastSyncedAtDayJs","nowDayJs","diff","result","queries","_callee3$","_context3","abrupt","getAllChannelIds","getLastSyncedAt","currentUserId","Date","dayjs","QuickSqliteClient","resetDB","toISOString","sent","events","reduce","concat","handleEventToSyncDB","executeSqlBatch","t0","upsertUserSyncStatus","_x3","_callee4","_callee4$","_context4","executePendingTasks","queueTask","_ref6","_callee5","_ref5","task","removeFromApi","response","_response","_response$data","_callee5$","_context5","addPendingTask","executeTask","data","code","_x4","_ref8","_callee6","_ref7","channel","_callee6$","_context6","channelType","channelId","type","sendReaction","_toConsumableArray2","payload","deleteReaction","deleteMessage","Error","_x5","_ref9","_callee7","queue","_iterator","_step","_response2","_response2$data","_callee7$","_context7","getPendingTasks","deletePendingTask","_x6","dropPendingTasks","conditions","tasks","_iterator2","_step2"],"sources":["DBSyncManager.ts"],"sourcesContent":["import type { AxiosError } from 'axios';\nimport dayjs from 'dayjs';\nimport type { APIErrorResponse, StreamChat } from 'stream-chat';\n\nimport { handleEventToSyncDB } from '../components/Chat/hooks/handleEventToSyncDB';\nimport { getAllChannelIds, getLastSyncedAt, upsertUserSyncStatus } from '../store/apis';\n\nimport { addPendingTask } from '../store/apis/addPendingTask';\n\nimport { deletePendingTask } from '../store/apis/deletePendingTask';\nimport { getPendingTasks } from '../store/apis/getPendingTasks';\nimport { QuickSqliteClient } from '../store/QuickSqliteClient';\nimport type { PendingTask, PreparedQueries } from '../store/types';\nimport type { DefaultStreamChatGenerics } from '../types/types';\n\n/**\n * DBSyncManager has the responsibility to sync the channel states\n * within local database whenever possible.\n *\n * Components can get the current sync status using DBSyncManager.getCurrentStatus().\n * Or components can attach a listener for status change as following:\n *\n * ```tsx\n * useEffect(() => {\n * const unsubscribe = DBSyncManager.onSyncStatusChange((syncStatus) => {\n * if (syncStatus) {\n * doSomething();\n * }\n * })\n *\n * return () => unsubscribe();\n * })\n * ```\n */\nconst restBeforeNextTask = () => new Promise((resolve) => setTimeout(resolve, 500));\n\nexport class DBSyncManager {\n static syncStatus = false;\n static listeners: Array<(status: boolean) => void> = [];\n static client: StreamChat | null = null;\n\n /**\n * Returns weather channel states in local DB are synced with backend or not.\n * @returns boolean\n */\n static getSyncStatus = () => this.syncStatus;\n\n /**\n * Initializes the DBSyncManager. This function should be called only once\n * throughout the lifetime of SDK.\n *\n * @param client\n */\n static init = async (client: StreamChat) => {\n this.client = client;\n // If the websocket connection is already active, then straightaway\n // call the sync api and also execute pending api calls.\n // Otherwise wait for `connection.changed` event.\n if (client.user?.id && client.wsConnection?.isHealthy) {\n await this.syncAndExecutePendingTasks();\n this.syncStatus = true;\n this.listeners.forEach((l) => l(true));\n }\n\n this.client.on('connection.changed', async (event) => {\n if (event.online) {\n await this.syncAndExecutePendingTasks();\n this.syncStatus = true;\n this.listeners.forEach((l) => l(true));\n } else {\n this.syncStatus = false;\n this.listeners.forEach((l) => l(false));\n }\n });\n };\n\n /**\n * Subscribes a listener for sync status change.\n *\n * @param listener {function}\n * @returns {function} to unsubscribe the listener.\n */\n static onSyncStatusChange = (listener: (status: boolean) => void) => {\n this.listeners.push(listener);\n\n return {\n unsubscribe: () => {\n this.listeners = this.listeners.filter((el) => el !== listener);\n },\n };\n };\n\n static sync = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n >(\n client: StreamChat<StreamChatGenerics>,\n ) => {\n if (!this.client?.user) return;\n const cids = getAllChannelIds();\n // If there are no channels, then there is no need to sync.\n if (cids.length === 0) return;\n\n const lastSyncedAt = getLastSyncedAt({\n currentUserId: this.client.user.id,\n });\n\n if (lastSyncedAt) {\n const lastSyncedAtDate = new Date(lastSyncedAt);\n const lastSyncedAtDayJs = dayjs(lastSyncedAtDate);\n const nowDayJs = dayjs();\n const diff = nowDayJs.diff(lastSyncedAtDayJs, 'days');\n if (diff > 30) {\n // stream backend will send an error if we try to sync after 30 days.\n // In that case reset the entire DB and start fresh.\n QuickSqliteClient.resetDB();\n } else {\n try {\n const result = await this.client.sync(cids, lastSyncedAtDate.toISOString());\n const queries = result.events.reduce<PreparedQueries[]>((queries, event) => {\n queries = queries.concat(handleEventToSyncDB(event, client, false));\n return queries;\n }, []);\n\n if (queries.length) {\n QuickSqliteClient.executeSqlBatch(queries);\n }\n } catch (e) {\n // Error will be raised by the sync API if there are too many events.\n // In that case reset the entire DB and start fresh.\n QuickSqliteClient.resetDB();\n }\n }\n }\n upsertUserSyncStatus({\n currentUserId: this.client.user.id,\n lastSyncedAt: new Date().toString(),\n });\n };\n\n static syncAndExecutePendingTasks = async () => {\n if (!this.client) return;\n\n await this.executePendingTasks(this.client);\n await this.sync(this.client);\n };\n\n static queueTask = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n >({\n client,\n task,\n }: {\n client: StreamChat<StreamChatGenerics>;\n task: PendingTask;\n }) => {\n const removeFromApi = addPendingTask(task);\n\n let response;\n try {\n response = await this.executeTask<StreamChatGenerics>({ client, task });\n } catch (e) {\n if ((e as AxiosError<APIErrorResponse>)?.response?.data?.code === 4) {\n // Error code 16 - message already exists\n // ignore\n } else {\n throw e;\n }\n }\n\n removeFromApi();\n\n return response;\n };\n\n static executeTask = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n >({\n client,\n task,\n }: {\n client: StreamChat<StreamChatGenerics>;\n task: PendingTask;\n }) => {\n const channel = client.channel(task.channelType, task.channelId);\n\n if (task.type === 'send-reaction') {\n return await channel.sendReaction(...task.payload);\n }\n\n if (task.type === 'delete-reaction') {\n return await channel.deleteReaction(...task.payload);\n }\n\n if (task.type === 'delete-message') {\n return await client.deleteMessage(...task.payload);\n }\n\n throw new Error('Invalid task type');\n };\n\n static executePendingTasks = async <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n >(\n client: StreamChat<StreamChatGenerics>,\n ) => {\n const queue = getPendingTasks();\n for (const task of queue) {\n if (!task.id) continue;\n\n try {\n await this.executeTask<StreamChatGenerics>({\n client,\n task,\n });\n } catch (e) {\n if ((e as AxiosError<APIErrorResponse>)?.response?.data?.code === 4) {\n // Error code 16 - message already exists\n // ignore\n } else {\n throw e;\n }\n }\n\n deletePendingTask({\n id: task.id,\n });\n await restBeforeNextTask();\n }\n };\n\n static dropPendingTasks = (conditions: { messageId: string }) => {\n const tasks = getPendingTasks(conditions);\n\n for (const task of tasks) {\n if (!task.id) continue;\n\n deletePendingTask({\n id: task.id,\n });\n }\n };\n}\n"],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  {
2
- "version": "5.27.0-beta.9"
2
+ "version": "5.27.0"
3
3
  }
@@ -207,11 +207,11 @@ var GalleryThumbnail = function GalleryThumbnail(_ref) {
207
207
  }
208
208
  };
209
209
  var defaultOnPress = function defaultOnPress() {
210
- if (thumbnail.type === 'video' && thumbnail.url) {
211
- if ((0, _native.isVideoPackageAvailable)()) {
212
- openImageViewer();
213
- } else {
210
+ if (thumbnail.url) {
211
+ if (thumbnail.type === 'video' && !(0, _native.isVideoPackageAvailable)()) {
214
212
  (0, _openUrlSafely.openUrlSafely)(thumbnail.url);
213
+ } else {
214
+ openImageViewer();
215
215
  }
216
216
  }
217
217
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_GalleryImage","_ImageReloadIndicator","_buildGallery","_getGalleryImageBorderRadius","_openUrlSafely","_ImageGalleryContext","_MessageContext","_MessagesContext","_OverlayContext","_ThemeContext","_useLoadingImage2","_native","_utils","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","_useTheme","useTheme","_useTheme$theme$messa","theme","messageSimple","gallery","galleryContainer","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","concat","_toConsumableArray2","imagesAndVideosValue","length","map","i","image_url","thumb_url","join","_useMemo","useMemo","buildGallery","height","invertedDirections","thumbnailGrid","width","numOfColumns","createElement","View","style","styles","flexDirection","testID","__self","__source","fileName","lineNumber","columnNumber","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","getGalleryImageBorderRadius","messageText","text","undefined","GalleryThumbnail","_ref","_useTheme2","_useTheme2$theme","overlay","colors","_useTheme2$theme$mess","image","imageContainer","moreImagesContainer","moreImagesText","openImageViewer","messageId","id","url","defaultOnPress","type","isVideoPackageAvailable","openUrlSafely","TouchableOpacity","_extends2","activeOpacity","disabled","event","emitter","defaultHandler","imageContainerStyle","GalleryImageThumbnail","StyleSheet","absoluteFillObject","backgroundColor","Text","_ref2","_useLoadingImage","useLoadingImage","isLoadingImage","isLoadingImageError","onReloadImage","setLoadingImage","setLoadingImageError","_useTheme3","Fragment","imageLoadingErrorIndicatorStyle","ImageReloadIndicator","imageReloadContainerStyle","GalleryImage","onError","_ref3","error","nativeEvent","console","warn","onLoadEnd","onLoadStart","resizeMode","uri","imageLoadingIndicatorContainer","imageLoadingIndicatorStyle","areEqual","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevMyMessageTheme","myMessageTheme","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextMyMessageTheme","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","getUrlWithoutParams","videosEqual","messageThemeEqual","JSON","stringify","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propMyMessageTheme","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","_useImageGalleryConte","useImageGalleryContext","contextSetSelectedMessage","_useMessageContext","useMessageContext","contextAlignment","contextGroupStyles","contextImages","contextMessage","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","_useMessagesContext","useMessagesContext","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","contextMyMessageTheme","ContextVideoThumnbnail","_useOverlayContext","useOverlayContext","contextSetOverlay","channelId","cid","reply_count","exports","create","errorTextSize","fontSize","borderTopLeftRadius","borderTopRightRadius","flexWrap","overflow","alignItems","display","justifyContent","padding","flex","bottom","left","position","margin","color","fontWeight","displayName"],"sources":["Gallery.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { GalleryImage } from './GalleryImage';\nimport { ImageReloadIndicator } from './ImageReloadIndicator';\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport type { Thumbnail } from './utils/buildGallery/types';\nimport { getGalleryImageBorderRadius } from './utils/getGalleryImageBorderRadius';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useLoadingImage } from '../../hooks/useLoadingImage';\nimport { isVideoPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams } from '../../utils/utils';\n\nexport type GalleryPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'videos'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n | 'myMessageTheme'\n > &\n Pick<OverlayContextValue, 'setOverlay'> & {\n channelId: string | undefined;\n hasThreadReplies?: boolean;\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"excessive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO: Fix circular dependencies of imports\n */\n message?: MessageType<StreamChatGenerics>;\n };\n\nconst GalleryWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n } = props;\n\n const {\n theme: {\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n },\n },\n },\n } = useTheme();\n\n const sizeConfig = {\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n };\n\n const imagesAndVideos = [...(images || []), ...(videos || [])];\n const imagesAndVideosValue = `${images?.length}${videos?.length}${images\n ?.map((i) => `${i.image_url}${i.thumb_url}`)\n .join('')}${videos?.map((i) => `${i.image_url}${i.thumb_url}`).join('')}`;\n\n const { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideosValue],\n );\n\n if (!imagesAndVideos?.length) return null;\n const numOfColumns = thumbnailGrid.length;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n height,\n width,\n },\n galleryContainer,\n ]}\n testID='gallery-container'\n >\n {thumbnailGrid.map((rows, colIndex) => {\n const numOfRows = rows.length;\n return (\n <View\n key={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n style={[\n {\n flexDirection: invertedDirections ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n >\n {rows.map((thumbnail, rowIndex) => {\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText: message?.text,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n if (message === undefined) {\n return null;\n }\n\n return (\n <GalleryThumbnail\n additionalTouchableProps={additionalTouchableProps}\n borderRadius={borderRadius}\n colIndex={colIndex}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n imagesAndVideos={imagesAndVideos}\n invertedDirections={invertedDirections || false}\n key={rowIndex}\n legacyImageViewerSwipeBehaviour={legacyImageViewerSwipeBehaviour}\n message={message}\n numOfColumns={numOfColumns}\n numOfRows={numOfRows}\n onLongPress={onLongPress}\n onPress={onPress}\n onPressIn={onPressIn}\n preventPress={preventPress}\n rowIndex={rowIndex}\n setMessages={setMessages}\n setOverlay={setOverlay}\n setSelectedMessage={setSelectedMessage}\n thumbnail={thumbnail}\n VideoThumbnail={VideoThumbnail}\n />\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\ntype GalleryThumbnailProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n borderRadius: {\n borderBottomLeftRadius: number;\n borderBottomRightRadius: number;\n borderTopLeftRadius: number;\n borderTopRightRadius: number;\n };\n colIndex: number;\n imagesAndVideos: Attachment<StreamChatGenerics>[];\n invertedDirections: boolean;\n message: MessageType<StreamChatGenerics>;\n numOfColumns: number;\n numOfRows: number;\n rowIndex: number;\n thumbnail: Thumbnail;\n} & Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GalleryThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n borderRadius,\n colIndex,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n imagesAndVideos,\n invertedDirections,\n legacyImageViewerSwipeBehaviour,\n message,\n numOfColumns,\n numOfRows,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n rowIndex,\n setMessages,\n setOverlay,\n setSelectedMessage,\n thumbnail,\n VideoThumbnail,\n}: GalleryThumbnailProps<StreamChatGenerics>) => {\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: { image, imageContainer, moreImagesContainer, moreImagesText },\n },\n },\n } = useTheme();\n\n const openImageViewer = () => {\n if (!legacyImageViewerSwipeBehaviour && message) {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n setMessages([message]);\n setSelectedMessage({ messageId: message.id, url: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setSelectedMessage({ messageId: message?.id, url: thumbnail.url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n // If file type is video and the url is defined then try to open the file.\n if (thumbnail.type === 'video' && thumbnail.url) {\n if (isVideoPackageAvailable()) {\n openImageViewer();\n } else {\n // This condition is kinda unreachable, since we render videos as file attachment if the video\n // library is not installed. But doesn't hurt to have extra safeguard, in case of some customizations.\n openUrlSafely(thumbnail.url);\n }\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${message.id}/${colIndex}/${rowIndex}/${imagesAndVideos.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height: thumbnail.height,\n width: thumbnail.width,\n },\n imageContainer,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {thumbnail.type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n image,\n ]}\n thumb_url={thumbnail.thumb_url}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <GalleryImageThumbnail\n borderRadius={borderRadius}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n thumbnail={thumbnail}\n />\n </View>\n )}\n {colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${imagesAndVideos.length - 4}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n};\n\nconst GalleryImageThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n borderRadius,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n thumbnail,\n}: Pick<\n GalleryThumbnailProps<StreamChatGenerics>,\n 'ImageLoadingFailedIndicator' | 'ImageLoadingIndicator' | 'thumbnail' | 'borderRadius'\n>) => {\n const {\n isLoadingImage,\n isLoadingImageError,\n onReloadImage,\n setLoadingImage,\n setLoadingImageError,\n } = useLoadingImage();\n\n const {\n theme: {\n messageSimple: { gallery },\n },\n } = useTheme();\n\n return (\n <View\n style={[\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n gallery.thumbnail,\n ]}\n >\n {isLoadingImageError ? (\n <>\n <ImageLoadingFailedIndicator style={styles.imageLoadingErrorIndicatorStyle} />\n <ImageReloadIndicator\n onReloadImage={onReloadImage}\n style={styles.imageReloadContainerStyle}\n />\n </>\n ) : (\n <>\n <GalleryImage\n onError={({ nativeEvent: { error } }) => {\n console.warn(error);\n setLoadingImage(false);\n setLoadingImageError(true);\n }}\n onLoadEnd={() => setLoadingImage(false)}\n onLoadStart={() => setLoadingImage(true)}\n resizeMode={thumbnail.resizeMode}\n style={[\n borderRadius,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n gallery.image,\n ]}\n uri={thumbnail.url}\n />\n {isLoadingImage && (\n <View style={styles.imageLoadingIndicatorContainer}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n </>\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GalleryPropsWithContext<StreamChatGenerics>,\n nextProps: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n message: prevMessage,\n myMessageTheme: prevMyMessageTheme,\n videos: prevVideos,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n message: nextMessage,\n myMessageTheme: nextMyMessageTheme,\n videos: nextVideos,\n } = nextProps;\n\n const messageEqual =\n prevMessage?.id === nextMessage?.id &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n if (!messageEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n const videosEqual =\n prevVideos.length === nextVideos.length &&\n prevVideos.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextVideos[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextVideos[index].thumb_url),\n );\n if (!videosEqual) return false;\n\n const messageThemeEqual =\n JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);\n if (!messageThemeEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GalleryPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryProps<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator: PropImageLoadingFailedIndicator,\n ImageLoadingIndicator: PropImageLoadingIndicator,\n images: propImages,\n message: propMessage,\n myMessageTheme: propMyMessageTheme,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setOverlay: propSetOverlay,\n setSelectedMessage: propSetSelectedMessage,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setMessages, setSelectedMessage: contextSetSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message: contextMessage,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n videos: contextVideos,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n ImageLoadingFailedIndicator: ContextImageLoadingFailedIndicator,\n ImageLoadingIndicator: ContextImageLoadingIndicator,\n legacyImageViewerSwipeBehaviour,\n myMessageTheme: contextMyMessageTheme,\n VideoThumbnail: ContextVideoThumnbnail,\n } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n const videos = propVideos || contextVideos;\n const message = propMessage || contextMessage;\n\n if (!images.length && !videos.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setSelectedMessage = propSetSelectedMessage || contextSetSelectedMessage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n const VideoThumbnail = PropVideoThumbnail || ContextVideoThumnbnail;\n const ImageLoadingFailedIndicator =\n PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;\n const ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;\n const myMessageTheme = propMyMessageTheme || contextMyMessageTheme;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n myMessageTheme,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n errorTextSize: { fontSize: 10 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n padding: 1,\n },\n imageContainerStyle: { alignItems: 'center', flex: 1, justifyContent: 'center' },\n imageLoadingErrorIndicatorStyle: {\n bottom: 4,\n left: 4,\n position: 'absolute',\n },\n imageLoadingIndicatorContainer: {\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\n },\n imageLoadingIndicatorStyle: {\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n imageReloadContainerStyle: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"],"mappings":"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"}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_GalleryImage","_ImageReloadIndicator","_buildGallery","_getGalleryImageBorderRadius","_openUrlSafely","_ImageGalleryContext","_MessageContext","_MessagesContext","_OverlayContext","_ThemeContext","_useLoadingImage2","_native","_utils","_this","_jsxFileName","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","GalleryWithContext","props","additionalTouchableProps","alignment","groupStyles","hasThreadReplies","ImageLoadingFailedIndicator","ImageLoadingIndicator","images","legacyImageViewerSwipeBehaviour","message","onLongPress","onPress","onPressIn","preventPress","setMessages","setOverlay","setSelectedMessage","threadList","videos","VideoThumbnail","_useTheme","useTheme","_useTheme$theme$messa","theme","messageSimple","gallery","galleryContainer","galleryItemColumn","gridHeight","gridWidth","maxHeight","maxWidth","minHeight","minWidth","sizeConfig","imagesAndVideos","concat","_toConsumableArray2","imagesAndVideosValue","length","map","i","image_url","thumb_url","join","_useMemo","useMemo","buildGallery","height","invertedDirections","thumbnailGrid","width","numOfColumns","createElement","View","style","styles","flexDirection","testID","__self","__source","fileName","lineNumber","columnNumber","rows","colIndex","numOfRows","thumbnail","rowIndex","borderRadius","getGalleryImageBorderRadius","messageText","text","undefined","GalleryThumbnail","_ref","_useTheme2","_useTheme2$theme","overlay","colors","_useTheme2$theme$mess","image","imageContainer","moreImagesContainer","moreImagesText","openImageViewer","messageId","id","url","defaultOnPress","type","isVideoPackageAvailable","openUrlSafely","TouchableOpacity","_extends2","activeOpacity","disabled","event","emitter","defaultHandler","imageContainerStyle","GalleryImageThumbnail","StyleSheet","absoluteFillObject","backgroundColor","Text","_ref2","_useLoadingImage","useLoadingImage","isLoadingImage","isLoadingImageError","onReloadImage","setLoadingImage","setLoadingImageError","_useTheme3","Fragment","imageLoadingErrorIndicatorStyle","ImageReloadIndicator","imageReloadContainerStyle","GalleryImage","onError","_ref3","error","nativeEvent","console","warn","onLoadEnd","onLoadStart","resizeMode","uri","imageLoadingIndicatorContainer","imageLoadingIndicatorStyle","areEqual","prevProps","nextProps","prevGroupStyles","prevHasThreadReplies","prevImages","prevMessage","prevMyMessageTheme","myMessageTheme","prevVideos","nextGroupStyles","nextHasThreadReplies","nextImages","nextMessage","nextMyMessageTheme","nextVideos","messageEqual","updated_at","groupStylesEqual","hasThreadRepliesEqual","imagesEqual","every","index","getUrlWithoutParams","videosEqual","messageThemeEqual","JSON","stringify","MemoizedGallery","React","memo","Gallery","propAdditionalTouchableProps","propAlignment","propGroupStyles","PropImageLoadingFailedIndicator","PropImageLoadingIndicator","propImages","propMessage","propMyMessageTheme","propOnLongPress","propOnPress","propOnPressIn","propPreventPress","propSetOverlay","propSetSelectedMessage","propThreadList","propVideos","PropVideoThumbnail","_useImageGalleryConte","useImageGalleryContext","contextSetSelectedMessage","_useMessageContext","useMessageContext","contextAlignment","contextGroupStyles","contextImages","contextMessage","contextOnLongPress","contextOnPress","contextOnPressIn","contextPreventPress","contextThreadList","contextVideos","_useMessagesContext","useMessagesContext","contextAdditionalTouchableProps","ContextImageLoadingFailedIndicator","ContextImageLoadingIndicator","contextMyMessageTheme","ContextVideoThumnbnail","_useOverlayContext","useOverlayContext","contextSetOverlay","channelId","cid","reply_count","exports","create","errorTextSize","fontSize","borderTopLeftRadius","borderTopRightRadius","flexWrap","overflow","alignItems","display","justifyContent","padding","flex","bottom","left","position","margin","color","fontWeight","displayName"],"sources":["Gallery.tsx"],"sourcesContent":["import React, { useMemo } from 'react';\nimport { StyleSheet, Text, TouchableOpacity, View } from 'react-native';\n\nimport type { Attachment } from 'stream-chat';\n\nimport { GalleryImage } from './GalleryImage';\nimport { ImageReloadIndicator } from './ImageReloadIndicator';\nimport { buildGallery } from './utils/buildGallery/buildGallery';\n\nimport type { Thumbnail } from './utils/buildGallery/types';\nimport { getGalleryImageBorderRadius } from './utils/getGalleryImageBorderRadius';\n\nimport { openUrlSafely } from './utils/openUrlSafely';\n\nimport type { MessageType } from '../../components/MessageList/hooks/useMessageList';\nimport {\n ImageGalleryContextValue,\n useImageGalleryContext,\n} from '../../contexts/imageGalleryContext/ImageGalleryContext';\nimport {\n MessageContextValue,\n useMessageContext,\n} from '../../contexts/messageContext/MessageContext';\nimport {\n MessagesContextValue,\n useMessagesContext,\n} from '../../contexts/messagesContext/MessagesContext';\nimport {\n OverlayContextValue,\n useOverlayContext,\n} from '../../contexts/overlayContext/OverlayContext';\nimport { useTheme } from '../../contexts/themeContext/ThemeContext';\nimport { useLoadingImage } from '../../hooks/useLoadingImage';\nimport { isVideoPackageAvailable } from '../../native';\nimport type { DefaultStreamChatGenerics } from '../../types/types';\nimport { getUrlWithoutParams } from '../../utils/utils';\n\nexport type GalleryPropsWithContext<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n | 'alignment'\n | 'groupStyles'\n | 'images'\n | 'videos'\n | 'onLongPress'\n | 'onPress'\n | 'onPressIn'\n | 'preventPress'\n | 'threadList'\n > &\n Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n | 'myMessageTheme'\n > &\n Pick<OverlayContextValue, 'setOverlay'> & {\n channelId: string | undefined;\n hasThreadReplies?: boolean;\n /**\n * `message` prop has been introduced here as part of `legacyImageViewerSwipeBehaviour` prop.\n * https://github.com/GetStream/stream-chat-react-native/commit/d5eac6193047916f140efe8e396a671675c9a63f\n * messageId and messageText may seem redundant now, but to avoid breaking change as part\n * of minor release, we are keeping those props.\n *\n * Also `message` type should ideally be imported from MessageContextValue and not be explicitely mentioned\n * here, but due to some circular dependencies within the SDK, it causes \"excessive deep nesting\" issue with\n * typescript within Channel component. We should take it as a mini-project and resolve all these circular imports.\n *\n * TODO: Fix circular dependencies of imports\n */\n message?: MessageType<StreamChatGenerics>;\n };\n\nconst GalleryWithContext = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps,\n alignment,\n groupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n } = props;\n\n const {\n theme: {\n messageSimple: {\n gallery: {\n galleryContainer,\n galleryItemColumn,\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n },\n },\n },\n } = useTheme();\n\n const sizeConfig = {\n gridHeight,\n gridWidth,\n maxHeight,\n maxWidth,\n minHeight,\n minWidth,\n };\n\n const imagesAndVideos = [...(images || []), ...(videos || [])];\n const imagesAndVideosValue = `${images?.length}${videos?.length}${images\n ?.map((i) => `${i.image_url}${i.thumb_url}`)\n .join('')}${videos?.map((i) => `${i.image_url}${i.thumb_url}`).join('')}`;\n\n const { height, invertedDirections, thumbnailGrid, width } = useMemo(\n () =>\n buildGallery({\n images: imagesAndVideos,\n sizeConfig,\n }),\n [imagesAndVideosValue],\n );\n\n if (!imagesAndVideos?.length) return null;\n const numOfColumns = thumbnailGrid.length;\n\n return (\n <View\n style={[\n styles.galleryContainer,\n {\n flexDirection: invertedDirections ? 'column' : 'row',\n height,\n width,\n },\n galleryContainer,\n ]}\n testID='gallery-container'\n >\n {thumbnailGrid.map((rows, colIndex) => {\n const numOfRows = rows.length;\n return (\n <View\n key={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n style={[\n {\n flexDirection: invertedDirections ? 'row' : 'column',\n },\n galleryItemColumn,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}`}\n >\n {rows.map((thumbnail, rowIndex) => {\n const borderRadius = getGalleryImageBorderRadius({\n alignment,\n colIndex,\n groupStyles,\n hasThreadReplies,\n height,\n invertedDirections,\n messageText: message?.text,\n numOfColumns,\n numOfRows,\n rowIndex,\n sizeConfig,\n threadList,\n width,\n });\n\n if (message === undefined) {\n return null;\n }\n\n return (\n <GalleryThumbnail\n additionalTouchableProps={additionalTouchableProps}\n borderRadius={borderRadius}\n colIndex={colIndex}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n imagesAndVideos={imagesAndVideos}\n invertedDirections={invertedDirections || false}\n key={rowIndex}\n legacyImageViewerSwipeBehaviour={legacyImageViewerSwipeBehaviour}\n message={message}\n numOfColumns={numOfColumns}\n numOfRows={numOfRows}\n onLongPress={onLongPress}\n onPress={onPress}\n onPressIn={onPressIn}\n preventPress={preventPress}\n rowIndex={rowIndex}\n setMessages={setMessages}\n setOverlay={setOverlay}\n setSelectedMessage={setSelectedMessage}\n thumbnail={thumbnail}\n VideoThumbnail={VideoThumbnail}\n />\n );\n })}\n </View>\n );\n })}\n </View>\n );\n};\n\ntype GalleryThumbnailProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = {\n borderRadius: {\n borderBottomLeftRadius: number;\n borderBottomRightRadius: number;\n borderTopLeftRadius: number;\n borderTopRightRadius: number;\n };\n colIndex: number;\n imagesAndVideos: Attachment<StreamChatGenerics>[];\n invertedDirections: boolean;\n message: MessageType<StreamChatGenerics>;\n numOfColumns: number;\n numOfRows: number;\n rowIndex: number;\n thumbnail: Thumbnail;\n} & Pick<\n MessagesContextValue<StreamChatGenerics>,\n | 'additionalTouchableProps'\n | 'legacyImageViewerSwipeBehaviour'\n | 'VideoThumbnail'\n | 'ImageLoadingIndicator'\n | 'ImageLoadingFailedIndicator'\n> &\n Pick<ImageGalleryContextValue<StreamChatGenerics>, 'setSelectedMessage' | 'setMessages'> &\n Pick<\n MessageContextValue<StreamChatGenerics>,\n 'onLongPress' | 'onPress' | 'onPressIn' | 'preventPress'\n > &\n Pick<OverlayContextValue, 'setOverlay'>;\n\nconst GalleryThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n additionalTouchableProps,\n borderRadius,\n colIndex,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n imagesAndVideos,\n invertedDirections,\n legacyImageViewerSwipeBehaviour,\n message,\n numOfColumns,\n numOfRows,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n rowIndex,\n setMessages,\n setOverlay,\n setSelectedMessage,\n thumbnail,\n VideoThumbnail,\n}: GalleryThumbnailProps<StreamChatGenerics>) => {\n const {\n theme: {\n colors: { overlay },\n messageSimple: {\n gallery: { image, imageContainer, moreImagesContainer, moreImagesText },\n },\n },\n } = useTheme();\n\n const openImageViewer = () => {\n if (!legacyImageViewerSwipeBehaviour && message) {\n // Added if-else to keep the logic readable, instead of DRY.\n // if - legacyImageViewerSwipeBehaviour is disabled\n // else - legacyImageViewerSwipeBehaviour is enabled\n setMessages([message]);\n setSelectedMessage({ messageId: message.id, url: thumbnail.url });\n setOverlay('gallery');\n } else if (legacyImageViewerSwipeBehaviour) {\n setSelectedMessage({ messageId: message?.id, url: thumbnail.url });\n setOverlay('gallery');\n }\n };\n\n const defaultOnPress = () => {\n // If the url is defined then only try to open the file.\n if (thumbnail.url) {\n if (thumbnail.type === 'video' && !isVideoPackageAvailable()) {\n // This condition is kinda unreachable, since we render videos as file attachment if the video\n // library is not installed. But doesn't hurt to have extra safeguard, in case of some customizations.\n openUrlSafely(thumbnail.url);\n } else {\n openImageViewer();\n }\n }\n };\n\n return (\n <TouchableOpacity\n activeOpacity={0.8}\n disabled={preventPress}\n key={`gallery-item-${message.id}/${colIndex}/${rowIndex}/${imagesAndVideos.length}`}\n onLongPress={(event) => {\n if (onLongPress) {\n onLongPress({\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPress={(event) => {\n if (onPress) {\n onPress({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n onPressIn={(event) => {\n if (onPressIn) {\n onPressIn({\n defaultHandler: defaultOnPress,\n emitter: 'gallery',\n event,\n });\n }\n }}\n style={[\n styles.imageContainer,\n {\n height: thumbnail.height,\n width: thumbnail.width,\n },\n imageContainer,\n ]}\n testID={`gallery-${invertedDirections ? 'row' : 'column'}-${colIndex}-item-${rowIndex}`}\n {...additionalTouchableProps}\n >\n {thumbnail.type === 'video' ? (\n <VideoThumbnail\n style={[\n borderRadius,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n image,\n ]}\n thumb_url={thumbnail.thumb_url}\n />\n ) : (\n <View style={styles.imageContainerStyle}>\n <GalleryImageThumbnail\n borderRadius={borderRadius}\n ImageLoadingFailedIndicator={ImageLoadingFailedIndicator}\n ImageLoadingIndicator={ImageLoadingIndicator}\n thumbnail={thumbnail}\n />\n </View>\n )}\n {colIndex === numOfColumns - 1 && rowIndex === numOfRows - 1 && imagesAndVideos.length > 4 ? (\n <View\n style={[\n StyleSheet.absoluteFillObject,\n styles.moreImagesContainer,\n { backgroundColor: overlay },\n moreImagesContainer,\n ]}\n >\n <Text style={[styles.moreImagesText, moreImagesText]}>\n {`+${imagesAndVideos.length - 4}`}\n </Text>\n </View>\n ) : null}\n </TouchableOpacity>\n );\n};\n\nconst GalleryImageThumbnail = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>({\n borderRadius,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n thumbnail,\n}: Pick<\n GalleryThumbnailProps<StreamChatGenerics>,\n 'ImageLoadingFailedIndicator' | 'ImageLoadingIndicator' | 'thumbnail' | 'borderRadius'\n>) => {\n const {\n isLoadingImage,\n isLoadingImageError,\n onReloadImage,\n setLoadingImage,\n setLoadingImageError,\n } = useLoadingImage();\n\n const {\n theme: {\n messageSimple: { gallery },\n },\n } = useTheme();\n\n return (\n <View\n style={[\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n gallery.thumbnail,\n ]}\n >\n {isLoadingImageError ? (\n <>\n <ImageLoadingFailedIndicator style={styles.imageLoadingErrorIndicatorStyle} />\n <ImageReloadIndicator\n onReloadImage={onReloadImage}\n style={styles.imageReloadContainerStyle}\n />\n </>\n ) : (\n <>\n <GalleryImage\n onError={({ nativeEvent: { error } }) => {\n console.warn(error);\n setLoadingImage(false);\n setLoadingImageError(true);\n }}\n onLoadEnd={() => setLoadingImage(false)}\n onLoadStart={() => setLoadingImage(true)}\n resizeMode={thumbnail.resizeMode}\n style={[\n borderRadius,\n {\n height: thumbnail.height - 1,\n width: thumbnail.width - 1,\n },\n gallery.image,\n ]}\n uri={thumbnail.url}\n />\n {isLoadingImage && (\n <View style={styles.imageLoadingIndicatorContainer}>\n <ImageLoadingIndicator style={styles.imageLoadingIndicatorStyle} />\n </View>\n )}\n </>\n )}\n </View>\n );\n};\n\nconst areEqual = <StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics>(\n prevProps: GalleryPropsWithContext<StreamChatGenerics>,\n nextProps: GalleryPropsWithContext<StreamChatGenerics>,\n) => {\n const {\n groupStyles: prevGroupStyles,\n hasThreadReplies: prevHasThreadReplies,\n images: prevImages,\n message: prevMessage,\n myMessageTheme: prevMyMessageTheme,\n videos: prevVideos,\n } = prevProps;\n const {\n groupStyles: nextGroupStyles,\n hasThreadReplies: nextHasThreadReplies,\n images: nextImages,\n message: nextMessage,\n myMessageTheme: nextMyMessageTheme,\n videos: nextVideos,\n } = nextProps;\n\n const messageEqual =\n prevMessage?.id === nextMessage?.id &&\n `${prevMessage?.updated_at}` === `${nextMessage?.updated_at}`;\n if (!messageEqual) return false;\n\n const groupStylesEqual =\n prevGroupStyles.length === nextGroupStyles.length && prevGroupStyles[0] === nextGroupStyles[0];\n if (!groupStylesEqual) return false;\n\n const hasThreadRepliesEqual = prevHasThreadReplies === nextHasThreadReplies;\n if (!hasThreadRepliesEqual) return false;\n\n const imagesEqual =\n prevImages.length === nextImages.length &&\n prevImages.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextImages[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextImages[index].thumb_url),\n );\n if (!imagesEqual) return false;\n\n const videosEqual =\n prevVideos.length === nextVideos.length &&\n prevVideos.every(\n (image, index) =>\n getUrlWithoutParams(image.image_url) === getUrlWithoutParams(nextVideos[index].image_url) &&\n getUrlWithoutParams(image.thumb_url) === getUrlWithoutParams(nextVideos[index].thumb_url),\n );\n if (!videosEqual) return false;\n\n const messageThemeEqual =\n JSON.stringify(prevMyMessageTheme) === JSON.stringify(nextMyMessageTheme);\n if (!messageThemeEqual) return false;\n\n return true;\n};\n\nconst MemoizedGallery = React.memo(GalleryWithContext, areEqual) as typeof GalleryWithContext;\n\nexport type GalleryProps<\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n> = Partial<GalleryPropsWithContext<StreamChatGenerics>>;\n\n/**\n * UI component for card in attachments.\n */\nexport const Gallery = <\n StreamChatGenerics extends DefaultStreamChatGenerics = DefaultStreamChatGenerics,\n>(\n props: GalleryProps<StreamChatGenerics>,\n) => {\n const {\n additionalTouchableProps: propAdditionalTouchableProps,\n alignment: propAlignment,\n groupStyles: propGroupStyles,\n hasThreadReplies,\n ImageLoadingFailedIndicator: PropImageLoadingFailedIndicator,\n ImageLoadingIndicator: PropImageLoadingIndicator,\n images: propImages,\n message: propMessage,\n myMessageTheme: propMyMessageTheme,\n onLongPress: propOnLongPress,\n onPress: propOnPress,\n onPressIn: propOnPressIn,\n preventPress: propPreventPress,\n setOverlay: propSetOverlay,\n setSelectedMessage: propSetSelectedMessage,\n threadList: propThreadList,\n videos: propVideos,\n VideoThumbnail: PropVideoThumbnail,\n } = props;\n\n const { setMessages, setSelectedMessage: contextSetSelectedMessage } =\n useImageGalleryContext<StreamChatGenerics>();\n const {\n alignment: contextAlignment,\n groupStyles: contextGroupStyles,\n images: contextImages,\n message: contextMessage,\n onLongPress: contextOnLongPress,\n onPress: contextOnPress,\n onPressIn: contextOnPressIn,\n preventPress: contextPreventPress,\n threadList: contextThreadList,\n videos: contextVideos,\n } = useMessageContext<StreamChatGenerics>();\n const {\n additionalTouchableProps: contextAdditionalTouchableProps,\n ImageLoadingFailedIndicator: ContextImageLoadingFailedIndicator,\n ImageLoadingIndicator: ContextImageLoadingIndicator,\n legacyImageViewerSwipeBehaviour,\n myMessageTheme: contextMyMessageTheme,\n VideoThumbnail: ContextVideoThumnbnail,\n } = useMessagesContext<StreamChatGenerics>();\n const { setOverlay: contextSetOverlay } = useOverlayContext();\n\n const images = propImages || contextImages;\n const videos = propVideos || contextVideos;\n const message = propMessage || contextMessage;\n\n if (!images.length && !videos.length) return null;\n\n const additionalTouchableProps = propAdditionalTouchableProps || contextAdditionalTouchableProps;\n const alignment = propAlignment || contextAlignment;\n const groupStyles = propGroupStyles || contextGroupStyles;\n const onLongPress = propOnLongPress || contextOnLongPress;\n const onPressIn = propOnPressIn || contextOnPressIn;\n const onPress = propOnPress || contextOnPress;\n const preventPress =\n typeof propPreventPress === 'boolean' ? propPreventPress : contextPreventPress;\n const setSelectedMessage = propSetSelectedMessage || contextSetSelectedMessage;\n const setOverlay = propSetOverlay || contextSetOverlay;\n const threadList = propThreadList || contextThreadList;\n const VideoThumbnail = PropVideoThumbnail || ContextVideoThumnbnail;\n const ImageLoadingFailedIndicator =\n PropImageLoadingFailedIndicator || ContextImageLoadingFailedIndicator;\n const ImageLoadingIndicator = PropImageLoadingIndicator || ContextImageLoadingIndicator;\n const myMessageTheme = propMyMessageTheme || contextMyMessageTheme;\n\n return (\n <MemoizedGallery\n {...{\n additionalTouchableProps,\n alignment,\n channelId: message?.cid,\n groupStyles,\n hasThreadReplies: hasThreadReplies || !!message?.reply_count,\n ImageLoadingFailedIndicator,\n ImageLoadingIndicator,\n images,\n legacyImageViewerSwipeBehaviour,\n message,\n myMessageTheme,\n onLongPress,\n onPress,\n onPressIn,\n preventPress,\n setMessages,\n setOverlay,\n setSelectedMessage,\n threadList,\n videos,\n VideoThumbnail,\n }}\n />\n );\n};\n\nconst styles = StyleSheet.create({\n errorTextSize: { fontSize: 10 },\n galleryContainer: {\n borderTopLeftRadius: 13,\n borderTopRightRadius: 13,\n flexDirection: 'row',\n flexWrap: 'wrap',\n overflow: 'hidden',\n },\n imageContainer: {\n alignItems: 'center',\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n padding: 1,\n },\n imageContainerStyle: { alignItems: 'center', flex: 1, justifyContent: 'center' },\n imageLoadingErrorIndicatorStyle: {\n bottom: 4,\n left: 4,\n position: 'absolute',\n },\n imageLoadingIndicatorContainer: {\n height: '100%',\n justifyContent: 'center',\n position: 'absolute',\n width: '100%',\n },\n imageLoadingIndicatorStyle: {\n alignItems: 'center',\n justifyContent: 'center',\n position: 'absolute',\n },\n imageReloadContainerStyle: {\n ...StyleSheet.absoluteFillObject,\n alignItems: 'center',\n justifyContent: 'center',\n },\n moreImagesContainer: {\n alignItems: 'center',\n justifyContent: 'center',\n margin: 1,\n },\n moreImagesText: { color: '#FFFFFF', fontSize: 26, fontWeight: '700' },\n});\n\nGallery.displayName = 'Gallery{messageSimple{gallery}}';\n"],"mappings":"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"}
@@ -235,7 +235,7 @@ var AttachmentPicker = _react["default"].forwardRef(function (props, ref) {
235
235
  var initialSnapPoint = getInitialSnapPoint();
236
236
  var finalSnapPoint = _reactNative.Platform.OS === 'android' ? fullScreenHeight - topInset - handleHeight : fullScreenHeight - topInset;
237
237
  var snapPoints = (0, _react.useMemo)(function () {
238
- return [initialSnapPoint, finalSnapPoint];
238
+ return [Math.max(0, initialSnapPoint), Math.max(0, finalSnapPoint)];
239
239
  }, [initialSnapPoint, finalSnapPoint]);
240
240
  return _react["default"].createElement(_react["default"].Fragment, null, _react["default"].createElement(_bottomSheet["default"], {
241
241
  containerHeight: fullScreenHeight,