From 0233c243f18687bf7bc52f678d216dcf933f64bf Mon Sep 17 00:00:00 2001 From: Salvatore Giordano Date: Wed, 29 Sep 2021 15:11:10 +0200 Subject: [PATCH] fix(llc): fixed expired cdn attachment links --- packages/stream_chat/CHANGELOG.md | 1 + packages/stream_chat/lib/src/client/channel.dart | 14 +++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/packages/stream_chat/CHANGELOG.md b/packages/stream_chat/CHANGELOG.md index fbac9f87..5a4b4d84 100644 --- a/packages/stream_chat/CHANGELOG.md +++ b/packages/stream_chat/CHANGELOG.md @@ -3,6 +3,7 @@ 🐞 Fixed - [[#710]](https://github.com/GetStream/stream-chat-flutter/issues/710) Fixed JWT requiring using `String` as id. +- Fixed expired CDN attachment links not updating correctly. ## 3.0.0 diff --git a/packages/stream_chat/lib/src/client/channel.dart b/packages/stream_chat/lib/src/client/channel.dart index c2c40018..baac7da5 100644 --- a/packages/stream_chat/lib/src/client/channel.dart +++ b/packages/stream_chat/lib/src/client/channel.dart @@ -1521,7 +1521,7 @@ class ChannelClientState { } } - void _checkExpiredAttachmentMessages(ChannelState channelState) { + void _checkExpiredAttachmentMessages(ChannelState channelState) async { final expiredAttachmentMessagesId = channelState.messages .where((m) => !_updatedMessagesIds.contains(m.id) && @@ -1532,20 +1532,24 @@ class ChannelClientState { return false; } final uri = Uri.parse(url); - if (uri.host != 'stream-io-cdn.com' || + if (!uri.host.endsWith('stream-io-cdn.com') || uri.queryParameters['Expires'] == null) { return false; } - final expiration = - DateTime.parse(uri.queryParameters['Expires']!); + final secondsFromEpoch = + int.parse(uri.queryParameters['Expires']!); + final expiration = DateTime.fromMillisecondsSinceEpoch( + secondsFromEpoch * 1000); return expiration.isBefore(DateTime.now()); }) == true) .map((e) => e.id) .toList(); + if (expiredAttachmentMessagesId.isNotEmpty == true) { - _channel.getMessagesById(expiredAttachmentMessagesId); + await _channel._initializedCompleter.future; _updatedMessagesIds.addAll(expiredAttachmentMessagesId); + _channel.getMessagesById(expiredAttachmentMessagesId); } }