From e53e4619c8ddd31934c5878795c63049f826bd28 Mon Sep 17 00:00:00 2001 From: Toomas Vahter Date: Fri, 19 Jul 2024 14:53:52 +0300 Subject: [PATCH 01/24] Fix channel search view by refreshing the view state in both did change channels and state delegates (delegate order has changed) (#3320) --- .../ChatChannelList/Search/ChatChannelListSearchVC.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Sources/StreamChatUI/ChatChannelList/Search/ChatChannelListSearchVC.swift b/Sources/StreamChatUI/ChatChannelList/Search/ChatChannelListSearchVC.swift index f5f33352153..33f652b2765 100644 --- a/Sources/StreamChatUI/ChatChannelList/Search/ChatChannelListSearchVC.swift +++ b/Sources/StreamChatUI/ChatChannelList/Search/ChatChannelListSearchVC.swift @@ -100,8 +100,8 @@ open class ChatChannelListSearchVC: ChatChannelListVC, UISearchResultsUpdating { // MARK: - State Handling - override open func controller(_ controller: DataController, didChangeState state: DataController.State) { - switch state { + override open func handleStateChanges(_ newState: DataController.State) { + switch newState { case .initialized, .localDataFetched: if hasEmptyResults { loadingIndicator.startAnimating() From dac58ff8610e86750eae9d60d4aaa35010d07c45 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Mon, 22 Jul 2024 09:11:43 +0100 Subject: [PATCH 02/24] Update CHANGELOG.md (#3321) --- CHANGELOG.md | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 23672e5054b..3ec747b910d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,13 +20,11 @@ _July 18, 2024_ - Increase QoS for `Throttler` and `Debouncer` to `utility` [#3297](https://github.com/GetStream/stream-chat-swift/issues/3297) - Improve reliability of accessing data in controllers' completion handlers [#3305](https://github.com/GetStream/stream-chat-swift/issues/3305) -## StreamChatUI -### 🐞 Fixed -- Fix Channel List not hiding error state view when data is available [#3303](https://github.com/GetStream/stream-chat-swift/pull/3303) - ## StreamChatUI ### ✅ Added - Add support for enabling message list view animations [#3314](https://github.com/GetStream/stream-chat-swift/pull/3314) +### 🐞 Fixed +- Fix Channel List not hiding error state view when data is available [#3303](https://github.com/GetStream/stream-chat-swift/pull/3303) # [4.59.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.59.0) _July 10, 2024_ From dba171fc855d09783c497cb2391c6a67ad270970 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Mon, 22 Jul 2024 15:38:35 +0100 Subject: [PATCH 03/24] [CI] Automate merge to develop on release (#3326) --- fastlane/Fastfile | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 33e4ba42467..d7c40fec099 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -103,6 +103,8 @@ lane :publish_release do |options| ) update_spm(version: options[:version]) + + merge_main_to_develop end lane :merge_release_to_main do @@ -123,11 +125,18 @@ lane :merge_release_to_main do end lane :merge_main_to_develop do - ensure_git_status_clean - sh('git checkout main && git pull') - sh('git checkout develop && git pull') + if is_ci + sh('git reset --hard') + else + ensure_git_status_clean + end + + sh('git checkout main') + sh('git pull origin main') + sh('git checkout develop') + sh('git pull origin develop') + sh('git log develop..main') sh('git merge main') - UI.user_error!('Not pushing changes') unless prompt(text: 'Will push changes. All looking good?', boolean: true) sh('git push') end From 2714853a74a8b34f992e8860abe1d036f080742c Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Mon, 22 Jul 2024 16:11:31 +0100 Subject: [PATCH 04/24] Remove Carthage from the docs (#3327) --- .gitignore | 8 --- .swiftlint.yml | 1 - Documentation.docc/Documentation.md | 2 +- README.md | 3 +- Scripts/carthage.sh | 19 ----- docusaurus/docs/iOS/assets/carthage-drag.png | Bin 436761 -> 0 bytes .../iOS/assets/carthage-embed-and-sign.png | Bin 16699 -> 0 bytes docusaurus/docs/iOS/basics/integration.md | 65 ------------------ 8 files changed, 2 insertions(+), 96 deletions(-) delete mode 100644 Scripts/carthage.sh delete mode 100644 docusaurus/docs/iOS/assets/carthage-drag.png delete mode 100644 docusaurus/docs/iOS/assets/carthage-embed-and-sign.png diff --git a/.gitignore b/.gitignore index 972569a5fcc..cffffb0541a 100644 --- a/.gitignore +++ b/.gitignore @@ -54,12 +54,6 @@ playground.xcworkspace # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control Pods/ -# Carthage -# -# Add this line if you want to avoid checking in source code from Carthage dependencies. -Carthage/ -!Sample/Carthage/ - # fastlane # # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the @@ -82,8 +76,6 @@ StreamChatCoreTests.xctest.coverage.txt vendor/bundle/ .bundle/ .swiftpm -Example/Carthage/.env -Example/Carthage/fastlane/report.xml Sample/Cocoapods/Podfile.lock docusaurus/.env reports/ diff --git a/.swiftlint.yml b/.swiftlint.yml index 2817534709e..00cd6577e23 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -12,7 +12,6 @@ excluded: - UISDKdocumentation - Tests - TestTools - - Carthage - Pods - .build - spm_cache diff --git a/Documentation.docc/Documentation.md b/Documentation.docc/Documentation.md index 371c67f9a38..478da115da8 100644 --- a/Documentation.docc/Documentation.md +++ b/Documentation.docc/Documentation.md @@ -17,7 +17,7 @@ This is the official iOS SDK for [Stream Chat](https://getstream.io/chat/sdk/ios * [iOS/Swift Chat Tutorial](https://getstream.io/tutorials/ios-chat/): Learn how to use the SDK by following our simple tutorial. * [Register](https://getstream.io/chat/trial/): Register to get an API key for Stream Chat. -* [Installation](https://getstream.io/chat/docs/sdk/ios/basics/integration): Learn more about how to install the SDK using CocoaPods, SPM or Carthage. +* [Installation](https://getstream.io/chat/docs/sdk/ios/basics/integration): Learn more about how to install the SDK using SPM or CocoaPods. * Do you want to use Module Stable XCFrameworks? [Check this out](https://getstream.io/chat/docs/sdk/ios/basics/integration#xcframeworks) * [Documentation](https://getstream.io/chat/docs/sdk/ios/): An extensive documentation is available to help with you integration. * [SwiftUI](https://github.com/GetStream/stream-chat-swiftui): Check our SwiftUI SDK if you are developing with SwiftUI. diff --git a/README.md b/README.md index 20c36cc7c4f..3b4aa32fad9 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@

-

@@ -49,7 +48,7 @@ The **StreamChatSwiftUI SDK** is our UI SDK for SwiftUI components. If your appl - [iOS/Swift Chat Tutorial](https://getstream.io/tutorials/ios-chat/): Learn how to use the SDK by following our simple tutorial with UIKit (or [SwiftUI](https://getstream.io/tutorials/swiftui-chat/)). - [Register](https://getstream.io/chat/trial/): Register to get an API key for Stream Chat. -- [Installation](https://getstream.io/chat/docs/sdk/ios/basics/integration): Learn more about how to install the SDK using CocoaPods, SPM or Carthage. +- [Installation](https://getstream.io/chat/docs/sdk/ios/basics/integration): Learn more about how to install the SDK using SPM or CocoaPods. - Do you want to use Module Stable XCFrameworks? [Check this out](https://getstream.io/chat/docs/sdk/ios/basics/integration#xcframeworks) - [Documentation](https://getstream.io/chat/docs/sdk/ios/): An extensive documentation is available to help with you integration. - [SwiftUI](https://github.com/GetStream/stream-chat-swiftui): Check our SwiftUI SDK if you are developing with SwiftUI. diff --git a/Scripts/carthage.sh b/Scripts/carthage.sh deleted file mode 100644 index 4e004da4203..00000000000 --- a/Scripts/carthage.sh +++ /dev/null @@ -1,19 +0,0 @@ -# carthage.sh -# Usage example: ./carthage.sh build --platform iOS - -set -euo pipefail - -xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX) -trap 'rm -f "$xcconfig"' INT TERM HUP EXIT - -# For Xcode 12 make sure EXCLUDED_ARCHS is set to arm architectures otherwise -# the build will fail on lipo due to duplicate architectures. - -CURRENT_XCODE_VERSION=$(xcodebuild -version | grep "Build version" | cut -d' ' -f3) -echo "EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_$CURRENT_XCODE_VERSION = arm64 arm64e armv7 armv7s armv6 armv8" >> $xcconfig - -echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_$(XCODE_PRODUCT_BUILD_VERSION))' >> $xcconfig -echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig - -export XCODE_XCCONFIG_FILE="$xcconfig" -carthage "$@" \ No newline at end of file diff --git a/docusaurus/docs/iOS/assets/carthage-drag.png b/docusaurus/docs/iOS/assets/carthage-drag.png deleted file mode 100644 index 8e344c58e69e5182ac32b7c3381489fde437a2d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 436761 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 wKuFx2==fP{ApK+#f4p|w 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 z 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 diff --git a/docusaurus/docs/iOS/assets/carthage-embed-and-sign.png b/docusaurus/docs/iOS/assets/carthage-embed-and-sign.png deleted file mode 100644 index 694a46993d8a5896097e7bc4bd17d140103ee943..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16699 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 z

Fac3-a0f2YSl>bFn^H5$&9rAiP*6#JuFbg6kp_dJ@9hxY`NBkO2;N|uyLlf)Ph zhlCXp1XSNg9a5*C^}ccQ6G^5Yy9S8no+ls%B^Yzf6++-?5h;aO+GE?!3 zgTjEp;HH4dX>9$I4*!SN&Y=XT0)Q!v59ovpTl(YHVcIsMo!&M>7?8^g0F5C6-@>qr zWy03FL?U7U5U27W$2kE97tYYGtj@>}OlfKrTWJV-;-Eh$?RAryFcv6r4?wLpKg0Y@ zG)g-jT6^UVExCTmrYxS42|V_zQa|Ai7+!6Wp2ELW8P(wf(EZfiJKY@QA+~Y%2z(Ct zp6Lj%T|}S(xNY=ta0uT#E*D~mZDG?@r7OD(@`y?J%`s!M8>lAJIz&QwyGn(PXgf?| zhN7(1Jww9p@fFrv5}`Tk3Frb{&#tPKb@Kl+;mZKuk8IL}I;;;D%dy=mHn6P&`4q#a zI?>eE3ILH`yc#>52Pk|T1<+9gaG7d5o94>+TUX{d_Rpv&tc2qc?6R?IU#5B3s;P6K zC@^!PHzYMUbXH0$yBF9I4k@!GmvR{g2)-ZMge1hj`w$z*Us$Mu^P$}+zBY;OJ5+xa`(9{W`|Fmqjf{K6%;yq?@q{jdiWD8J+QD^mUoGV68jOlh=v`a ztlz~Mr9AI|73Jid$`@eEME|^sLxYsDCNPI-JzFBV6DfJ?&M-k|fKJJj-vA}UqDkGz z0Z5g0Bnz~RLIy}&ceyu%%1tImNbP~Bi*kYp)JI_r&{lrY*%XUgToU5;?u?1Zhiu(q zJYZ7l^Durf?LuDQ`043J_ED~m4|fbEv_hH_@;OCdx!&*>!ro3I(R9t^&&YmgIsjPK zk&^miDfwj{l)Hrx>k~><353V^)C@0iA2p!iqhHKY+%^j;Uw`liX!C$(?XdH7USL!O zNTOpPHdn`C%JZswA#Wk?9pXZ8k&=i8etMh4jVmv%5?3)Z>halAXT_=uoo!Z4cRtH# z@?ePx*=PL?BT02!G+(Xvq(j1Lv%&MhIjY^3v@|qsOP%DgKhrk;MuKI)eY*-9cfUvl zIXBH)43sT(dN+trtn^Hwaed{s^8s3bv!g84Zg$q6?zS`d&w;6P0^U|qT4$&CogTNK zqg5X}%}WIEY36p6-UPFR{Cn<~1X3RltQv%*7}aQB6-~UEd#A426gRHz%f|VYMlW@y z#g*w5MJWGv2WdAGV+_elpQ2rky}Xj4q|R9NXBgnj6NHj@E+A5Tgt)ClP5p zrBv@iVco@VB{Z2(Ija7 zPLjubjjsqXoUW8wH?)oFjUg)py?dq+k1)j_EZ?b*)z6}&w z5lUla#fr>L*9jcm#Tdo-yW1R)#i!hDU##dm?6wVL~J80I6RyE*30S zY!%( zaIDbdRn7bK;!MSYDBBj#2;W=I_pk@ zWu2cH(|-lxq#$6*Gz%H-9gdLR5T=nyb9&#+`|3H!ibCQ-u#Dwwr@#CA8(&(NiN0+S z_LbjhVyxpIovxDq^E21i*qRGgP-dhYA3A?yzi1qPDho~67p^n5*lx`rtOAk_W442H zzP?ZYvb`UbwoX02&Bo1H$KPhxeX*ZaPOAM#sWe!3-e^(BsD7e1N90#=A$C&`_dc_X zOn078^!oE}0b>h7W<5`Q^lYV)e7iXuwg&Ps~eMNM= zdxZsxJJMNG*Of*Y1~(Stl3Vkvq06n=az^}8rv${ckzdyE+zNxUTOspD>&=(+Bxx6f6(ZVW_WjFg zd#uydJ;KHBj&X9G(zJ`_=J9Av9x_v{Wwma?_UDZDwh5XypJ9Jpi{>oMaiwLPb%ss`=@`W% zkafBY2_20oa0Fc}i$0Ac1cN~i z3r*%AB%?D@crIeE|e?~KptrIyC9z8IW7EUoFoITY}^LB(i^M*(8&gEtcng&MD6U=?Pj z-@m}?9fR)K?XGAMEiov-2pdmlAzY3rvH}uH~n|Rf75>h6jcGC_=wM^Fu|Dr0s4O< z

➤ Using pre-built XCFrameworks -

- -:::caution -Our XCFrameworks are built with **Swift 5.7**. In order to use them you need **Xcode 14** or above -::: - -You can learn more about [our Module Stable XCFrameworks here](#xcframeworks) - -- For the LLC (**StreamChat**) use: - - `binary "https://raw.githubusercontent.com/GetStream/stream-chat-swift/main/StreamChatArtifacts.json" ~> 4.6` -- For the UIKit components (**StreamChatUI**, which depends on **StreamChat**) use: - - `binary "https://raw.githubusercontent.com/GetStream/stream-chat-swift/main/StreamChatArtifacts.json" ~> 4.6` - -Now that we’ve modified our Cartfile, let’s go ahead and install the project dependencies via the terminal with one simple command: - -```bash -carthage update --use-xcframeworks -``` - -The previous command will download pre-built XCFrameworks. You now need to add those to your project. Keep reading. - -

- - -
➤ Building from source (OSS) -

- -In your project's `Cartfile`, add one of these options - -- For the LLC (**StreamChat**) use: - - `github "getstream/stream-chat-swift" ~> 4.6.0` -- For the UIKit components (**StreamChatUI**, which depends on **StreamChat**) use: - - `github "getstream/stream-chat-swift" ~> 4.6.0` - -Now that we’ve modified our Cartfile, let’s go ahead and install the project dependencies via the terminal with one simple command: - -```bash -carthage update --use-xcframeworks --no-use-binaries --platform iOS -``` - -The previous command will create pre-built XCFrameworks built from our source code (This might take a while ⏱). You now need to add those to your project. Keep reading. - -

-
- -Open the `Carthage/Build` folder that has been created in the root of your project, and drag and drop the frameworks you want to use. Those should be added to the "Frameworks, Libraries, and Embedded Content" section under General settings: - -![Screenshot shows XCFrameworks being dragged into Xcode](../assets/carthage-drag.png) - -Make sure you select **Embed & Sign** under "Embed" options if you are adding Stream libraries to an app target. If not, use **Do Not Embed** - -![Screenshot shows Embed and Sign being the option selected](../assets/carthage-embed-and-sign.png) - -_More information about Carthage [can be found here](https://github.com/Carthage/Carthage)._ - ## XCFrameworks In an effort to have [**Module Stability**](https://www.swift.org/blog/library-evolution/), we have started distributing **pre-built XCFrameworks** starting ***4.6.0*** From 0a0682dce34e97ea50cf2079f3652c72a9e433b1 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Tue, 23 Jul 2024 17:13:03 +0100 Subject: [PATCH 05/24] Delete unused variable (#3328) --- .swiftlint.yml | 1 + Sources/StreamChatUI/ChatThreadList/ChatThreadListItemView.swift | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/.swiftlint.yml b/.swiftlint.yml index 00cd6577e23..679c72cdd85 100644 --- a/.swiftlint.yml +++ b/.swiftlint.yml @@ -17,6 +17,7 @@ excluded: - spm_cache - vendor/bundle - .ruby-lsp + - derived_data disabled_rules: - large_tuple diff --git a/Sources/StreamChatUI/ChatThreadList/ChatThreadListItemView.swift b/Sources/StreamChatUI/ChatThreadList/ChatThreadListItemView.swift index 4d8f98f6c8b..343605ec1c1 100644 --- a/Sources/StreamChatUI/ChatThreadList/ChatThreadListItemView.swift +++ b/Sources/StreamChatUI/ChatThreadList/ChatThreadListItemView.swift @@ -242,7 +242,6 @@ open class ChatThreadListItemView: _View, ThemeProvider { } let thread = content.thread - let channel = thread.channel let latestReply = thread.latestReplies.last let unreadReplies = thread.reads.first(where: { $0.user.id == content.currentUserId })?.unreadMessagesCount ?? 0 From 5773202ae9d43699baddcd07e5e59c49bf2f4aa6 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Wed, 24 Jul 2024 10:00:30 +0100 Subject: [PATCH 06/24] [CI] Print sdk size in PRs (#3329) --- .../{xcmetrics.yml => performance.yml} | 29 ++++++++++++++++++- fastlane/Fastfile | 26 +++++++++++++---- 2 files changed, 49 insertions(+), 6 deletions(-) rename .github/workflows/{xcmetrics.yml => performance.yml} (62%) diff --git a/.github/workflows/xcmetrics.yml b/.github/workflows/performance.yml similarity index 62% rename from .github/workflows/xcmetrics.yml rename to .github/workflows/performance.yml index 49476662126..50b9b449813 100644 --- a/.github/workflows/xcmetrics.yml +++ b/.github/workflows/performance.yml @@ -39,7 +39,7 @@ jobs: GOOGLE_APPLICATION_CREDENTIALS: ${{ secrets.GOOGLE_APPLICATION_CREDENTIALS }} INSTALL_GCLOUD: true - - name: Run Performance Metrics + - name: Run XCMetrics if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} run: bundle exec fastlane xcmetrics timeout-minutes: 120 @@ -56,3 +56,30 @@ jobs: path: | derived_data/Build/Products/xcodebuild_output.log fastlane/performance/stream-chat-swift.json + + size: + name: SDK Size + runs-on: macos-14 + env: + GITHUB_TOKEN: '${{ secrets.CI_BOT_GITHUB_TOKEN }}' + steps: + - name: Install Bot SSH Key + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} + uses: webfactory/ssh-agent@v0.7.0 + with: + ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }} + + - uses: actions/checkout@v3.1.0 + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} + + - uses: ./.github/actions/bootstrap + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} + + - name: Run SDK Size Metrics + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} + run: bundle exec fastlane show_frameworks_sizes + timeout-minutes: 30 + env: + GITHUB_PR_NUM: ${{ github.event.pull_request.number }} + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + APPSTORE_API_KEY: ${{ secrets.APPSTORE_API_KEY }} diff --git a/fastlane/Fastfile b/fastlane/Fastfile index d7c40fec099..b1f63cd5191 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -465,7 +465,7 @@ lane :xcmetrics do |options| markdown_table << "| #{target} | #{title} | #{benchmark_value} #{value_extension} | #{branch_value} #{value_extension} | #{diff}% #{diff_emoji} | #{status_emoji} |\n" FastlaneCore::PrintTable.print_values( - title: "⏳ #{title} ⏳", + title: title, config: { benchmark: "#{benchmark_value} #{value_extension}", branch: "#{branch_value} #{value_extension}", @@ -835,7 +835,8 @@ lane :sources_matrix do sample_apps: ['Sources', 'Examples', 'DemoApp', xcode_project], integration: ['Sources', 'Integration', xcode_project], ruby: ['fastlane', 'Gemfile', 'Gemfile.lock'], - xcmetrics: ['Sources'] + xcmetrics: ['Sources'], + size: ['Sources'] } end @@ -851,11 +852,24 @@ end desc 'Show current frameworks size' lane :show_frameworks_sizes do |options| + next unless is_check_required(sources: sources_matrix[:size], force_check: @force_check) + options[:sizes] ||= frameworks_sizes - UI.success("StreamChat: #{options[:sizes][:stream_chat]}MB") - UI.success("StreamChatUI: #{options[:sizes][:stream_chat_ui]}MB") - UI.success("Total Size: #{options[:sizes][:total]}MB") + if is_ci && !ENV['GITHUB_PR_NUM'].to_s.empty? + markdown_table = "## SDK Size\n| `StreamChat` | `StreamChatUI` | `Total` |\n| - | - | - |\n" + markdown_table << "|#{options[:sizes][:stream_chat]}MB|#{options[:sizes][:stream_chat_ui]}MB|#{options[:sizes][:total]}MB|" + sh("gh pr comment #{ENV.fetch('GITHUB_PR_NUM')} -b '#{markdown_table}'") + end + + FastlaneCore::PrintTable.print_values( + title: 'SDK Size', + config: { + StreamChat: "#{options[:sizes][:stream_chat]}MB", + StreamChatUI: "#{options[:sizes][:stream_chat]}MB", + 'Total Size': "#{options[:sizes][:total]}MB" + } + ) end desc 'Update img shields SDK size labels' @@ -953,6 +967,8 @@ def frameworks_sizes # Cleanup the previous builds FileUtils.rm_rf("../#{root_dir}/") + match_me + gym( scheme: 'DemoApp', archive_path: archive_dir, From de9faf46ea2df293c288d781d42654e07087d59b Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Wed, 24 Jul 2024 18:30:48 +0100 Subject: [PATCH 07/24] [CI] Show sdk size update on PR (#3331) --- ...erformance.yml => performance-metrics.yml} | 33 +--- .github/workflows/sdk-size-metrics.yml | 45 ++++++ .gitignore | 1 + StreamChat.xcodeproj/project.pbxproj | 14 +- fastlane/Fastfile | 141 +++++++++++------- 5 files changed, 142 insertions(+), 92 deletions(-) rename .github/workflows/{performance.yml => performance-metrics.yml} (61%) create mode 100644 .github/workflows/sdk-size-metrics.yml diff --git a/.github/workflows/performance.yml b/.github/workflows/performance-metrics.yml similarity index 61% rename from .github/workflows/performance.yml rename to .github/workflows/performance-metrics.yml index 50b9b449813..ae59214d082 100644 --- a/.github/workflows/performance.yml +++ b/.github/workflows/performance-metrics.yml @@ -1,4 +1,4 @@ -name: Performance Benchmarks +name: Metrics on: schedule: @@ -16,8 +16,8 @@ env: HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI jobs: - xcmetrics: - name: XCMetrics + performance: + name: Performance runs-on: macos-14 env: GITHUB_TOKEN: '${{ secrets.CI_BOT_GITHUB_TOKEN }}' @@ -56,30 +56,3 @@ jobs: path: | derived_data/Build/Products/xcodebuild_output.log fastlane/performance/stream-chat-swift.json - - size: - name: SDK Size - runs-on: macos-14 - env: - GITHUB_TOKEN: '${{ secrets.CI_BOT_GITHUB_TOKEN }}' - steps: - - name: Install Bot SSH Key - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} - uses: webfactory/ssh-agent@v0.7.0 - with: - ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }} - - - uses: actions/checkout@v3.1.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} - - - uses: ./.github/actions/bootstrap - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} - - - name: Run SDK Size Metrics - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} - run: bundle exec fastlane show_frameworks_sizes - timeout-minutes: 30 - env: - GITHUB_PR_NUM: ${{ github.event.pull_request.number }} - MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} - APPSTORE_API_KEY: ${{ secrets.APPSTORE_API_KEY }} diff --git a/.github/workflows/sdk-size-metrics.yml b/.github/workflows/sdk-size-metrics.yml new file mode 100644 index 00000000000..4bc8e8bba49 --- /dev/null +++ b/.github/workflows/sdk-size-metrics.yml @@ -0,0 +1,45 @@ +name: Metrics + +on: + pull_request: + types: + - opened + - ready_for_review + + workflow_dispatch: + + push: + branches: + - develop + +env: + HOMEBREW_NO_INSTALL_CLEANUP: 1 # Disable cleanup for homebrew, we don't need it on CI + +jobs: + sdk_size: + name: SDK Size + runs-on: macos-14 + env: + GITHUB_TOKEN: '${{ secrets.CI_BOT_GITHUB_TOKEN }}' + steps: + - name: Install Bot SSH Key + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} + uses: webfactory/ssh-agent@v0.7.0 + with: + ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }} + + - uses: actions/checkout@v3.1.0 + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} + + - uses: ./.github/actions/bootstrap + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} + + - name: Run SDK Size Metrics + if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} + run: bundle exec fastlane show_frameworks_sizes + timeout-minutes: 30 + env: + GITHUB_PR_NUM: ${{ github.event.pull_request.number }} + EVENT_NAME: ${{ github.event_name }} + MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} + APPSTORE_API_KEY: ${{ secrets.APPSTORE_API_KEY }} diff --git a/.gitignore b/.gitignore index cffffb0541a..84ae32ab7e8 100644 --- a/.gitignore +++ b/.gitignore @@ -71,6 +71,7 @@ fastlane/allurectl fastlane/xcresults fastlane/recordings fastlane/performance +fastlane/metrics StreamChatCore.framework.coverage.txt StreamChatCoreTests.xctest.coverage.txt vendor/bundle/ diff --git a/StreamChat.xcodeproj/project.pbxproj b/StreamChat.xcodeproj/project.pbxproj index dae7223ce03..55a511db9fe 100644 --- a/StreamChat.xcodeproj/project.pbxproj +++ b/StreamChat.xcodeproj/project.pbxproj @@ -13882,10 +13882,10 @@ ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_ENTITLEMENTS = StreamChatUITestsApp/StreamChatUITestsApp.entitlements; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = EHV7XZLAHA; + DEVELOPMENT_TEAM = EHV7XZLAHA; GCC_OPTIMIZATION_LEVEL = s; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = StreamChatUITestsApp/Info.plist; @@ -13903,7 +13903,6 @@ PRODUCT_BUNDLE_IDENTIFIER = io.getstream.iOS.StreamChatUITestsApp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development io.getstream.iOS.StreamChatUITestsApp"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG TESTS"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; @@ -13985,10 +13984,10 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; - CODE_SIGN_STYLE = Manual; + CODE_SIGN_IDENTITY = "Apple Development"; + CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = ""; - "DEVELOPMENT_TEAM[sdk=iphoneos*]" = EHV7XZLAHA; + DEVELOPMENT_TEAM = EHV7XZLAHA; GCC_OPTIMIZATION_LEVEL = s; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Tests/Info.plist; @@ -13999,7 +13998,6 @@ PRODUCT_BUNDLE_IDENTIFIER = io.getstream.iOS.StreamChatUITestsAppUITests; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; - "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development io.getstream.iOS.StreamChatUITestsAppUITests.xctrunner"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; diff --git a/fastlane/Fastfile b/fastlane/Fastfile index b1f63cd5191..40b20a9a4b8 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -13,12 +13,19 @@ github_repo = ENV['GITHUB_REPOSITORY'] || 'GetStream/stream-chat-swift' stress_tests_cycles = 50 derived_data_path = 'derived_data' source_packages_path = 'spm_cache' -performance_path = "performance/#{github_repo.split('/').last}.json" +metrics_git = 'git@github.com:GetStream/apple-internal-metrics.git' +xcmetrics_path = "metrics/#{github_repo.split('/').last}-xcmetrics.json" +sdk_size_path = "metrics/#{github_repo.split('/').last}-size.json" buildcache_xcargs = 'CC=clang CPLUSPLUS=clang++ LD=clang LDPLUSPLUS=clang++' testlab_bucket = 'gs://test-lab-af3rt9m4yh360-mqm1zzm767nhc' is_localhost = !is_ci @force_check = false +warning_status = '🟡' # Warning if a branch is #{max_tolerance} less performant than the benchmark +fail_status = '🔴' # Failure if a branch is more than #{max_tolerance} less performant than the benchmark +success_status = '🟢' # Success if a branch is more performant or equals to the benchmark +outstanding_status = '🚀' # Outstanding performance + before_all do |lane| if is_ci setup_ci @@ -145,7 +152,7 @@ lane :compress_frameworks do Dir.chdir('..') do FileUtils.cp('LICENSE', 'Products/LICENSE') Dir.chdir('Products') do - ['StreamChat', 'StreamChatUI'].each do |framework| + sdk_names.each do |framework| sh("zip -r #{framework} ./#{framework}.xcframework ./LICENSE") sh("swift package compute-checksum #{framework}.zip") end @@ -375,7 +382,7 @@ end lane :xcmetrics do |options| next unless is_check_required(sources: sources_matrix[:xcmetrics], force_check: @force_check) - ['test_output/', 'performance/', "../#{derived_data_path}/Build/Products"].each { |dir| FileUtils.remove_dir(dir, force: true) } + ['test_output/', 'metrics/', "../#{derived_data_path}/Build/Products"].each { |dir| FileUtils.remove_dir(dir, force: true) } match_me @@ -408,10 +415,10 @@ lane :xcmetrics do |options| xcodebuild_output = File.read('xcodebuild_output.log') end - sh("git clone git@github.com:GetStream/stream-swift-performance-benchmarks.git #{File.dirname(performance_path)}") - branch_performance = xcmetrics_log_parser(log: xcodebuild_output) - performance_benchmarks = JSON.parse(File.read(performance_path)) + sh("git clone #{metrics_git} #{File.dirname(xcmetrics_path)}") + performance_benchmarks = JSON.parse(File.read(xcmetrics_path)) expected_performance = performance_benchmarks['benchmark'] + actual_performance = xcmetrics_log_parser(log: xcodebuild_output) markdown_table = "## StreamChat XCMetrics\n| `target` | `metric` | `benchmark` | `branch` | `performance` | `status` |\n| - | - | - | - | - | - |\n" ['testMessageListScrollTime', 'testChannelListScrollTime'].each do |test_name| @@ -419,17 +426,24 @@ lane :xcmetrics do |options| ['hitches_total_duration', 'duration', 'hitch_time_ratio', 'frame_rate', 'number_of_hitches'].each do |metric| is_frame_rate = metric == 'frame_rate' benchmark_value = expected_performance[test_name][metric]['value'] - branch_value = branch_performance[test_name][metric]['value'] - value_extension = branch_performance[test_name][metric]['ext'] + branch_value = actual_performance[test_name][metric]['value'] + value_extension = actual_performance[test_name][metric]['ext'] + max_tolerance = benchmark_value * 0.1 # Default Xcode Max Tolerance is 10% - max_stddev = benchmark_value * 0.1 # Default Xcode Max STDDEV is 10% - warning_status = '🟡' # Warning if a branch is 10% less performant than the benchmark - fail_status = '🔴' # Failure if a branch is more than 10% less performant than the benchmark - success_status = '🟢' # Success if a branch is more performant or equals to the benchmark + benchmark_value_avoids_zero_division = benchmark_value == 0 ? 1 : benchmark_value + diff = is_frame_rate ? branch_value - benchmark_value : benchmark_value - branch_value + diff = (diff * 100.0 / benchmark_value_avoids_zero_division).round(2) + if diff > 0 + '🔼' + elsif diff.zero? + '🟰' + else + '🔽' + end status_emoji = if is_frame_rate - if branch_value < benchmark_value && branch_value > benchmark_value - max_stddev + if branch_value < benchmark_value && branch_value > benchmark_value - max_tolerance warning_status elsif branch_value < benchmark_value fail_status @@ -437,7 +451,7 @@ lane :xcmetrics do |options| success_status end else - if branch_value > benchmark_value && branch_value < benchmark_value + max_stddev + if branch_value > benchmark_value && branch_value < benchmark_value + max_tolerance warning_status elsif branch_value > benchmark_value fail_status @@ -446,19 +460,6 @@ lane :xcmetrics do |options| end end - benchmark_value_avoids_zero_division = benchmark_value == 0 ? 1 : benchmark_value - diff = is_frame_rate ? branch_value - benchmark_value : benchmark_value - branch_value - diff = (diff * 100.0 / benchmark_value_avoids_zero_division).round(2) - - diff_emoji = - if diff > 0 - '🔼' - elsif diff.zero? - '🟰' - else - '🔽' - end - title = metric.to_s.gsub('_', ' ').capitalize target = index.zero? ? test_name.match(/(?<=test)(.*?)(?=ScrollTime)/).to_s : '' index += 1 @@ -480,17 +481,16 @@ lane :xcmetrics do |options| if is_ci pr_comment_required = !ENV['GITHUB_PR_NUM'].to_s.empty? - performance_benchmarks[current_branch] = branch_performance - UI.message("Performance benchmarks: #{performance_benchmarks}") - File.write(performance_path, JSON.pretty_generate(performance_benchmarks)) + performance_benchmarks[current_branch] = actual_performance + File.write(xcmetrics_path, JSON.pretty_generate(performance_benchmarks)) - Dir.chdir(File.dirname(performance_path)) do + Dir.chdir(File.dirname(xcmetrics_path)) do if sh('git status -s', log: false).to_s.empty? pr_comment_required = false UI.important('No changes in performance benchmarks. Skipping commit and comment.') else sh('git add -A') - sh("git commit -m 'Update #{github_repo.split('/').last}.json: #{current_branch}'") + sh("git commit -m 'Update #{xcmetrics_path}: #{current_branch}'") sh('git push') end end @@ -498,7 +498,7 @@ lane :xcmetrics do |options| sh("gh pr comment #{ENV.fetch('GITHUB_PR_NUM')} -b '#{markdown_table}'") if pr_comment_required end - UI.user_error!('Performance benchmark failed.') if markdown_table.include?('🔴') + UI.user_error!('Performance benchmark failed.') if markdown_table.include?(fail_status) end private_lane :xcmetrics_log_parser do |options| @@ -835,8 +835,8 @@ lane :sources_matrix do sample_apps: ['Sources', 'Examples', 'DemoApp', xcode_project], integration: ['Sources', 'Integration', xcode_project], ruby: ['fastlane', 'Gemfile', 'Gemfile.lock'], - xcmetrics: ['Sources'], - size: ['Sources'] + size: ['Sources', xcode_project], + xcmetrics: ['Sources'] } end @@ -854,36 +854,69 @@ desc 'Show current frameworks size' lane :show_frameworks_sizes do |options| next unless is_check_required(sources: sources_matrix[:size], force_check: @force_check) - options[:sizes] ||= frameworks_sizes + ['metrics/'].each { |dir| FileUtils.remove_dir(dir, force: true) } + + sh("git clone #{metrics_git} #{File.dirname(sdk_size_path)}") + develop_sizes = JSON.parse(File.read(sdk_size_path)) + branch_sizes = options[:sizes] || frameworks_sizes + + markdown_table = "## SDK Size\n| `title` | `develop` | `branch` | `diff` | `status` |\n| - | - | - | - | - |\n" + sdk_names.each do |title| + benchmark_value = develop_sizes[title] + branch_value = branch_sizes[title.to_sym] + max_tolerance = 0.5 # Max Tolerance is 0.5MB + fine_tolerance = 0.25 # Fine Tolerance is 0.25MB - if is_ci && !ENV['GITHUB_PR_NUM'].to_s.empty? - markdown_table = "## SDK Size\n| `StreamChat` | `StreamChatUI` | `Total` |\n| - | - | - |\n" - markdown_table << "|#{options[:sizes][:stream_chat]}MB|#{options[:sizes][:stream_chat_ui]}MB|#{options[:sizes][:total]}MB|" - sh("gh pr comment #{ENV.fetch('GITHUB_PR_NUM')} -b '#{markdown_table}'") + diff = branch_value - benchmark_value + + status_emoji = + if diff < 0 + outstanding_status + elsif diff >= max_tolerance + fail_status + elsif diff >= fine_tolerance + warning_status + else + success_status + end + + markdown_table << "|#{title}|#{benchmark_value}MB|#{branch_value}MB|#{diff}MB|#{status_emoji}|\n" end - FastlaneCore::PrintTable.print_values( - title: 'SDK Size', - config: { - StreamChat: "#{options[:sizes][:stream_chat]}MB", - StreamChatUI: "#{options[:sizes][:stream_chat]}MB", - 'Total Size': "#{options[:sizes][:total]}MB" - } - ) + FastlaneCore::PrintTable.print_values(title: 'Benchmark', config: develop_sizes) + FastlaneCore::PrintTable.print_values(title: 'SDK Size', config: branch_sizes) + + if is_ci + if ENV['EVENT_NAME'].to_s == 'push' + File.write(sdk_size_path, JSON.pretty_generate(branch_sizes)) + Dir.chdir(File.dirname(sdk_size_path)) do + if sh('git status -s', log: false).to_s.empty? + UI.important('No changes in SDK sizes benchmarks.') + else + sh('git add -A') + sh("git commit -m 'Update #{sdk_size_path}'") + sh('git push') + end + end + end + + sh("gh pr comment #{ENV.fetch('GITHUB_PR_NUM')} -b '#{markdown_table}'") unless ENV['GITHUB_PR_NUM'].to_s.empty? + end + + UI.user_error!('SDK sizes benchmark failed.') if markdown_table.include?(fail_status) end desc 'Update img shields SDK size labels' lane :update_img_shields_sdk_sizes do sizes = frameworks_sizes - show_frameworks_sizes(sizes: sizes) # Read the file into a string readme_path = '../README.md' readme_content = File.read(readme_path) # Define the new value for the badge - stream_chat_size = "#{sizes[:stream_chat]}MB" - stream_chat_ui_size = "#{sizes[:stream_chat_ui]}MB" + stream_chat_size = "#{sizes[:StreamChat]}MB" + stream_chat_ui_size = "#{sizes[:StreamChatUI]}MB" # Replace the value in the badge URL readme_content.gsub!(%r{(https://img.shields.io/badge/StreamChat-)(.*?)(-blue)}, "\\1#{stream_chat_size}\\3") @@ -991,8 +1024,8 @@ def frameworks_sizes total_size_mb = (stream_chat_size_mb + stream_chat_ui_size_mb).round(1) { - stream_chat: stream_chat_size_mb, - stream_chat_ui: stream_chat_ui_size_mb, - total: total_size_mb + StreamChat: stream_chat_size_mb, + StreamChatUI: stream_chat_ui_size_mb, + Total: total_size_mb } end From e4931b7c7fcde3613853ff5f4ccc623e289a91ca Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Wed, 24 Jul 2024 19:30:19 +0100 Subject: [PATCH 08/24] Expose MissingConnectionId + InvalidURL + InvalidJSON Errors (#3332) * Expose MissingConnectionId + InvalidURL + InvalidJSON Errors * Update CHANGELOG.md * Update CHANGELOG.md * Update CHANGELOG.md --- CHANGELOG.md | 4 +++- Sources/StreamChat/APIClient/RequestEncoder.swift | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3ec747b910d..de37d81a919 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). # Upcoming -### 🔄 Changed +## StreamChat +### ✅ Added +- Expose `MissingConnectionId` + `InvalidURL` + `InvalidJSON` Errors [#3332](https://github.com/GetStream/stream-chat-swift/pull/3332) # [4.60.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.60.0) _July 18, 2024_ diff --git a/Sources/StreamChat/APIClient/RequestEncoder.swift b/Sources/StreamChat/APIClient/RequestEncoder.swift index 96b815f4042..2c7a6d767c4 100644 --- a/Sources/StreamChat/APIClient/RequestEncoder.swift +++ b/Sources/StreamChat/APIClient/RequestEncoder.swift @@ -303,7 +303,7 @@ protocol ConnectionDetailsProviderDelegate: AnyObject { func provideToken(timeout: TimeInterval, completion: @escaping (Result) -> Void) } -extension ClientError { +public extension ClientError { final class InvalidURL: ClientError {} final class InvalidJSON: ClientError {} final class MissingConnectionId: ClientError {} From b9d8f851009a11eab10c29c7e925f43166fb79fb Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Thu, 25 Jul 2024 00:05:32 +0100 Subject: [PATCH 09/24] Resolve test cert issue (#3334) --- StreamChat.xcodeproj/project.pbxproj | 14 ++++++++++---- fastlane/Fastfile | 14 +++++++------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/StreamChat.xcodeproj/project.pbxproj b/StreamChat.xcodeproj/project.pbxproj index 55a511db9fe..8183f46e980 100644 --- a/StreamChat.xcodeproj/project.pbxproj +++ b/StreamChat.xcodeproj/project.pbxproj @@ -13883,9 +13883,11 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_ENTITLEMENTS = StreamChatUITestsApp/StreamChatUITestsApp.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = EHV7XZLAHA; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = EHV7XZLAHA; GCC_OPTIMIZATION_LEVEL = s; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = StreamChatUITestsApp/Info.plist; @@ -13903,6 +13905,7 @@ PRODUCT_BUNDLE_IDENTIFIER = io.getstream.iOS.StreamChatUITestsApp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development io.getstream.iOS.StreamChatUITestsApp"; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG TESTS"; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_OPTIMIZATION_LEVEL = "-O"; @@ -13985,9 +13988,11 @@ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; CODE_SIGN_IDENTITY = "Apple Development"; - CODE_SIGN_STYLE = Automatic; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CODE_SIGN_STYLE = Manual; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = EHV7XZLAHA; + DEVELOPMENT_TEAM = ""; + "DEVELOPMENT_TEAM[sdk=iphoneos*]" = EHV7XZLAHA; GCC_OPTIMIZATION_LEVEL = s; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = Tests/Info.plist; @@ -13998,6 +14003,7 @@ PRODUCT_BUNDLE_IDENTIFIER = io.getstream.iOS.StreamChatUITestsAppUITests; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; + "PROVISIONING_PROFILE_SPECIFIER[sdk=iphoneos*]" = "match Development io.getstream.iOS.StreamChatUITestsAppUITests.xctrunner"; SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; SUPPORTS_MACCATALYST = NO; SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 40b20a9a4b8..327d29c842d 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -433,13 +433,13 @@ lane :xcmetrics do |options| benchmark_value_avoids_zero_division = benchmark_value == 0 ? 1 : benchmark_value diff = is_frame_rate ? branch_value - benchmark_value : benchmark_value - branch_value diff = (diff * 100.0 / benchmark_value_avoids_zero_division).round(2) - if diff > 0 - '🔼' - elsif diff.zero? - '🟰' - else - '🔽' - end + diff_emoji = if diff > 0 + '🔼' + elsif diff.zero? + '🟰' + else + '🔽' + end status_emoji = if is_frame_rate From 18e72edc4e2784298dba754292119c4dc7d556ec Mon Sep 17 00:00:00 2001 From: Toomas Vahter Date: Thu, 25 Jul 2024 14:17:23 +0300 Subject: [PATCH 10/24] Database container test_databaseContainer_removesAllData_whenShouldFlushOnStartIsTrue sometimes failed because deinit was cleaning up file on disk while another instance was reading it (#3336) --- Tests/StreamChatTests/Database/DatabaseContainer_Tests.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/StreamChatTests/Database/DatabaseContainer_Tests.swift b/Tests/StreamChatTests/Database/DatabaseContainer_Tests.swift index c057be14d01..7fb07efe9df 100644 --- a/Tests/StreamChatTests/Database/DatabaseContainer_Tests.swift +++ b/Tests/StreamChatTests/Database/DatabaseContainer_Tests.swift @@ -265,6 +265,7 @@ final class DatabaseContainer_Tests: XCTestCase { modelName: "TestDataModel", bundle: .testTools ) + database?.shouldCleanUpTempDBFiles = false // Insert a new object try database!.writeSynchronously { From 13606da052072c72cb0fb27897f10db6e4ad34c5 Mon Sep 17 00:00:00 2001 From: Toomas Vahter Date: Thu, 25 Jul 2024 15:24:07 +0300 Subject: [PATCH 11/24] Improve performance of ChatChannel and ChatMessage equality which caused unnecessary copies of structs (#3335) --- CHANGELOG.md | 2 + Sources/StreamChat/Models/Channel.swift | 43 ++++++++++--------- Sources/StreamChat/Models/ChatMessage.swift | 47 +++++++++++---------- 3 files changed, 48 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index de37d81a919..97b7a2326a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). # Upcoming ## StreamChat +### ⚡ Performance +- Improve performance of `ChatChannel` and `ChatMessage` equality checks [#3335](https://github.com/GetStream/stream-chat-swift/pull/3335) ### ✅ Added - Expose `MissingConnectionId` + `InvalidURL` + `InvalidJSON` Errors [#3332](https://github.com/GetStream/stream-chat-swift/pull/3332) diff --git a/Sources/StreamChat/Models/Channel.swift b/Sources/StreamChat/Models/Channel.swift index 9b797b2bac0..a89243367a2 100644 --- a/Sources/StreamChat/Models/Channel.swift +++ b/Sources/StreamChat/Models/Channel.swift @@ -237,27 +237,28 @@ extension ChatChannel: AnyChannel {} extension ChatChannel: Hashable { public static func == (lhs: ChatChannel, rhs: ChatChannel) -> Bool { - lhs.cid == rhs.cid && - lhs.updatedAt == rhs.updatedAt && - lhs.cooldownDuration == rhs.cooldownDuration && - lhs.createdAt == rhs.createdAt && - lhs.createdBy == rhs.createdBy && - lhs.deletedAt == rhs.deletedAt && - lhs.extraData == rhs.extraData && - lhs.imageURL == rhs.imageURL && - lhs.isFrozen == rhs.isFrozen && - lhs.isHidden == rhs.isHidden && - lhs.lastMessageAt == rhs.lastMessageAt && - lhs.memberCount == rhs.memberCount && - lhs.membership == rhs.membership && - lhs.muteDetails == rhs.muteDetails && - lhs.name == rhs.name && - lhs.ownCapabilities == rhs.ownCapabilities && - lhs.previewMessage == rhs.previewMessage && - lhs.reads == rhs.reads && - lhs.team == rhs.team && - lhs.truncatedAt == rhs.truncatedAt && - lhs.watcherCount == rhs.watcherCount + guard lhs.cid == rhs.cid else { return false } + guard lhs.updatedAt == rhs.updatedAt else { return false } + guard lhs.lastMessageAt == rhs.lastMessageAt else { return false } + guard lhs.muteDetails == rhs.muteDetails else { return false } + guard lhs.reads == rhs.reads else { return false } + guard lhs.previewMessage == rhs.previewMessage else { return false } + guard lhs.name == rhs.name else { return false } + guard lhs.watcherCount == rhs.watcherCount else { return false } + guard lhs.createdAt == rhs.createdAt else { return false } + guard lhs.cooldownDuration == rhs.cooldownDuration else { return false } + guard lhs.createdBy == rhs.createdBy else { return false } + guard lhs.deletedAt == rhs.deletedAt else { return false } + guard lhs.extraData == rhs.extraData else { return false } + guard lhs.imageURL == rhs.imageURL else { return false } + guard lhs.isFrozen == rhs.isFrozen else { return false } + guard lhs.isHidden == rhs.isHidden else { return false } + guard lhs.memberCount == rhs.memberCount else { return false } + guard lhs.membership == rhs.membership else { return false } + guard lhs.team == rhs.team else { return false } + guard lhs.truncatedAt == rhs.truncatedAt else { return false } + guard lhs.ownCapabilities == rhs.ownCapabilities else { return false } + return true } public func hash(into hasher: inout Hasher) { diff --git a/Sources/StreamChat/Models/ChatMessage.swift b/Sources/StreamChat/Models/ChatMessage.swift index 6b86bf28227..948155d79a9 100644 --- a/Sources/StreamChat/Models/ChatMessage.swift +++ b/Sources/StreamChat/Models/ChatMessage.swift @@ -359,29 +359,30 @@ public extension ChatMessage { extension ChatMessage: Hashable { public static func == (lhs: Self, rhs: Self) -> Bool { - lhs.id == rhs.id && - lhs.updatedAt == rhs.updatedAt && - lhs.allAttachments == rhs.allAttachments && - lhs.arguments == rhs.arguments && - lhs.author == rhs.author && - lhs.command == rhs.command && - lhs.currentUserReactionsCount == rhs.currentUserReactionsCount && - lhs.extraData == rhs.extraData && - lhs.isFlaggedByCurrentUser == rhs.isFlaggedByCurrentUser && - lhs.isShadowed == rhs.isShadowed && - lhs.localState == rhs.localState && - lhs.parentMessageId == rhs.parentMessageId && - lhs.quotedMessage == rhs.quotedMessage && - lhs.reactionCounts == rhs.reactionCounts && - lhs.reactionGroups == rhs.reactionGroups && - lhs.reactionScores == rhs.reactionScores && - lhs.readByCount == rhs.readByCount && - lhs.replyCount == rhs.replyCount && - lhs.showReplyInChannel == rhs.showReplyInChannel && - lhs.text == rhs.text && - lhs.threadParticipantsCount == rhs.threadParticipantsCount && - lhs.translations == rhs.translations && - lhs.type == rhs.type + guard lhs.id == rhs.id else { return false } + guard lhs.localState == rhs.localState else { return false } + guard lhs.updatedAt == rhs.updatedAt else { return false } + guard lhs.allAttachments == rhs.allAttachments else { return false } + guard lhs.author == rhs.author else { return false } + guard lhs.currentUserReactionsCount == rhs.currentUserReactionsCount else { return false } + guard lhs.text == rhs.text else { return false } + guard lhs.parentMessageId == rhs.parentMessageId else { return false } + guard lhs.reactionCounts == rhs.reactionCounts else { return false } + guard lhs.reactionGroups == rhs.reactionGroups else { return false } + guard lhs.reactionScores == rhs.reactionScores else { return false } + guard lhs.readByCount == rhs.readByCount else { return false } + guard lhs.replyCount == rhs.replyCount else { return false } + guard lhs.showReplyInChannel == rhs.showReplyInChannel else { return false } + guard lhs.threadParticipantsCount == rhs.threadParticipantsCount else { return false } + guard lhs.arguments == rhs.arguments else { return false } + guard lhs.command == rhs.command else { return false } + guard lhs.extraData == rhs.extraData else { return false } + guard lhs.isFlaggedByCurrentUser == rhs.isFlaggedByCurrentUser else { return false } + guard lhs.isShadowed == rhs.isShadowed else { return false } + guard lhs.quotedMessage == rhs.quotedMessage else { return false } + guard lhs.translations == rhs.translations else { return false } + guard lhs.type == rhs.type else { return false } + return true } public func hash(into hasher: inout Hasher) { From 5ea8062466236edf1f0bf89ca20668a9c38bb563 Mon Sep 17 00:00:00 2001 From: Toomas Vahter Date: Thu, 25 Jul 2024 18:26:20 +0300 Subject: [PATCH 12/24] Improve performance of `ChatChannel` database model conversions ~7 times (#3325) --- CHANGELOG.md | 1 + .../StreamChat/Database/DTOs/ChannelDTO.swift | 101 +++++++++--------- .../Database/DTOs/MemberModelDTO.swift | 11 -- .../StreamChat/Database/DTOs/MessageDTO.swift | 46 ++++---- .../StreamChat/Database/DTOs/UserDTO.swift | 11 -- .../Sorting/ChannelMemberListSortingKey.swift | 5 - .../Query/Sorting/UserListSortingKey.swift | 5 - .../Database/DTOs/ChannelDTO_Tests.swift | 4 +- 8 files changed, 77 insertions(+), 107 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97b7a2326a2..f5765b4f088 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## StreamChat ### ⚡ Performance +- Improve performance of `ChatChannel` database model conversions more than 7 times [#3322](https://github.com/GetStream/stream-chat-swift/pull/3322) - Improve performance of `ChatChannel` and `ChatMessage` equality checks [#3335](https://github.com/GetStream/stream-chat-swift/pull/3335) ### ✅ Added - Expose `MissingConnectionId` + `InvalidURL` + `InvalidJSON` Errors [#3332](https://github.com/GetStream/stream-chat-swift/pull/3332) diff --git a/Sources/StreamChat/Database/DTOs/ChannelDTO.swift b/Sources/StreamChat/Database/DTOs/ChannelDTO.swift index c2817b14c1b..6ed92ee918a 100644 --- a/Sources/StreamChat/Database/DTOs/ChannelDTO.swift +++ b/Sources/StreamChat/Database/DTOs/ChannelDTO.swift @@ -434,70 +434,75 @@ extension ChatChannel { ) extraData = [:] } - + + let sortedMessageDTOs = dto.messages.sorted(by: { $0.createdAt.bridgeDate > $1.createdAt.bridgeDate }) let reads: [ChatChannelRead] = try dto.reads.map { try $0.asModel() } - let unreadCount: ChannelUnreadCount = { - guard let currentUser = context.currentUser else { + guard let currentUserDTO = context.currentUser else { return .noUnread } - - let currentUserRead = reads.first(where: { $0.user.id == currentUser.user.id }) - + let currentUserRead = reads.first(where: { $0.user.id == currentUserDTO.user.id }) let allUnreadMessages = currentUserRead?.unreadMessagesCount ?? 0 - - // Fetch count of all mentioned messages after last read - // (this is not 100% accurate but it's the best we have) - let unreadMentionsRequest = NSFetchRequest(entityName: MessageDTO.entityName) - unreadMentionsRequest.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - MessageDTO.channelMessagesPredicate( - for: dto.cid, - deletedMessagesVisibility: context.deletedMessagesVisibility ?? .visibleForCurrentUser, - shouldShowShadowedMessages: context.shouldShowShadowedMessages ?? false - ), - NSPredicate(format: "createdAt > %@", currentUserRead?.lastReadAt.bridgeDate ?? DBDate(timeIntervalSince1970: 0)), - NSPredicate(format: "%@ IN mentionedUsers", currentUser.user) - ]) - - do { - return ChannelUnreadCount( - messages: allUnreadMessages, - mentions: try context.count(for: unreadMentionsRequest) - ) - } catch { - log.error("Failed to fetch unread counts for channel `\(cid)`. Error: \(error)") + // Therefore, no unread messages with mentions and we can skip the fetch + if allUnreadMessages == 0 { return .noUnread } + let unreadMentionsCount = sortedMessageDTOs + .prefix(allUnreadMessages) + .filter { $0.mentionedUsers.contains(currentUserDTO.user) } + .count + return ChannelUnreadCount( + messages: allUnreadMessages, + mentions: unreadMentionsCount + ) }() - let messages: [ChatMessage] = { - MessageDTO - .load( - for: dto.cid, - limit: dto.managedObjectContext?.localCachingSettings?.chatChannel.latestMessagesLimit ?? 25, - deletedMessagesVisibility: dto.managedObjectContext?.deletedMessagesVisibility ?? .visibleForCurrentUser, - shouldShowShadowedMessages: dto.managedObjectContext?.shouldShowShadowedMessages ?? false, - context: context - ) + let latestMessages: [ChatMessage] = { + var messages = sortedMessageDTOs + .prefix(dto.managedObjectContext?.localCachingSettings?.chatChannel.latestMessagesLimit ?? 25) .compactMap { try? $0.relationshipAsModel(depth: depth) } + if let oldest = dto.oldestMessageAt?.bridgeDate { + messages = messages.filter { $0.createdAt >= oldest } + } + if let truncated = dto.truncatedAt?.bridgeDate { + messages = messages.filter { $0.createdAt >= truncated } + } + return messages }() let latestMessageFromUser: ChatMessage? = { - guard let currentUser = context.currentUser else { return nil } - - return try? MessageDTO - .loadLastMessage( - from: currentUser.user.id, - in: dto.cid, - context: context - )? + guard let currentUserId = context.currentUser?.user.id else { return nil } + return try? sortedMessageDTOs + .first(where: { messageDTO in + guard messageDTO.user.id == currentUserId else { return false } + guard messageDTO.localMessageState == nil else { return false } + return messageDTO.type != MessageType.ephemeral.rawValue + })? .relationshipAsModel(depth: depth) }() - - let watchers = UserDTO.loadLastActiveWatchers(cid: cid, context: context) + + let watchers = dto.watchers + .sorted { lhs, rhs in + let lhsActivity = lhs.lastActivityAt?.bridgeDate ?? .distantPast + let rhsActivity = rhs.lastActivityAt?.bridgeDate ?? .distantPast + if lhsActivity == rhsActivity { + return lhs.id > rhs.id + } + return lhsActivity > rhsActivity + } + .prefix(context.localCachingSettings?.chatChannel.lastActiveWatchersLimit ?? 100) .compactMap { try? $0.asModel() } - let members = MemberDTO.loadLastActiveMembers(cid: cid, context: context) + let members = dto.members + .sorted { lhs, rhs in + let lhsActivity = lhs.user.lastActivityAt?.bridgeDate ?? .distantPast + let rhsActivity = rhs.user.lastActivityAt?.bridgeDate ?? .distantPast + if lhsActivity == rhsActivity { + return lhs.id > rhs.id + } + return lhsActivity > rhsActivity + } + .prefix(context.localCachingSettings?.chatChannel.lastActiveMembersLimit ?? 100) .compactMap { try? $0.asModel() } let muteDetails: MuteDetails? = { @@ -539,7 +544,7 @@ extension ChatChannel { reads: reads, cooldownDuration: Int(dto.cooldownDuration), extraData: extraData, - latestMessages: messages, + latestMessages: latestMessages, lastMessageFromCurrentUser: latestMessageFromUser, pinnedMessages: pinnedMessages, muteDetails: muteDetails, diff --git a/Sources/StreamChat/Database/DTOs/MemberModelDTO.swift b/Sources/StreamChat/Database/DTOs/MemberModelDTO.swift index f9f58da5d09..d869a6e8c4f 100644 --- a/Sources/StreamChat/Database/DTOs/MemberModelDTO.swift +++ b/Sources/StreamChat/Database/DTOs/MemberModelDTO.swift @@ -92,17 +92,6 @@ extension MemberDTO { new.id = memberId return new } - - static func loadLastActiveMembers(cid: ChannelId, context: NSManagedObjectContext) -> [MemberDTO] { - let request = NSFetchRequest(entityName: MemberDTO.entityName) - request.predicate = NSPredicate(format: "channel.cid == %@", cid.rawValue) - request.sortDescriptors = [ - ChannelMemberListSortingKey.lastActiveSortDescriptor, - ChannelMemberListSortingKey.defaultSortDescriptor - ] - request.fetchLimit = context.localCachingSettings?.chatChannel.lastActiveMembersLimit ?? 100 - return load(by: request, context: context) - } } extension NSManagedObjectContext { diff --git a/Sources/StreamChat/Database/DTOs/MessageDTO.swift b/Sources/StreamChat/Database/DTOs/MessageDTO.swift index 853b6ec1ef1..81b05497ff1 100644 --- a/Sources/StreamChat/Database/DTOs/MessageDTO.swift +++ b/Sources/StreamChat/Database/DTOs/MessageDTO.swift @@ -516,19 +516,6 @@ class MessageDTO: NSManagedObject { return (try? context.count(for: request)) ?? 0 } - static func loadLastMessage(from userId: String, in cid: String, context: NSManagedObjectContext) -> MessageDTO? { - let request = NSFetchRequest(entityName: entityName) - request.predicate = NSCompoundPredicate(andPredicateWithSubpredicates: [ - channelPredicate(with: cid), - .init(format: "user.id == %@", userId), - .init(format: "type != %@", MessageType.ephemeral.rawValue), - messageSentPredicate() - ]) - request.sortDescriptors = [NSSortDescriptor(keyPath: \MessageDTO.createdAt, ascending: false)] - request.fetchLimit = 1 - return load(by: request, context: context).first - } - static func loadSendingMessages(context: NSManagedObjectContext) -> [MessageDTO] { let request = NSFetchRequest(entityName: MessageDTO.entityName) request.sortDescriptors = [NSSortDescriptor(keyPath: \MessageDTO.locallyCreatedAt, ascending: false)] @@ -1309,21 +1296,28 @@ private extension ChatMessage { if let currentUser = context.currentUser { isSentByCurrentUser = currentUser.user.id == dto.user.id - currentUserReactions = Set( - MessageReactionDTO - .loadReactions(ids: dto.ownReactions, context: context) - .compactMap { try? $0.asModel() } - ) + if !dto.ownReactions.isEmpty { + currentUserReactions = Set( + MessageReactionDTO + .loadReactions(ids: dto.ownReactions, context: context) + .compactMap { try? $0.asModel() } + ) + } else { + currentUserReactions = [] + } } else { isSentByCurrentUser = false currentUserReactions = [] } - latestReactions = Set( - MessageReactionDTO - .loadReactions(ids: dto.latestReactions, context: context) - .compactMap { try? $0.asModel() } - ) + latestReactions = { + guard !dto.latestReactions.isEmpty else { return Set() } + return Set( + MessageReactionDTO + .loadReactions(ids: dto.latestReactions, context: context) + .compactMap { try? $0.asModel() } + ) + }() threadParticipants = dto.threadParticipants.array .compactMap { $0 as? UserDTO } @@ -1337,8 +1331,10 @@ private extension ChatMessage { .sorted { $0.id.index < $1.id.index } latestReplies = { - guard !dto.replies.isEmpty else { return [] } - return MessageDTO.loadReplies(for: dto.id, limit: 5, context: context) + guard dto.replyCount > 0 else { return [] } + return dto.replies + .sorted(by: { $0.createdAt.bridgeDate > $1.createdAt.bridgeDate }) + .prefix(5) .compactMap { try? ChatMessage(fromDTO: $0, depth: depth) } }() diff --git a/Sources/StreamChat/Database/DTOs/UserDTO.swift b/Sources/StreamChat/Database/DTOs/UserDTO.swift index 2d6430c30ad..483fe21e457 100644 --- a/Sources/StreamChat/Database/DTOs/UserDTO.swift +++ b/Sources/StreamChat/Database/DTOs/UserDTO.swift @@ -115,17 +115,6 @@ extension UserDTO { new.teams = [] return new } - - static func loadLastActiveWatchers(cid: ChannelId, context: NSManagedObjectContext) -> [UserDTO] { - let request = NSFetchRequest(entityName: UserDTO.entityName) - request.sortDescriptors = [ - UserListSortingKey.lastActiveSortDescriptor, - UserListSortingKey.defaultSortDescriptor - ] - request.predicate = NSPredicate(format: "ANY watchedChannels.cid == %@", cid.rawValue) - request.fetchLimit = context.localCachingSettings?.chatChannel.lastActiveWatchersLimit ?? 100 - return load(by: request, context: context) - } } extension NSManagedObjectContext: UserDatabaseSession { diff --git a/Sources/StreamChat/Query/Sorting/ChannelMemberListSortingKey.swift b/Sources/StreamChat/Query/Sorting/ChannelMemberListSortingKey.swift index 1125b4a01e3..9ccfb8ade38 100644 --- a/Sources/StreamChat/Query/Sorting/ChannelMemberListSortingKey.swift +++ b/Sources/StreamChat/Query/Sorting/ChannelMemberListSortingKey.swift @@ -33,11 +33,6 @@ extension ChannelMemberListSortingKey { return .init(keyPath: dateKeyPath, ascending: false) }() - static let lastActiveSortDescriptor: NSSortDescriptor = { - let dateKeyPath: KeyPath = \MemberDTO.user.lastActivityAt - return .init(keyPath: dateKeyPath, ascending: false) - }() - func sortDescriptor(isAscending: Bool) -> NSSortDescriptor { .init(key: rawValue, ascending: isAscending) } diff --git a/Sources/StreamChat/Query/Sorting/UserListSortingKey.swift b/Sources/StreamChat/Query/Sorting/UserListSortingKey.swift index 4237ccdea03..9b618c5a13c 100644 --- a/Sources/StreamChat/Query/Sorting/UserListSortingKey.swift +++ b/Sources/StreamChat/Query/Sorting/UserListSortingKey.swift @@ -39,11 +39,6 @@ extension UserListSortingKey { return .init(keyPath: stringKeyPath, ascending: false) }() - static let lastActiveSortDescriptor: NSSortDescriptor = { - let dateKeyPath: KeyPath = \UserDTO.lastActivityAt - return .init(keyPath: dateKeyPath, ascending: false) - }() - func sortDescriptor(isAscending: Bool) -> NSSortDescriptor? { .init(key: rawValue, ascending: isAscending) } diff --git a/Tests/StreamChatTests/Database/DTOs/ChannelDTO_Tests.swift b/Tests/StreamChatTests/Database/DTOs/ChannelDTO_Tests.swift index 3721b639345..d685b17d7e5 100644 --- a/Tests/StreamChatTests/Database/DTOs/ChannelDTO_Tests.swift +++ b/Tests/StreamChatTests/Database/DTOs/ChannelDTO_Tests.swift @@ -1322,7 +1322,7 @@ final class ChannelDTO_Tests: XCTestCase { XCTAssertEqual(channel.unreadCount.messages, 0) } - func test_asModel_populatesLatestMessage() throws { + func test_asModel_populatesLatestMessage_withoutFilteringDeletedMessages() throws { // GIVEN database = DatabaseContainer_Spy( kind: .inMemory, @@ -1411,7 +1411,7 @@ final class ChannelDTO_Tests: XCTestCase { // THEN XCTAssertEqual( Set(channel.latestMessages.map(\.id)), - Set([message1.id, deletedMessageFromCurrentUser.id, shadowedMessageFromAnotherUser.id]) + Set([message1.id, deletedMessageFromCurrentUser.id, deletedMessageFromAnotherUser.id]) ) } From 95ee5568da82727f3e1543995e38fd8c29bc215e Mon Sep 17 00:00:00 2001 From: Toomas Vahter Date: Fri, 26 Jul 2024 13:38:23 +0300 Subject: [PATCH 13/24] Add environment value for injecting logging level for development purposes (#3337) --- DemoApp/StreamChat/StreamChatWrapper+DemoApp.swift | 2 +- DemoApp/StreamRuntimeCheck+StreamInternal.swift | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/DemoApp/StreamChat/StreamChatWrapper+DemoApp.swift b/DemoApp/StreamChat/StreamChatWrapper+DemoApp.swift index 961581b92cc..f59bf755a34 100644 --- a/DemoApp/StreamChat/StreamChatWrapper+DemoApp.swift +++ b/DemoApp/StreamChat/StreamChatWrapper+DemoApp.swift @@ -14,7 +14,7 @@ extension StreamChatWrapper { } // Set the log level - LogConfig.level = .warning + LogConfig.level = StreamRuntimeCheck.logLevel ?? .warning LogConfig.formatters = [ PrefixLogFormatter(prefixes: [.info: "ℹ️", .debug: "🛠", .warning: "⚠️", .error: "🚨"]) ] diff --git a/DemoApp/StreamRuntimeCheck+StreamInternal.swift b/DemoApp/StreamRuntimeCheck+StreamInternal.swift index 5da00f0062c..32de841931d 100644 --- a/DemoApp/StreamRuntimeCheck+StreamInternal.swift +++ b/DemoApp/StreamRuntimeCheck+StreamInternal.swift @@ -9,4 +9,10 @@ extension StreamRuntimeCheck { static var isStreamInternalConfiguration: Bool { ProcessInfo.processInfo.environment["STREAM_DEV"] != nil } + + static var logLevel: LogLevel? { + guard let value = ProcessInfo.processInfo.environment["STREAM_LOG_LEVEL"] else { return nil } + guard let intValue = Int(value) else { return nil } + return LogLevel(rawValue: intValue) + } } From ead44a722bedcd6df072e2860f9704241215c751 Mon Sep 17 00:00:00 2001 From: Toomas Vahter Date: Mon, 29 Jul 2024 16:58:08 +0300 Subject: [PATCH 14/24] Fix a rare issue with incorrect message order when sending messages offline (#3316) --- CHANGELOG.md | 2 + Sources/StreamChat/ChatClient.swift | 16 ++ .../Database/DTOs/QueuedRequestDTO.swift | 4 + .../StreamChat/Database/DatabaseSession.swift | 1 + .../Repositories/MessageRepository.swift | 46 +++++- .../OfflineRequestsRepository.swift | 144 ++++++++++++++---- .../Repositories/SyncRepository.swift | 10 +- Sources/StreamChat/StateLayer/Chat.swift | 17 --- .../Workers/Background/MessageSender.swift | 79 ++++++---- .../Database/DatabaseSession_Mock.swift | 4 + .../SpyPattern/Spy/APIClient_Spy.swift | 11 ++ .../OfflineRequestsRepository_Tests.swift | 54 ++++++- .../Background/MessageSender_Tests.swift | 82 ++++++++++ 13 files changed, 386 insertions(+), 84 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f5765b4f088..da0de47d694 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Improve performance of `ChatChannel` and `ChatMessage` equality checks [#3335](https://github.com/GetStream/stream-chat-swift/pull/3335) ### ✅ Added - Expose `MissingConnectionId` + `InvalidURL` + `InvalidJSON` Errors [#3332](https://github.com/GetStream/stream-chat-swift/pull/3332) +### 🐞 Fixed +- Fix a rare issue with incorrect message order when sending multiple messages while offline [#3316](https://github.com/GetStream/stream-chat-swift/issues/3316) # [4.60.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.60.0) _July 18, 2024_ diff --git a/Sources/StreamChat/ChatClient.swift b/Sources/StreamChat/ChatClient.swift index 3a91fe5ec46..c38b82bd560 100644 --- a/Sources/StreamChat/ChatClient.swift +++ b/Sources/StreamChat/ChatClient.swift @@ -660,6 +660,7 @@ extension ChatClient: ConnectionStateDelegate { } ) connectionRecoveryHandler?.webSocketClient(client, didUpdateConnectionState: state) + try? backgroundWorker(of: MessageSender.self).didUpdateConnectionState(state) } } @@ -674,6 +675,21 @@ extension ChatClient: ConnectionDetailsProviderDelegate { } } +extension ChatClient { + func backgroundWorker(of type: T.Type) throws -> T { + if let worker = backgroundWorkers.compactMap({ $0 as? T }).first { + return worker + } + if currentUserId == nil { + throw ClientError.CurrentUserDoesNotExist() + } + if !config.isClientInActiveMode { + throw ClientError.ClientIsNotInActiveMode() + } + throw ClientError("Background worker of type \(T.self) is not set up") + } +} + extension ClientError { public final class MissingLocalStorageURL: ClientError { override public var localizedDescription: String { "The URL provided in ChatClientConfig is `nil`." } diff --git a/Sources/StreamChat/Database/DTOs/QueuedRequestDTO.swift b/Sources/StreamChat/Database/DTOs/QueuedRequestDTO.swift index 16531e3eb07..1c6fe0dc214 100644 --- a/Sources/StreamChat/Database/DTOs/QueuedRequestDTO.swift +++ b/Sources/StreamChat/Database/DTOs/QueuedRequestDTO.swift @@ -39,6 +39,10 @@ class QueuedRequestDTO: NSManagedObject { } extension NSManagedObjectContext: QueuedRequestDatabaseSession { + func allQueuedRequests() -> [QueuedRequestDTO] { + QueuedRequestDTO.loadAllPendingRequests(context: self) + } + func deleteQueuedRequest(id: String) { guard let request = QueuedRequestDTO.load(id: id, context: self) else { return } delete(request) diff --git a/Sources/StreamChat/Database/DatabaseSession.swift b/Sources/StreamChat/Database/DatabaseSession.swift index efbeb3994a0..6fcc6401993 100644 --- a/Sources/StreamChat/Database/DatabaseSession.swift +++ b/Sources/StreamChat/Database/DatabaseSession.swift @@ -393,6 +393,7 @@ protocol AttachmentDatabaseSession { } protocol QueuedRequestDatabaseSession { + func allQueuedRequests() -> [QueuedRequestDTO] func deleteQueuedRequest(id: String) } diff --git a/Sources/StreamChat/Repositories/MessageRepository.swift b/Sources/StreamChat/Repositories/MessageRepository.swift index 77593ead67d..60f9046a047 100644 --- a/Sources/StreamChat/Repositories/MessageRepository.swift +++ b/Sources/StreamChat/Repositories/MessageRepository.swift @@ -88,6 +88,47 @@ class MessageRepository { }) } } + + /// Marks the message's local status to failed and adds it to the offline retry which sends the message when connection comes back. + func scheduleOfflineRetry(for messageId: MessageId, completion: @escaping (Result) -> Void) { + var dataEndpoint: DataEndpoint! + var messageModel: ChatMessage! + database.write { session in + guard let dto = session.message(id: messageId) else { + throw MessageRepositoryError.messageDoesNotExist + } + guard let channelDTO = dto.channel, let cid = try? ChannelId(cid: channelDTO.cid) else { + throw MessageRepositoryError.messageDoesNotHaveValidChannel + } + + // Send the message to offline handling + let requestBody = dto.asRequestBody() as MessageRequestBody + let endpoint: Endpoint = .sendMessage( + cid: cid, + messagePayload: requestBody, + skipPush: dto.skipPush, + skipEnrichUrl: dto.skipEnrichUrl + ) + dataEndpoint = endpoint.withDataResponse + + // Mark it as failed + dto.localMessageState = .sendingFailed + messageModel = try dto.asModel() + } completion: { [weak self] writeError in + if let writeError { + switch writeError { + case let repositoryError as MessageRepositoryError: + completion(.failure(repositoryError)) + default: + completion(.failure(.failedToSendMessage(writeError))) + } + return + } + // Offline repository will send it when connection comes back on, until then we show the message as failed + self?.apiClient.queueOfflineRequest?(dataEndpoint.withDataResponse) + completion(.success(messageModel)) + } + } func saveSuccessfullySentMessage( cid: ChannelId, @@ -126,11 +167,12 @@ class MessageRepository { // error code for duplicated messages. let isDuplicatedMessageError = errorPayload.code == 4 && errorPayload.message.contains("already exists") if isDuplicatedMessageError { - database.write { + database.write({ let messageDTO = $0.message(id: messageId) messageDTO?.markMessageAsSent() + }, completion: { _ in completion(.failure(.failedToSendMessage(error))) - } + }) return } } diff --git a/Sources/StreamChat/Repositories/OfflineRequestsRepository.swift b/Sources/StreamChat/Repositories/OfflineRequestsRepository.swift index 4a5755f2c63..62adbb24e41 100644 --- a/Sources/StreamChat/Repositories/OfflineRequestsRepository.swift +++ b/Sources/StreamChat/Repositories/OfflineRequestsRepository.swift @@ -2,6 +2,7 @@ // Copyright © 2024 Stream.io Inc. All rights reserved. // +import CoreData import Foundation typealias QueueOfflineRequestBlock = (DataEndpoint) -> Void @@ -51,24 +52,100 @@ class OfflineRequestsRepository { /// - If the request fails with a connection error -> The request is kept to be executed once the connection is back (we are not putting it back at the queue to make sure we respect the order) /// - If the request fails with any other error -> We are dismissing the request, and removing it from the queue func runQueuedRequests(completion: @escaping () -> Void) { - let readContext = database.backgroundReadOnlyContext - readContext.perform { [weak self] in - let requests = QueuedRequestDTO.loadAllPendingRequests(context: readContext).map { - ($0.id, $0.endpoint, $0.date as Date) + database.read { session in + let dtos = session.allQueuedRequests() + var requests = [Request]() + requests.reserveCapacity(dtos.count) + var requestIdsToDelete = Set() + let currentDate = Date() + + for dto in dtos { + let id = dto.id + let endpointData = dto.endpoint + let date = dto.date.bridgeDate + + // Is valid + guard let endpoint = try? JSONDecoder.stream.decode(DataEndpoint.self, from: endpointData) else { + log.error("Could not decode queued request \(id)", subsystems: .offlineSupport) + requestIdsToDelete.insert(dto.id) + continue + } + + // Is expired + let hoursQueued = currentDate.timeIntervalSince(date) / Constants.secondsInHour + let shouldBeDiscarded = hoursQueued > Double(self.maxHoursThreshold) + guard endpoint.shouldBeQueuedOffline && !shouldBeDiscarded else { + log.error("Queued request for /\(endpoint.path.value) should not be queued", subsystems: .offlineSupport) + requestIdsToDelete.insert(dto.id) + continue + } + requests.append(Request(id: id, date: date, endpoint: endpoint)) + } + + // Out of valid requests, merge send message requests for the same id + let sendMessageIdGroups = Dictionary(grouping: requests, by: { $0.sendMessageId }) + var mergedRequests = [Request]() + mergedRequests.reserveCapacity(requests.count) + for request in requests { + if let sendMessageId = request.sendMessageId { + // Is it already merged into another + if requestIdsToDelete.contains(request.id) { + continue + } + if let duplicates = sendMessageIdGroups[sendMessageId], duplicates.count >= 2 { + // Coalesce send message requests in a way that we use the latest endpoint data + // because the message could have changed when there was a manual retry + let sortedDuplicates = duplicates.sorted(by: { $0.date < $1.date }) + let earliest = sortedDuplicates.first! + let latest = sortedDuplicates.last! + mergedRequests.append(Request(id: earliest.id, date: earliest.date, endpoint: latest.endpoint)) + // All the others should be deleted + requestIdsToDelete.formUnion(duplicates.dropFirst().map(\.id)) + } else { + mergedRequests.append(request) + } + } else { + mergedRequests.append(request) + } } - DispatchQueue.main.async { - self?.executeRequests(requests, completion: completion) + log.info("\(mergedRequests.count) pending offline requests (coalesced = \(requests.count - mergedRequests.count)", subsystems: .offlineSupport) + return (requests: mergedRequests, deleteIds: requestIdsToDelete) + } completion: { [weak self] result in + switch result { + case .success(let pair): + self?.deleteRequests(with: pair.deleteIds, completion: { + self?.retryQueue.async { + self?.executeRequests(pair.requests, completion: completion) + } + }) + case .failure(let error): + log.error("Failed to read queued requests with error \(error.localizedDescription)", subsystems: .offlineSupport) + completion() } } } - - private func executeRequests(_ requests: [(String, Data, Date)], completion: @escaping () -> Void) { - log.info("\(requests.count) pending offline requests", subsystems: .offlineSupport) - + + private func deleteRequests(with ids: Set, completion: @escaping () -> Void) { + guard !ids.isEmpty else { + completion() + return + } + database.write { session in + for id in ids { + session.deleteQueuedRequest(id: id) + } + } completion: { _ in + completion() + } + } + + private func executeRequests(_ requests: [Request], completion: @escaping () -> Void) { let database = self.database - let currentDate = Date() let group = DispatchGroup() - for (id, endpoint, date) in requests { + for request in requests { + let id = request.id + let endpoint = request.endpoint + group.enter() let leave = { group.leave() @@ -79,21 +156,6 @@ class OfflineRequestsRepository { }, completion: { _ in leave() }) } - guard let endpoint = try? JSONDecoder.stream.decode(DataEndpoint.self, from: endpoint) else { - log.error("Could not decode queued request \(id)", subsystems: .offlineSupport) - deleteQueuedRequestAndComplete() - continue - } - - let hoursQueued = currentDate.timeIntervalSince(date) / Constants.secondsInHour - let shouldBeDiscarded = hoursQueued > Double(maxHoursThreshold) - - guard endpoint.shouldBeQueuedOffline && !shouldBeDiscarded else { - log.error("Queued request for /\(endpoint.path.value) should not be queued", subsystems: .offlineSupport) - deleteQueuedRequestAndComplete() - continue - } - log.info("Executing queued offline request for /\(endpoint.path)", subsystems: .offlineSupport) apiClient.recoveryRequest(endpoint: endpoint) { [weak self] result in log.info("Completed queued offline request /\(endpoint.path)", subsystems: .offlineSupport) @@ -177,8 +239,36 @@ class OfflineRequestsRepository { database.write { _ in QueuedRequestDTO.createRequest(date: date, endpoint: data, context: database.writableContext) log.info("Queued request for /\(endpoint.path)", subsystems: .offlineSupport) + } completion: { _ in completion?() } } } } + +private extension OfflineRequestsRepository { + struct Request { + let id: String + let date: Date + let endpoint: DataEndpoint + let sendMessageId: MessageId? + + init(id: String, date: Date, endpoint: DataEndpoint) { + self.id = id + self.date = date + self.endpoint = endpoint + + sendMessageId = { + switch endpoint.path { + case .sendMessage: + guard let bodyData = endpoint.body as? Data else { return nil } + guard let json = try? JSONSerialization.jsonObject(with: bodyData) as? [String: Any] else { return nil } + guard let message = json["message"] as? [String: Any] else { return nil } + return message["id"] as? String + default: + return nil + } + }() + } + } +} diff --git a/Sources/StreamChat/Repositories/SyncRepository.swift b/Sources/StreamChat/Repositories/SyncRepository.swift index 19ad3d932c9..328d424bb67 100644 --- a/Sources/StreamChat/Repositories/SyncRepository.swift +++ b/Sources/StreamChat/Repositories/SyncRepository.swift @@ -132,6 +132,11 @@ class SyncRepository { // Enter recovery mode so no other requests are triggered. apiClient.enterRecoveryMode() + // Run offline actions requests as the first thing + if config.isLocalStorageEnabled { + operations.append(ExecutePendingOfflineActions(offlineRequestsRepository: offlineRequestsRepository)) + } + // Get the existing channelIds let activeChannelIds = activeChannelControllers.allObjects.compactMap(\.cid) operations.append(GetChannelIdsOperation(database: database, context: context, activeChannelIds: activeChannelIds)) @@ -176,11 +181,6 @@ class SyncRepository { // 4. Clean up unwanted channels operations.append(DeleteUnwantedChannelsOperation(database: database, context: context)) - // 5. Run offline actions requests - if config.isLocalStorageEnabled { - operations.append(ExecutePendingOfflineActions(offlineRequestsRepository: offlineRequestsRepository)) - } - operations.append(BlockOperation(block: { [weak self] in log.info("Finished recovering offline state", subsystems: .offlineSupport) DispatchQueue.main.async { diff --git a/Sources/StreamChat/StateLayer/Chat.swift b/Sources/StreamChat/StateLayer/Chat.swift index 90c79f413dc..71a6c51f18c 100644 --- a/Sources/StreamChat/StateLayer/Chat.swift +++ b/Sources/StreamChat/StateLayer/Chat.swift @@ -1418,20 +1418,3 @@ extension Chat { ) -> TypingEventsSender = TypingEventsSender.init } } - -// MARK: - Chat Client - -private extension ChatClient { - func backgroundWorker(of type: T.Type) throws -> T { - if let worker = backgroundWorkers.compactMap({ $0 as? T }).first { - return worker - } - if currentUserId == nil { - throw ClientError.CurrentUserDoesNotExist() - } - if !config.isClientInActiveMode { - throw ClientError.ClientIsNotInActiveMode() - } - throw ClientError("Background worker of type \(T.self) is not set up") - } -} diff --git a/Sources/StreamChat/Workers/Background/MessageSender.swift b/Sources/StreamChat/Workers/Background/MessageSender.swift index e600e2b8cae..af6d12fbb6b 100644 --- a/Sources/StreamChat/Workers/Background/MessageSender.swift +++ b/Sources/StreamChat/Workers/Background/MessageSender.swift @@ -14,10 +14,7 @@ import Foundation /// 3. When the message is being sent, its local state is changed to `.sending` /// 4. If the operation is successful, the local state of the message is changed to `nil`. If the operation fails, the local /// state of is changed to `sendingFailed`. -/// -// TODO: -/// - Message send retry -/// - Start sending messages when connection status changes (offline -> online) +/// 5. When connection errors happen, all the queued messages are sent to offline retry which retries them one by one. /// class MessageSender: Worker { /// Because we need to be sure messages for every channel are sent in the correct order, we create a sending queue for @@ -117,6 +114,15 @@ class MessageSender: Worker { } } } + + func didUpdateConnectionState(_ state: WebSocketConnectionState) { + guard state.isConnected else { return } + sendingDispatchQueue.async { [weak self] in + self?.sendingQueueByCid.forEach { _, messageQueue in + messageQueue.webSocketConnected() + } + } + } } // MARK: - Chat State Layer @@ -170,6 +176,7 @@ private class MessageSendingQueue { /// We use Set because the message Id is the main identifier. Thanks to this, it's possible to schedule message for sending /// multiple times without having to worry about that. @Atomic private(set) var requests: Set = [] + @Atomic private var isWaitingForConnection = false /// Schedules sending of the message. All already scheduled messages with `createdLocallyAt` older than these ones will /// be sent first. @@ -184,37 +191,57 @@ private class MessageSendingQueue { sendNextMessage() } } + + func webSocketConnected() { + guard isWaitingForConnection else { return } + isWaitingForConnection = false + log.debug("Message sender resumed sending messages after establishing internet connection") + sendNextMessage() + } + private var sortedQueuedRequests: [SendRequest] { + requests.sorted(by: { $0.createdLocallyAt < $1.createdLocallyAt }) + } + /// Gets the oldest message from the queue and tries to send it. private func sendNextMessage() { dispatchQueue.async { [weak self] in - // Sort the messages and send the oldest one - // If this proves to be a bottleneck in the future, we might - // switch to using a custom `OrderedSet` - guard let request = self?.requests.sorted(by: { $0.createdLocallyAt < $1.createdLocallyAt }).first else { return } - - self?.messageRepository.sendMessage(with: request.messageId) { [weak self] result in - guard let self else { return } - self.removeRequestAndContinue(request) - if let error = result.error { - switch error { - case .messageDoesNotExist, - .messageNotPendingSend, - .messageDoesNotHaveValidChannel: - let event = NewMessageErrorEvent(messageId: request.messageId, error: error) - self.eventsNotificationCenter.process(event) - case let .failedToSendMessage(error): - let event = NewMessageErrorEvent(messageId: request.messageId, error: error) - self.eventsNotificationCenter.process(event) - } + guard let self else { return } + guard let request = self.sortedQueuedRequests.first else { return } + + if self.isWaitingForConnection { + self.messageRepository.scheduleOfflineRetry(for: request.messageId) { [weak self] _ in + self?._requests.mutate { $0.remove(request) } + self?.sendNextMessage() + } + } else { + self.messageRepository.sendMessage(with: request.messageId) { [weak self] result in + self?.handleSendMessageResult(request, result: result) } - self.delegate?.messageSendingQueue(self, didProcess: request.messageId, result: result) } } } - - private func removeRequestAndContinue(_ request: SendRequest) { + + private func handleSendMessageResult(_ request: SendRequest, result: Result) { _requests.mutate { $0.remove(request) } + + if let repositoryError = result.error { + switch repositoryError { + case .messageDoesNotExist, .messageNotPendingSend, .messageDoesNotHaveValidChannel: + let event = NewMessageErrorEvent(messageId: request.messageId, error: repositoryError) + eventsNotificationCenter.process(event) + case .failedToSendMessage(let clientError): + let event = NewMessageErrorEvent(messageId: request.messageId, error: clientError) + eventsNotificationCenter.process(event) + + if ClientError.isEphemeral(error: clientError) { + // We hit a connection error, therefore all the remaining and upcoming requests should be scheduled for keeping the order + isWaitingForConnection = true + log.debug("Message sender started waiting for connection and forwarding messages to offline requests queue") + } + } + } + delegate?.messageSendingQueue(self, didProcess: request.messageId, result: result) sendNextMessage() } } diff --git a/TestTools/StreamChatTestTools/Mocks/StreamChat/Database/DatabaseSession_Mock.swift b/TestTools/StreamChatTestTools/Mocks/StreamChat/Database/DatabaseSession_Mock.swift index e3a35438ce3..9a04f23457f 100644 --- a/TestTools/StreamChatTestTools/Mocks/StreamChat/Database/DatabaseSession_Mock.swift +++ b/TestTools/StreamChatTestTools/Mocks/StreamChat/Database/DatabaseSession_Mock.swift @@ -360,6 +360,10 @@ class DatabaseSession_Mock: DatabaseSession { func saveQuery(query: MessageSearchQuery) -> MessageSearchQueryDTO { underlyingSession.saveQuery(query: query) } + + func allQueuedRequests() -> [QueuedRequestDTO] { + underlyingSession.allQueuedRequests() + } func deleteQueuedRequest(id: String) { underlyingSession.deleteQueuedRequest(id: id) diff --git a/TestTools/StreamChatTestTools/SpyPattern/Spy/APIClient_Spy.swift b/TestTools/StreamChatTestTools/SpyPattern/Spy/APIClient_Spy.swift index a2a7bd4f843..dd6bd131282 100644 --- a/TestTools/StreamChatTestTools/SpyPattern/Spy/APIClient_Spy.swift +++ b/TestTools/StreamChatTestTools/SpyPattern/Spy/APIClient_Spy.swift @@ -23,6 +23,7 @@ final class APIClient_Spy: APIClient, Spy { /// The last endpoint `recoveryRequest` function was called with. @Atomic var recoveryRequest_endpoint: AnyEndpoint? @Atomic var recoveryRequest_completion: Any? + @Atomic var recoveryRequest_results: [Any] = [] @Atomic var recoveryRequest_allRecordedCalls: [(endpoint: AnyEndpoint, completion: Any?)] = [] /// The last endpoint `unmanagedRequest` function was called with. @@ -53,6 +54,7 @@ final class APIClient_Spy: APIClient, Spy { request_completion = nil request_results = [] request_expectation = .init() + recoveryRequest_results = [] recoveryRequest_expectation = .init() uploadRequest_expectation = .init() @@ -104,6 +106,10 @@ final class APIClient_Spy: APIClient, Spy { func test_mockResponseResult(_ responseResult: Result) { request_results.append(responseResult) } + + func test_mockRecoveryResponseResult(_ responseResult: Result) { + recoveryRequest_results.append(responseResult) + } func test_mockUnmanagedResponseResult(_ responseResult: Result) { unmanagedRequest_result = responseResult @@ -129,6 +135,10 @@ final class APIClient_Spy: APIClient, Spy { completion: @escaping (Result) -> Void ) where Response: Decodable { recoveryRequest_endpoint = AnyEndpoint(endpoint) + if let resultIndex = recoveryRequest_results.firstIndex(where: { $0 is Result }) { + let result = recoveryRequest_results.remove(at: resultIndex) + completion(result as! Result) + } recoveryRequest_completion = completion _recoveryRequest_allRecordedCalls.mutate { $0.append((recoveryRequest_endpoint!, recoveryRequest_completion!)) } } @@ -166,6 +176,7 @@ final class APIClient_Spy: APIClient, Spy { @discardableResult func waitForRequest(timeout: Double = defaultTimeout) -> AnyEndpoint? { XCTWaiter().wait(for: [request_expectation], timeout: timeout) + request_expectation = XCTestExpectation() return request_endpoint } diff --git a/Tests/StreamChatTests/Repositories/OfflineRequestsRepository_Tests.swift b/Tests/StreamChatTests/Repositories/OfflineRequestsRepository_Tests.swift index 250cec361c1..deb7085a411 100644 --- a/Tests/StreamChatTests/Repositories/OfflineRequestsRepository_Tests.swift +++ b/Tests/StreamChatTests/Repositories/OfflineRequestsRepository_Tests.swift @@ -315,20 +315,34 @@ final class OfflineRequestsRepository_Tests: XCTestCase { XCTAssertEqual(pendingRequests.count, 0) } - private func createSendMessageRequests(count: Int, date: Date = Date()) throws { + private func createSendMessageRequests(count: Int, date: Date = Date().addingTimeInterval(-3600)) throws { try (1...count).forEach { - let id = "request\($0)" - try self.createRequest( - id: id, - path: .sendMessage(.init(type: .messaging, id: id)), - body: ["some\($0)": 123], - date: date + try createSendMessageRequest( + requestIdNumber: $0, + messageIdNumber: $0, + date: date.addingTimeInterval(TimeInterval($0)) ) } let allRequests = QueuedRequestDTO.loadAllPendingRequests(context: database.viewContext) XCTAssertEqual(allRequests.count, count) } + + private func createSendMessageRequest(requestIdNumber: Int, messageIdNumber: Int, date: Date) throws { + let id = "request\(requestIdNumber)" + let messageId = "message\(messageIdNumber)" + let requestBody = MessageRequestBody(id: messageId, user: .dummy(userId: .unique), text: .unique, extraData: [:]) + let endpoint: Endpoint = .sendMessage( + cid: .init(type: .messaging, id: id), + messagePayload: requestBody, + skipPush: false, + skipEnrichUrl: false + ) + let endpointData: Data = try JSONEncoder.stream.encode(endpoint.withDataResponse) + try database.writeSynchronously { _ in + QueuedRequestDTO.createRequest(id: id, date: date, endpoint: endpointData, context: self.database.writableContext) + } + } private func createRequest(id: String, path: EndpointPath, body: Encodable? = nil, date: Date = Date()) throws { let endpoint = Endpoint( @@ -382,4 +396,30 @@ final class OfflineRequestsRepository_Tests: XCTestCase { waitForExpectations(timeout: defaultTimeout, handler: nil) XCTAssertCall("write(_:completion:)", on: database, times: 1) } + + func test_queueOfflineRequestsMultipleTimesThenDuplicateSendMessageRequestsAreCoalesced() throws { + try createSendMessageRequests(count: 5) // 1...5 + // Duplicate second and forth + try createSendMessageRequest(requestIdNumber: 6, messageIdNumber: 2, date: Date()) + try createSendMessageRequest(requestIdNumber: 7, messageIdNumber: 4, date: Date()) + + // 5 successful responses, 2 should never end up here because these should be coalesced + for _ in 0..<5 { + apiClient.test_mockRecoveryResponseResult(Result.success(Data())) + } + + let expectation = XCTestExpectation(description: "Run") + repository.runQueuedRequests { + expectation.fulfill() + } + + // When failure happens then request merging did not work + wait(for: [expectation], timeout: defaultTimeout) + + // Validate that all the requests are cleaned up + try database.readSynchronously { session in + let requests = session.allQueuedRequests() + XCTAssertEqual(0, requests.count) + } + } } diff --git a/Tests/StreamChatTests/Workers/Background/MessageSender_Tests.swift b/Tests/StreamChatTests/Workers/Background/MessageSender_Tests.swift index 96583263b8f..ff5bb560111 100644 --- a/Tests/StreamChatTests/Workers/Background/MessageSender_Tests.swift +++ b/Tests/StreamChatTests/Workers/Background/MessageSender_Tests.swift @@ -404,6 +404,56 @@ final class MessageSender_Tests: XCTestCase { AssertAsync.willBeTrue(eventsNotificationCenter.mock_processCalledWithEvents.first is NewMessageErrorEvent) XCTAssertCall("sendMessage(with:completion:)", on: messageRepository, times: 1) } + + func test_senderSendsMessages_forwardsPendingMessagesToOfflineHandlingOnConnectionError() throws { + // Sender with non-mock message repository + let nonMockMessageRepository = MessageRepository(database: database, apiClient: apiClient) + sender = MessageSender( + messageRepository: nonMockMessageRepository, + eventsNotificationCenter: eventsNotificationCenter, + database: database, + apiClient: apiClient + ) + var queueOfflineRequestCounter = 0 + let offlineQueuingExpectation = XCTestExpectation(description: "2, 3, 4, 5 queued") + apiClient.queueOfflineRequest = { _ in + queueOfflineRequestCounter += 1 + guard queueOfflineRequestCounter == 4 else { return } + offlineQueuingExpectation.fulfill() + } + + // At the end of test all 5 are expected to finish successfully + let messageIds = (1...5).map { "\($0)" } + + try database.writeSynchronously { session in + for id in messageIds { + try self.createMessage(id: id, in: session) + } + } + + // First: success + apiClient.waitForRequest() + try resumeAPIRequestAndWaitForLocalStateChange(messageId: "1", success: true) + + // Second: connection error + apiClient.waitForRequest() + try resumeAPIRequestAndWaitForLocalStateChange(messageId: "2", success: false) + + // We use mocked API client which does not do the automatic forwarding, therefore we simulate it here + apiClient.queueOfflineRequest?(DataEndpoint(path: .sendMessage(cid), method: .post)) + + // Since connection error was received, all the remaining queued messages are sent directly to offline repository + wait(for: [offlineQueuingExpectation], timeout: defaultTimeout) + + // Verify states (one successful, others failing) + try database.readSynchronously { session in + let localMessageStates = messageIds.map { session.message(id: $0)?.localMessageState } + let expected: [LocalMessageState?] = [nil, .sendingFailed, .sendingFailed, .sendingFailed, .sendingFailed] + XCTAssertEqual(expected, localMessageStates) + } + + // Offline repository is now responsible of sending the requests + } // MARK: - Life cycle tests @@ -456,6 +506,38 @@ final class MessageSender_Tests: XCTestCase { // Then wait(for: [sessionMock.rescueMessagesExpectation], timeout: defaultTimeout) } + + // MARK: - + + @discardableResult func createMessage(id: MessageId, in session: DatabaseSession) throws -> MessageId { + let dto = try session.createNewMessage( + in: cid, + messageId: id, + text: "\(id)", + pinning: nil, + quotedMessageId: nil, + skipPush: false, + skipEnrichUrl: false + ) + dto.localMessageState = .pendingSend + return dto.id + } + + private func resumeAPIRequestAndWaitForLocalStateChange(messageId: MessageId, success: Bool) throws { + let localStateExpectation = XCTestExpectation(description: "\(messageId) - local state change") + database.didWrite = { + // Extra delay for allowing MessageSender to run the MessageRepository's completion + DispatchQueue.main.async { + localStateExpectation.fulfill() + } + } + if success { + apiClient.test_simulateResponse(.success(MessagePayload.Boxed(message: .dummy(messageId: messageId, text: "processed", cid: cid)))) + } else { + apiClient.test_simulateResponse(Result.failure(NSError(domain: NSURLErrorDomain, code: NSURLErrorNetworkConnectionLost))) + } + wait(for: [localStateExpectation], timeout: defaultTimeout) + } } private class DatabaseSessionRescueListener: DatabaseSession_Mock { From 69b3382ddf26f2c23fdfa21d9a2448640213586b Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Mon, 29 Jul 2024 15:18:08 +0100 Subject: [PATCH 15/24] [CI] Comment SDK size on every commit (#3339) --- .github/workflows/cron-checks.yml | 1 - ...etrics.yml => sdk-performance-metrics.yml} | 4 +- .github/workflows/sdk-size-metrics.yml | 13 ++---- .github/workflows/smoke-checks.yml | 2 +- fastlane/Fastfile | 41 ++++++++----------- 5 files changed, 23 insertions(+), 38 deletions(-) rename .github/workflows/{performance-metrics.yml => sdk-performance-metrics.yml} (97%) diff --git a/.github/workflows/cron-checks.yml b/.github/workflows/cron-checks.yml index a25fd149a05..8f93dbb6d88 100644 --- a/.github/workflows/cron-checks.yml +++ b/.github/workflows/cron-checks.yml @@ -58,7 +58,6 @@ jobs: fail-fast: false runs-on: ${{ matrix.os }} env: - GITHUB_EVENT: ${{ toJson(github.event) }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }} STREAM_DEMO_APP_SECRET: ${{ secrets.STREAM_DEMO_APP_SECRET }} diff --git a/.github/workflows/performance-metrics.yml b/.github/workflows/sdk-performance-metrics.yml similarity index 97% rename from .github/workflows/performance-metrics.yml rename to .github/workflows/sdk-performance-metrics.yml index ae59214d082..e9ac86a6076 100644 --- a/.github/workflows/performance-metrics.yml +++ b/.github/workflows/sdk-performance-metrics.yml @@ -1,4 +1,4 @@ -name: Metrics +name: SDK Performance on: schedule: @@ -17,7 +17,7 @@ env: jobs: performance: - name: Performance + name: Metrics runs-on: macos-14 env: GITHUB_TOKEN: '${{ secrets.CI_BOT_GITHUB_TOKEN }}' diff --git a/.github/workflows/sdk-size-metrics.yml b/.github/workflows/sdk-size-metrics.yml index 4bc8e8bba49..50745c71220 100644 --- a/.github/workflows/sdk-size-metrics.yml +++ b/.github/workflows/sdk-size-metrics.yml @@ -1,10 +1,7 @@ -name: Metrics +name: SDK Size on: pull_request: - types: - - opened - - ready_for_review workflow_dispatch: @@ -17,29 +14,25 @@ env: jobs: sdk_size: - name: SDK Size + name: Metrics runs-on: macos-14 env: GITHUB_TOKEN: '${{ secrets.CI_BOT_GITHUB_TOKEN }}' steps: - name: Install Bot SSH Key - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} uses: webfactory/ssh-agent@v0.7.0 with: ssh-private-key: ${{ secrets.BOT_SSH_PRIVATE_KEY }} - uses: actions/checkout@v3.1.0 - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} - uses: ./.github/actions/bootstrap - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} - name: Run SDK Size Metrics - if: ${{ github.event_name != 'pull_request' || github.event.pull_request.draft == false }} run: bundle exec fastlane show_frameworks_sizes timeout-minutes: 30 env: GITHUB_PR_NUM: ${{ github.event.pull_request.number }} - EVENT_NAME: ${{ github.event_name }} + GITHUB_EVENT_NAME: ${{ github.event_name }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} APPSTORE_API_KEY: ${{ secrets.APPSTORE_API_KEY }} diff --git a/.github/workflows/smoke-checks.yml b/.github/workflows/smoke-checks.yml index 490899d6c84..7d0ef74a258 100644 --- a/.github/workflows/smoke-checks.yml +++ b/.github/workflows/smoke-checks.yml @@ -193,7 +193,7 @@ jobs: env: ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - GITHUB_EVENT: ${{ toJson(github.event) }} + GITHUB_PR_NUM: ${{ github.event.number }} - id: get_launch_id run: echo "launch_id=${{env.LAUNCH_ID}}" >> $GITHUB_OUTPUT if: env.LAUNCH_ID != '' diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 327d29c842d..5aaadd0911e 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -420,7 +420,8 @@ lane :xcmetrics do |options| expected_performance = performance_benchmarks['benchmark'] actual_performance = xcmetrics_log_parser(log: xcodebuild_output) - markdown_table = "## StreamChat XCMetrics\n| `target` | `metric` | `benchmark` | `branch` | `performance` | `status` |\n| - | - | - | - | - | - |\n" + table_header = '## SDK Performance' + markdown_table = "#{table_header}\n| `target` | `metric` | `benchmark` | `branch` | `performance` | `status` |\n| - | - | - | - | - | - |\n" ['testMessageListScrollTime', 'testChannelListScrollTime'].each do |test_name| index = 0 ['hitches_total_duration', 'duration', 'hitch_time_ratio', 'frame_rate', 'number_of_hitches'].each do |metric| @@ -479,26 +480,9 @@ lane :xcmetrics do |options| UI.user_error!("See Firebase error above ☝️") unless firebase_error.to_s.empty? - if is_ci - pr_comment_required = !ENV['GITHUB_PR_NUM'].to_s.empty? - performance_benchmarks[current_branch] = actual_performance - File.write(xcmetrics_path, JSON.pretty_generate(performance_benchmarks)) - - Dir.chdir(File.dirname(xcmetrics_path)) do - if sh('git status -s', log: false).to_s.empty? - pr_comment_required = false - UI.important('No changes in performance benchmarks. Skipping commit and comment.') - else - sh('git add -A') - sh("git commit -m 'Update #{xcmetrics_path}: #{current_branch}'") - sh('git push') - end - end + create_pr_comment(pr_num: ENV.fetch('GITHUB_PR_NUM'), text: markdown_table, edit_last_comment_with_text: table_header) - sh("gh pr comment #{ENV.fetch('GITHUB_PR_NUM')} -b '#{markdown_table}'") if pr_comment_required - end - - UI.user_error!('Performance benchmark failed.') if markdown_table.include?(fail_status) + UI.user_error!("#{table_header} benchmark failed.") if markdown_table.include?(fail_status) end private_lane :xcmetrics_log_parser do |options| @@ -860,7 +844,8 @@ lane :show_frameworks_sizes do |options| develop_sizes = JSON.parse(File.read(sdk_size_path)) branch_sizes = options[:sizes] || frameworks_sizes - markdown_table = "## SDK Size\n| `title` | `develop` | `branch` | `diff` | `status` |\n| - | - | - | - | - |\n" + table_header = '## SDK Size' + markdown_table = "#{table_header}\n| `title` | `develop` | `branch` | `diff` | `status` |\n| - | - | - | - | - |\n" sdk_names.each do |title| benchmark_value = develop_sizes[title] branch_value = branch_sizes[title.to_sym] @@ -887,7 +872,7 @@ lane :show_frameworks_sizes do |options| FastlaneCore::PrintTable.print_values(title: 'SDK Size', config: branch_sizes) if is_ci - if ENV['EVENT_NAME'].to_s == 'push' + if ENV['GITHUB_EVENT_NAME'].to_s == 'push' File.write(sdk_size_path, JSON.pretty_generate(branch_sizes)) Dir.chdir(File.dirname(sdk_size_path)) do if sh('git status -s', log: false).to_s.empty? @@ -900,10 +885,10 @@ lane :show_frameworks_sizes do |options| end end - sh("gh pr comment #{ENV.fetch('GITHUB_PR_NUM')} -b '#{markdown_table}'") unless ENV['GITHUB_PR_NUM'].to_s.empty? + create_pr_comment(pr_num: ENV.fetch('GITHUB_PR_NUM'), text: markdown_table, edit_last_comment_with_text: table_header) end - UI.user_error!('SDK sizes benchmark failed.') if markdown_table.include?(fail_status) + UI.user_error!("#{table_header} benchmark failed.") if markdown_table.include?(fail_status) end desc 'Update img shields SDK size labels' @@ -947,6 +932,14 @@ private_lane :create_pr do |options| ) end +private_lane :create_pr_comment do |options| + if is_ci && !options[:pr_num].to_s.empty? + last_comment = sh("gh pr view #{options[:pr_num]} --json comments --jq '.comments | map(select(.author.login == \"Stream-iOS-Bot\")) | last'") + edit_last_comment = last_comment.include?(options[:edit_last_comment_with_text]) ? '--edit-last' : '' + sh("gh pr comment #{options[:pr_num]} #{edit_last_comment} -b '#{options[:text]}'") + end +end + private_lane :current_branch do github_pr_branch_name = ENV['BRANCH_NAME'].to_s github_ref_branch_name = ENV['GITHUB_REF'].to_s.sub('refs/heads/', '') From 2e1cc9d992dfd10dd8bf96c1f72f889d6f13a8fe Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Mon, 29 Jul 2024 17:15:25 +0100 Subject: [PATCH 16/24] [CI] Update SDK size rounding (#3341) --- fastlane/Fastfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 5aaadd0911e..98364fa98c0 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -1012,9 +1012,9 @@ def frameworks_sizes stream_chat_size = File.size("#{frameworks_path}/StreamChat.framework/StreamChat") stream_chat_ui_size = File.size("#{frameworks_path}/StreamChatUI.framework/StreamChatUI") - stream_chat_size_mb = (stream_chat_size.to_f / 1024 / 1024).round(1) - stream_chat_ui_size_mb = ((stream_chat_ui_size + assets_thinned_size).to_f / 1024 / 1024).round(1) - total_size_mb = (stream_chat_size_mb + stream_chat_ui_size_mb).round(1) + stream_chat_size_mb = (stream_chat_size.to_f / 1024 / 1024).round(2) + stream_chat_ui_size_mb = ((stream_chat_ui_size + assets_thinned_size).to_f / 1024 / 1024).round(2) + total_size_mb = (stream_chat_size_mb + stream_chat_ui_size_mb).round(2) { StreamChat: stream_chat_size_mb, From b70b2c35993fda72c8e1db5a5ded9aded78efe04 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Mon, 29 Jul 2024 17:55:02 +0100 Subject: [PATCH 17/24] [CI] Also round size diff (#3342) --- fastlane/Fastfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 98364fa98c0..4fb72f00285 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -852,7 +852,7 @@ lane :show_frameworks_sizes do |options| max_tolerance = 0.5 # Max Tolerance is 0.5MB fine_tolerance = 0.25 # Fine Tolerance is 0.25MB - diff = branch_value - benchmark_value + diff = (branch_value - benchmark_value).round(2) status_emoji = if diff < 0 From 70941fdf655121d9aaf3359c895b84d151482f0e Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Mon, 29 Jul 2024 18:58:17 +0100 Subject: [PATCH 18/24] [CI] Fix Allure launch issue (#3343) --- .github/workflows/cron-checks.yml | 1 + .github/workflows/smoke-checks.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/cron-checks.yml b/.github/workflows/cron-checks.yml index 8f93dbb6d88..a25fd149a05 100644 --- a/.github/workflows/cron-checks.yml +++ b/.github/workflows/cron-checks.yml @@ -58,6 +58,7 @@ jobs: fail-fast: false runs-on: ${{ matrix.os }} env: + GITHUB_EVENT: ${{ toJson(github.event) }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }} STREAM_DEMO_APP_SECRET: ${{ secrets.STREAM_DEMO_APP_SECRET }} diff --git a/.github/workflows/smoke-checks.yml b/.github/workflows/smoke-checks.yml index 7d0ef74a258..44e7a7b905e 100644 --- a/.github/workflows/smoke-checks.yml +++ b/.github/workflows/smoke-checks.yml @@ -194,6 +194,7 @@ jobs: ALLURE_TOKEN: ${{ secrets.ALLURE_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_PR_NUM: ${{ github.event.number }} + GITHUB_EVENT: ${{ toJson(github.event) }} - id: get_launch_id run: echo "launch_id=${{env.LAUNCH_ID}}" >> $GITHUB_OUTPUT if: env.LAUNCH_ID != '' From 9585540227447c78f062df8706c6ea19b1d531b8 Mon Sep 17 00:00:00 2001 From: Nuno Vieira Date: Tue, 30 Jul 2024 10:34:27 +0100 Subject: [PATCH 19/24] Add Channel List `.hasUnread` filter (#3340) --- CHANGELOG.md | 2 + .../Components/DemoChatChannelListVC.swift | 26 ++- .../StreamChat/Database/DTOs/ChannelDTO.swift | 11 ++ .../StreamChatModel.xcdatamodel/contents | 1 + .../StreamChat/Query/ChannelListQuery.swift | 27 ++++ Sources/StreamChat/Query/Filter.swift | 2 +- .../Query/Sorting/ChannelListSortingKey.swift | 9 +- .../ChannelListController_Tests.swift | 152 ++++++++++++------ .../Sorting/ChannelListSortingKey_Tests.swift | 8 +- 9 files changed, 184 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da0de47d694..dfc4db50708 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,8 +9,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). - Improve performance of `ChatChannel` and `ChatMessage` equality checks [#3335](https://github.com/GetStream/stream-chat-swift/pull/3335) ### ✅ Added - Expose `MissingConnectionId` + `InvalidURL` + `InvalidJSON` Errors [#3332](https://github.com/GetStream/stream-chat-swift/pull/3332) +- Add support for `.hasUnread` filter key to `ChannelListQuery` [#3340](https://github.com/GetStream/stream-chat-swift/pull/3340) ### 🐞 Fixed - Fix a rare issue with incorrect message order when sending multiple messages while offline [#3316](https://github.com/GetStream/stream-chat-swift/issues/3316) +- Fix sorting channel list by unread count [#3340](https://github.com/GetStream/stream-chat-swift/pull/3340) # [4.60.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.60.0) _July 18, 2024_ diff --git a/DemoApp/StreamChat/Components/DemoChatChannelListVC.swift b/DemoApp/StreamChat/Components/DemoChatChannelListVC.swift index 116ed847418..a35b339d629 100644 --- a/DemoApp/StreamChat/Components/DemoChatChannelListVC.swift +++ b/DemoApp/StreamChat/Components/DemoChatChannelListVC.swift @@ -41,6 +41,11 @@ final class DemoChatChannelListVC: ChatChannelListVC { .equal(.hidden, to: true) ])) + lazy var unreadChannelsQuery: ChannelListQuery = .init(filter: .and([ + .containMembers(userIds: [currentUserId]), + .hasUnread + ]), sort: [.init(key: .unreadCount, isAscending: false)]) + lazy var mutedChannelsQuery: ChannelListQuery = .init(filter: .and([ .containMembers(userIds: [currentUserId]), .equal(.muted, to: true) @@ -113,6 +118,15 @@ final class DemoChatChannelListVC: ChatChannelListVC { } ) + let unreadChannelsAction = UIAlertAction( + title: "Unread Channels", + style: .default, + handler: { [weak self] _ in + self?.title = "Unread Channels" + self?.setUnreadChannelsQuery() + } + ) + let coolChannelsAction = UIAlertAction( title: "Cool Channels", style: .default, @@ -133,7 +147,13 @@ final class DemoChatChannelListVC: ChatChannelListVC { presentAlert( title: "Filter Channels", - actions: [defaultChannelsAction, hiddenChannelsAction, mutedChannelsAction, coolChannelsAction], + actions: [ + defaultChannelsAction, + unreadChannelsAction, + hiddenChannelsAction, + mutedChannelsAction, + coolChannelsAction + ], preferredStyle: .actionSheet, sourceView: filterChannelsButton ) @@ -143,6 +163,10 @@ final class DemoChatChannelListVC: ChatChannelListVC { replaceQuery(hiddenChannelsQuery) } + func setUnreadChannelsQuery() { + replaceQuery(unreadChannelsQuery) + } + func setMutedChannelsQuery() { replaceQuery(mutedChannelsQuery) } diff --git a/Sources/StreamChat/Database/DTOs/ChannelDTO.swift b/Sources/StreamChat/Database/DTOs/ChannelDTO.swift index 6ed92ee918a..a46fdcfc1f0 100644 --- a/Sources/StreamChat/Database/DTOs/ChannelDTO.swift +++ b/Sources/StreamChat/Database/DTOs/ChannelDTO.swift @@ -61,6 +61,7 @@ class ChannelDTO: NSManagedObject { @NSManaged var messages: Set @NSManaged var pinnedMessages: Set @NSManaged var reads: Set + @NSManaged var currentUserUnreadMessagesCount: Int32 @NSManaged var watchers: Set @NSManaged var memberListQueries: Set @NSManaged var previewMessage: MessageDTO? @@ -75,6 +76,16 @@ class ChannelDTO: NSManagedObject { return } + // Update the unreadMessagesCount for the current user. + // At the moment this computed property is used for `hasUnread` automatic channel list filtering. + if let currentUserId = managedObjectContext?.currentUser?.user.id { + let currentUserUnread = reads.first(where: { $0.user.id == currentUserId }) + let newUnreadCount = currentUserUnread?.unreadMessageCount ?? 0 + if newUnreadCount != currentUserUnreadMessagesCount { + currentUserUnreadMessagesCount = newUnreadCount + } + } + // Change to the `truncatedAt` value have effect on messages, we need to mark them dirty manually // to triggers related FRC updates if changedValues().keys.contains("truncatedAt") { diff --git a/Sources/StreamChat/Database/StreamChatModel.xcdatamodeld/StreamChatModel.xcdatamodel/contents b/Sources/StreamChat/Database/StreamChatModel.xcdatamodeld/StreamChatModel.xcdatamodel/contents index 2cea52d961d..dd35fc9f1f1 100644 --- a/Sources/StreamChat/Database/StreamChatModel.xcdatamodeld/StreamChatModel.xcdatamodel/contents +++ b/Sources/StreamChat/Database/StreamChatModel.xcdatamodeld/StreamChatModel.xcdatamodel/contents @@ -37,6 +37,7 @@ + diff --git a/Sources/StreamChat/Query/ChannelListQuery.swift b/Sources/StreamChat/Query/ChannelListQuery.swift index f77560b8422..54b989fa6c3 100644 --- a/Sources/StreamChat/Query/ChannelListQuery.swift +++ b/Sources/StreamChat/Query/ChannelListQuery.swift @@ -25,6 +25,11 @@ public extension Filter where Scope: AnyChannelListFilterScope { static var noTeam: Filter { .equal(.team, to: nil) } + + /// Filter for fetching only the unread channels. + static var hasUnread: Filter { + .equal(.hasUnread, to: true) + } } extension Filter where Scope: AnyChannelListFilterScope { @@ -162,6 +167,28 @@ public extension FilterKey where Scope: AnyChannelListFilterScope { static var lastUpdatedAt: FilterKey { .init(rawValue: "last_updated", keyPathString: #keyPath(ChannelDTO.lastMessageAt)) } } +/// Internal filter queries for the channel list. +/// These ones are helpers that should be used by an higher-level filter. +internal extension FilterKey where Scope: AnyChannelListFilterScope { + /// Filter for fetching only the unread channels. + /// Supported operators: `equal`, and only `true` is supported. + static var hasUnread: FilterKey { + .init( + rawValue: "has_unread", + keyPathString: nil, + predicateMapper: { op, hasUnread in + let key = #keyPath(ChannelDTO.currentUserUnreadMessagesCount) + switch op { + case .equal: + return NSPredicate(format: hasUnread ? "\(key) > 0" : "\(key) <= 0") + default: + return nil + } + } + ) + } +} + /// A query is used for querying specific channels from backend. /// You can specify filter, sorting, pagination, limit for fetched messages in channel and other options. public struct ChannelListQuery: Encodable { diff --git a/Sources/StreamChat/Query/Filter.swift b/Sources/StreamChat/Query/Filter.swift index 65f55ad6e43..6c3d02ff4a1 100644 --- a/Sources/StreamChat/Query/Filter.swift +++ b/Sources/StreamChat/Query/Filter.swift @@ -263,7 +263,7 @@ public struct FilterKey: ExpressibleBySt init( rawValue value: String, - keyPathString: String, + keyPathString: String?, valueMapper: TypedValueMapper? = nil, isCollectionFilter: Bool = false, predicateMapper: TypedPredicateMapper? = nil diff --git a/Sources/StreamChat/Query/Sorting/ChannelListSortingKey.swift b/Sources/StreamChat/Query/Sorting/ChannelListSortingKey.swift index 28d190c15c9..a4d52d1e390 100644 --- a/Sources/StreamChat/Query/Sorting/ChannelListSortingKey.swift +++ b/Sources/StreamChat/Query/Sorting/ChannelListSortingKey.swift @@ -49,8 +49,11 @@ public struct ChannelListSortingKey: SortingKey, Equatable { remoteKey: ChannelCodingKeys.cid.rawValue ) - /// Sort channels by unread state. When using this sorting key, every unread channel weighs the same, - /// so they're sorted by `updatedAt` + /// Sort channels by unread state. + /// + /// When using this sorting key, every unread channel weighs the same, so they're sorted by `updatedAt`. + /// + /// **Note:** If you want to sort by number of unreads, you should use the `unreadCount` sorting key. public static let hasUnread = Self( keyPath: \.hasUnread, localKey: nil, @@ -60,7 +63,7 @@ public struct ChannelListSortingKey: SortingKey, Equatable { /// Sort channels by their unread count. public static let unreadCount = Self( keyPath: \.unreadCount, - localKey: nil, + localKey: #keyPath(ChannelDTO.currentUserUnreadMessagesCount), remoteKey: "unread_count" ) diff --git a/Tests/StreamChatTests/Controllers/ChannelListController/ChannelListController_Tests.swift b/Tests/StreamChatTests/Controllers/ChannelListController/ChannelListController_Tests.swift index 4b2b53ddac7..331ef311d39 100644 --- a/Tests/StreamChatTests/Controllers/ChannelListController/ChannelListController_Tests.swift +++ b/Tests/StreamChatTests/Controllers/ChannelListController/ChannelListController_Tests.swift @@ -1020,53 +1020,6 @@ final class ChannelListController_Tests: XCTestCase { // MARK: Predicates - private func assertFilterPredicate( - _ filter: @autoclosure () -> Filter, - channelsInDB: @escaping @autoclosure () -> [ChannelPayload], - expectedResult: @autoclosure () -> [ChannelId], - file: StaticString = #file, - line: UInt = #line - ) throws { - /// Ensure that isChannelAutomaticFilteringEnabled is enabled - var config = ChatClientConfig(apiKeyString: .unique) - config.isChannelAutomaticFilteringEnabled = true - client = ChatClient.mock(config: config) - - let query = ChannelListQuery( - filter: filter() - ) - controller = ChatChannelListController( - query: query, - client: client, - environment: env.environment - ) - controllerCallbackQueueID = UUID() - controller.callbackQueue = .testQueue(withId: controllerCallbackQueueID) - - // Simulate `synchronize` call - controller.synchronize() - waitForInitialChannelsUpdate() - - XCTAssertEqual(controller.channels.map(\.cid), [], file: file, line: line) - - // Simulate changes in the DB: - _ = try waitFor { - writeAndWaitForChannelsUpdates({ [query] session in - try channelsInDB().forEach { payload in - try session.saveChannel(payload: payload, query: query, cache: nil) - } - }, completion: $0) - } - - // Assert the resulting value is updated - XCTAssertEqual( - controller.channels.map(\.cid.rawValue).sorted(), - expectedResult().map(\.rawValue).sorted(), - file: file, - line: line - ) - } - func test_filterPredicate_equal_containsExpectedItems() throws { let cid = ChannelId.unique @@ -1598,6 +1551,53 @@ final class ChannelListController_Tests: XCTestCase { ) } + func test_filterPredicate_hasUnread_returnsExpectedResults() throws { + let cid1 = ChannelId.unique + let cid2 = ChannelId.unique + let currentUserId = UserId.unique + + try assertFilterPredicate( + .hasUnread, + sort: [.init(key: .unreadCount, isAscending: false)], + currentUserId: currentUserId, + channelsInDB: [ + .dummy( + channel: .dummy(cid: cid1), + channelReads: [ + .init( + user: .dummy(userId: currentUserId), + lastReadAt: .unique, + lastReadMessageId: nil, + unreadMessagesCount: 3 + ) + ] + ), + .dummy(channel: .dummy(team: .unique), channelReads: [ + .init( + user: .dummy(userId: .unique), + lastReadAt: .unique, + lastReadMessageId: nil, + unreadMessagesCount: 10 + ) + ]), + .dummy(channel: .dummy(team: .unique)), + .dummy(channel: .dummy(team: .unique)), + .dummy( + channel: .dummy(cid: cid2), + channelReads: [ + .init( + user: .dummy(userId: currentUserId), + lastReadAt: .unique, + lastReadMessageId: nil, + unreadMessagesCount: 20 + ) + ] + ) + ], + expectedResult: [cid2, cid1] + ) + } + func test_filterPredicate_muted_returnsExpectedResults() throws { let cid1 = ChannelId.unique let userId = memberId @@ -1671,6 +1671,64 @@ final class ChannelListController_Tests: XCTestCase { // MARK: - Private Helpers + private func assertFilterPredicate( + _ filter: @autoclosure () -> Filter, + sort: [Sorting] = [], + currentUserId: UserId? = nil, + channelsInDB: @escaping @autoclosure () -> [ChannelPayload], + expectedResult: @autoclosure () -> [ChannelId], + file: StaticString = #file, + line: UInt = #line + ) throws { + /// Ensure that isChannelAutomaticFilteringEnabled is enabled + var config = ChatClientConfig(apiKeyString: .unique) + config.isChannelAutomaticFilteringEnabled = true + client = ChatClient.mock(config: config) + + if let currentUserId { + try database.writeSynchronously { session in + try session.saveCurrentUser( + payload: .dummy(userId: currentUserId, role: .admin) + ) + } + } + + let query = ChannelListQuery( + filter: filter(), + sort: sort + ) + controller = ChatChannelListController( + query: query, + client: client, + environment: env.environment + ) + controllerCallbackQueueID = UUID() + controller.callbackQueue = .testQueue(withId: controllerCallbackQueueID) + + // Simulate `synchronize` call + controller.synchronize() + waitForInitialChannelsUpdate() + + XCTAssertEqual(controller.channels.map(\.cid), [], file: file, line: line) + + // Simulate changes in the DB: + _ = try waitFor { + writeAndWaitForChannelsUpdates({ [query] session in + try channelsInDB().forEach { payload in + try session.saveChannel(payload: payload, query: query, cache: nil) + } + }, completion: $0) + } + + // Assert the resulting value is updated + XCTAssertEqual( + controller.channels.map(\.cid.rawValue).sorted(), + expectedResult().map(\.rawValue).sorted(), + file: file, + line: line + ) + } + private func makeAddedChannelEvent(with channel: ChatChannel) -> NotificationAddedToChannelEvent { NotificationAddedToChannelEvent( channel: channel, diff --git a/Tests/StreamChatTests/Query/Sorting/ChannelListSortingKey_Tests.swift b/Tests/StreamChatTests/Query/Sorting/ChannelListSortingKey_Tests.swift index 63b04d921a9..738231a0014 100644 --- a/Tests/StreamChatTests/Query/Sorting/ChannelListSortingKey_Tests.swift +++ b/Tests/StreamChatTests/Query/Sorting/ChannelListSortingKey_Tests.swift @@ -77,9 +77,13 @@ final class ChannelListSortingKey_Tests: XCTestCase { XCTAssertEqual(key.remoteKey, "has_unread") XCTAssertTrue(key.requiresRuntimeSorting) case .unreadCount: - XCTAssertNil(key.sortDescriptor(isAscending: true)) + XCTAssertNotNil(key.sortDescriptor(isAscending: true)) XCTAssertEqual(key.remoteKey, "unread_count") - XCTAssertTrue(key.requiresRuntimeSorting) + XCTAssertFalse(key.requiresRuntimeSorting) + XCTAssertEqual( + key.localKey, + NSExpression(forKeyPath: \ChannelDTO.currentUserUnreadMessagesCount).keyPath + ) default: XCTFail() } From 87cd5fead5c490a95a979c2a52794176687d2c59 Mon Sep 17 00:00:00 2001 From: Toomas Vahter Date: Tue, 30 Jul 2024 13:46:48 +0300 Subject: [PATCH 20/24] Fix PR link in the CHANGELOG --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dfc4db50708..3f2a063ec6a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## StreamChat ### ⚡ Performance -- Improve performance of `ChatChannel` database model conversions more than 7 times [#3322](https://github.com/GetStream/stream-chat-swift/pull/3322) +- Improve performance of `ChatChannel` database model conversions more than 7 times [#3325](https://github.com/GetStream/stream-chat-swift/pull/3325) - Improve performance of `ChatChannel` and `ChatMessage` equality checks [#3335](https://github.com/GetStream/stream-chat-swift/pull/3335) ### ✅ Added - Expose `MissingConnectionId` + `InvalidURL` + `InvalidJSON` Errors [#3332](https://github.com/GetStream/stream-chat-swift/pull/3332) From 571ed7cf79ba6b4f553aa81bd1669fff15b4fe01 Mon Sep 17 00:00:00 2001 From: Stream Bot Date: Tue, 30 Jul 2024 10:58:41 +0000 Subject: [PATCH 21/24] Bump 4.61.0 --- CHANGELOG.md | 5 +++++ README.md | 4 ++-- Sources/StreamChat/Generated/SystemEnvironment+Version.swift | 2 +- Sources/StreamChat/Info.plist | 2 +- Sources/StreamChatUI/Info.plist | 2 +- StreamChat-XCFramework.podspec | 2 +- StreamChat.podspec | 2 +- StreamChatArtifacts.json | 2 +- StreamChatUI-XCFramework.podspec | 2 +- StreamChatUI.podspec | 2 +- 10 files changed, 15 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f2a063ec6a..61376978545 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). # Upcoming +### 🔄 Changed + +# [4.61.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.61.0) +_July 30, 2024_ + ## StreamChat ### ⚡ Performance - Improve performance of `ChatChannel` database model conversions more than 7 times [#3325](https://github.com/GetStream/stream-chat-swift/pull/3325) diff --git a/README.md b/README.md index 3b4aa32fad9..a972e18dbfb 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@

- StreamChat - StreamChatUI + StreamChat + StreamChatUI

This is the official iOS SDK for [Stream Chat](https://getstream.io/chat/sdk/ios/), a service for building chat and messaging applications. This library includes both a low-level SDK and a set of reusable UI components. diff --git a/Sources/StreamChat/Generated/SystemEnvironment+Version.swift b/Sources/StreamChat/Generated/SystemEnvironment+Version.swift index 79375f4c08f..683e9527056 100644 --- a/Sources/StreamChat/Generated/SystemEnvironment+Version.swift +++ b/Sources/StreamChat/Generated/SystemEnvironment+Version.swift @@ -7,5 +7,5 @@ import Foundation extension SystemEnvironment { /// A Stream Chat version. - public static let version: String = "4.60.0" + public static let version: String = "4.61.0" } diff --git a/Sources/StreamChat/Info.plist b/Sources/StreamChat/Info.plist index 5b6e9a4e712..892b781b6c3 100644 --- a/Sources/StreamChat/Info.plist +++ b/Sources/StreamChat/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.60.0 + 4.61.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) diff --git a/Sources/StreamChatUI/Info.plist b/Sources/StreamChatUI/Info.plist index 5b6e9a4e712..892b781b6c3 100644 --- a/Sources/StreamChatUI/Info.plist +++ b/Sources/StreamChatUI/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.60.0 + 4.61.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) diff --git a/StreamChat-XCFramework.podspec b/StreamChat-XCFramework.podspec index 648426905a8..57d68969502 100644 --- a/StreamChat-XCFramework.podspec +++ b/StreamChat-XCFramework.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "StreamChat-XCFramework" - spec.version = "4.60.0" + spec.version = "4.61.0" spec.summary = "StreamChat iOS Client" spec.description = "stream-chat-swift is the official Swift client for Stream Chat, a service for building chat applications." diff --git a/StreamChat.podspec b/StreamChat.podspec index c66dd1828a5..91e8b571a3f 100644 --- a/StreamChat.podspec +++ b/StreamChat.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "StreamChat" - spec.version = "4.60.0" + spec.version = "4.61.0" spec.summary = "StreamChat iOS Chat Client" spec.description = "stream-chat-swift is the official Swift client for Stream Chat, a service for building chat applications." diff --git a/StreamChatArtifacts.json b/StreamChatArtifacts.json index 5f082992027..f79e8530749 100644 --- a/StreamChatArtifacts.json +++ b/StreamChatArtifacts.json @@ -1 +1 @@ -{"4.7.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.7.0/StreamChat-All.zip","4.8.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.8.0/StreamChat-All.zip","4.9.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.9.0/StreamChat-All.zip","4.10.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.10.0/StreamChat-All.zip","4.10.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.10.1/StreamChat-All.zip","4.11.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.11.0/StreamChat-All.zip","4.12.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.12.0/StreamChat-All.zip","4.13.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.13.0/StreamChat-All.zip","4.13.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.13.1/StreamChat-All.zip","4.14.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.14.0/StreamChat-All.zip","4.15.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.15.0/StreamChat-All.zip","4.15.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.15.1/StreamChat-All.zip","4.16.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.16.0/StreamChat-All.zip","4.17.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.17.0/StreamChat-All.zip","4.18.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.18.0/StreamChat-All.zip","4.19.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.19.0/StreamChat-All.zip","4.20.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.20.0/StreamChat-All.zip","4.21.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.0/StreamChat-All.zip","4.21.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.1/StreamChat-All.zip","4.21.2":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.2/StreamChat-All.zip","4.22.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.22.0/StreamChat-All.zip","4.23.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.23.0/StreamChat-All.zip","4.24.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.24.0/StreamChat-All.zip","4.24.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.24.1/StreamChat-All.zip","4.25.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.25.0/StreamChat-All.zip","4.25.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.25.1/StreamChat-All.zip","4.26.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.26.0/StreamChat-All.zip","4.27.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.27.0/StreamChat-All.zip","4.27.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.27.1/StreamChat-All.zip","4.28.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.28.0/StreamChat-All.zip","4.29.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.29.0/StreamChat-All.zip","4.30.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.30.0/StreamChat-All.zip","4.31.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.31.0/StreamChat-All.zip","4.32.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.32.0/StreamChat-All.zip","4.33.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.33.0/StreamChat-All.zip","4.34.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.34.0/StreamChat-All.zip","4.35.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.0/StreamChat-All.zip","4.35.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.1/StreamChat-All.zip","4.35.2":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.2/StreamChat-All.zip","4.36.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.36.0/StreamChat-All.zip","4.37.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.37.0/StreamChat-All.zip","4.37.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.37.1/StreamChat-All.zip","4.38.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.38.0/StreamChat-All.zip","4.39.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.39.0/StreamChat-All.zip","4.40.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.40.0/StreamChat-All.zip","4.41.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.41.0/StreamChat-All.zip","4.42.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.42.0/StreamChat-All.zip","4.43.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.43.0/StreamChat-All.zip","4.44.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.44.0/StreamChat-All.zip","4.45.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.45.0/StreamChat-All.zip","4.46.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.46.0/StreamChat-All.zip","4.47.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.47.0/StreamChat-All.zip","4.47.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.47.1/StreamChat-All.zip","4.48.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.48.0/StreamChat-All.zip","4.48.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.48.1/StreamChat-All.zip","4.49.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.49.0/StreamChat-All.zip","4.50.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.50.0/StreamChat-All.zip","4.51.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.51.0/StreamChat-All.zip","4.52.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.52.0/StreamChat-All.zip","4.53.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.53.0/StreamChat-All.zip","4.54.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.54.0/StreamChat-All.zip","4.55.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.55.0/StreamChat-All.zip","4.56.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.56.0/StreamChat-All.zip","4.56.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.56.1/StreamChat-All.zip","4.57.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.57.0/StreamChat-All.zip","4.58.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.58.0/StreamChat-All.zip","4.59.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.59.0/StreamChat-All.zip","4.60.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.60.0/StreamChat-All.zip"} \ No newline at end of file +{"4.7.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.7.0/StreamChat-All.zip","4.8.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.8.0/StreamChat-All.zip","4.9.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.9.0/StreamChat-All.zip","4.10.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.10.0/StreamChat-All.zip","4.10.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.10.1/StreamChat-All.zip","4.11.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.11.0/StreamChat-All.zip","4.12.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.12.0/StreamChat-All.zip","4.13.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.13.0/StreamChat-All.zip","4.13.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.13.1/StreamChat-All.zip","4.14.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.14.0/StreamChat-All.zip","4.15.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.15.0/StreamChat-All.zip","4.15.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.15.1/StreamChat-All.zip","4.16.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.16.0/StreamChat-All.zip","4.17.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.17.0/StreamChat-All.zip","4.18.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.18.0/StreamChat-All.zip","4.19.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.19.0/StreamChat-All.zip","4.20.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.20.0/StreamChat-All.zip","4.21.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.0/StreamChat-All.zip","4.21.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.1/StreamChat-All.zip","4.21.2":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.2/StreamChat-All.zip","4.22.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.22.0/StreamChat-All.zip","4.23.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.23.0/StreamChat-All.zip","4.24.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.24.0/StreamChat-All.zip","4.24.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.24.1/StreamChat-All.zip","4.25.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.25.0/StreamChat-All.zip","4.25.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.25.1/StreamChat-All.zip","4.26.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.26.0/StreamChat-All.zip","4.27.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.27.0/StreamChat-All.zip","4.27.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.27.1/StreamChat-All.zip","4.28.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.28.0/StreamChat-All.zip","4.29.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.29.0/StreamChat-All.zip","4.30.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.30.0/StreamChat-All.zip","4.31.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.31.0/StreamChat-All.zip","4.32.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.32.0/StreamChat-All.zip","4.33.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.33.0/StreamChat-All.zip","4.34.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.34.0/StreamChat-All.zip","4.35.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.0/StreamChat-All.zip","4.35.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.1/StreamChat-All.zip","4.35.2":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.2/StreamChat-All.zip","4.36.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.36.0/StreamChat-All.zip","4.37.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.37.0/StreamChat-All.zip","4.37.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.37.1/StreamChat-All.zip","4.38.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.38.0/StreamChat-All.zip","4.39.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.39.0/StreamChat-All.zip","4.40.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.40.0/StreamChat-All.zip","4.41.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.41.0/StreamChat-All.zip","4.42.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.42.0/StreamChat-All.zip","4.43.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.43.0/StreamChat-All.zip","4.44.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.44.0/StreamChat-All.zip","4.45.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.45.0/StreamChat-All.zip","4.46.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.46.0/StreamChat-All.zip","4.47.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.47.0/StreamChat-All.zip","4.47.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.47.1/StreamChat-All.zip","4.48.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.48.0/StreamChat-All.zip","4.48.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.48.1/StreamChat-All.zip","4.49.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.49.0/StreamChat-All.zip","4.50.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.50.0/StreamChat-All.zip","4.51.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.51.0/StreamChat-All.zip","4.52.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.52.0/StreamChat-All.zip","4.53.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.53.0/StreamChat-All.zip","4.54.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.54.0/StreamChat-All.zip","4.55.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.55.0/StreamChat-All.zip","4.56.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.56.0/StreamChat-All.zip","4.56.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.56.1/StreamChat-All.zip","4.57.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.57.0/StreamChat-All.zip","4.58.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.58.0/StreamChat-All.zip","4.59.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.59.0/StreamChat-All.zip","4.60.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.60.0/StreamChat-All.zip","4.61.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.61.0/StreamChat-All.zip"} \ No newline at end of file diff --git a/StreamChatUI-XCFramework.podspec b/StreamChatUI-XCFramework.podspec index b109b23ba6c..fc6ed3b63e2 100644 --- a/StreamChatUI-XCFramework.podspec +++ b/StreamChatUI-XCFramework.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "StreamChatUI-XCFramework" - spec.version = "4.60.0" + spec.version = "4.61.0" spec.summary = "StreamChat UI Components" spec.description = "StreamChatUI SDK offers flexible UI components able to display data provided by StreamChat SDK." diff --git a/StreamChatUI.podspec b/StreamChatUI.podspec index b28f9ffc368..45fb816fb73 100644 --- a/StreamChatUI.podspec +++ b/StreamChatUI.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "StreamChatUI" - spec.version = "4.60.0" + spec.version = "4.61.0" spec.summary = "StreamChat UI Components" spec.description = "StreamChatUI SDK offers flexible UI components able to display data provided by StreamChat SDK." From 18a65b44ebbdfd43f88269547165040939b8a496 Mon Sep 17 00:00:00 2001 From: Toomas Vahter Date: Tue, 30 Jul 2024 17:22:42 +0300 Subject: [PATCH 22/24] Fix message search not showing results for new search terms (#3345) --- CHANGELOG.md | 4 ++++ .../ChatChannelList/Search/ChatChannelSearchVC.swift | 2 +- .../ChatChannelList/Search/ChatMessageSearchVC.swift | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 61376978545..ec55282a178 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,10 @@ _July 30, 2024_ - Fix a rare issue with incorrect message order when sending multiple messages while offline [#3316](https://github.com/GetStream/stream-chat-swift/issues/3316) - Fix sorting channel list by unread count [#3340](https://github.com/GetStream/stream-chat-swift/pull/3340) +## StreamChatUI +### 🐞 Fixed +- Fix message search not showing results for new search terms [#3345](https://github.com/GetStream/stream-chat-swift/pull/3345) + # [4.60.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.60.0) _July 18, 2024_ diff --git a/Sources/StreamChatUI/ChatChannelList/Search/ChatChannelSearchVC.swift b/Sources/StreamChatUI/ChatChannelList/Search/ChatChannelSearchVC.swift index 27848e4e6dc..377eedfb838 100644 --- a/Sources/StreamChatUI/ChatChannelList/Search/ChatChannelSearchVC.swift +++ b/Sources/StreamChatUI/ChatChannelList/Search/ChatChannelSearchVC.swift @@ -15,7 +15,7 @@ open class ChatChannelSearchVC: ChatChannelListSearchVC { // MARK: - ChatChannelListSearchVC Abstract Implementations override open var hasEmptyResults: Bool { - channels.isEmpty + controller.channels.isEmpty } override open func loadSearchResults(with text: String) { diff --git a/Sources/StreamChatUI/ChatChannelList/Search/ChatMessageSearchVC.swift b/Sources/StreamChatUI/ChatChannelList/Search/ChatMessageSearchVC.swift index ef7cbcddc95..74bedb3f1ea 100644 --- a/Sources/StreamChatUI/ChatChannelList/Search/ChatMessageSearchVC.swift +++ b/Sources/StreamChatUI/ChatChannelList/Search/ChatMessageSearchVC.swift @@ -31,7 +31,7 @@ open class ChatMessageSearchVC: ChatChannelListSearchVC, ChatMessageSearchContro // MARK: - ChatChannelListSearchVC Abstract Implementations override open var hasEmptyResults: Bool { - messages.isEmpty + messageSearchController.messages.isEmpty } override open func loadSearchResults(with text: String) { From e7398f8b59038bba760c645b2d05da680c2777a7 Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Tue, 30 Jul 2024 15:41:46 +0100 Subject: [PATCH 23/24] [CI] Adjust sdk size report on release PRs (#3346) --- .github/workflows/smoke-checks.yml | 4 ++++ fastlane/Fastfile | 16 ++++++++++------ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/smoke-checks.yml b/.github/workflows/smoke-checks.yml index 44e7a7b905e..c606345a084 100644 --- a/.github/workflows/smoke-checks.yml +++ b/.github/workflows/smoke-checks.yml @@ -224,6 +224,9 @@ jobs: INSTALL_YEETD: true SKIP_MINT_BOOTSTRAP: true SKIP_BREW_BOOTSTRAP: true + - name: Get branch name + id: get_branch_name + run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT - name: Run UI Tests (Debug) run: bundle exec fastlane test_e2e_mock device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:true timeout-minutes: 100 @@ -233,6 +236,7 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_PR_NUM: ${{ github.event.number }} MATRIX_SIZE: ${{ strategy.job-total }} + BRANCH_NAME: ${{ steps.get_branch_name.outputs.branch }} STREAM_DEMO_APP_SECRET: ${{ secrets.STREAM_DEMO_APP_SECRET }} - name: Allure TestOps Upload if: env.LAUNCH_ID != '' && (success() || failure()) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 4fb72f00285..d433459d75e 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -841,13 +841,16 @@ lane :show_frameworks_sizes do |options| ['metrics/'].each { |dir| FileUtils.remove_dir(dir, force: true) } sh("git clone #{metrics_git} #{File.dirname(sdk_size_path)}") - develop_sizes = JSON.parse(File.read(sdk_size_path)) + is_release = current_branch.include?('release/') + benchmark_config = JSON.parse(File.read(sdk_size_path)) + benchmark_key = is_release ? 'release' : 'develop' + benchmark_sizes = benchmark_config[benchmark_key] branch_sizes = options[:sizes] || frameworks_sizes table_header = '## SDK Size' - markdown_table = "#{table_header}\n| `title` | `develop` | `branch` | `diff` | `status` |\n| - | - | - | - | - |\n" + markdown_table = "#{table_header}\n| `title` | `#{is_release ? 'previous release' : 'develop'}` | `#{is_release ? 'current release' : 'branch'}` | `diff` | `status` |\n| - | - | - | - | - |\n" sdk_names.each do |title| - benchmark_value = develop_sizes[title] + benchmark_value = benchmark_sizes[title] branch_value = branch_sizes[title.to_sym] max_tolerance = 0.5 # Max Tolerance is 0.5MB fine_tolerance = 0.25 # Fine Tolerance is 0.25MB @@ -868,12 +871,13 @@ lane :show_frameworks_sizes do |options| markdown_table << "|#{title}|#{benchmark_value}MB|#{branch_value}MB|#{diff}MB|#{status_emoji}|\n" end - FastlaneCore::PrintTable.print_values(title: 'Benchmark', config: develop_sizes) + FastlaneCore::PrintTable.print_values(title: 'Benchmark', config: benchmark_sizes) FastlaneCore::PrintTable.print_values(title: 'SDK Size', config: branch_sizes) if is_ci - if ENV['GITHUB_EVENT_NAME'].to_s == 'push' - File.write(sdk_size_path, JSON.pretty_generate(branch_sizes)) + if is_release || ENV['GITHUB_EVENT_NAME'].to_s == 'push' + benchmark_config[benchmark_key] = branch_sizes + File.write(sdk_size_path, JSON.pretty_generate(benchmark_config)) Dir.chdir(File.dirname(sdk_size_path)) do if sh('git status -s', log: false).to_s.empty? UI.important('No changes in SDK sizes benchmarks.') From 5e71f8abcb238e385992b430c59c6e4fb415ad4a Mon Sep 17 00:00:00 2001 From: Alexey Alter-Pesotskiy Date: Tue, 30 Jul 2024 16:32:54 +0100 Subject: [PATCH 24/24] [CI] Pass branch name to sdk size report (#3347) --- .github/workflows/sdk-size-metrics.yml | 5 +++++ .github/workflows/smoke-checks.yml | 4 ---- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/sdk-size-metrics.yml b/.github/workflows/sdk-size-metrics.yml index 50745c71220..e88d63c6738 100644 --- a/.github/workflows/sdk-size-metrics.yml +++ b/.github/workflows/sdk-size-metrics.yml @@ -28,10 +28,15 @@ jobs: - uses: ./.github/actions/bootstrap + - name: Get branch name + id: get_branch_name + run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT + - name: Run SDK Size Metrics run: bundle exec fastlane show_frameworks_sizes timeout-minutes: 30 env: + BRANCH_NAME: ${{ steps.get_branch_name.outputs.branch }} GITHUB_PR_NUM: ${{ github.event.pull_request.number }} GITHUB_EVENT_NAME: ${{ github.event_name }} MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }} diff --git a/.github/workflows/smoke-checks.yml b/.github/workflows/smoke-checks.yml index c606345a084..44e7a7b905e 100644 --- a/.github/workflows/smoke-checks.yml +++ b/.github/workflows/smoke-checks.yml @@ -224,9 +224,6 @@ jobs: INSTALL_YEETD: true SKIP_MINT_BOOTSTRAP: true SKIP_BREW_BOOTSTRAP: true - - name: Get branch name - id: get_branch_name - run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT - name: Run UI Tests (Debug) run: bundle exec fastlane test_e2e_mock device:"${{ env.IOS_SIMULATOR_DEVICE }}" batch:'${{ matrix.batch }}' test_without_building:true timeout-minutes: 100 @@ -236,7 +233,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_PR_NUM: ${{ github.event.number }} MATRIX_SIZE: ${{ strategy.job-total }} - BRANCH_NAME: ${{ steps.get_branch_name.outputs.branch }} STREAM_DEMO_APP_SECRET: ${{ secrets.STREAM_DEMO_APP_SECRET }} - name: Allure TestOps Upload if: env.LAUNCH_ID != '' && (success() || failure())