Skip to content

Commit db58f1a

Browse files
Merge pull request #1839 from GetStream/develop
Next Release
2 parents 9822c12 + 64eda65 commit db58f1a

File tree

92 files changed

+2090
-520
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+2090
-520
lines changed
15.8 MB
Binary file not shown.

examples/SampleApp/ios/Podfile.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -440,7 +440,7 @@ PODS:
440440
- React-Core
441441
- react-native-netinfo (6.0.0):
442442
- React-Core
443-
- react-native-quick-sqlite (4.0.7):
443+
- react-native-quick-sqlite (5.1.0):
444444
- React
445445
- React-callinvoker
446446
- React-Core
@@ -885,7 +885,7 @@ SPEC CHECKSUMS:
885885
react-native-document-picker: 1a7518132d4a06b67f459be9bb1464a567d2b3b4
886886
react-native-image-resizer: d9fb629a867335bdc13230ac2a58702bb8c8828f
887887
react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d
888-
react-native-quick-sqlite: 1207a3a3c184b059a78385d206f3e6e2436730f7
888+
react-native-quick-sqlite: a7bd4139fb07194ef8534d1cc14c1aec6daa4d84
889889
react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79
890890
react-native-video: bb6f12a7198db53b261fefb5d609dc77417acc8b
891891
React-perflogger: 48c6b363e867d64b682e84f80ca45636bd65e19c
@@ -921,6 +921,6 @@ SPEC CHECKSUMS:
921921
Yoga: 6c8252e38d65aa387daee699eacf027e055e0b31
922922
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
923923

924-
PODFILE CHECKSUM: 29a2b01e336727d3fdffe3e322924f2e5fdc30fd
924+
PODFILE CHECKSUM: dcdf2b600767187da4a87e0aec4e799785d74855
925925

926926
COCOAPODS: 1.11.2

examples/SampleApp/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
"react-native-image-crop-picker": "0.38.0",
4646
"react-native-image-resizer": "1.4.5",
4747
"react-native-markdown-package": "1.8.2",
48-
"react-native-quick-sqlite": "^4.0.7",
48+
"react-native-quick-sqlite": "5.1.0",
4949
"react-native-reanimated": "^2.10.0",
5050
"react-native-safe-area-context": "3.2.0",
5151
"react-native-screens": "3.2.0",

examples/SampleApp/yarn.lock

Lines changed: 9 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -2533,11 +2533,6 @@ array.prototype.flatmap@^1.2.5:
25332533
define-properties "^1.1.3"
25342534
es-abstract "^1.19.0"
25352535

2536-
art@^0.10.1:
2537-
version "0.10.3"
2538-
resolved "https://registry.yarnpkg.com/art/-/art-0.10.3.tgz#b01d84a968ccce6208df55a733838c96caeeaea2"
2539-
integrity sha512-HXwbdofRTiJT6qZX/FnchtldzJjS3vkLJxQilc3Xj+ma2MXjY4UAyQ0ls1XZYVnDvVIBiFZbC6QsvtW86TD6tQ==
2540-
25412536
asap@~2.0.6:
25422537
version "2.0.6"
25432538
resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46"
@@ -3238,14 +3233,6 @@ cosmiconfig@^5.0.5, cosmiconfig@^5.1.0:
32383233
js-yaml "^3.13.1"
32393234
parse-json "^4.0.0"
32403235

3241-
create-react-class@^15.6.2:
3242-
version "15.7.0"
3243-
resolved "https://registry.yarnpkg.com/create-react-class/-/create-react-class-15.7.0.tgz#7499d7ca2e69bb51d13faf59bd04f0c65a1d6c1e"
3244-
integrity sha512-QZv4sFWG9S5RUvkTYWbflxeZX+JG7Cz0Tn33rQBJ+WFQTqTfUTjMjiv9tnfXazjsO5r0KhPs+AqCjyrQX6h2ng==
3245-
dependencies:
3246-
loose-envify "^1.3.1"
3247-
object-assign "^4.1.1"
3248-
32493236
cross-spawn@^6.0.0:
32503237
version "6.0.5"
32513238
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4"
@@ -5843,7 +5830,7 @@ logkitty@^0.7.1:
58435830
dayjs "^1.8.15"
58445831
yargs "^15.1.0"
58455832

5846-
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.3.1, loose-envify@^1.4.0:
5833+
loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
58475834
version "1.4.0"
58485835
resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf"
58495836
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
@@ -7114,17 +7101,6 @@ range-parser@~1.2.1:
71147101
resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
71157102
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
71167103

7117-
react-art@^17.0.2:
7118-
version "17.0.2"
7119-
resolved "https://registry.yarnpkg.com/react-art/-/react-art-17.0.2.tgz#ea1b972e0ee19c08f15e2d2cec522f0d992351cc"
7120-
integrity sha512-x+AhS0ex8B8kWh2GNyRK/IdX9V+xPax22WphtML8RBdu8CYd9dDOgP3ejQlPthpmwILJUaVf/+5a/qQ8X4I+yA==
7121-
dependencies:
7122-
art "^0.10.1"
7123-
create-react-class "^15.6.2"
7124-
loose-envify "^1.1.0"
7125-
object-assign "^4.1.1"
7126-
scheduler "^0.20.2"
7127-
71287104
71297105
version "4.24.0"
71307106
resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.0.tgz#7daa196bdc64f3626b3f54f2ff2b96f7c4fdf017"
@@ -7228,10 +7204,10 @@ [email protected]:
72287204
react-native-lightbox "^0.7.0"
72297205
simple-markdown "^0.7.1"
72307206

7231-
react-native-quick-sqlite@^4.0.7:
7232-
version "4.0.7"
7233-
resolved "https://registry.yarnpkg.com/react-native-quick-sqlite/-/react-native-quick-sqlite-4.0.7.tgz#f6edd935eb368b9ebcb4449ed43fb3054e047616"
7234-
integrity sha512-xzASTSMe9sfuLaAafr170+bD4xDl6KXtoE5n7AtiKry2qUTBn6vZCgx0ToHzqfw1P4Se9ptCT2xvnaTsuRfGgQ==
7207+
react-native-quick-sqlite@5.1.0:
7208+
version "5.1.0"
7209+
resolved "https://registry.yarnpkg.com/react-native-quick-sqlite/-/react-native-quick-sqlite-5.1.0.tgz#70c27df191b2397dcbf0fa112e16d97707e2431f"
7210+
integrity sha512-OAwMXVqK3sGA9Ez+uKLji6hbSJVg0+vW5rAsZJgnveEpIby9RK5Fq9bhoJ9Yxe8ERmAWMKkLYp4afXNyJGYBBQ==
72357211

72367212
react-native-reanimated@^2.10.0:
72377213
version "2.10.0"
@@ -7674,14 +7650,6 @@ saxes@^5.0.1:
76747650
dependencies:
76757651
xmlchars "^2.2.0"
76767652

7677-
scheduler@^0.20.2:
7678-
version "0.20.2"
7679-
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91"
7680-
integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==
7681-
dependencies:
7682-
loose-envify "^1.1.0"
7683-
object-assign "^4.1.1"
7684-
76857653
scheduler@^0.22.0:
76867654
version "0.22.0"
76877655
resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.22.0.tgz#83a5d63594edf074add9a7198b1bae76c3db01b8"
@@ -8050,10 +8018,10 @@ [email protected]:
80508018
resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4"
80518019
integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ=
80528020

8053-
stream-chat-react-native-core@5.4.3:
8054-
version "5.4.3"
8055-
resolved "https://registry.yarnpkg.com/stream-chat-react-native-core/-/stream-chat-react-native-core-5.4.3.tgz#0342e0359774f5cf92fa6c581dff953922fab38f"
8056-
integrity sha512-CmZTrkp4iTNiJ56tM3PbTPOWZWoHLECSanI2UPjcdWvIzk5abgPLRK6HPC3qJW4sXeS2uCYAmwlhY9LCn6prIQ==
8021+
stream-chat-react-native-core@5.5.0:
8022+
version "5.5.0"
8023+
resolved "https://registry.yarnpkg.com/stream-chat-react-native-core/-/stream-chat-react-native-core-5.5.0.tgz#e42551b9714d0ccbfe9e888eb145f03c716b2d2f"
8024+
integrity sha512-V9gS8FDyS6p5J8VVwtTIraTlAA3qMhOdWkDguu/yP6QL/T3Jl6jWCxf8aPEma/6Q+rNBpLL+hyTN6913J+jd0A==
80578025
dependencies:
80588026
"@babel/runtime" "^7.12.5"
80598027
"@gorhom/bottom-sheet" "4.4.5"
@@ -8064,7 +8032,6 @@ [email protected]:
80648032
metro-react-native-babel-preset "0.66.2"
80658033
mime-types "^2.1.34"
80668034
path "0.12.7"
8067-
react-art "^17.0.2"
80688035
react-native-markdown-package "1.8.2"
80698036
react-native-url-polyfill "^1.3.0"
80708037
stream-chat "7.0.0"
Lines changed: 47 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,50 @@
1-
import DocumentPicker from 'react-native-document-picker';
1+
/**
2+
* Types are approximated from what we need from the DocumentPicker API.
3+
*
4+
* For its full API, see https://github.com/rnmods/react-native-document-picker/blob/master/src/index.tsx
5+
* */
6+
type ResponseValue = {
7+
name: string;
8+
uri: string;
9+
size: number;
10+
type: string;
11+
};
212

3-
export const pickDocument = async ({ maxNumberOfFiles }: { maxNumberOfFiles: number }) => {
4-
try {
5-
let res = await DocumentPicker.pickMultiple({
6-
type: [DocumentPicker.types.allFiles],
7-
});
13+
let DocumentPicker: {
14+
types: { allFiles: string };
15+
pickMultiple: (opts?: { type: string[] }) => Promise<ResponseValue[]>;
16+
};
817

9-
if (maxNumberOfFiles && res.length > maxNumberOfFiles) {
10-
res = res.slice(0, maxNumberOfFiles);
11-
}
18+
try {
19+
DocumentPicker = require('react-native-document-picker').default;
20+
} catch (err) {
21+
console.log('react-native-document-picker is not installed');
22+
}
1223

13-
return {
14-
cancelled: false,
15-
docs: res.map(({ name, size, type, uri }) => ({
16-
name,
17-
size,
18-
type,
19-
uri,
20-
})),
21-
};
22-
} catch (err) {
23-
return {
24-
cancelled: true,
25-
};
26-
}
27-
};
24+
export const pickDocument = DocumentPicker
25+
? async ({ maxNumberOfFiles }: { maxNumberOfFiles: number }) => {
26+
try {
27+
let res = await DocumentPicker.pickMultiple({
28+
type: [DocumentPicker.types.allFiles],
29+
});
30+
31+
if (maxNumberOfFiles && res.length > maxNumberOfFiles) {
32+
res = res.slice(0, maxNumberOfFiles);
33+
}
34+
35+
return {
36+
cancelled: false,
37+
docs: res.map(({ name, size, type, uri }) => ({
38+
name,
39+
size,
40+
type,
41+
uri,
42+
})),
43+
};
44+
} catch (err) {
45+
return {
46+
cancelled: true,
47+
};
48+
}
49+
}
50+
: null;

package/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
"path": "0.12.7",
8080
"react-native-markdown-package": "1.8.2",
8181
"react-native-url-polyfill": "^1.3.0",
82-
"stream-chat": "7.0.0"
82+
"stream-chat": "8.1.2"
8383
},
8484
"peerDependencies": {
8585
"react-native-svg": "^12.1.0"
@@ -136,7 +136,7 @@
136136
"react-native": "0.67.3",
137137
"react-native-builder-bob": "0.18.1",
138138
"react-native-gesture-handler": "2.3.1",
139-
"react-native-quick-sqlite": "^4.0.3",
139+
"react-native-quick-sqlite": "5.1.0",
140140
"react-native-reanimated": "2.7.0",
141141
"react-native-svg": "12.1.1",
142142
"react-native-typescript-transformer": "1.2.13",

package/src/__tests__/offline-feature.test.js

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import { queryChannelsApi } from '../mock-builders/api/queryChannels';
1414
import { useMockedApis } from '../mock-builders/api/useMockedApis';
1515
import dispatchChannelTruncatedEvent from '../mock-builders/event/channelTruncated';
1616
import dispatchChannelUpdatedEvent from '../mock-builders/event/channelUpdated';
17+
import dispatchConnectionChangedEvent from '../mock-builders/event/connectionChanged';
1718
import dispatchMemberAddedEvent from '../mock-builders/event/memberAdded';
1819
import dispatchMemberRemovedEvent from '../mock-builders/event/memberRemoved';
1920
import dispatchMemberUpdatedEvent from '../mock-builders/event/memberUpdated';
@@ -206,7 +207,6 @@ describe('Offline support is enabled', () => {
206207

207208
const channelQueriesRows = BetterSqlite.selectFromTable('channelQueries');
208209
const cidsInDB = JSON.parse(channelQueriesRows[0].cids);
209-
210210
const filterSortQueryInDB = channelQueriesRows[0].id;
211211
const actualFilterSortQueryInDB = convertFilterSortToQuery({ filters, sort });
212212

@@ -285,8 +285,10 @@ describe('Offline support is enabled', () => {
285285

286286
it('should store filter-sort query and cids on ChannelList in channelQueries table', async () => {
287287
useMockedApis(chatClient, [queryChannelsApi(channels)]);
288-
289288
const { getByTestId, queryAllByA11yRole } = renderComponent();
289+
act(() => dispatchConnectionChangedEvent(chatClient));
290+
// await waiter();
291+
act(() => dispatchConnectionChangedEvent(chatClient));
290292
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
291293

292294
expectCIDsOnUIToBeInDB(queryAllByA11yRole);
@@ -296,6 +298,7 @@ describe('Offline support is enabled', () => {
296298
useMockedApis(chatClient, [queryChannelsApi(channels)]);
297299

298300
const { getByTestId, queryAllByA11yRole } = renderComponent();
301+
act(() => dispatchConnectionChangedEvent(chatClient));
299302
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
300303

301304
expectAllChannelsWithStateToBeInDB(queryAllByA11yRole);
@@ -305,6 +308,7 @@ describe('Offline support is enabled', () => {
305308
useMockedApis(chatClient, [queryChannelsApi(channels)]);
306309

307310
const { getByTestId } = renderComponent();
311+
act(() => dispatchConnectionChangedEvent(chatClient));
308312
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
309313
const newMessage = generateMessage({
310314
cid: channels[0].channel.cid,
@@ -322,6 +326,7 @@ describe('Offline support is enabled', () => {
322326
useMockedApis(chatClient, [queryChannelsApi(channels)]);
323327

324328
const { getByTestId, queryAllByA11yRole } = renderComponent();
329+
act(() => dispatchConnectionChangedEvent(chatClient));
325330
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
326331

327332
const newChannel = createChannel();
@@ -343,6 +348,7 @@ describe('Offline support is enabled', () => {
343348
useMockedApis(chatClient, [queryChannelsApi(channels)]);
344349

345350
const { getByTestId } = renderComponent();
351+
act(() => dispatchConnectionChangedEvent(chatClient));
346352
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
347353

348354
const updatedMessage = { ...channels[0].messages[0] };
@@ -361,6 +367,7 @@ describe('Offline support is enabled', () => {
361367
useMockedApis(chatClient, [queryChannelsApi(channels)]);
362368

363369
const { getByTestId, queryAllByA11yRole } = renderComponent();
370+
act(() => dispatchConnectionChangedEvent(chatClient));
364371
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
365372
const removedChannel = channels[getRandomInt(0, channels.length - 1)].channel;
366373
act(() => dispatchNotificationRemovedFromChannel(chatClient, removedChannel));
@@ -387,6 +394,7 @@ describe('Offline support is enabled', () => {
387394
useMockedApis(chatClient, [queryChannelsApi(channels)]);
388395

389396
const { getByTestId, queryAllByA11yRole } = renderComponent();
397+
act(() => dispatchConnectionChangedEvent(chatClient));
390398
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
391399

392400
const newChannel = createChannel();
@@ -416,6 +424,7 @@ describe('Offline support is enabled', () => {
416424
useMockedApis(chatClient, [queryChannelsApi(channels)]);
417425

418426
const { getByTestId, queryAllByA11yRole } = renderComponent();
427+
act(() => dispatchConnectionChangedEvent(chatClient));
419428
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
420429

421430
const channelToTruncate = channels[getRandomInt(0, channels.length - 1)].channel;
@@ -440,6 +449,7 @@ describe('Offline support is enabled', () => {
440449
useMockedApis(chatClient, [queryChannelsApi(channels)]);
441450

442451
const { getByTestId } = renderComponent();
452+
act(() => dispatchConnectionChangedEvent(chatClient));
443453
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
444454

445455
const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -481,6 +491,7 @@ describe('Offline support is enabled', () => {
481491
useMockedApis(chatClient, [queryChannelsApi(channels)]);
482492

483493
const { getByTestId } = renderComponent();
494+
act(() => dispatchConnectionChangedEvent(chatClient));
484495
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
485496

486497
const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -528,6 +539,7 @@ describe('Offline support is enabled', () => {
528539
useMockedApis(chatClient, [queryChannelsApi(channels)]);
529540

530541
const { getByTestId } = renderComponent();
542+
act(() => dispatchConnectionChangedEvent(chatClient));
531543
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
532544

533545
const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -561,6 +573,7 @@ describe('Offline support is enabled', () => {
561573
useMockedApis(chatClient, [queryChannelsApi(channels)]);
562574

563575
const { getByTestId } = renderComponent();
576+
act(() => dispatchConnectionChangedEvent(chatClient));
564577
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
565578

566579
const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -579,6 +592,7 @@ describe('Offline support is enabled', () => {
579592
useMockedApis(chatClient, [queryChannelsApi(channels)]);
580593

581594
const { getByTestId } = renderComponent();
595+
act(() => dispatchConnectionChangedEvent(chatClient));
582596
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
583597

584598
const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -597,6 +611,7 @@ describe('Offline support is enabled', () => {
597611
useMockedApis(chatClient, [queryChannelsApi(channels)]);
598612

599613
const { getByTestId } = renderComponent();
614+
act(() => dispatchConnectionChangedEvent(chatClient));
600615
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
601616

602617
const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -620,6 +635,7 @@ describe('Offline support is enabled', () => {
620635
useMockedApis(chatClient, [queryChannelsApi(channels)]);
621636

622637
const { getByTestId } = renderComponent();
638+
act(() => dispatchConnectionChangedEvent(chatClient));
623639
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
624640

625641
const targetChannel = channels[getRandomInt(0, channels.length - 1)];
@@ -640,6 +656,7 @@ describe('Offline support is enabled', () => {
640656
useMockedApis(chatClient, [queryChannelsApi(channels)]);
641657

642658
const { getByTestId } = renderComponent();
659+
act(() => dispatchConnectionChangedEvent(chatClient));
643660
await waitFor(() => expect(getByTestId('channel-list')).toBeTruthy());
644661
const targetChannel = channels[getRandomInt(0, channels.length - 1)];
645662
const targetMember = targetChannel.members[getRandomInt(0, targetChannel.members.length - 1)];

0 commit comments

Comments
 (0)