Skip to content

Commit 4811497

Browse files
committed
Merge branch 'v6.0.0' of github.com:GetStream/stream-chat-react-native into v6.0.0
2 parents a4c1105 + 913ce07 commit 4811497

File tree

1 file changed

+37
-30
lines changed

1 file changed

+37
-30
lines changed

package/src/components/ChannelList/hooks/usePaginatedChannels.ts

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -191,30 +191,33 @@ export const usePaginatedChannels = <
191191
const sortStr = useMemo(() => JSON.stringify(sort), [sort]);
192192

193193
useEffect(() => {
194-
const loadOfflineChannels = () => {
194+
const loadOfflineChannels = async () => {
195195
if (!client?.user?.id) return;
196196

197-
getChannelsForFilterSort({
198-
currentUserId: client.user.id,
199-
filters,
200-
sort,
201-
})
202-
.then((channelsFromDB) => {
203-
if (channelsFromDB) {
204-
const offlineChannels = client.hydrateActiveChannels(channelsFromDB, {
205-
offlineMode: true,
206-
skipInitialization: [], // passing empty array will clear out the existing messages from channel state, this removes the possibility of duplicate messages
207-
});
208-
209-
setChannels(offlineChannels);
210-
setStaticChannelsActive(true);
211-
}
212-
})
213-
.catch((e) => {
214-
console.warn('Failed to get channels from database: ', e);
197+
try {
198+
const channelsFromDB = await getChannelsForFilterSort({
199+
currentUserId: client.user.id,
200+
filters,
201+
sort,
215202
});
216203

204+
if (channelsFromDB) {
205+
const offlineChannels = client.hydrateActiveChannels(channelsFromDB, {
206+
offlineMode: true,
207+
skipInitialization: [], // passing empty array will clear out the existing messages from channel state, this removes the possibility of duplicate messages
208+
});
209+
210+
setChannels(offlineChannels);
211+
setStaticChannelsActive(true);
212+
}
213+
} catch (e) {
214+
console.warn('Failed to get channels from database: ', e);
215+
return false;
216+
}
217+
217218
setActiveQueryType(null);
219+
220+
return true;
218221
};
219222

220223
let listener: ReturnType<typeof DBSyncManager.onSyncStatusChange>;
@@ -223,20 +226,24 @@ export const usePaginatedChannels = <
223226
// and then call queryChannels to ensure any new channels are added to UI.
224227
listener = DBSyncManager.onSyncStatusChange(async (syncStatus) => {
225228
if (syncStatus) {
226-
loadOfflineChannels();
227-
await reloadList();
228-
setForceUpdate((u) => u + 1);
229+
const loadingChannelsSucceeded = await loadOfflineChannels();
230+
if (loadingChannelsSucceeded) {
231+
await reloadList();
232+
setForceUpdate((u) => u + 1);
233+
}
229234
}
230235
});
231236
// On start, load the channels from local db.
232-
loadOfflineChannels();
233-
234-
// If db is already synced (sync api and pending api calls), then
235-
// right away call queryChannels.
236-
const dbSyncStatus = DBSyncManager.getSyncStatus();
237-
if (dbSyncStatus) {
238-
reloadList();
239-
}
237+
loadOfflineChannels().then((success) => {
238+
// If db is already synced (sync api and pending api calls), then
239+
// right away call queryChannels.
240+
if (success) {
241+
const dbSyncStatus = DBSyncManager.getSyncStatus();
242+
if (dbSyncStatus) {
243+
reloadList();
244+
}
245+
}
246+
});
240247
} else {
241248
listener = client.on('connection.changed', async (event) => {
242249
if (event.online) {

0 commit comments

Comments
 (0)