diff --git a/.github/workflows/sdk-size-metrics.yml b/.github/workflows/sdk-size-metrics.yml
index a05407b1cab..e71245a9a0b 100644
--- a/.github/workflows/sdk-size-metrics.yml
+++ b/.github/workflows/sdk-size-metrics.yml
@@ -18,6 +18,7 @@ jobs:
runs-on: macos-15
env:
GITHUB_TOKEN: '${{ secrets.CI_BOT_GITHUB_TOKEN }}'
+ GITHUB_PR_NUM: ${{ github.event.pull_request.number }}
steps:
- name: Connect Bot
uses: webfactory/ssh-agent@v0.7.0
@@ -28,10 +29,13 @@ jobs:
- uses: ./.github/actions/bootstrap
- - name: Run SDK Size Metrics
+ - name: Run General SDK Size Metrics
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 }}
+
+ - name: Run Detailed SDK Size Metrics
+ run: bundle exec fastlane size_analyze
+ timeout-minutes: 30
diff --git a/.github/workflows/sync-mock-server.yml b/.github/workflows/sync-mock-server.yml
index 11ea21a4ed6..78d7056110d 100644
--- a/.github/workflows/sync-mock-server.yml
+++ b/.github/workflows/sync-mock-server.yml
@@ -2,8 +2,8 @@ name: Mock Server
on:
schedule:
- # Runs "At 00:00 on day-of-month 1 and 15"
- - cron: '0 0 1,15 * *'
+ # Runs "At 00:00 on day-of-month 1"
+ - cron: '0 0 1 * *'
workflow_dispatch:
diff --git a/.gitignore b/.gitignore
index cef555267fc..3b590688190 100644
--- a/.gitignore
+++ b/.gitignore
@@ -99,6 +99,7 @@ App Thinning Size Report.txt
app-thinning.plist
*.dmg
*.pkg*
+*LinkMap.txt
# gcloud
google-cloud-sdk
diff --git a/.swiftformat b/.swiftformat
index 8f422d51059..9d2986888d0 100644
--- a/.swiftformat
+++ b/.swiftformat
@@ -17,7 +17,6 @@
--rules fileHeader
--rules indent
--rules initCoderUnavailable
---rules isEmpty
--rules leadingDelimiters
--rules linebreakAtEndOfFile
--rules linebreaks
@@ -35,7 +34,7 @@
--rules redundantRawValues
--rules redundantVoidReturnType
--rules semicolons
---rules sortedImports
+--rules sortImports
--rules spaceAroundBraces
--rules spaceAroundBrackets
--rules spaceAroundComments
@@ -81,4 +80,4 @@
--wrapcollections before-first
# Exclude paths
---exclude **/Generated,Sources/StreamChatUI/StreamNuke,Sources/StreamChatUI/StreamSwiftyGif,Sources/StreamChatUI/StreamDifferenceKit
+--exclude **/Generated,Sources/StreamChatUI/StreamNuke,Sources/StreamChatUI/StreamSwiftyGif,Sources/StreamChatUI/StreamDifferenceKit,vendor/bundle,Pods,spm_cache,derived_data,.build
diff --git a/.swiftlint.yml b/.swiftlint.yml
index 2765c01df9d..485ef7d1040 100644
--- a/.swiftlint.yml
+++ b/.swiftlint.yml
@@ -1,21 +1,16 @@
excluded:
- Scripts
- - Package.swift
- - Dependencies
- Sources/StreamChatUI/Generated
- Sources/StreamChatUI/StreamSwiftyGif
- Sources/StreamChatUI/StreamNuke
- Sources/StreamChat/StreamStarscream
- Sources/StreamChatUI/StreamDifferenceKit
- - vendor
- UISDKdocumentation
- Tests
- - TestTools
- Pods
- .build
- spm_cache
- vendor/bundle
- - .ruby-lsp
- derived_data
only_rules:
@@ -56,7 +51,6 @@ only_rules:
- trailing_comma
- trailing_newline
- trailing_semicolon
- - trailing_whitespace
- unneeded_break_in_switch
- unneeded_override
- unused_closure_parameter
@@ -68,9 +62,6 @@ only_rules:
multiline_arguments:
only_enforce_after_first_closure_on_first_line: true
-trailing_whitespace:
- ignores_empty_lines: true
-
file_name_no_space:
severity: error
diff --git a/CHANGELOG.md b/CHANGELOG.md
index d70dcc69558..46c06107253 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
### 🔄 Changed
+# [4.91.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.91.0)
+_October 22, 2025_
+
+## StreamChat
+### ✅ Added
+- Add support for deleting messages only for the current user [#3836](https://github.com/GetStream/stream-chat-swift/pull/3836)
+ - Add `ChatMessageController.deleteMessageForMe()`
+ - Add `ChatMessage.deletedForMe`
+- Allow observing poll changes in `PollVoteListController` [#3849](https://github.com/GetStream/stream-chat-swift/pull/3849)
+### 🐞 Fixed
+- Fix logout not clearing token when current user had no device registered [#3838](https://github.com/GetStream/stream-chat-swift/pull/3838)
+- Fix `PollVoteListController` not updating votes on the vote cast event [#3849](https://github.com/GetStream/stream-chat-swift/pull/3849)
+- Fix showing channel when receiving a campaign message with `show_channels` false [#3851](https://github.com/GetStream/stream-chat-swift/pull/3851)
+
+## StreamChatUI
+### 🐞 Fixed
+- Fix `PollResultsVoteListVC` not updating the vote count [#3849](https://github.com/GetStream/stream-chat-swift/pull/3849)
+
# [4.90.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.90.0)
_October 07, 2025_
diff --git a/DemoApp/StreamChat/Components/DemoChatMessageActionsVC.swift b/DemoApp/StreamChat/Components/DemoChatMessageActionsVC.swift
index eaccfe150f0..ebf6a0ecae6 100644
--- a/DemoApp/StreamChat/Components/DemoChatMessageActionsVC.swift
+++ b/DemoApp/StreamChat/Components/DemoChatMessageActionsVC.swift
@@ -14,6 +14,7 @@ final class DemoChatMessageActionsVC: ChatMessageActionsVC {
if message?.isSentByCurrentUser == true {
if AppConfig.shared.demoAppConfig.isHardDeleteEnabled {
actions.append(hardDeleteActionItem())
+ actions.append(deleteForMeActionItem())
}
}
@@ -108,6 +109,22 @@ final class DemoChatMessageActionsVC: ChatMessageActionsVC {
)
}
+ func deleteForMeActionItem() -> ChatMessageActionItem {
+ DeleteForMeActionItem(
+ action: { [weak self] _ in
+ guard let self = self else { return }
+ self.alertsRouter.showMessageDeletionConfirmationAlert { confirmed in
+ guard confirmed else { return }
+
+ self.messageController.deleteMessageForMe { _ in
+ self.delegate?.chatMessageActionsVCDidFinish(self)
+ }
+ }
+ },
+ appearance: appearance
+ )
+ }
+
func translateActionItem() -> ChatMessageActionItem {
TranslateActionitem(
action: { [weak self] _ in
@@ -224,6 +241,21 @@ final class DemoChatMessageActionsVC: ChatMessageActionsVC {
}
}
+ struct DeleteForMeActionItem: ChatMessageActionItem {
+ var title: String { "Delete only for me" }
+ var isDestructive: Bool { true }
+ let icon: UIImage
+ let action: (ChatMessageActionItem) -> Void
+
+ init(
+ action: @escaping (ChatMessageActionItem) -> Void,
+ appearance: Appearance = .default
+ ) {
+ self.action = action
+ icon = appearance.images.messageActionDelete
+ }
+ }
+
struct TranslateActionitem: ChatMessageActionItem {
var title: String { "Translate to Turkish" }
var isDestructive: Bool { false }
diff --git a/DemoApp/StreamChat/Components/DemoChatMessageContentView.swift b/DemoApp/StreamChat/Components/DemoChatMessageContentView.swift
index 3aa07dab9eb..556873fae06 100644
--- a/DemoApp/StreamChat/Components/DemoChatMessageContentView.swift
+++ b/DemoApp/StreamChat/Components/DemoChatMessageContentView.swift
@@ -75,6 +75,10 @@ final class DemoChatMessageContentView: ChatMessageContentView {
timestampLabel?.text?.append(" - Translated to Turkish")
}
+ if content?.deletedForMe == true {
+ timestampLabel?.text?.append(" - Deleted only for me")
+ }
+
if content?.isPinned == true, let pinInfoLabel = pinInfoLabel {
pinInfoLabel.text = "📌 Pinned"
if let pinDetails = content?.pinDetails {
diff --git a/DemoShare/DemoShareView.swift b/DemoShare/DemoShareView.swift
index e0e8fba2d21..bf27b76ad70 100644
--- a/DemoShare/DemoShareView.swift
+++ b/DemoShare/DemoShareView.swift
@@ -7,7 +7,6 @@ import StreamChatUI
import SwiftUI
struct DemoShareView: View {
-
@StateObject var viewModel: DemoShareViewModel
init(
@@ -42,7 +41,7 @@ struct DemoShareView: View {
.padding(.vertical)
HStack {
- if viewModel.channels.count == 0 {
+ if viewModel.channels.isEmpty {
ProgressView()
} else {
Text("Select a channel")
@@ -61,7 +60,6 @@ struct DemoShareView: View {
}
struct TopView: View {
-
@ObservedObject var viewModel: DemoShareViewModel
var body: some View {
@@ -89,7 +87,6 @@ struct TopView: View {
}
})
.disabled(viewModel.selectedChannel == nil)
-
}
.padding(.vertical, 8)
.padding(.horizontal, 16)
@@ -102,7 +99,6 @@ struct TopView: View {
}
struct ImageToShareView: View {
-
private let imageHeight: CGFloat = 180
var image: UIImage
@@ -115,11 +111,9 @@ struct ImageToShareView: View {
.frame(height: imageHeight)
.cornerRadius(8)
}
-
}
struct ShareChannelsView: View {
-
@ObservedObject var viewModel: DemoShareViewModel
var body: some View {
@@ -149,7 +143,6 @@ struct ShareChannelsView: View {
}
}
}
-
}
extension ChatChannel: Identifiable {
diff --git a/DemoShare/DemoShareViewModel.swift b/DemoShare/DemoShareViewModel.swift
index 78c14b04ef2..9d2b468253e 100644
--- a/DemoShare/DemoShareViewModel.swift
+++ b/DemoShare/DemoShareViewModel.swift
@@ -4,13 +4,12 @@
import Combine
import CoreServices
-import UIKit
-import StreamChat
import Social
+import StreamChat
+import UIKit
@MainActor
class DemoShareViewModel: ObservableObject, ChatChannelControllerDelegate {
-
private let chatClient: ChatClient
private let userCredentials: UserCredentials
private var channelListController: ChatChannelListController?
diff --git a/DemoShare/ShareViewController.swift b/DemoShare/ShareViewController.swift
index 4cdf7730aeb..d400b9be16b 100644
--- a/DemoShare/ShareViewController.swift
+++ b/DemoShare/ShareViewController.swift
@@ -2,14 +2,13 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-import UIKit
+import CoreServices
import Social
import StreamChat
import SwiftUI
-import CoreServices
+import UIKit
class ShareViewController: UIViewController {
-
override func viewDidLoad() {
super.viewDidLoad()
diff --git a/Examples/EdgeCases/ViewController.swift b/Examples/EdgeCases/ViewController.swift
index a246a12a329..5158a5be700 100644
--- a/Examples/EdgeCases/ViewController.swift
+++ b/Examples/EdgeCases/ViewController.swift
@@ -4,9 +4,4 @@
import UIKit
-class ViewController: UIViewController {
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view.
- }
-}
+class ViewController: UIViewController {}
diff --git a/Examples/YouTubeClone/Composer/YTChatComposerViewController.swift b/Examples/YouTubeClone/Composer/YTChatComposerViewController.swift
index 72138b35131..b1038bc825f 100644
--- a/Examples/YouTubeClone/Composer/YTChatComposerViewController.swift
+++ b/Examples/YouTubeClone/Composer/YTChatComposerViewController.swift
@@ -58,7 +58,6 @@ final class YTChatComposerViewController: ComposerVC {
preferredStyle: .actionSheet
)
["😃", "😇", "😅", "😂"].forEach { emoji in
-
let action = UIAlertAction(title: emoji, style: .default) { _ in
let inputTextView = self.composerView.inputMessageView.textView
inputTextView.replaceSelectedText(emoji)
diff --git a/Examples/iMessageClone/iMessageComposerVC.swift b/Examples/iMessageClone/iMessageComposerVC.swift
index e870f5315d8..1795e645379 100644
--- a/Examples/iMessageClone/iMessageComposerVC.swift
+++ b/Examples/iMessageClone/iMessageComposerVC.swift
@@ -35,7 +35,6 @@ final class iMessageComposerVC: ComposerVC {
)
["😃", "😇", "😅", "😂"].forEach { emoji in
-
let action = UIAlertAction(title: emoji, style: .default) { _ in
let inputTextView = self.composerView.inputMessageView.textView
inputTextView.replaceSelectedText(emoji)
diff --git a/Gemfile.lock b/Gemfile.lock
index cbc9d3c0f78..8d78597140b 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -209,9 +209,11 @@ GEM
fastlane
pry
fastlane-plugin-sonarcloud_metric_kit (0.2.1)
- fastlane-plugin-stream_actions (0.3.90)
+ fastlane-plugin-stream_actions (0.3.101)
xctest_list (= 1.2.1)
fastlane-plugin-versioning (0.7.1)
+ fastlane-plugin-xcsize (1.1.0)
+ xcsize (= 1.1.0)
fastlane-sirp (1.0.0)
sysrandom (~> 1.0)
faye-websocket (0.12.0)
@@ -287,7 +289,7 @@ GEM
molinillo (0.8.0)
multi_json (1.17.0)
multipart-post (2.4.1)
- mustermann (3.0.3)
+ mustermann (3.0.4)
ruby2_keywords (~> 0.0.1)
mutex_m (0.3.0)
nanaimo (0.4.0)
@@ -322,8 +324,8 @@ GEM
puma (6.6.1)
nio4r (~> 2.0)
racc (1.8.1)
- rack (3.2.0)
- rack-protection (4.1.1)
+ rack (3.2.3)
+ rack-protection (4.2.0)
base64 (>= 0.1.0)
logger (>= 1.6.0)
rack (>= 3.0.0, < 4)
@@ -378,11 +380,11 @@ GEM
simctl (1.6.10)
CFPropertyList
naturally
- sinatra (4.1.1)
+ sinatra (4.2.0)
logger (>= 1.6.0)
mustermann (~> 3.0)
rack (>= 3.0.0, < 4)
- rack-protection (= 4.1.1)
+ rack-protection (= 4.2.0)
rack-session (>= 2.0.0, < 3)
tilt (~> 2.0)
slather (2.8.5)
@@ -431,6 +433,8 @@ GEM
rouge (~> 3.28.0)
xcpretty-travis-formatter (1.0.1)
xcpretty (~> 0.2, >= 0.0.7)
+ xcsize (1.1.0)
+ commander (>= 4.6, < 6.0)
xctest_list (1.2.1)
PLATFORMS
@@ -445,8 +449,9 @@ DEPENDENCIES
fastlane-plugin-create_xcframework
fastlane-plugin-lizard
fastlane-plugin-sonarcloud_metric_kit
- fastlane-plugin-stream_actions (= 0.3.90)
+ fastlane-plugin-stream_actions (= 0.3.101)
fastlane-plugin-versioning
+ fastlane-plugin-xcsize (= 1.1.0)
faye-websocket
json
lefthook
diff --git a/Package.swift b/Package.swift
index 17c6eec1c8a..57e058a204b 100644
--- a/Package.swift
+++ b/Package.swift
@@ -25,7 +25,7 @@ let package = Package(
.library(
name: "StreamChatTestMockServer",
targets: ["StreamChatTestMockServer"]
- ),
+ )
],
targets: [
.target(
@@ -52,7 +52,7 @@ let package = Package(
path: "TestTools/StreamChatTestMockServer",
exclude: ["Info.plist"],
resources: [.process("Fixtures")]
- ),
+ )
]
)
diff --git a/README.md b/README.md
index ad5d7aeefa1..1cb15f51a54 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@
-
+
\(self)
\n" } - } public extension Substring { diff --git a/TestTools/StreamChatTestMockServer/Extensions/Swifter.swift b/TestTools/StreamChatTestMockServer/Extensions/Swifter.swift index 63476de95d3..691512f838e 100644 --- a/TestTools/StreamChatTestMockServer/Extensions/Swifter.swift +++ b/TestTools/StreamChatTestMockServer/Extensions/Swifter.swift @@ -5,7 +5,7 @@ import Foundation public extension HttpServer { - func register(_ path: String, execution: @escaping ((HttpRequest) throws -> HttpResponse?)) { + func register(_ path: String, execution: @escaping ((HttpRequest) throws -> HttpResponse?)) { self[path] = { [weak self] in self?.delayServerResponseIfNeeded() diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_add_member.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_add_member.json index de599c619b8..32f7c85cdcf 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_add_member.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_add_member.json @@ -1,11 +1,11 @@ { "channel": { - "id": "ec2807ff-5c60-41bc-a816-49578260471a", + "id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "type": "messaging", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "last_message_at": "2025-06-15T00:25:36.86243Z", - "created_at": "2025-06-15T00:25:33.285826Z", - "updated_at": "2025-06-15T00:25:33.285826Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "last_message_at": "2025-10-15T11:22:21.804306Z", + "created_at": "2025-10-15T11:22:20.27144Z", + "updated_at": "2025-10-15T11:22:20.27144Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", @@ -14,22 +14,26 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "canBeAddedToGroups": true, + "pando": "{\"speciality\":\"ios engineer\"}", + "canReceiveMessages": false, "team": "test", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "birthland": "Tatooine", + "custom_extra_data_key": true }, "frozen": false, "disabled": false, "member_count": 4, "config": { "created_at": "2021-03-01T19:26:18.406502Z", - "updated_at": "2025-05-05T18:07:33.269057Z", + "updated_at": "2025-07-28T15:20:21.098826Z", "name": "messaging", "typing_events": true, "read_events": true, @@ -43,9 +47,12 @@ "url_enrichment": true, "custom_events": true, "push_notifications": true, - "reminders": false, + "reminders": true, "mark_messages_pending": false, "polls": true, + "user_message_reminders": false, + "shared_locations": true, + "count_messages": false, "message_retention": "infinite", "max_message_length": 5000, "automod": "AI", @@ -102,6 +109,7 @@ "send-restricted-visibility-message", "send-typing-events", "set-channel-cooldown", + "share-location", "skip-slow-mode", "typing-events", "update-any-message", @@ -128,13 +136,14 @@ "updated_at": "2025-04-23T13:02:29.974824Z", "banned": false, "online": false, - "last_active": "2025-04-23T13:03:51.783496Z", + "last_active": "2025-10-01T07:12:24.084195Z", "blocked_user_ids": [], + "avg_response_time": 531, "birthland": "Serenno" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "member", @@ -142,28 +151,29 @@ "notifications_muted": false }, { - "user_id": "han_solo", + "user_id": "lando_calrissian", "user": { - "id": "han_solo", - "name": "Han Solo", - "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "fr", - "role": "user", + "id": "lando_calrissian", + "name": "Lando Calrissian", + "image": "https://vignette.wikia.nocookie.net/starwars/images/8/8f/Lando_ROTJ.png", + "language": "", + "role": "admin", "teams": [], - "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-04-24T15:07:52.050477Z", + "created_at": "2024-04-04T19:06:08.890459Z", + "updated_at": "2025-04-16T17:23:28.189521Z", "banned": false, "online": false, - "last_active": "2025-06-10T06:55:59.491807Z", + "last_active": "2025-10-12T03:39:43.111316Z", "blocked_user_ids": [], - "birthland": "Corellia" + "avg_response_time": 1165670, + "birthland": "Socorro" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, - "role": "member", + "role": "admin", "channel_role": "channel_member", "notifications_muted": false }, @@ -177,19 +187,23 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "team": "test", + "avg_response_time": 203648, + "birthland": "Tatooine", + "custom_extra_data_key": true, "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "canBeAddedToGroups": true, + "canReceiveMessages": false, + "team": "test", + "pando": "{\"speciality\":\"ios engineer\"}" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -202,28 +216,22 @@ "id": "leia_organa", "name": "Leia Organa", "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", - "language": "zh", + "language": "", "role": "admin", "teams": [], "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-03-28T15:21:20.061525Z", + "updated_at": "2025-10-01T16:49:27.725672Z", "banned": false, - "online": false, - "last_active": "2025-06-14T17:34:03.224367Z", + "online": true, + "last_active": "2025-10-15T11:21:40.020397141Z", "blocked_user_ids": [], - "birthland": "Polis Massa", - "private_settings": { - "readReceipts": { - "enabled": false - }, - "typingIndicators": { - "enabled": false - } - } + "avg_response_time": 638602, + "is_moderator": true, + "birthland": "Polis Massa" }, "status": "member", - "created_at": "2025-06-15T00:25:38.137522Z", - "updated_at": "2025-06-15T00:25:38.137522Z", + "created_at": "2025-10-15T11:22:22.248971Z", + "updated_at": "2025-10-15T11:22:22.248971Z", "banned": false, "shadow_banned": false, "role": "admin", @@ -231,5 +239,5 @@ "notifications_muted": false } ], - "duration": "38.76ms" + "duration": "36.22ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_attachment.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_attachment.json index 0cf07795844..21e8fc65c39 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_attachment.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_attachment.json @@ -1,4 +1,4 @@ { - "file": "https://frankfurt.stream-io-cdn.com/102399/images/84500679-c986-471d-be2a-461542a4dbaf.yoda.jpg?Key-Pair-Id=APKAIHG36VEWPDULE23Q&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9mcmFua2Z1cnQuc3RyZWFtLWlvLWNkbi5jb20vMTAyMzk5L2ltYWdlcy84NDUwMDY3OS1jOTg2LTQ3MWQtYmUyYS00NjE1NDJhNGRiYWYueW9kYS5qcGc~Km9oPTAqb3c9MCoiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3NTExNTY3Mzh9fX1dfQ__&Signature=N0MgP9HIGp5hCyxzq-70m0lO2Km3P73oZC-jepZlIxtv4go-DnWvgPHGKEw6bo60Ud2vV8whVkG92U1c5OuU~dpwwZj8L8q0VqMDA7T~VOVEEN4VlwlD2VPElyA2IUCISqkuTd61xO9CqR0nsmHum48zdWPZn001uNZwN5rWb1GJfJijeVPhu1rkytdygNeE1ZeZiDG0gUKt7~9H30~HS75zivkryTkKRD9yhmmeInwV45FocoDzUGsPc7Ux8xW6DaxXhUaNC6FdQp9GMLCmBNrgZjMLZsS-mm~qsl78ZR24eEzuT8mwfVh9rmAmW9xUdyXEZCUod6KpMrLiRGahIA__&oh=0&ow=0", - "duration": "124.23ms" + "file": "https://frankfurt.stream-io-cdn.com/102399/images/7a78629b-d178-4bb4-9e6d-ca28484c3130.yoda.jpg?Key-Pair-Id=APKAIHG36VEWPDULE23Q&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9mcmFua2Z1cnQuc3RyZWFtLWlvLWNkbi5jb20vMTAyMzk5L2ltYWdlcy83YTc4NjI5Yi1kMTc4LTRiYjQtOWU2ZC1jYTI4NDg0YzMxMzAueW9kYS5qcGc~Km9oPTAqb3c9MCoiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3NjE3MzY5NDJ9fX1dfQ__&Signature=LI6nidy~xUcwmRDDyFvHiSnpuHfDei7J~FmMdbG1m1uuXAKsyJwue7isX-1tOaKV~hvWaInq-nn4-s0-OkdgwjYw7TsRlJlgowCrGm5NSFmPdkSdOZerNGVfVJEW0zV0FgRkHXrM-K9wS~sJx6x-rDkJs9YEY4CWpwlhhI-jICVpLHaNHaUT63fDtKbKoGU3JCzPjtlI9vjoHAG~nr9EahyizFoxW5~i7K-uAC2tJj15JKeqAw4nWDmPU0qV-NxEH2CGn3Otcp8vrskVq4lqW3B4pGgwVnsopfYBuLrZlN6AuiSwTQos5s6~9iVXlFjGnGOoWbgivHjV-9aiR1nMgg__&oh=0&ow=0", + "duration": "131.42ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_creation.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_creation.json index 13fb1c099af..c115f5640e6 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_creation.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_creation.json @@ -1,10 +1,10 @@ { "channel": { - "id": "ec2807ff-5c60-41bc-a816-49578260471a", + "id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "type": "messaging", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:33.285826Z", - "updated_at": "2025-06-15T00:25:33.285826Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:20.27144Z", + "updated_at": "2025-10-15T11:22:20.27144Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", @@ -13,12 +13,16 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "custom_extra_data_key": true, + "canBeAddedToGroups": true, "team": "test", + "canReceiveMessages": false, "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine" @@ -28,7 +32,7 @@ "member_count": 3, "config": { "created_at": "2021-03-01T19:26:18.406502Z", - "updated_at": "2025-05-05T18:07:33.269057Z", + "updated_at": "2025-07-28T15:20:21.098826Z", "name": "messaging", "typing_events": true, "read_events": true, @@ -42,9 +46,12 @@ "url_enrichment": true, "custom_events": true, "push_notifications": true, - "reminders": false, + "reminders": true, "mark_messages_pending": false, "polls": true, + "user_message_reminders": false, + "shared_locations": true, + "count_messages": false, "message_retention": "infinite", "max_message_length": 5000, "automod": "AI", @@ -101,6 +108,7 @@ "send-restricted-visibility-message", "send-typing-events", "set-channel-cooldown", + "share-location", "skip-slow-mode", "typing-events", "update-any-message", @@ -130,30 +138,32 @@ "updated_at": "2025-04-23T13:02:29.974824Z", "banned": false, "online": false, - "last_active": "2025-04-23T13:03:51.783496Z", + "last_active": "2025-10-01T07:12:24.084195Z", "blocked_user_ids": [], + "avg_response_time": 531, "birthland": "Serenno" }, - "last_read": "2025-06-15T00:25:33.34121176Z", + "last_read": "2025-10-15T11:22:20.320400817Z", "unread_messages": 0 }, { "user": { - "id": "han_solo", - "name": "Han Solo", - "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "fr", - "role": "user", + "id": "lando_calrissian", + "name": "Lando Calrissian", + "image": "https://vignette.wikia.nocookie.net/starwars/images/8/8f/Lando_ROTJ.png", + "language": "", + "role": "admin", "teams": [], - "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-04-24T15:07:52.050477Z", + "created_at": "2024-04-04T19:06:08.890459Z", + "updated_at": "2025-04-16T17:23:28.189521Z", "banned": false, "online": false, - "last_active": "2025-06-10T06:55:59.491807Z", + "last_active": "2025-10-12T03:39:43.111316Z", "blocked_user_ids": [], - "birthland": "Corellia" + "avg_response_time": 1165670, + "birthland": "Socorro" }, - "last_read": "2025-06-15T00:25:33.34121176Z", + "last_read": "2025-10-15T11:22:20.320400817Z", "unread_messages": 0 }, { @@ -165,17 +175,21 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "canReceiveMessages": false, "birthland": "Tatooine", - "team": "test", + "custom_extra_data_key": true, "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "canBeAddedToGroups": true, + "pando": "{\"speciality\":\"ios engineer\"}", + "team": "test" }, - "last_read": "2025-06-15T00:25:33.34121176Z", + "last_read": "2025-10-15T11:22:20.320400817Z", "unread_messages": 0 } ], @@ -193,13 +207,14 @@ "updated_at": "2025-04-23T13:02:29.974824Z", "banned": false, "online": false, - "last_active": "2025-04-23T13:03:51.783496Z", + "last_active": "2025-10-01T07:12:24.084195Z", "blocked_user_ids": [], + "avg_response_time": 531, "birthland": "Serenno" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "member", @@ -207,28 +222,29 @@ "notifications_muted": false }, { - "user_id": "han_solo", + "user_id": "lando_calrissian", "user": { - "id": "han_solo", - "name": "Han Solo", - "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "fr", - "role": "user", + "id": "lando_calrissian", + "name": "Lando Calrissian", + "image": "https://vignette.wikia.nocookie.net/starwars/images/8/8f/Lando_ROTJ.png", + "language": "", + "role": "admin", "teams": [], - "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-04-24T15:07:52.050477Z", + "created_at": "2024-04-04T19:06:08.890459Z", + "updated_at": "2025-04-16T17:23:28.189521Z", "banned": false, "online": false, - "last_active": "2025-06-10T06:55:59.491807Z", + "last_active": "2025-10-12T03:39:43.111316Z", "blocked_user_ids": [], - "birthland": "Corellia" + "avg_response_time": 1165670, + "birthland": "Socorro" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, - "role": "member", + "role": "admin", "channel_role": "channel_member", "notifications_muted": false }, @@ -242,19 +258,23 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine", "team": "test", - "type": "team" + "canBeAddedToGroups": true, + "type": "team", + "canReceiveMessages": false, + "birthland": "Tatooine", + "custom_extra_data_key": true }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -271,19 +291,23 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "team": "test", + "avg_response_time": 203648, + "canReceiveMessages": false, + "birthland": "Tatooine", "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "custom_extra_data_key": true, + "team": "test", + "canBeAddedToGroups": true }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -291,5 +315,5 @@ "notifications_muted": false }, "threads": [], - "duration": "145.45ms" + "duration": "116.90ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_removal.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_removal.json index f6593d1e860..6002aa23601 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_removal.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_removal.json @@ -1,12 +1,12 @@ { - "duration": "32.46ms", + "duration": "22.64ms", "channel": { - "id": "ec2807ff-5c60-41bc-a816-49578260471a", + "id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "type": "messaging", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:33.285826Z", - "updated_at": "2025-06-15T00:25:47.043063Z", - "deleted_at": "2025-06-15T00:25:47.390053Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:20.27144Z", + "updated_at": "2025-10-15T11:22:24.61465Z", + "deleted_at": "2025-10-15T11:22:24.825752Z", "created_by": null, "frozen": false, "disabled": false, @@ -24,13 +24,14 @@ "updated_at": "2025-04-23T13:02:29.974824Z", "banned": false, "online": false, - "last_active": "2025-04-23T13:03:51.783496Z", + "last_active": "2025-10-01T07:12:24.084195Z", "blocked_user_ids": [], + "avg_response_time": 531, "birthland": "Serenno" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "member", @@ -38,28 +39,29 @@ "notifications_muted": false }, { - "user_id": "han_solo", + "user_id": "lando_calrissian", "user": { - "id": "han_solo", - "name": "Han Solo", - "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "fr", - "role": "user", + "id": "lando_calrissian", + "name": "Lando Calrissian", + "image": "https://vignette.wikia.nocookie.net/starwars/images/8/8f/Lando_ROTJ.png", + "language": "", + "role": "admin", "teams": [], - "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-04-24T15:07:52.050477Z", + "created_at": "2024-04-04T19:06:08.890459Z", + "updated_at": "2025-04-16T17:23:28.189521Z", "banned": false, "online": false, - "last_active": "2025-06-10T06:55:59.491807Z", + "last_active": "2025-10-12T03:39:43.111316Z", "blocked_user_ids": [], - "birthland": "Corellia" + "avg_response_time": 1165670, + "birthland": "Socorro" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, - "role": "member", + "role": "admin", "channel_role": "channel_member", "notifications_muted": false }, @@ -73,19 +75,23 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:47.038320949Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "canBeAddedToGroups": true, "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine", "team": "test", - "type": "team" + "birthland": "Tatooine", + "type": "team", + "canReceiveMessages": false, + "custom_extra_data_key": true }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -98,28 +104,22 @@ "id": "leia_organa", "name": "Leia Organa", "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", - "language": "zh", + "language": "", "role": "admin", "teams": [], "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-03-28T15:21:20.061525Z", + "updated_at": "2025-10-01T16:49:27.725672Z", "banned": false, - "online": false, - "last_active": "2025-06-14T17:34:03.224367Z", + "online": true, + "last_active": "2025-10-15T11:21:40.020397141Z", "blocked_user_ids": [], + "avg_response_time": 638602, "birthland": "Polis Massa", - "private_settings": { - "readReceipts": { - "enabled": false - }, - "typingIndicators": { - "enabled": false - } - } + "is_moderator": true }, "status": "member", - "created_at": "2025-06-15T00:25:38.137522Z", - "updated_at": "2025-06-15T00:25:38.137522Z", + "created_at": "2025-10-15T11:22:22.248971Z", + "updated_at": "2025-10-15T11:22:22.248971Z", "banned": false, "shadow_banned": false, "role": "admin", @@ -129,7 +129,7 @@ ], "config": { "created_at": "2021-03-01T19:26:18.406502Z", - "updated_at": "2025-05-05T18:07:33.269057Z", + "updated_at": "2025-07-28T15:20:21.098826Z", "name": "messaging", "typing_events": true, "read_events": true, @@ -143,9 +143,12 @@ "url_enrichment": true, "custom_events": true, "push_notifications": true, - "reminders": false, + "reminders": true, "mark_messages_pending": false, "polls": true, + "user_message_reminders": false, + "shared_locations": true, + "count_messages": false, "message_retention": "infinite", "max_message_length": 5000, "automod": "AI", @@ -176,7 +179,7 @@ } ] }, - "truncated_at": "2025-06-15T00:25:47.390053Z", + "truncated_at": "2025-10-15T11:22:24.825752Z", "truncated_by": { "id": "luke_skywalker", "name": "Luke Skywalker", @@ -185,15 +188,20 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "team": "test", + "avg_response_time": 203648, + "canBeAddedToGroups": true, "type": "team", + "team": "test", "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" - } + "birthland": "Tatooine", + "custom_extra_data_key": true, + "canReceiveMessages": false + }, + "message_count": 0 } } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channels.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channels.json index ee50a4becb2..9687422dcfb 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channels.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channels.json @@ -2,11 +2,11 @@ "channels": [ { "channel": { - "id": "ec2807ff-5c60-41bc-a816-49578260471a", + "id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "type": "messaging", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:33.285826Z", - "updated_at": "2025-06-15T00:25:33.285826Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:20.27144Z", + "updated_at": "2025-10-15T11:22:20.27144Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", @@ -15,22 +15,26 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "canReceiveMessages": false, + "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test", + "custom_extra_data_key": true, "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "team": "test", + "canBeAddedToGroups": true }, "frozen": false, "disabled": false, "member_count": 3, "config": { "created_at": "2021-03-01T19:26:18.406502Z", - "updated_at": "2025-05-05T18:07:33.269057Z", + "updated_at": "2025-07-28T15:20:21.098826Z", "name": "messaging", "typing_events": true, "read_events": true, @@ -44,9 +48,12 @@ "url_enrichment": true, "custom_events": true, "push_notifications": true, - "reminders": false, + "reminders": true, "mark_messages_pending": false, "polls": true, + "user_message_reminders": false, + "shared_locations": true, + "count_messages": false, "message_retention": "infinite", "max_message_length": 5000, "automod": "AI", @@ -103,6 +110,7 @@ "send-restricted-visibility-message", "send-typing-events", "set-channel-cooldown", + "share-location", "skip-slow-mode", "typing-events", "update-any-message", @@ -132,31 +140,33 @@ "updated_at": "2025-04-23T13:02:29.974824Z", "banned": false, "online": false, - "last_active": "2025-04-23T13:03:51.783496Z", + "last_active": "2025-10-01T07:12:24.084195Z", "blocked_user_ids": [], + "avg_response_time": 531, "birthland": "Serenno" }, "unread_messages": 0, - "last_read": "2025-06-15T00:25:34Z" + "last_read": "2025-10-15T11:22:20Z" }, { "user": { - "id": "han_solo", - "name": "Han Solo", - "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "fr", - "role": "user", + "id": "lando_calrissian", + "name": "Lando Calrissian", + "image": "https://vignette.wikia.nocookie.net/starwars/images/8/8f/Lando_ROTJ.png", + "language": "", + "role": "admin", "teams": [], - "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-04-24T15:07:52.050477Z", + "created_at": "2024-04-04T19:06:08.890459Z", + "updated_at": "2025-04-16T17:23:28.189521Z", "banned": false, "online": false, - "last_active": "2025-06-10T06:55:59.491807Z", + "last_active": "2025-10-12T03:39:43.111316Z", "blocked_user_ids": [], - "birthland": "Corellia" + "avg_response_time": 1165670, + "birthland": "Socorro" }, "unread_messages": 0, - "last_read": "2025-06-15T00:25:34Z" + "last_read": "2025-10-15T11:22:20Z" }, { "user": { @@ -167,18 +177,22 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "birthland": "Tatooine", + "avg_response_time": 203648, "team": "test", + "canBeAddedToGroups": true, + "custom_extra_data_key": true, "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "canReceiveMessages": false, + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "unread_messages": 0, - "last_read": "2025-06-15T00:25:34Z" + "last_read": "2025-10-15T11:22:20Z" } ], "members": [ @@ -195,13 +209,14 @@ "updated_at": "2025-04-23T13:02:29.974824Z", "banned": false, "online": false, - "last_active": "2025-04-23T13:03:51.783496Z", + "last_active": "2025-10-01T07:12:24.084195Z", "blocked_user_ids": [], + "avg_response_time": 531, "birthland": "Serenno" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "member", @@ -209,28 +224,29 @@ "notifications_muted": false }, { - "user_id": "han_solo", + "user_id": "lando_calrissian", "user": { - "id": "han_solo", - "name": "Han Solo", - "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "fr", - "role": "user", + "id": "lando_calrissian", + "name": "Lando Calrissian", + "image": "https://vignette.wikia.nocookie.net/starwars/images/8/8f/Lando_ROTJ.png", + "language": "", + "role": "admin", "teams": [], - "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-04-24T15:07:52.050477Z", + "created_at": "2024-04-04T19:06:08.890459Z", + "updated_at": "2025-04-16T17:23:28.189521Z", "banned": false, "online": false, - "last_active": "2025-06-10T06:55:59.491807Z", + "last_active": "2025-10-12T03:39:43.111316Z", "blocked_user_ids": [], - "birthland": "Corellia" + "avg_response_time": 1165670, + "birthland": "Socorro" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, - "role": "member", + "role": "admin", "channel_role": "channel_member", "notifications_muted": false }, @@ -244,19 +260,23 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "birthland": "Tatooine", + "avg_response_time": 203648, "team": "test", + "canBeAddedToGroups": true, + "custom_extra_data_key": true, "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "canReceiveMessages": false, + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -273,19 +293,23 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "team": "test", - "type": "team", + "avg_response_time": 203648, "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "canBeAddedToGroups": true, + "canReceiveMessages": false, + "birthland": "Tatooine", + "custom_extra_data_key": true, + "team": "test", + "type": "team" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "channel_role": "channel_member", @@ -294,5 +318,5 @@ "threads": [] } ], - "duration": "92.12ms" + "duration": "328.53ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_events.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_events.json index 5e550a393b8..a753dbb4339 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_events.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_events.json @@ -1,8 +1,8 @@ { "event": { "type": "typing.start", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "channel_id": "ec2807ff-5c60-41bc-a816-49578260471a", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "channel_id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "channel_type": "messaging", "user": { "id": "luke_skywalker", @@ -12,17 +12,21 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "team": "test", + "avg_response_time": 203648, + "birthland": "Tatooine", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "canBeAddedToGroups": true, + "canReceiveMessages": false, + "team": "test", + "custom_extra_data_key": true, + "pando": "{\"speciality\":\"ios engineer\"}" }, - "created_at": "2025-06-15T00:25:34.999482144Z" + "created_at": "2025-10-15T11:22:21.064322094Z" }, - "duration": "6.47ms" + "duration": "7.74ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_giphy_link.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_giphy_link.json index 3d6eef9c4ba..1c9cfff1224 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_giphy_link.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_giphy_link.json @@ -1,6 +1,6 @@ { "message": { - "id": "d82c481c-541b-4da4-a704-6ec285420492", + "id": "81c8fe15-790d-44d8-860c-2e832f76cda8", "text": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi", "html": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi
\n", "type": "regular", @@ -12,15 +12,22 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "birthland": "Tatooine", + "canReceiveMessages": false, "team": "test", "type": "team", + "canBeAddedToGroups": true, "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "custom_extra_data_key": true + }, + "member": { + "channel_role": "channel_member" }, "attachments": [ { @@ -28,9 +35,9 @@ "title": "Test Computer GIF - Find & Share on GIPHY", "title_link": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi", "text": "Discover & share this Test Computer GIF with everyone you know. GIPHY is how you search, share, discover, and create GIFs.", - "image_url": "https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExZmdiZ3NydzJ5NDZxbWVhajAyYzNmZ3BwYWJndWM4aXJyOXQwZXBydyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.webp", - "thumb_url": "https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExZmdiZ3NydzJ5NDZxbWVhajAyYzNmZ3BwYWJndWM4aXJyOXQwZXBydyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.webp", - "asset_url": "https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExZmdiZ3NydzJ5NDZxbWVhajAyYzNmZ3BwYWJndWM4aXJyOXQwZXBydyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.mp4", + "image_url": "https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExcWI3dXdqbGhpNXozMG9obXg3OTh3aXNtb3NudTlzbHBreW5iaTIyNCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.webp", + "thumb_url": "https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExcWI3dXdqbGhpNXozMG9obXg3OTh3aXNtb3NudTlzbHBreW5iaTIyNCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.webp", + "asset_url": "https://media3.giphy.com/media/v1.Y2lkPTc5MGI3NjExcWI3dXdqbGhpNXozMG9obXg3OTh3aXNtb3NudTlzbHBreW5iaTIyNCZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.mp4", "og_scrape_url": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi" } ], @@ -40,16 +47,11 @@ "reaction_scores": {}, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:46.443211Z", - "updated_at": "2025-06-15T00:25:46.443211Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:24.446739Z", + "updated_at": "2025-10-15T11:22:24.446739Z", "shadowed": false, "mentioned_users": [], - "i18n": { - "language": "en", - "en_text": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi", - "fr_text": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -57,5 +59,5 @@ "pin_expires": null, "restricted_visibility": [] }, - "duration": "687.06ms" + "duration": "430.22ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message.json index 92020781f10..9e6e84033fe 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message.json @@ -1,6 +1,6 @@ { "message": { - "id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "id": "dc702391-84b6-44af-aa67-c349d2e72441", "text": "Test", "html": "Test
\n", "type": "regular", @@ -12,15 +12,22 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "birthland": "Tatooine", - "team": "test", + "avg_response_time": 203648, "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "pando": "{\"speciality\":\"ios engineer\"}", + "custom_extra_data_key": true, + "canReceiveMessages": false, + "team": "test", + "canBeAddedToGroups": true, + "birthland": "Tatooine" + }, + "member": { + "channel_role": "channel_member" }, "attachments": [], "latest_reactions": [], @@ -29,16 +36,11 @@ "reaction_scores": {}, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:36.86243Z", - "updated_at": "2025-06-15T00:25:36.86243Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:21.804306Z", + "updated_at": "2025-10-15T11:22:21.804306Z", "shadowed": false, "mentioned_users": [], - "i18n": { - "language": "en", - "en_text": "Test", - "fr_text": "Testez" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -46,5 +48,5 @@ "pin_expires": null, "restricted_visibility": [] }, - "duration": "1352.04ms" + "duration": "647.31ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message_ephemeral.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message_ephemeral.json index c4e6087afca..2ba07b6ab4e 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message_ephemeral.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message_ephemeral.json @@ -1,6 +1,6 @@ { "message": { - "id": "82168f7f-d7e2-48a1-9273-417d03365da0", + "id": "31d2f09d-e285-4e0f-a561-6aa6adce37b0", "text": "/giphy Test", "command": "giphy", "html": "/giphy Test
\n", @@ -13,22 +13,29 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "birthland": "Tatooine", "team": "test", - "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "canBeAddedToGroups": true, + "custom_extra_data_key": true, + "type": "team", + "canReceiveMessages": false + }, + "member": { + "channel_role": "channel_member" }, "attachments": [ { "type": "giphy", "title": "Test", - "title_link": "https://giphy.com/gifs/rhuber-test-EtpYMjyYJowVy", - "thumb_url": "https://media3.giphy.com/media/v1.Y2lkPWM0YjAzNjc1amdqbTV3eXl6d2dqZ3hnOXJmdGt4ZHJsZmNicDFpYjNoejJ6cWNneiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/EtpYMjyYJowVy/giphy.gif", + "title_link": "https://giphy.com/gifs/anthonyo-test-delete-RiiVFKow0eymLkTnMP", + "thumb_url": "https://media2.giphy.com/media/v1.Y2lkPWM0YjAzNjc1NGxxbmtmdmU5OHFqMGR6a2cwc3B2b2s0cDZ1ZzZub25nMTdkZDJoaCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/RiiVFKow0eymLkTnMP/giphy.gif", "actions": [ { "name": "image_action", @@ -54,52 +61,52 @@ ], "giphy": { "original": { - "url": "https://media3.giphy.com/media/v1.Y2lkPWM0YjAzNjc1amdqbTV3eXl6d2dqZ3hnOXJmdGt4ZHJsZmNicDFpYjNoejJ6cWNneiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/EtpYMjyYJowVy/giphy.gif", - "width": "400", - "height": "167", - "size": "1569544", + "url": "https://media2.giphy.com/media/v1.Y2lkPWM0YjAzNjc1NGxxbmtmdmU5OHFqMGR6a2cwc3B2b2s0cDZ1ZzZub25nMTdkZDJoaCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/RiiVFKow0eymLkTnMP/giphy.gif", + "width": "268", + "height": "350", + "size": "1865328", "frames": "49" }, "fixed_height": { - "url": "https://media3.giphy.com/media/v1.Y2lkPWM0YjAzNjc1amdqbTV3eXl6d2dqZ3hnOXJmdGt4ZHJsZmNicDFpYjNoejJ6cWNneiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/EtpYMjyYJowVy/200.gif", - "width": "479", + "url": "https://media2.giphy.com/media/v1.Y2lkPWM0YjAzNjc1NGxxbmtmdmU5OHFqMGR6a2cwc3B2b2s0cDZ1ZzZub25nMTdkZDJoaCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/RiiVFKow0eymLkTnMP/200.gif", + "width": "154", "height": "200", - "size": "1576548", + "size": "612190", "frames": "" }, "fixed_height_still": { - "url": "https://media3.giphy.com/media/v1.Y2lkPWM0YjAzNjc1amdqbTV3eXl6d2dqZ3hnOXJmdGt4ZHJsZmNicDFpYjNoejJ6cWNneiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/EtpYMjyYJowVy/200_s.gif", - "width": "479", + "url": "https://media2.giphy.com/media/v1.Y2lkPWM0YjAzNjc1NGxxbmtmdmU5OHFqMGR6a2cwc3B2b2s0cDZ1ZzZub25nMTdkZDJoaCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/RiiVFKow0eymLkTnMP/200_s.gif", + "width": "154", "height": "200", - "size": "32259", + "size": "17451", "frames": "" }, "fixed_height_downsampled": { - "url": "https://media3.giphy.com/media/v1.Y2lkPWM0YjAzNjc1amdqbTV3eXl6d2dqZ3hnOXJmdGt4ZHJsZmNicDFpYjNoejJ6cWNneiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/EtpYMjyYJowVy/200_d.gif", - "width": "479", + "url": "https://media2.giphy.com/media/v1.Y2lkPWM0YjAzNjc1NGxxbmtmdmU5OHFqMGR6a2cwc3B2b2s0cDZ1ZzZub25nMTdkZDJoaCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/RiiVFKow0eymLkTnMP/200_d.gif", + "width": "154", "height": "200", - "size": "212805", + "size": "75328", "frames": "" }, "fixed_width": { - "url": "https://media3.giphy.com/media/v1.Y2lkPWM0YjAzNjc1amdqbTV3eXl6d2dqZ3hnOXJmdGt4ZHJsZmNicDFpYjNoejJ6cWNneiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/EtpYMjyYJowVy/200w.gif", + "url": "https://media2.giphy.com/media/v1.Y2lkPWM0YjAzNjc1NGxxbmtmdmU5OHFqMGR6a2cwc3B2b2s0cDZ1ZzZub25nMTdkZDJoaCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/RiiVFKow0eymLkTnMP/200w.gif", "width": "200", - "height": "84", - "size": "331240", + "height": "262", + "size": "849838", "frames": "" }, "fixed_width_still": { - "url": "https://media3.giphy.com/media/v1.Y2lkPWM0YjAzNjc1amdqbTV3eXl6d2dqZ3hnOXJmdGt4ZHJsZmNicDFpYjNoejJ6cWNneiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/EtpYMjyYJowVy/200w_s.gif", + "url": "https://media2.giphy.com/media/v1.Y2lkPWM0YjAzNjc1NGxxbmtmdmU5OHFqMGR6a2cwc3B2b2s0cDZ1ZzZub25nMTdkZDJoaCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/RiiVFKow0eymLkTnMP/200w_s.gif", "width": "200", - "height": "84", - "size": "8017", + "height": "262", + "size": "16788", "frames": "" }, "fixed_width_downsampled": { - "url": "https://media3.giphy.com/media/v1.Y2lkPWM0YjAzNjc1amdqbTV3eXl6d2dqZ3hnOXJmdGt4ZHJsZmNicDFpYjNoejJ6cWNneiZlcD12MV9naWZzX3NlYXJjaCZjdD1n/EtpYMjyYJowVy/200w_d.gif", + "url": "https://media2.giphy.com/media/v1.Y2lkPWM0YjAzNjc1NGxxbmtmdmU5OHFqMGR6a2cwc3B2b2s0cDZ1ZzZub25nMTdkZDJoaCZlcD12MV9naWZzX3NlYXJjaCZjdD1n/RiiVFKow0eymLkTnMP/200w_d.gif", "width": "200", - "height": "84", - "size": "43614", + "height": "262", + "size": "102260", "frames": "" } } @@ -111,16 +118,11 @@ "reaction_scores": {}, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:39.407203Z", - "updated_at": "2025-06-15T00:25:39.407203Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:22.981577Z", + "updated_at": "2025-10-15T11:22:22.981577Z", "shadowed": false, "mentioned_users": [], - "i18n": { - "fr_text": "/Test Giphy", - "language": "en", - "en_text": "/giphy Test" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -132,5 +134,5 @@ "name": "Giphy" } }, - "duration": "272.79ms" + "duration": "222.97ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_reaction.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_reaction.json index bc1bad366a4..3fac69b9319 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_reaction.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_reaction.json @@ -1,6 +1,6 @@ { "message": { - "id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "id": "dc702391-84b6-44af-aa67-c349d2e72441", "text": "Test", "html": "Test
\n", "type": "regular", @@ -12,20 +12,27 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "birthland": "Tatooine", + "avg_response_time": 203648, "team": "test", - "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "canReceiveMessages": false, + "pando": "{\"speciality\":\"ios engineer\"}", + "canBeAddedToGroups": true, + "birthland": "Tatooine", + "custom_extra_data_key": true, + "type": "team" + }, + "member": { + "channel_role": "channel_member" }, "attachments": [], "latest_reactions": [ { - "message_id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "message_id": "dc702391-84b6-44af-aa67-c349d2e72441", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", @@ -35,25 +42,29 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine", + "avg_response_time": 203648, + "custom_extra_data_key": true, + "canReceiveMessages": false, "team": "test", - "type": "team" + "canBeAddedToGroups": true, + "pando": "{\"speciality\":\"ios engineer\"}", + "type": "team", + "birthland": "Tatooine" }, "type": "like", "score": 1, - "created_at": "2025-06-15T00:25:37.516538Z", - "updated_at": "2025-06-15T00:25:37.516538Z" + "created_at": "2025-10-15T11:22:21.987244Z", + "updated_at": "2025-10-15T11:22:21.987244Z" } ], "own_reactions": [ { - "message_id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "message_id": "dc702391-84b6-44af-aa67-c349d2e72441", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", @@ -63,20 +74,24 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, "birthland": "Tatooine", + "canReceiveMessages": false, "team": "test", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "canBeAddedToGroups": true, + "pando": "{\"speciality\":\"ios engineer\"}", + "custom_extra_data_key": true }, "type": "like", "score": 1, - "created_at": "2025-06-15T00:25:37.516538Z", - "updated_at": "2025-06-15T00:25:37.516538Z" + "created_at": "2025-10-15T11:22:21.987244Z", + "updated_at": "2025-10-15T11:22:21.987244Z" } ], "reaction_counts": { @@ -89,22 +104,17 @@ "like": { "count": 1, "sum_scores": 1, - "first_reaction_at": "2025-06-15T00:25:37.516538Z", - "last_reaction_at": "2025-06-15T00:25:37.516538Z" + "first_reaction_at": "2025-10-15T11:22:21.987244Z", + "last_reaction_at": "2025-10-15T11:22:21.987244Z" } }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:36.86243Z", - "updated_at": "2025-06-15T00:25:37.529233Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:21.804306Z", + "updated_at": "2025-10-15T11:22:22.001363Z", "shadowed": false, "mentioned_users": [], - "i18n": { - "en_text": "Test", - "fr_text": "Testez", - "language": "en" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -113,7 +123,7 @@ "restricted_visibility": [] }, "reaction": { - "message_id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "message_id": "dc702391-84b6-44af-aa67-c349d2e72441", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", @@ -123,11 +133,15 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "canBeAddedToGroups": true, + "custom_extra_data_key": true, + "canReceiveMessages": false, "team": "test", "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", @@ -135,8 +149,8 @@ }, "type": "like", "score": 1, - "created_at": "2025-06-15T00:25:37.516538Z", - "updated_at": "2025-06-15T00:25:37.516538Z" + "created_at": "2025-10-15T11:22:21.987244Z", + "updated_at": "2025-10-15T11:22:21.987244Z" }, - "duration": "39.84ms" + "duration": "46.60ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_truncate.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_truncate.json index 953f6dcc36c..31786af9143 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_truncate.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_truncate.json @@ -1,12 +1,12 @@ { - "duration": "70.67ms", + "duration": "73.97ms", "channel": { - "id": "ec2807ff-5c60-41bc-a816-49578260471a", + "id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "type": "messaging", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", "last_message_at": "0001-01-01T00:00:00Z", - "created_at": "2025-06-15T00:25:33.285826Z", - "updated_at": "2025-06-15T00:25:47.043063Z", + "created_at": "2025-10-15T11:22:20.27144Z", + "updated_at": "2025-10-15T11:22:24.61465Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", @@ -15,15 +15,19 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "team": "test", - "type": "team", + "avg_response_time": 203648, "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "canReceiveMessages": false, + "type": "team", + "canBeAddedToGroups": true, + "birthland": "Tatooine", + "custom_extra_data_key": true, + "team": "test" }, "frozen": false, "disabled": false, @@ -41,13 +45,14 @@ "updated_at": "2025-04-23T13:02:29.974824Z", "banned": false, "online": false, - "last_active": "2025-04-23T13:03:51.783496Z", + "last_active": "2025-10-01T07:12:24.084195Z", "blocked_user_ids": [], + "avg_response_time": 531, "birthland": "Serenno" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "member", @@ -55,28 +60,29 @@ "notifications_muted": false }, { - "user_id": "han_solo", + "user_id": "lando_calrissian", "user": { - "id": "han_solo", - "name": "Han Solo", - "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "fr", - "role": "user", + "id": "lando_calrissian", + "name": "Lando Calrissian", + "image": "https://vignette.wikia.nocookie.net/starwars/images/8/8f/Lando_ROTJ.png", + "language": "", + "role": "admin", "teams": [], - "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-04-24T15:07:52.050477Z", + "created_at": "2024-04-04T19:06:08.890459Z", + "updated_at": "2025-04-16T17:23:28.189521Z", "banned": false, "online": false, - "last_active": "2025-06-10T06:55:59.491807Z", + "last_active": "2025-10-12T03:39:43.111316Z", "blocked_user_ids": [], - "birthland": "Corellia" + "avg_response_time": 1165670, + "birthland": "Socorro" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, - "role": "member", + "role": "admin", "channel_role": "channel_member", "notifications_muted": false }, @@ -90,19 +96,23 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, "pando": "{\"speciality\":\"ios engineer\"}", + "canReceiveMessages": false, "birthland": "Tatooine", + "custom_extra_data_key": true, "team": "test", - "type": "team" + "type": "team", + "canBeAddedToGroups": true }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -115,28 +125,22 @@ "id": "leia_organa", "name": "Leia Organa", "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", - "language": "zh", + "language": "", "role": "admin", "teams": [], "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-03-28T15:21:20.061525Z", + "updated_at": "2025-10-01T16:49:27.725672Z", "banned": false, - "online": false, - "last_active": "2025-06-14T17:34:03.224367Z", + "online": true, + "last_active": "2025-10-15T11:21:40.020397141Z", "blocked_user_ids": [], + "avg_response_time": 638602, "birthland": "Polis Massa", - "private_settings": { - "readReceipts": { - "enabled": false - }, - "typingIndicators": { - "enabled": false - } - } + "is_moderator": true }, "status": "member", - "created_at": "2025-06-15T00:25:38.137522Z", - "updated_at": "2025-06-15T00:25:38.137522Z", + "created_at": "2025-10-15T11:22:22.248971Z", + "updated_at": "2025-10-15T11:22:22.248971Z", "banned": false, "shadow_banned": false, "role": "admin", @@ -147,7 +151,7 @@ "member_count": 4, "config": { "created_at": "2021-03-01T19:26:18.406502Z", - "updated_at": "2025-05-05T18:07:33.269057Z", + "updated_at": "2025-07-28T15:20:21.098826Z", "name": "messaging", "typing_events": true, "read_events": true, @@ -161,9 +165,12 @@ "url_enrichment": true, "custom_events": true, "push_notifications": true, - "reminders": false, + "reminders": true, "mark_messages_pending": false, "polls": true, + "user_message_reminders": false, + "shared_locations": true, + "count_messages": false, "message_retention": "infinite", "max_message_length": 5000, "automod": "AI", @@ -194,7 +201,7 @@ } ] }, - "truncated_at": "2025-06-15T00:25:47.035983Z", + "truncated_at": "2025-10-15T11:22:24.606151Z", "truncated_by": { "id": "luke_skywalker", "name": "Luke Skywalker", @@ -203,20 +210,24 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "custom_extra_data_key": true, + "team": "test", "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test", - "type": "team" + "type": "team", + "canBeAddedToGroups": true, + "canReceiveMessages": false }, "name": "Sync Mock Server" }, "message": { - "id": "d636862b-394f-48af-a9f2-6b4fa8e45d98", + "id": "5d6d174f-ca82-4bf7-97c1-b484e82339e4", "text": "Channel truncated", "html": "Channel truncated
\n", "type": "system", @@ -228,15 +239,19 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "team": "test", + "avg_response_time": 203648, + "canReceiveMessages": false, "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "birthland": "Tatooine", + "custom_extra_data_key": true, + "team": "test", + "canBeAddedToGroups": true }, "attachments": [], "latest_reactions": [], @@ -245,9 +260,9 @@ "reaction_scores": {}, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:47.035984Z", - "updated_at": "2025-06-15T00:25:47.035984Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:24.606152Z", + "updated_at": "2025-10-15T11:22:24.606152Z", "shadowed": false, "mentioned_users": [], "silent": false, diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_unsplash_link.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_unsplash_link.json index eb925d7ccd6..da72a203357 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_unsplash_link.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_unsplash_link.json @@ -1,6 +1,6 @@ { "message": { - "id": "b3021d20-53c7-4a2d-a572-8aba1c69ab72", + "id": "b3e2003e-e090-4b17-b52c-584c7ff149a6", "text": "https://unsplash.com/photos/1_2d3MRbI9c", "html": "https://unsplash.com/photos/1_2d3MRbI9c
\n", "type": "regular", @@ -12,15 +12,22 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], - "team": "test", + "avg_response_time": 203648, "type": "team", + "canBeAddedToGroups": true, + "birthland": "Tatooine", + "canReceiveMessages": false, "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "custom_extra_data_key": true, + "team": "test" + }, + "member": { + "channel_role": "channel_member" }, "attachments": [ { @@ -29,8 +36,8 @@ "title": "Photo by Joao Branco on Unsplash", "title_link": "https://unsplash.com/photos/green-pine-tree-mountain-slope-scenery-1_2d3MRbI9c", "text": "Download this photo by Joao Branco on Unsplash", - "image_url": "https://images.unsplash.com/photo-1568574728383-06fca083883d?mark=https%3A%2F%2Fimages.unsplash.com%2Fopengraph%2Flogo.png&mark-w=64&mark-align=top%2Cleft&mark-pad=50&h=630&w=1200&crop=faces%2Cedges&blend-w=1&blend=000000&blend-mode=normal&blend-alpha=10&auto=format&fit=crop&q=60&ixid=M3wxMjA3fDB8MXxhbGx8fHx8fHx8fHwxNzQ5OTQ3MTQ0fA&ixlib=rb-4.1.0", - "thumb_url": "https://images.unsplash.com/photo-1568574728383-06fca083883d?mark=https%3A%2F%2Fimages.unsplash.com%2Fopengraph%2Flogo.png&mark-w=64&mark-align=top%2Cleft&mark-pad=50&h=630&w=1200&crop=faces%2Cedges&blend-w=1&blend=000000&blend-mode=normal&blend-alpha=10&auto=format&fit=crop&q=60&ixid=M3wxMjA3fDB8MXxhbGx8fHx8fHx8fHwxNzQ5OTQ3MTQ0fA&ixlib=rb-4.1.0", + "image_url": "https://images.unsplash.com/photo-1568574728383-06fca083883d?ixid=M3wxMjA3fDB8MXxhbGx8fHx8fHx8fHwxNzYwNDg3Mzg5fA&ixlib=rb-4.1.0&auto=format&fit=crop&q=60&mark=https%3A%2F%2Fimages.unsplash.com%2Fopengraph%2Flogo.png&mark-w=64&mark-align=top%2Cleft&mark-pad=50&h=630&w=1200&crop=faces%2Cedges&blend-w=1&blend=000000&blend-mode=normal&blend-alpha=10", + "thumb_url": "https://images.unsplash.com/photo-1568574728383-06fca083883d?ixid=M3wxMjA3fDB8MXxhbGx8fHx8fHx8fHwxNzYwNDg3Mzg5fA&ixlib=rb-4.1.0&auto=format&fit=crop&q=60&mark=https%3A%2F%2Fimages.unsplash.com%2Fopengraph%2Flogo.png&mark-w=64&mark-align=top%2Cleft&mark-pad=50&h=630&w=1200&crop=faces%2Cedges&blend-w=1&blend=000000&blend-mode=normal&blend-alpha=10", "og_scrape_url": "https://unsplash.com/photos/1_2d3MRbI9c" } ], @@ -40,16 +47,11 @@ "reaction_scores": {}, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:45.47899Z", - "updated_at": "2025-06-15T00:25:45.47899Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:23.80289Z", + "updated_at": "2025-10-15T11:22:23.80289Z", "shadowed": false, "mentioned_users": [], - "i18n": { - "en_text": "https://unsplash.com/photos/1_2d3MRbI9c", - "fr_text": "https://unsplash.com/photos/1_2d3MRbI9c", - "language": "en" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -57,5 +59,5 @@ "pin_expires": null, "restricted_visibility": [] }, - "duration": "4355.84ms" + "duration": "274.32ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_youtube_link.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_youtube_link.json index 9427cbee840..afdcad2ecb0 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_youtube_link.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_youtube_link.json @@ -1,6 +1,6 @@ { "message": { - "id": "cc20202e-3ec1-4407-b35f-70981d74d2c4", + "id": "10f63aac-6f52-40f0-ad13-2ac8a6dd2784", "text": "https://youtube.com/watch?v=xOX7MsrbaPY", "html": "https://youtube.com/watch?v=xOX7MsrbaPY
\n", "type": "regular", @@ -12,26 +12,31 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, "birthland": "Tatooine", + "custom_extra_data_key": true, + "canReceiveMessages": false, + "canBeAddedToGroups": true, "team": "test", "type": "team", "pando": "{\"speciality\":\"ios engineer\"}" }, + "member": { + "channel_role": "channel_member" + }, "attachments": [ { "type": "video", - "author_name": "YouTube", + "author_name": "Introducing MotionScape", "title": "Introducing MotionScape: Prototype SwiftUI Animation Easings", "title_link": "https://www.youtube.com/watch?v=xOX7MsrbaPY", - "text": "MotionScape is your SwiftUI animation's playground as a developer. You can see all animations and their parameters in effect with beautifully designed and handcrafted animation examples. Best of all: directly preview and export your settings as production-ready SwiftUI code that you can use in your apps as-is.\n\nSupercharge your apps with animations and get to know how to use them - with MotionScape!\n\nDownload MotionScape from the Mac AppStore: \nhttps://gstrm.io/motionscape-yt\n\nWebpage:\nhttps://getstream.github.io/motionscape-app/\n\nSwiftUI chat messaging:\nhttps://getstream.io/chat/sdk/swiftui/\n...", - "image_url": "https://i.ytimg.com/vi/xOX7MsrbaPY/mqdefault.jpg", - "thumb_url": "https://i.ytimg.com/vi/xOX7MsrbaPY/mqdefault.jpg", - "asset_url": "https://www.youtube.com/watch?v=xOX7MsrbaPY", + "text": "MotionScape is your SwiftUI animation's playground as a developer. You can see all animations and their parameters in effect with beautifully designed and handcrafted animation examples. Best of all: directly preview and export your settings as production-ready SwiftUI code that you can use in your apps as-is. Supercharge your apps with animations and get to know how to use them - with MotionScape! Download MotionScape from the Mac AppStore: https://gstrm.io/motionscape-yt Webpage: https://getstream.github.io/motionscape-app/ SwiftUI chat messaging: https://getstream.io/chat/sdk/swiftui/ Chapters: 00:00 Introducing MotionScape 00:31 Adjusting animation parameters 00:54 Supported interpolations 01:03 Previewing animation examples 01:50 Find and download MotionScape", + "asset_url": "https://www.youtube.com/embed/xOX7MsrbaPY", "og_scrape_url": "https://youtube.com/watch?v=xOX7MsrbaPY" } ], @@ -41,16 +46,11 @@ "reaction_scores": {}, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:40.546889Z", - "updated_at": "2025-06-15T00:25:40.546889Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:23.388057Z", + "updated_at": "2025-10-15T11:22:23.388057Z", "shadowed": false, "mentioned_users": [], - "i18n": { - "en_text": "https://youtube.com/watch?v=xOX7MsrbaPY", - "fr_text": "https://youtube.com/watch?v=xOX7MsrbaPY", - "language": "en" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -58,5 +58,5 @@ "pin_expires": null, "restricted_visibility": [] }, - "duration": "560.98ms" + "duration": "290.31ms" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events.json index 8b4a4764ef4..8a0649b4b93 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events.json @@ -1,7 +1,7 @@ { "type": "typing.start", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "channel_id": "ec2807ff-5c60-41bc-a816-49578260471a", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "channel_id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "channel_type": "messaging", "user": { "id": "luke_skywalker", @@ -11,11 +11,12 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, "shadow_banned": false, "privacy_settings": { "typing_indicators": { @@ -29,170 +30,173 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "804506291419e705e68fdc61b5f71297f30881364077b8c3f374f6938bef6cb4f9801da58770c8070108cf30ac06c060630037019523dc91d750de2293f8df7be86c8c8be6be95666859bdc62fbed488", - "created_at": "2025-06-14T16:19:23.502954Z", + "id": "80ff3d0ff101a3d4f3319e20996b2e33cbe4ff1673632911ba61471d9c7382cf10db29c41676c6a42cc7e4084f0b00b28b450da1fe52a97edb8c67d5690b0d9b600c863c34a34546a649be08e3a975cf", + "created_at": "2025-10-07T13:31:12.581472Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "6397e24030aa17262a850157abf97612eff0243e873b7d1f79c996662ecb1682", - "created_at": "2025-06-12T13:18:40.260038Z", + "id": "466ec8f052e4e43f6f429a55907217c289618204ebaf4f7ca8fe52c303b01d05", + "created_at": "2025-10-06T07:05:44.023463Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80215dc8442845c41f30d28c05db0a8f697f727303be0fb49ca7743af6a211d3", - "created_at": "2025-06-04T02:43:01.595306Z", + "id": "80dc67313692ff3d512089cd19df179395b298d106b86cd2aedf0edfe1de40cd7caba3025823acccf9173fce2000728459e6751c4c7c96b80415a441d54c690d3f2d1635d26a8d58c0407edff8fcfe34", + "created_at": "2025-09-23T11:14:39.868685Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8078596852ae3ecc7bb8d20eb1bde24d596115270e266be1e7164009c28c841c89120222e5594b8929bafb7b55ec47e5b1db2e1274b6e0c9a8f24ba1087832d4dc8acefc857be26848f2b074fdaa42fe", - "created_at": "2025-06-03T14:54:34.358128Z", + "id": "8013785658480684ee2a2f523bd4d52d6f2fac5e34283f4765362b4d526e5f374a46a0eeff277aee8d94ca872c4cdce2c021fef9cb1c71a4e5b28bba5481cab79c2ff7f111d4a7488c7a28de76736ba6", + "created_at": "2025-09-22T07:33:07.001628Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8009e0a929c11c0297edc1a8c994a68fb7064cebede77d29bbd663c93390b1d22394adbdeb06a68f9b07720daa0e300b1dd951f90bb49c81275a0eaed20f24c954ceba42b8c76010b9ceaa70f19c5a24", - "created_at": "2025-06-03T12:06:41.61606Z", + "id": "8075f5f2d91f892d2a16de528dea1fae54d63f9d1c09ca18501547ec8b3880c54766e80e0eb8e10920a8545cf5a08f0048adf01c029a17b69fda5dbc8019733fdb5b4923e80d525ca96bd833f02434c5", + "created_at": "2025-09-16T07:18:39.830014Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80b9b312b4b635f1f0e4005ba0acc30d8f022a59e5006edb24f4eb7546930dbe0de2ce85800eabc1ec1a004d0a87fc7520b4f9039718f4f8437c466eb33ab9b392a77607ce982e31e443685e2b6b90b1", - "created_at": "2025-05-30T21:14:29.53116Z", + "id": "804df9f905b9fd1f2c53e160a5f3f1db34490bea2ecb0fdb6aa99d9f407fd67b477079cc403e15b7424927276ac32b113c9820bb569b99a14d60fef0f5ae24804bea0e20be5da6d724f4c3abbf5cd0cb", + "created_at": "2025-09-15T18:13:06.007999Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", - "created_at": "2025-05-30T18:32:15.279068Z", + "id": "8044edf2252ff9f253dada5dbf39f018f454e5bcdaf188501c6d105a4f5740c1872acb619f113596a1cb6f9071667d20e601f134aa0c83db83ce733f458b60c5c1b8712e2808abd4a840ce0347a8ea1a", + "created_at": "2025-09-15T13:32:20.775357Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "804d29de95a5a1fee45ffa38a6700d75807f844dbdcdffb6256377697ca2095c1f4a43a1823b7858af4a3dd47d96fda739110aa11072b1c0bec52446806ce65b9408b68b81343a8594bf21d3c18af6c0", - "created_at": "2025-05-30T09:18:11.558444Z", + "id": "80fee24033dcaa2b50911104447c596a7490ff86fa6593eb8f0eaca6c699c951ddad5e39d5ce95d3858d12a0169ab126dec8c4fa4f791a723304bf6c3ee415b0fe67e4dd7422e7af1dc49396442946eb", + "created_at": "2025-09-13T16:07:49.949311Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80d9539ee4ffce5bfafbfdbbc323b743c049f08d5efbce01eeef090f9884001c24b5fde2c1e6a6b5699e2c8fea4b607d3ecb5f206668e5f04ccc1b1402bd618cb78a5c4e22bf0f1a7a762d121346d951", - "created_at": "2025-05-30T05:01:32.5559Z", + "id": "a23e236960612858446bc7b0e78152f0d03ff977da16a1beec3d4558b51c3377", + "created_at": "2025-09-11T14:55:25.842429Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8082e4f123b0f83543d1f7c04920c76ec7d4b4db9d8f2e8ff0cc4daeef338209be72df2b35257cfdb86623c14d241cf1d1f42b78fef01e16052d13b03f75ed135360886f1900d3a0e80e97b268514c77", - "created_at": "2025-05-30T05:00:30.137993Z", + "id": "5c1967db91dfc57b32d12728b8ac7410edc325daae78215430319239bb1b9378", + "created_at": "2025-09-10T10:32:28.865373Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "43d7b696c6a06de2954e74814eb9b0e28b91096f4d1eeb852694f5921679ef46", - "created_at": "2025-05-29T08:49:30.254119Z", + "id": "8082e4f123b0f83543d1f7c04920c76ec7d4b4db9d8f2e8ff0cc4daeef338209be72df2b35257cfdb86623c14d241cf1d1f42b78fef01e16052d13b03f75ed135360886f1900d3a0e80e97b268514c77", + "created_at": "2025-09-03T04:32:38.333126Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80aed57876c4ebe2a4bb743943b56da38392ddc22517d9e402874a28034678c5e2cbe50beb4929955801aea07c13c8d434a2cd1401c25dd5d0b7cdb9a60811c547e5f6ed6c163112f160c52149c9f76e", - "created_at": "2025-05-29T04:54:25.507462Z", + "id": "802e021f067e90a9be03d142b102c30a871ad7e16b41bf469eab29c1e2f7b480f433802b2a3e6585752c09e44ed9f71d858bb61dad135568caaaefdac4536529d3b43812f2077c95b57ff4483fd1ad26", + "created_at": "2025-09-02T16:12:13.231524Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80ab6527485c2cf2edbc709f5c252d6eab4ce65ba260a4e3d9f9ccce1dcb4f822553145f2ff49799333363c2907bc0d1ec25eab646b66da776fead61ccac0f4cbb6085d81819ad2c3c9d365b7472856e", - "created_at": "2025-05-27T12:28:46.620215Z", + "id": "8006075492db346334382095f7c068600bfa16f8216628c938b1e9bdb18eae4288cd1567707a67b9868ae4166495d92d1eb9c20b2984a0fc3bc578013bcf05654598b343fa8d3f807e5c296e8ce61dc1", + "created_at": "2025-09-02T07:14:39.15913Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80486ca05c15def9ffc4d915f9d0b2eeaa286450486e04c33f3e6dbc81f3a834766c3cac07a0de81ba90a20d171942443bd16043124deedcb4159af340c39361e11e3e91bf4737c87c794ea55f8338f2", - "created_at": "2025-05-23T10:49:52.417843Z", + "id": "802eefd1b58c8a23fefe5d181538f0109535ad3c5baabf31f6d7a5f898b8ef0c8386d882aa07c511cf97d28f8291f6f8c46b78d7c6639f5c70f09a69ca6a92aff4d9b007a4f4a89b3ab5b722ffb9c86c", + "created_at": "2025-09-01T11:36:07.581094Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "801415be332a8ce50194e0933d0446635ff626afc0652c4b484ea32d560e8e0ed522c270ebabffa470f042fb3478645cd7764c191cfc5d6c73dab852e10de9dfd07e09bbca340ad7bd1469c1f0926000", - "created_at": "2025-05-21T10:24:46.609564Z", + "id": "5c7d0b29710fba33189fb659b1cbc2be3491d4f3c4b399b8afefb8bc920103ec", + "created_at": "2025-08-28T11:02:17.709186Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80c9120effde0e21706972562de59f7a5c35b8ae45c154bf071b49bd6774a4ef16aa003efb42d7ff9b7da187deaf560a5c126917e9f91f5304d5c1fa6d94019d4a72e246a903afc6a209152aed9fcc06", - "created_at": "2025-05-20T11:03:27.103857Z", + "id": "8079dec1832d067a951130384525f5de98ae20fe23d131e584c0028b69bdb60aec0a461b19e2b8886e94a479781a115c703bad0e3726f644e12a812d37bdd2b79b2021cd103688a2424bde9c08c9f2f0", + "created_at": "2025-08-27T05:23:02.591215Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "b919e95520aebf36da438b1cbafb93e6cbc165de1e40d714b26b493f3ff6411f", - "created_at": "2025-05-16T13:52:18.372021Z", + "id": "809eb957c901bdbae1f20ee0bebdf84c12b6d3a141ba32b5898e7353a7575ef53f941dba98b544fd7c1a36e10d3b88abe9b65d12b44b2fd93dc4a7a57fa45a79750d8a3106fe0d54b46cebad6ec7cbda", + "created_at": "2025-08-26T15:54:24.98832Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "806f6650799cb5424543258a92eeebbd627aac976d7a7c610dc74bde5de1f465129ad76ac92c7e32d24bbe9d0601d2b2521c00386ba6542f9e7f8f99ea31582e055631cf15112764fe8d6a1e8391c67c", - "created_at": "2025-05-16T09:11:33.233014Z", + "id": "806541d07bd58f5d897f3cb28994fd47749351fb77f948edb2b140c7c147c21bab5e5f90c6124a138f809cefce008662220436a7031c09224434282393bf76d4ba0f61866ecd5c72807279da20618b0a", + "created_at": "2025-08-22T10:41:07.519822Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80fff6ff1cc87a8173608355c783e34925ccdf20029a013d81570a44d0c9769da833b5aa630d195e12dedadd781fec5a3df4f55dcb42035b1879a9a9bee452bbc9fc911b6104fe45e9e34a4ab3b2af22", - "created_at": "2025-05-15T22:14:07.879975Z", + "id": "808f6525eea58e6aa49bd81b12abbff5a5e9d5310c626559cc1c306f1b0b08496e27d06c64872046d39edb5c9c89f84f0f8debe6663b54ce1aff83269d13850464ae06d3f293f3d6748b0ebd9a91a2f8", + "created_at": "2025-08-19T00:56:28.078927Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "802de862e0eaf8de4920b0f6ed65e7e5daa6928401a443443713c0b45bfc993a1cf203d75e7f753c7fdffa03f7fc50a1447da3898f94f2afcf593610b1897902ece834d72c2567c9e831d0396333f9c1", - "created_at": "2025-05-13T07:49:41.024562Z", + "id": "802e7837a85219bea9972172678578d10f683c085da918b90a56a477f6692ccbb52ff7badf3ece11c1d612afed415347dac1a8acfc1dfa51385e2ea53689d43466c84f729b069f10efff86604bc7c40c", + "created_at": "2025-08-12T23:25:49.648064Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "803192da84414d63ee9ff14a2d6eb2094f5fb0aaae589db1fc031baeed386d2d7e682e56cff2417f16fe5468b91cf77cd3121a6c4758ad24e385b962125ffee6d4dd236d792177154e554b728740f0d8", - "created_at": "2025-05-12T13:27:58.032984Z", + "id": "809409e7859ebfe71a461ead24d36a911eb5cdbab7184f848b45c44b153e65ff15c4be82066a2d768dc7184ab9b3b0c1b3cb7ec1f0819f231a6d09ad64c33dbfb8d1b919d5fda0474d9f29e3cc2940b7", + "created_at": "2025-08-12T12:58:05.975459Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80aa7286ccf76a1bc406e8e8a7e8197014afc2e436ea331cefe1587c040b55edd18a8b5c516a622b939d5bc02d6a51a75f782c86c75f8d47b3a754a632608925d9cec594bc32398ac32ccfa57499ef53", - "created_at": "2025-05-12T09:40:48.415127Z", + "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", + "created_at": "2025-08-11T20:11:02.29744Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8083e22c635fefc3b8ca928aee3179830f2d3553fecd6a11ccd6dc6cb91672f035c4e76f4cb3f0332ce1e18fe4ecfa091ab247f353a35d3f903f7151bd00cff341852e862719edbd150f6a1778256e3d", - "created_at": "2025-05-07T08:38:58.92846Z", + "id": "803588facf5946ecfe386d4906321b9fe31fe4181b03bffbbfd4b733c4acd00f9046a16f7beeec102e95273d15c95c15a44a2076ba83ad001bbd77ce3810b6465a7ef92fe299da7038b636e762d6150b", + "created_at": "2025-08-08T11:31:24.887765Z", "user_id": "luke_skywalker" } ], "invisible": false, + "canReceiveMessages": false, "team": "test", - "type": "team", + "custom_extra_data_key": true, "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "birthland": "Tatooine", + "type": "team", + "canBeAddedToGroups": true }, - "created_at": "2025-06-15T00:25:34.999482144Z" + "created_at": "2025-10-15T11:22:21.064322094Z" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_channel.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_channel.json index a738783f135..6666d35564d 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_channel.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_channel.json @@ -1,17 +1,17 @@ { "type": "channel.updated", - "created_at": "2025-06-15T00:25:38.161298226Z", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", + "created_at": "2025-10-15T11:22:22.269497124Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", "channel_member_count": 4, "channel_type": "messaging", - "channel_id": "ec2807ff-5c60-41bc-a816-49578260471a", + "channel_id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "channel": { - "id": "ec2807ff-5c60-41bc-a816-49578260471a", + "id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "type": "messaging", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "last_message_at": "2025-06-15T00:25:36.86243Z", - "created_at": "2025-06-15T00:25:33.285826Z", - "updated_at": "2025-06-15T00:25:33.285826Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "last_message_at": "2025-10-15T11:22:21.804306Z", + "created_at": "2025-10-15T11:22:20.27144Z", + "updated_at": "2025-10-15T11:22:20.27144Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", @@ -20,11 +20,12 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, "shadow_banned": false, "privacy_settings": { "typing_indicators": { @@ -38,170 +39,173 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "804506291419e705e68fdc61b5f71297f30881364077b8c3f374f6938bef6cb4f9801da58770c8070108cf30ac06c060630037019523dc91d750de2293f8df7be86c8c8be6be95666859bdc62fbed488", - "created_at": "2025-06-14T16:19:23.502954Z", + "id": "80ff3d0ff101a3d4f3319e20996b2e33cbe4ff1673632911ba61471d9c7382cf10db29c41676c6a42cc7e4084f0b00b28b450da1fe52a97edb8c67d5690b0d9b600c863c34a34546a649be08e3a975cf", + "created_at": "2025-10-07T13:31:12.581472Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "6397e24030aa17262a850157abf97612eff0243e873b7d1f79c996662ecb1682", - "created_at": "2025-06-12T13:18:40.260038Z", + "id": "466ec8f052e4e43f6f429a55907217c289618204ebaf4f7ca8fe52c303b01d05", + "created_at": "2025-10-06T07:05:44.023463Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80215dc8442845c41f30d28c05db0a8f697f727303be0fb49ca7743af6a211d3", - "created_at": "2025-06-04T02:43:01.595306Z", + "id": "80dc67313692ff3d512089cd19df179395b298d106b86cd2aedf0edfe1de40cd7caba3025823acccf9173fce2000728459e6751c4c7c96b80415a441d54c690d3f2d1635d26a8d58c0407edff8fcfe34", + "created_at": "2025-09-23T11:14:39.868685Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8078596852ae3ecc7bb8d20eb1bde24d596115270e266be1e7164009c28c841c89120222e5594b8929bafb7b55ec47e5b1db2e1274b6e0c9a8f24ba1087832d4dc8acefc857be26848f2b074fdaa42fe", - "created_at": "2025-06-03T14:54:34.358128Z", + "id": "8013785658480684ee2a2f523bd4d52d6f2fac5e34283f4765362b4d526e5f374a46a0eeff277aee8d94ca872c4cdce2c021fef9cb1c71a4e5b28bba5481cab79c2ff7f111d4a7488c7a28de76736ba6", + "created_at": "2025-09-22T07:33:07.001628Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8009e0a929c11c0297edc1a8c994a68fb7064cebede77d29bbd663c93390b1d22394adbdeb06a68f9b07720daa0e300b1dd951f90bb49c81275a0eaed20f24c954ceba42b8c76010b9ceaa70f19c5a24", - "created_at": "2025-06-03T12:06:41.61606Z", + "id": "8075f5f2d91f892d2a16de528dea1fae54d63f9d1c09ca18501547ec8b3880c54766e80e0eb8e10920a8545cf5a08f0048adf01c029a17b69fda5dbc8019733fdb5b4923e80d525ca96bd833f02434c5", + "created_at": "2025-09-16T07:18:39.830014Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80b9b312b4b635f1f0e4005ba0acc30d8f022a59e5006edb24f4eb7546930dbe0de2ce85800eabc1ec1a004d0a87fc7520b4f9039718f4f8437c466eb33ab9b392a77607ce982e31e443685e2b6b90b1", - "created_at": "2025-05-30T21:14:29.53116Z", + "id": "804df9f905b9fd1f2c53e160a5f3f1db34490bea2ecb0fdb6aa99d9f407fd67b477079cc403e15b7424927276ac32b113c9820bb569b99a14d60fef0f5ae24804bea0e20be5da6d724f4c3abbf5cd0cb", + "created_at": "2025-09-15T18:13:06.007999Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", - "created_at": "2025-05-30T18:32:15.279068Z", + "id": "8044edf2252ff9f253dada5dbf39f018f454e5bcdaf188501c6d105a4f5740c1872acb619f113596a1cb6f9071667d20e601f134aa0c83db83ce733f458b60c5c1b8712e2808abd4a840ce0347a8ea1a", + "created_at": "2025-09-15T13:32:20.775357Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "804d29de95a5a1fee45ffa38a6700d75807f844dbdcdffb6256377697ca2095c1f4a43a1823b7858af4a3dd47d96fda739110aa11072b1c0bec52446806ce65b9408b68b81343a8594bf21d3c18af6c0", - "created_at": "2025-05-30T09:18:11.558444Z", + "id": "80fee24033dcaa2b50911104447c596a7490ff86fa6593eb8f0eaca6c699c951ddad5e39d5ce95d3858d12a0169ab126dec8c4fa4f791a723304bf6c3ee415b0fe67e4dd7422e7af1dc49396442946eb", + "created_at": "2025-09-13T16:07:49.949311Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80d9539ee4ffce5bfafbfdbbc323b743c049f08d5efbce01eeef090f9884001c24b5fde2c1e6a6b5699e2c8fea4b607d3ecb5f206668e5f04ccc1b1402bd618cb78a5c4e22bf0f1a7a762d121346d951", - "created_at": "2025-05-30T05:01:32.5559Z", + "id": "a23e236960612858446bc7b0e78152f0d03ff977da16a1beec3d4558b51c3377", + "created_at": "2025-09-11T14:55:25.842429Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8082e4f123b0f83543d1f7c04920c76ec7d4b4db9d8f2e8ff0cc4daeef338209be72df2b35257cfdb86623c14d241cf1d1f42b78fef01e16052d13b03f75ed135360886f1900d3a0e80e97b268514c77", - "created_at": "2025-05-30T05:00:30.137993Z", + "id": "5c1967db91dfc57b32d12728b8ac7410edc325daae78215430319239bb1b9378", + "created_at": "2025-09-10T10:32:28.865373Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "43d7b696c6a06de2954e74814eb9b0e28b91096f4d1eeb852694f5921679ef46", - "created_at": "2025-05-29T08:49:30.254119Z", + "id": "8082e4f123b0f83543d1f7c04920c76ec7d4b4db9d8f2e8ff0cc4daeef338209be72df2b35257cfdb86623c14d241cf1d1f42b78fef01e16052d13b03f75ed135360886f1900d3a0e80e97b268514c77", + "created_at": "2025-09-03T04:32:38.333126Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80aed57876c4ebe2a4bb743943b56da38392ddc22517d9e402874a28034678c5e2cbe50beb4929955801aea07c13c8d434a2cd1401c25dd5d0b7cdb9a60811c547e5f6ed6c163112f160c52149c9f76e", - "created_at": "2025-05-29T04:54:25.507462Z", + "id": "802e021f067e90a9be03d142b102c30a871ad7e16b41bf469eab29c1e2f7b480f433802b2a3e6585752c09e44ed9f71d858bb61dad135568caaaefdac4536529d3b43812f2077c95b57ff4483fd1ad26", + "created_at": "2025-09-02T16:12:13.231524Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80ab6527485c2cf2edbc709f5c252d6eab4ce65ba260a4e3d9f9ccce1dcb4f822553145f2ff49799333363c2907bc0d1ec25eab646b66da776fead61ccac0f4cbb6085d81819ad2c3c9d365b7472856e", - "created_at": "2025-05-27T12:28:46.620215Z", + "id": "8006075492db346334382095f7c068600bfa16f8216628c938b1e9bdb18eae4288cd1567707a67b9868ae4166495d92d1eb9c20b2984a0fc3bc578013bcf05654598b343fa8d3f807e5c296e8ce61dc1", + "created_at": "2025-09-02T07:14:39.15913Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80486ca05c15def9ffc4d915f9d0b2eeaa286450486e04c33f3e6dbc81f3a834766c3cac07a0de81ba90a20d171942443bd16043124deedcb4159af340c39361e11e3e91bf4737c87c794ea55f8338f2", - "created_at": "2025-05-23T10:49:52.417843Z", + "id": "802eefd1b58c8a23fefe5d181538f0109535ad3c5baabf31f6d7a5f898b8ef0c8386d882aa07c511cf97d28f8291f6f8c46b78d7c6639f5c70f09a69ca6a92aff4d9b007a4f4a89b3ab5b722ffb9c86c", + "created_at": "2025-09-01T11:36:07.581094Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "801415be332a8ce50194e0933d0446635ff626afc0652c4b484ea32d560e8e0ed522c270ebabffa470f042fb3478645cd7764c191cfc5d6c73dab852e10de9dfd07e09bbca340ad7bd1469c1f0926000", - "created_at": "2025-05-21T10:24:46.609564Z", + "id": "5c7d0b29710fba33189fb659b1cbc2be3491d4f3c4b399b8afefb8bc920103ec", + "created_at": "2025-08-28T11:02:17.709186Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80c9120effde0e21706972562de59f7a5c35b8ae45c154bf071b49bd6774a4ef16aa003efb42d7ff9b7da187deaf560a5c126917e9f91f5304d5c1fa6d94019d4a72e246a903afc6a209152aed9fcc06", - "created_at": "2025-05-20T11:03:27.103857Z", + "id": "8079dec1832d067a951130384525f5de98ae20fe23d131e584c0028b69bdb60aec0a461b19e2b8886e94a479781a115c703bad0e3726f644e12a812d37bdd2b79b2021cd103688a2424bde9c08c9f2f0", + "created_at": "2025-08-27T05:23:02.591215Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "b919e95520aebf36da438b1cbafb93e6cbc165de1e40d714b26b493f3ff6411f", - "created_at": "2025-05-16T13:52:18.372021Z", + "id": "809eb957c901bdbae1f20ee0bebdf84c12b6d3a141ba32b5898e7353a7575ef53f941dba98b544fd7c1a36e10d3b88abe9b65d12b44b2fd93dc4a7a57fa45a79750d8a3106fe0d54b46cebad6ec7cbda", + "created_at": "2025-08-26T15:54:24.98832Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "806f6650799cb5424543258a92eeebbd627aac976d7a7c610dc74bde5de1f465129ad76ac92c7e32d24bbe9d0601d2b2521c00386ba6542f9e7f8f99ea31582e055631cf15112764fe8d6a1e8391c67c", - "created_at": "2025-05-16T09:11:33.233014Z", + "id": "806541d07bd58f5d897f3cb28994fd47749351fb77f948edb2b140c7c147c21bab5e5f90c6124a138f809cefce008662220436a7031c09224434282393bf76d4ba0f61866ecd5c72807279da20618b0a", + "created_at": "2025-08-22T10:41:07.519822Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80fff6ff1cc87a8173608355c783e34925ccdf20029a013d81570a44d0c9769da833b5aa630d195e12dedadd781fec5a3df4f55dcb42035b1879a9a9bee452bbc9fc911b6104fe45e9e34a4ab3b2af22", - "created_at": "2025-05-15T22:14:07.879975Z", + "id": "808f6525eea58e6aa49bd81b12abbff5a5e9d5310c626559cc1c306f1b0b08496e27d06c64872046d39edb5c9c89f84f0f8debe6663b54ce1aff83269d13850464ae06d3f293f3d6748b0ebd9a91a2f8", + "created_at": "2025-08-19T00:56:28.078927Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "802de862e0eaf8de4920b0f6ed65e7e5daa6928401a443443713c0b45bfc993a1cf203d75e7f753c7fdffa03f7fc50a1447da3898f94f2afcf593610b1897902ece834d72c2567c9e831d0396333f9c1", - "created_at": "2025-05-13T07:49:41.024562Z", + "id": "802e7837a85219bea9972172678578d10f683c085da918b90a56a477f6692ccbb52ff7badf3ece11c1d612afed415347dac1a8acfc1dfa51385e2ea53689d43466c84f729b069f10efff86604bc7c40c", + "created_at": "2025-08-12T23:25:49.648064Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "803192da84414d63ee9ff14a2d6eb2094f5fb0aaae589db1fc031baeed386d2d7e682e56cff2417f16fe5468b91cf77cd3121a6c4758ad24e385b962125ffee6d4dd236d792177154e554b728740f0d8", - "created_at": "2025-05-12T13:27:58.032984Z", + "id": "809409e7859ebfe71a461ead24d36a911eb5cdbab7184f848b45c44b153e65ff15c4be82066a2d768dc7184ab9b3b0c1b3cb7ec1f0819f231a6d09ad64c33dbfb8d1b919d5fda0474d9f29e3cc2940b7", + "created_at": "2025-08-12T12:58:05.975459Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80aa7286ccf76a1bc406e8e8a7e8197014afc2e436ea331cefe1587c040b55edd18a8b5c516a622b939d5bc02d6a51a75f782c86c75f8d47b3a754a632608925d9cec594bc32398ac32ccfa57499ef53", - "created_at": "2025-05-12T09:40:48.415127Z", + "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", + "created_at": "2025-08-11T20:11:02.29744Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8083e22c635fefc3b8ca928aee3179830f2d3553fecd6a11ccd6dc6cb91672f035c4e76f4cb3f0332ce1e18fe4ecfa091ab247f353a35d3f903f7151bd00cff341852e862719edbd150f6a1778256e3d", - "created_at": "2025-05-07T08:38:58.92846Z", + "id": "803588facf5946ecfe386d4906321b9fe31fe4181b03bffbbfd4b733c4acd00f9046a16f7beeec102e95273d15c95c15a44a2076ba83ad001bbd77ce3810b6465a7ef92fe299da7038b636e762d6150b", + "created_at": "2025-08-08T11:31:24.887765Z", "user_id": "luke_skywalker" } ], "invisible": false, + "custom_extra_data_key": true, + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine", + "canReceiveMessages": false, "team": "test", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "canBeAddedToGroups": true }, "frozen": false, "disabled": false, @@ -219,8 +223,9 @@ "updated_at": "2025-04-23T13:02:29.974824Z", "banned": false, "online": false, - "last_active": "2025-04-23T13:03:51.783496Z", + "last_active": "2025-10-01T07:12:24.084195Z", "blocked_user_ids": [], + "avg_response_time": 531, "shadow_banned": false, "privacy_settings": { "typing_indicators": { @@ -245,13 +250,6 @@ "created_at": "2025-04-13T16:47:57.568822Z", "user_id": "count_dooku" }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "80f982d49f7b7e3c3a89b9463d30130c9d7c09d37afb9f5e068fcc3c96bf6a727a2178877764bd0d91d5ad2701f0d270e69e53751be92e476de68484f7ead5704e57a56355c557de23ce045680384c2f", - "created_at": "2025-03-11T14:28:48.579734Z", - "user_id": "count_dooku" - }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", @@ -320,8 +318,8 @@ "birthland": "Serenno" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "member", @@ -329,20 +327,21 @@ "notifications_muted": false }, { - "user_id": "han_solo", + "user_id": "lando_calrissian", "user": { - "id": "han_solo", - "name": "Han Solo", - "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "fr", - "role": "user", + "id": "lando_calrissian", + "name": "Lando Calrissian", + "image": "https://vignette.wikia.nocookie.net/starwars/images/8/8f/Lando_ROTJ.png", + "language": "", + "role": "admin", "teams": [], - "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-04-24T15:07:52.050477Z", + "created_at": "2024-04-04T19:06:08.890459Z", + "updated_at": "2025-04-16T17:23:28.189521Z", "banned": false, "online": false, - "last_active": "2025-06-10T06:55:59.491807Z", + "last_active": "2025-10-12T03:39:43.111316Z", "blocked_user_ids": [], + "avg_response_time": 1165670, "shadow_banned": false, "privacy_settings": { "typing_indicators": { @@ -356,160 +355,160 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "801f108a7521af9233f66e763339a5faff36e534ef24bce87154544ae1b4f7add0b077ce763b0449ba774b8e59e0362fee7fb1e5416081c835060aa013ea22bd04e7fd775cfbbe7b4fbff5be9dfde484", - "created_at": "2025-06-07T01:46:40.213206Z", - "user_id": "han_solo" + "id": "80fd207c06394ad12bef4ba1c29d8d47d33c15f09551da4da659bbfb3fcfa20b2a19c03c63a0face2a9713e2249c2801f296cf89a675601de1b49437cd354aa6f9e8f6c6b1c0f70fe8b47e13b9966e2d", + "created_at": "2025-07-02T17:28:07.646031Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80ec0dff63e1b885f1607e2989e0ca6c83885a0b8eafa968e0ff1f4458887c961f0ac756c2ee4b8c557f363d337d6029888bd0d3fe9cc4912146be6e2d1d6848d8a0f135de7de73f3ce1fa4ee9704795", - "created_at": "2025-06-03T11:44:12.612508Z", - "user_id": "han_solo" + "id": "807668fb1146ec2887451bfb492ed176318b75bac6f269373032a5279c42f48ee1d39e5a6343069fa72a1edb955848a931f1f156a5a543b878e9be2aefe45260843389eec42f640510ff8ed3b225cf03", + "created_at": "2025-06-20T06:29:12.864132Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80a189064a8e5bf1a5a12daba9c8309f359455a441fbec84c213b9e684b481b7a9aa75e3d1e8aada6c4cc683b262f436f5d48f9759370dbf463c9b85fc78dd5bb6a007b5751ea4eacd2a118305d90b89", - "created_at": "2025-05-26T16:48:24.572368Z", - "user_id": "han_solo" + "id": "82093d2a6d4b1a5ce7516398b350e46816da77c05f22d88c27c0d1e0cf3dd22d", + "created_at": "2025-06-08T07:57:49.274354Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8acda612d833bdb8c17dcfb7198db6ffd55713eda4b19515fe887a07bb9349d7", - "created_at": "2025-05-17T03:41:10.660569Z", - "user_id": "han_solo" + "id": "8660694406405a9e8c9544a9693061feebe9c8dbe43897d135a8540417224aba", + "created_at": "2025-06-03T17:01:00.396494Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "efb15ea0c61b3fc7b399c09fe1cafee9b3462a1ba42f9b0698875122f5080f76", - "created_at": "2025-05-13T19:24:07.892191Z", - "user_id": "han_solo" + "id": "8511fb7ed1b4b274cfb28bd37fdfadd50759e268f5eed5d2a62d0dacf662d04a", + "created_at": "2025-05-28T13:10:55.29705Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8042be7b0c7318a366368f5dbff9af18ad371a65bbeab53203dc3bd27c9718228f1a1eed6cfd1db2367ae7a3905115ed7b369ca065f5dcc8954a8d0e64de56b4dc72657f4cc5f1a943439b071f58b5f4", - "created_at": "2025-05-09T19:51:10.947338Z", - "user_id": "han_solo" + "id": "93c24dc48e340302116e3887c5c5581b9023bdb0eb742a5a465d0fe4903c1876", + "created_at": "2025-05-26T10:15:28.710502Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "ed3f92f410b6a8f040059d75b44914face8f0ac1e6d9bd2e02505923ccd28685", - "created_at": "2025-04-30T20:23:09.66427Z", - "user_id": "han_solo" + "id": "1d83f0fa4dd79bea75fd51324924027e81d366eaac47c55a36df8de8a870e1fb", + "created_at": "2025-05-16T20:34:31.031296Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "0dd5c8f8d0004e27619cf9a8e260a8a532e7495864b5d8dd6aa4516fa9e8dd66", - "created_at": "2025-04-28T10:42:45.955481Z", - "user_id": "han_solo" + "id": "c26374589b9d018f36c61e2b9e6f18ca3dce5f8cb7c24392d61dd66fc7a5fd32", + "created_at": "2025-05-07T01:14:21.875477Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8044c176cfde058bf5cbd79fa72e14dff3bc931ad295db6a25d413c339e78f3e256ce84a9413b53a3d5bedb1581c54fc27d1a3626c5aa59dddf3967aa4c09f0e795e74e341f224bfb8dfafb05ccfe8ba", - "created_at": "2025-04-11T10:50:47.782896Z", - "user_id": "han_solo" + "id": "8006d309839f95442e1e5a75eb6ca08c663a1b7b9162046961fe84fd902929f59ec854b39a430949ecc95225525599fe9162eac6eeddbe91fe96dfab75a66614b0b4d722f1ca941b5c918a44eface3bc", + "created_at": "2025-05-04T22:06:32.060655Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8312675d1f9738030286c5ec019d1b195ba7fc1722036b6f93befb0564fbe4a1", - "created_at": "2025-03-31T10:45:01.90956Z", - "user_id": "han_solo" + "id": "36d3efac60c179fff596cc47e81c22beedaa4ebe367b34f59bd0c583b9046c74", + "created_at": "2025-04-29T22:02:15.838796Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "200b284b4c9ea0ddfb21da49745e2ff52d407e0a7dd4e8f78a5c8f72ebdc297b", - "created_at": "2025-03-18T04:30:58.970837Z", - "user_id": "han_solo" + "id": "6519624008d60453a633556a08c0af4f6744a47d655d05eb2c8c51e475c6bd46", + "created_at": "2025-04-26T20:21:18.692769Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8009715c5d17766a2ab457f9381189a6065761d20e50656707592528c960f1ec370b2bafc7936b550474aaef247cea3673a175dac38aeb26f08eca6fecb13e6b5e70e0367adc604bb574c8d35a4b7647", - "created_at": "2025-03-10T16:16:04.223903Z", - "user_id": "han_solo" + "id": "e3ce7c58999ac779aed5460b367a140423498e4b28ee8b5c56a4ad8523f3e00c", + "created_at": "2025-04-15T09:30:42.778492Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "f62bff12b2c8c4faf8463c6ae5c675a8149ca3aaa2776b7753a9e8653927da4e", - "created_at": "2025-03-08T21:27:08.451268Z", - "user_id": "han_solo" + "id": "89b56798cdf220d4a5de4990dd8a34b5c312950927d0409097a2073a07de25e5", + "created_at": "2025-04-11T22:24:27.745853Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "496c1a822944cac2201c1fe59fb245ae22025b00b6649756fd719ba513681c5c", - "created_at": "2025-03-06T09:09:35.570586Z", - "user_id": "han_solo" + "id": "c57e77977466c71fff0a972536a436f6ba4425fcd426b75cee5b6be6c0326712", + "created_at": "2025-04-02T18:55:46.532785Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80c1d91b2f37c3a1c13accec2c31982402cf8ea90ae8925d2514ff83bca53a51e76acf361c4bed27548dc0730b59774c74ae2c47dfefd8b7cefa32b00a1604ba22b8e41f1e17a44e4319ed3fb66253f5", - "created_at": "2025-02-27T10:35:26.432802Z", - "user_id": "han_solo" + "id": "2522a047f4d128f29ea3c25e4ec6795bcaa248efc879a09d33d015be1ca2afa8", + "created_at": "2025-04-01T09:45:35.569944Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "327aea75615b5163a87779ea32e241e360a049e418bc4e42993a996d3d6cf94c", - "created_at": "2025-02-04T13:16:37.534389Z", - "user_id": "han_solo" + "id": "97de66a3fc9266046b0ee3c5ee6ef26fd5f5d3c818a1ddff9aab504da2e6d6fc", + "created_at": "2025-03-17T23:03:11.287394Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "afb6c2ecd6fafc6d2c9fa30a1204fd15a2192ddeea2503dece31a5aee361e7c7", - "created_at": "2025-01-28T22:01:52.754315Z", - "user_id": "han_solo" + "id": "026710ef5c80ecff242b6908cf638d810ea7f682622d7acad7a06776411e601b", + "created_at": "2025-03-15T07:07:21.347976Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "5cf71106a7f5759fcfbe0e0eab99fc423e7bf61b17519d69369cd55bd5b0896a", - "created_at": "2025-01-28T13:21:44.725776Z", - "user_id": "han_solo" + "id": "8039cd4c893aac2f2af7c668002c75b0cbe6155b25a5a2cbbd94068f907d758de31d93d25b5347d9f75f168baac9b27b842143bbbcfc4c49bb8b5413fcd5d08bb0334536f7f94e438b0a1591d4c33b06", + "created_at": "2025-03-12T12:47:27.304069Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "ba5c9a15da015e60009b8b18a022796ff3f1443e32c5bc6eb6582f37c83a279e", - "created_at": "2025-01-24T12:28:25.593919Z", - "user_id": "han_solo" + "id": "4ac20de2cda85c8c31a50b416b5049b3b7b31e5184e0f0371a811529d20b3ad0", + "created_at": "2025-02-10T19:25:02.942617Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "4db7f6b8a1741a63ab34225fe973658f7a4bf5e51980009ea861b936ec98303d", - "created_at": "2025-01-19T20:33:43.240521Z", - "user_id": "han_solo" + "id": "6de10cbebd4518ae2a917f075be6754784684c3b95dda0c5579315c101c22dcd", + "created_at": "2025-02-07T00:15:22.100131Z", + "user_id": "lando_calrissian" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "c0fd9f37a0a660d02f19b26df4c29c9519115010b6fcc6e3c8c98bd9c40f0782", - "created_at": "2025-01-16T02:08:16.720431Z", - "user_id": "han_solo" + "id": "7d1c4b24c6143de096973964dd34016b60a96acc74944dfa2997170c5368f65d", + "created_at": "2025-01-31T17:35:26.948409Z", + "user_id": "lando_calrissian" } ], "invisible": false, - "birthland": "Corellia" + "birthland": "Socorro" }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, - "role": "member", + "role": "admin", "channel_role": "channel_member", "notifications_muted": false }, @@ -523,11 +522,12 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, "shadow_banned": false, "privacy_settings": { "typing_indicators": { @@ -541,174 +541,177 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "804506291419e705e68fdc61b5f71297f30881364077b8c3f374f6938bef6cb4f9801da58770c8070108cf30ac06c060630037019523dc91d750de2293f8df7be86c8c8be6be95666859bdc62fbed488", - "created_at": "2025-06-14T16:19:23.502954Z", + "id": "80ff3d0ff101a3d4f3319e20996b2e33cbe4ff1673632911ba61471d9c7382cf10db29c41676c6a42cc7e4084f0b00b28b450da1fe52a97edb8c67d5690b0d9b600c863c34a34546a649be08e3a975cf", + "created_at": "2025-10-07T13:31:12.581472Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "6397e24030aa17262a850157abf97612eff0243e873b7d1f79c996662ecb1682", - "created_at": "2025-06-12T13:18:40.260038Z", + "id": "466ec8f052e4e43f6f429a55907217c289618204ebaf4f7ca8fe52c303b01d05", + "created_at": "2025-10-06T07:05:44.023463Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80215dc8442845c41f30d28c05db0a8f697f727303be0fb49ca7743af6a211d3", - "created_at": "2025-06-04T02:43:01.595306Z", + "id": "80dc67313692ff3d512089cd19df179395b298d106b86cd2aedf0edfe1de40cd7caba3025823acccf9173fce2000728459e6751c4c7c96b80415a441d54c690d3f2d1635d26a8d58c0407edff8fcfe34", + "created_at": "2025-09-23T11:14:39.868685Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8078596852ae3ecc7bb8d20eb1bde24d596115270e266be1e7164009c28c841c89120222e5594b8929bafb7b55ec47e5b1db2e1274b6e0c9a8f24ba1087832d4dc8acefc857be26848f2b074fdaa42fe", - "created_at": "2025-06-03T14:54:34.358128Z", + "id": "8013785658480684ee2a2f523bd4d52d6f2fac5e34283f4765362b4d526e5f374a46a0eeff277aee8d94ca872c4cdce2c021fef9cb1c71a4e5b28bba5481cab79c2ff7f111d4a7488c7a28de76736ba6", + "created_at": "2025-09-22T07:33:07.001628Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8009e0a929c11c0297edc1a8c994a68fb7064cebede77d29bbd663c93390b1d22394adbdeb06a68f9b07720daa0e300b1dd951f90bb49c81275a0eaed20f24c954ceba42b8c76010b9ceaa70f19c5a24", - "created_at": "2025-06-03T12:06:41.61606Z", + "id": "8075f5f2d91f892d2a16de528dea1fae54d63f9d1c09ca18501547ec8b3880c54766e80e0eb8e10920a8545cf5a08f0048adf01c029a17b69fda5dbc8019733fdb5b4923e80d525ca96bd833f02434c5", + "created_at": "2025-09-16T07:18:39.830014Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80b9b312b4b635f1f0e4005ba0acc30d8f022a59e5006edb24f4eb7546930dbe0de2ce85800eabc1ec1a004d0a87fc7520b4f9039718f4f8437c466eb33ab9b392a77607ce982e31e443685e2b6b90b1", - "created_at": "2025-05-30T21:14:29.53116Z", + "id": "804df9f905b9fd1f2c53e160a5f3f1db34490bea2ecb0fdb6aa99d9f407fd67b477079cc403e15b7424927276ac32b113c9820bb569b99a14d60fef0f5ae24804bea0e20be5da6d724f4c3abbf5cd0cb", + "created_at": "2025-09-15T18:13:06.007999Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", - "created_at": "2025-05-30T18:32:15.279068Z", + "id": "8044edf2252ff9f253dada5dbf39f018f454e5bcdaf188501c6d105a4f5740c1872acb619f113596a1cb6f9071667d20e601f134aa0c83db83ce733f458b60c5c1b8712e2808abd4a840ce0347a8ea1a", + "created_at": "2025-09-15T13:32:20.775357Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "804d29de95a5a1fee45ffa38a6700d75807f844dbdcdffb6256377697ca2095c1f4a43a1823b7858af4a3dd47d96fda739110aa11072b1c0bec52446806ce65b9408b68b81343a8594bf21d3c18af6c0", - "created_at": "2025-05-30T09:18:11.558444Z", + "id": "80fee24033dcaa2b50911104447c596a7490ff86fa6593eb8f0eaca6c699c951ddad5e39d5ce95d3858d12a0169ab126dec8c4fa4f791a723304bf6c3ee415b0fe67e4dd7422e7af1dc49396442946eb", + "created_at": "2025-09-13T16:07:49.949311Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80d9539ee4ffce5bfafbfdbbc323b743c049f08d5efbce01eeef090f9884001c24b5fde2c1e6a6b5699e2c8fea4b607d3ecb5f206668e5f04ccc1b1402bd618cb78a5c4e22bf0f1a7a762d121346d951", - "created_at": "2025-05-30T05:01:32.5559Z", + "id": "a23e236960612858446bc7b0e78152f0d03ff977da16a1beec3d4558b51c3377", + "created_at": "2025-09-11T14:55:25.842429Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8082e4f123b0f83543d1f7c04920c76ec7d4b4db9d8f2e8ff0cc4daeef338209be72df2b35257cfdb86623c14d241cf1d1f42b78fef01e16052d13b03f75ed135360886f1900d3a0e80e97b268514c77", - "created_at": "2025-05-30T05:00:30.137993Z", + "id": "5c1967db91dfc57b32d12728b8ac7410edc325daae78215430319239bb1b9378", + "created_at": "2025-09-10T10:32:28.865373Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "43d7b696c6a06de2954e74814eb9b0e28b91096f4d1eeb852694f5921679ef46", - "created_at": "2025-05-29T08:49:30.254119Z", + "id": "8082e4f123b0f83543d1f7c04920c76ec7d4b4db9d8f2e8ff0cc4daeef338209be72df2b35257cfdb86623c14d241cf1d1f42b78fef01e16052d13b03f75ed135360886f1900d3a0e80e97b268514c77", + "created_at": "2025-09-03T04:32:38.333126Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80aed57876c4ebe2a4bb743943b56da38392ddc22517d9e402874a28034678c5e2cbe50beb4929955801aea07c13c8d434a2cd1401c25dd5d0b7cdb9a60811c547e5f6ed6c163112f160c52149c9f76e", - "created_at": "2025-05-29T04:54:25.507462Z", + "id": "802e021f067e90a9be03d142b102c30a871ad7e16b41bf469eab29c1e2f7b480f433802b2a3e6585752c09e44ed9f71d858bb61dad135568caaaefdac4536529d3b43812f2077c95b57ff4483fd1ad26", + "created_at": "2025-09-02T16:12:13.231524Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80ab6527485c2cf2edbc709f5c252d6eab4ce65ba260a4e3d9f9ccce1dcb4f822553145f2ff49799333363c2907bc0d1ec25eab646b66da776fead61ccac0f4cbb6085d81819ad2c3c9d365b7472856e", - "created_at": "2025-05-27T12:28:46.620215Z", + "id": "8006075492db346334382095f7c068600bfa16f8216628c938b1e9bdb18eae4288cd1567707a67b9868ae4166495d92d1eb9c20b2984a0fc3bc578013bcf05654598b343fa8d3f807e5c296e8ce61dc1", + "created_at": "2025-09-02T07:14:39.15913Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80486ca05c15def9ffc4d915f9d0b2eeaa286450486e04c33f3e6dbc81f3a834766c3cac07a0de81ba90a20d171942443bd16043124deedcb4159af340c39361e11e3e91bf4737c87c794ea55f8338f2", - "created_at": "2025-05-23T10:49:52.417843Z", + "id": "802eefd1b58c8a23fefe5d181538f0109535ad3c5baabf31f6d7a5f898b8ef0c8386d882aa07c511cf97d28f8291f6f8c46b78d7c6639f5c70f09a69ca6a92aff4d9b007a4f4a89b3ab5b722ffb9c86c", + "created_at": "2025-09-01T11:36:07.581094Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "801415be332a8ce50194e0933d0446635ff626afc0652c4b484ea32d560e8e0ed522c270ebabffa470f042fb3478645cd7764c191cfc5d6c73dab852e10de9dfd07e09bbca340ad7bd1469c1f0926000", - "created_at": "2025-05-21T10:24:46.609564Z", + "id": "5c7d0b29710fba33189fb659b1cbc2be3491d4f3c4b399b8afefb8bc920103ec", + "created_at": "2025-08-28T11:02:17.709186Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80c9120effde0e21706972562de59f7a5c35b8ae45c154bf071b49bd6774a4ef16aa003efb42d7ff9b7da187deaf560a5c126917e9f91f5304d5c1fa6d94019d4a72e246a903afc6a209152aed9fcc06", - "created_at": "2025-05-20T11:03:27.103857Z", + "id": "8079dec1832d067a951130384525f5de98ae20fe23d131e584c0028b69bdb60aec0a461b19e2b8886e94a479781a115c703bad0e3726f644e12a812d37bdd2b79b2021cd103688a2424bde9c08c9f2f0", + "created_at": "2025-08-27T05:23:02.591215Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "b919e95520aebf36da438b1cbafb93e6cbc165de1e40d714b26b493f3ff6411f", - "created_at": "2025-05-16T13:52:18.372021Z", + "id": "809eb957c901bdbae1f20ee0bebdf84c12b6d3a141ba32b5898e7353a7575ef53f941dba98b544fd7c1a36e10d3b88abe9b65d12b44b2fd93dc4a7a57fa45a79750d8a3106fe0d54b46cebad6ec7cbda", + "created_at": "2025-08-26T15:54:24.98832Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "806f6650799cb5424543258a92eeebbd627aac976d7a7c610dc74bde5de1f465129ad76ac92c7e32d24bbe9d0601d2b2521c00386ba6542f9e7f8f99ea31582e055631cf15112764fe8d6a1e8391c67c", - "created_at": "2025-05-16T09:11:33.233014Z", + "id": "806541d07bd58f5d897f3cb28994fd47749351fb77f948edb2b140c7c147c21bab5e5f90c6124a138f809cefce008662220436a7031c09224434282393bf76d4ba0f61866ecd5c72807279da20618b0a", + "created_at": "2025-08-22T10:41:07.519822Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80fff6ff1cc87a8173608355c783e34925ccdf20029a013d81570a44d0c9769da833b5aa630d195e12dedadd781fec5a3df4f55dcb42035b1879a9a9bee452bbc9fc911b6104fe45e9e34a4ab3b2af22", - "created_at": "2025-05-15T22:14:07.879975Z", + "id": "808f6525eea58e6aa49bd81b12abbff5a5e9d5310c626559cc1c306f1b0b08496e27d06c64872046d39edb5c9c89f84f0f8debe6663b54ce1aff83269d13850464ae06d3f293f3d6748b0ebd9a91a2f8", + "created_at": "2025-08-19T00:56:28.078927Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "802de862e0eaf8de4920b0f6ed65e7e5daa6928401a443443713c0b45bfc993a1cf203d75e7f753c7fdffa03f7fc50a1447da3898f94f2afcf593610b1897902ece834d72c2567c9e831d0396333f9c1", - "created_at": "2025-05-13T07:49:41.024562Z", + "id": "802e7837a85219bea9972172678578d10f683c085da918b90a56a477f6692ccbb52ff7badf3ece11c1d612afed415347dac1a8acfc1dfa51385e2ea53689d43466c84f729b069f10efff86604bc7c40c", + "created_at": "2025-08-12T23:25:49.648064Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "803192da84414d63ee9ff14a2d6eb2094f5fb0aaae589db1fc031baeed386d2d7e682e56cff2417f16fe5468b91cf77cd3121a6c4758ad24e385b962125ffee6d4dd236d792177154e554b728740f0d8", - "created_at": "2025-05-12T13:27:58.032984Z", + "id": "809409e7859ebfe71a461ead24d36a911eb5cdbab7184f848b45c44b153e65ff15c4be82066a2d768dc7184ab9b3b0c1b3cb7ec1f0819f231a6d09ad64c33dbfb8d1b919d5fda0474d9f29e3cc2940b7", + "created_at": "2025-08-12T12:58:05.975459Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80aa7286ccf76a1bc406e8e8a7e8197014afc2e436ea331cefe1587c040b55edd18a8b5c516a622b939d5bc02d6a51a75f782c86c75f8d47b3a754a632608925d9cec594bc32398ac32ccfa57499ef53", - "created_at": "2025-05-12T09:40:48.415127Z", + "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", + "created_at": "2025-08-11T20:11:02.29744Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8083e22c635fefc3b8ca928aee3179830f2d3553fecd6a11ccd6dc6cb91672f035c4e76f4cb3f0332ce1e18fe4ecfa091ab247f353a35d3f903f7151bd00cff341852e862719edbd150f6a1778256e3d", - "created_at": "2025-05-07T08:38:58.92846Z", + "id": "803588facf5946ecfe386d4906321b9fe31fe4181b03bffbbfd4b733c4acd00f9046a16f7beeec102e95273d15c95c15a44a2076ba83ad001bbd77ce3810b6465a7ef92fe299da7038b636e762d6150b", + "created_at": "2025-08-08T11:31:24.887765Z", "user_id": "luke_skywalker" } ], "invisible": false, + "team": "test", + "canBeAddedToGroups": true, "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test", - "type": "team" + "type": "team", + "canReceiveMessages": false, + "custom_extra_data_key": true }, "status": "member", - "created_at": "2025-06-15T00:25:33.304034Z", - "updated_at": "2025-06-15T00:25:33.304034Z", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -721,15 +724,16 @@ "id": "leia_organa", "name": "Leia Organa", "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", - "language": "zh", + "language": "", "role": "admin", "teams": [], "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-03-28T15:21:20.061525Z", + "updated_at": "2025-10-01T16:49:27.725672Z", "banned": false, - "online": false, - "last_active": "2025-06-14T17:34:03.224367Z", + "online": true, + "last_active": "2025-10-15T11:21:40.020397141Z", "blocked_user_ids": [], + "avg_response_time": 638602, "shadow_banned": false, "privacy_settings": { "typing_indicators": { @@ -743,193 +747,165 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80562365fd4558a3f35d7242fe7f75f55d343e3c08793327b95c2a66bed62dd580e03ea87ee2670e045188cc002ce0c474cc2be00aac2e41417566303513d01c2f9b08fbe20a875423706773c938a276", - "created_at": "2025-06-11T13:32:58.048525Z", - "user_id": "leia_organa" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "15266a2cdf77614a3d9c88c714022dd0e946e537a8a61c33e6813e26480ed518", - "created_at": "2025-06-11T13:31:05.651333Z", + "id": "801ffb7f463b104d50a2cbdad23120a4b2ea77d3c98954b7929bc19f4fd0f38ca988fbd91577879dedfc503001f515fbf11ccf204b755c0e062df31750ebb8c463da8a3afb6a4e6dc028e96623f74a35", + "created_at": "2025-10-11T12:30:03.355048Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", "id": "14216b28af8556468ae8dbf08a5ea602f9deb9c2eb115d9b6aacf7f7bde74ade", - "created_at": "2025-06-04T10:55:53.753151Z", + "created_at": "2025-10-10T16:00:49.838202Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80c1245d997bc62f7e6aec8a72f6493c876cf29a1d97aac74801c882c04cb2074b646c4ad7ecd661810cb22af8cc7049b71d1920a560d77da872be268e7917d3225078dfd13ea5b80328bfe55be159e9", - "created_at": "2025-05-13T03:34:54.823631Z", + "id": "ff2dc6e49c2663ff99b3a5e2a1dc8bf779a263c851f2dad3dc06270145fd1bbd", + "created_at": "2025-09-29T15:50:48.713725Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "807146c48063da5e10a127367fa5b54103c9b61e0f95576a485d6289681490a92bef0a3d59c4ca33fcd7eef7ce339463603221f39d7ef5109aebd80cd647942efc31e8a5d2e4c03f7e2af6d0e3b0db4b", - "created_at": "2025-05-02T18:24:07.641188Z", + "id": "80fc30257c03c5a273df381a64d9e168a94ca4cc5c44d82f6e9b27f94f6f5de710a08d7baa9a83fe41a72366c446eaba3c148273ef7b66f15c6e6ed21e20e068c45df62d18ab7680e91a076bb325fce7", + "created_at": "2025-09-08T17:54:15.751885Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "5dd2129704b206673f40fcacc51498af12466d202fb7b86fbcd1def5e021743b", - "created_at": "2025-04-29T18:11:54.744459Z", + "id": "8038e9ddae90ad612073cccda59c8e715193e375185a4c96cc374b12bf3b74d8bdcc4016ad13c5e48544a4606c82e874809a13322acdd03b4a4e9fd4ccfc5704aa183fd1cc12481b3a9d83e630e8adfe", + "created_at": "2025-07-29T15:46:00.608151Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80416524327191703aa5704a6788f5b85b6b38cb8de437675da7883c1a61b4b479fc20426200dd366c45b972948046a258d95d3331d4fc694e17c491ba671b209792b4df54e58907cdca208e58ffbd66", - "created_at": "2025-04-25T04:57:05.059816Z", + "id": "806c802cfe521f2980a80135de1e2c18dff2d634ab770bf6b645014a5da1f01047ff66c9933c83a8c5a464f5eb00e4d34a8bc02addc27f93aa24dd7f56c92e272e15d9f6d9beca620d08c93f80e01fe3", + "created_at": "2025-07-27T10:22:24.684004Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "de52baf21c547d06ce71f54f5ef8a47693c9b9f194dd6e82e1c855803eaacc4d", - "created_at": "2025-04-24T16:27:51.309408Z", + "id": "8043c6d0aeff8f1223f3c516e40e520c378e2ede462f06d215b630367d81f7b103181bb31f74ab23e37fe1f8686480f54eb31b2c560cac5ee18daa5558981c7f25465733563afc8050ecb7035be93ea7", + "created_at": "2025-07-04T15:29:30.008558Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8babc49a1d5e8943a25291fd4c2606f6d8f38470693daf7628a9a9c8617ea313", - "created_at": "2025-04-15T19:38:32.316517Z", + "id": "80b164164bc6eedba4a8c4d606d1e92b965facaa019aa89d81eaf7ed2579c4128e3ad7dff7a26dbba507ef75f79260d8acd86a26ce53a48efb83216045e8d9ed0eccd716fcd1807e381169a3f68f5f2e", + "created_at": "2025-07-04T13:17:05.176311Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80390cd4b5322ce878abb0ea8c6f2f554d21f2233767b61b4eb3a916e0be7325bc225528ffd97e3503ac6a56c5a62b747150b0d44abbeb6fb8c8e8b2dbf7fbe4291f3dbcac257ab869a6046876db1289", - "created_at": "2025-04-07T13:06:09.56915Z", + "id": "80c3ed5bdc76358518c9ef3707c00a4046848575a3ecc6f5f0fc9e67cf5823dd17e3784464aa6fc2a9640ec7e4f6eb6b7be3a4a9858857cda94fce3f6b3af907c1a68c19052302a4d07c5eeacbad1d0d", + "created_at": "2025-06-23T12:39:52.733646Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "f71e38ca56a6625256d487331369e2b950219fd0d55e8d7cb82fbd88966fee65", - "created_at": "2025-04-06T04:27:36.245492Z", + "id": "7b7bf6129032c5c3c333f2f80d8939d914587a11aaa30953af5e63d89d9defa1", + "created_at": "2025-06-18T03:58:29.477347Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809855cbb448059e832d627031ae978b9bb37f323b1ad0b3b0b879e4437cdc20", - "created_at": "2025-04-04T23:27:03.99699Z", - "user_id": "leia_organa" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "92045b8b37f75e4c36ed74665f68ebf4d932c19acd2a02d0c3604230a44a9537", - "created_at": "2025-03-27T01:06:37.823489Z", - "user_id": "leia_organa" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "80ef23e592c74d32dc863239a026b8b815ee54cc794d69ca44f61defe7dbd01085bd66d5da7b1a1c5b7d9790790459d3ba6e27c9393db0fb0c7b2920526a976066df8fd4193e5df2d2f5620dfe432cf9", - "created_at": "2025-02-25T13:16:00.896262Z", + "id": "807146c48063da5e10a127367fa5b54103c9b61e0f95576a485d6289681490a92bef0a3d59c4ca33fcd7eef7ce339463603221f39d7ef5109aebd80cd647942efc31e8a5d2e4c03f7e2af6d0e3b0db4b", + "created_at": "2025-05-02T18:24:07.641188Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80f13fec122f492c20a9dc11bb7003a1e870fb75de24890568c0fb5e3b7365331618227d89162b7322e9b68b20a0b02a42d6b8bf9923091d34492a1375dc781026cd9845b6b561a0d284cbc77b5bdc39", - "created_at": "2025-02-20T11:33:28.513905Z", + "id": "5dd2129704b206673f40fcacc51498af12466d202fb7b86fbcd1def5e021743b", + "created_at": "2025-04-29T18:11:54.744459Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80c9f99c1d02347ba3599ab752e55308681244fe97fcbc95eb0e630bcd97cb3ee927e8b15d5085938b4b18246f2e9ba2de3f357a6ca9127b1971df14742725841f0fd8537233b5e43a07a24422411816", - "created_at": "2025-02-06T05:12:00.670052Z", + "id": "80416524327191703aa5704a6788f5b85b6b38cb8de437675da7883c1a61b4b479fc20426200dd366c45b972948046a258d95d3331d4fc694e17c491ba671b209792b4df54e58907cdca208e58ffbd66", + "created_at": "2025-04-25T04:57:05.059816Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8099cf56e010eb7a7ec2202eacffbc22c0d84b2c3007b9b45403f4f99fd42b670d6552521aea4c14263fd0ed0d034f2e3f25aa44145a4054ed7d067e25e2f221582d30de66f750e62e45e2c0fa73ed74", - "created_at": "2025-02-05T14:25:05.737649Z", + "id": "de52baf21c547d06ce71f54f5ef8a47693c9b9f194dd6e82e1c855803eaacc4d", + "created_at": "2025-04-24T16:27:51.309408Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "003ddc257b04f7d989eb91bf70fd2e19aaef86bd7419d16993cba3e74f6e2ba4", - "created_at": "2025-02-01T23:38:43.460976Z", + "id": "8babc49a1d5e8943a25291fd4c2606f6d8f38470693daf7628a9a9c8617ea313", + "created_at": "2025-04-15T19:38:32.316517Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "06f2e16cacf2bc6c1917d945e3aa875d2c0faa6cd1a379f7c2c28b9b61269bd2", - "created_at": "2025-01-25T23:50:24.74497Z", + "id": "80390cd4b5322ce878abb0ea8c6f2f554d21f2233767b61b4eb3a916e0be7325bc225528ffd97e3503ac6a56c5a62b747150b0d44abbeb6fb8c8e8b2dbf7fbe4291f3dbcac257ab869a6046876db1289", + "created_at": "2025-04-07T13:06:09.56915Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80902ac37a00a72af2fcebb5fa7db31603af4ed96681d8c356409dc391ce5d0a", - "created_at": "2025-01-24T05:28:13.061448Z", + "id": "f71e38ca56a6625256d487331369e2b950219fd0d55e8d7cb82fbd88966fee65", + "created_at": "2025-04-06T04:27:36.245492Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80d2480357faab5bfb5328e24089a3d3a9c51d7baf593089a8cff3779238135973c3e7a2fa015b857a9e022da1f30d3a1fd081243aa8f92e527428e9d63fbef4f0bbcb28016f756e1aeaaf60d8923ce4", - "created_at": "2025-01-17T16:26:56.459178Z", + "id": "809855cbb448059e832d627031ae978b9bb37f323b1ad0b3b0b879e4437cdc20", + "created_at": "2025-04-04T23:27:03.99699Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80c28b1312d1e9123e63a3451441c59c17742260f08a627897c26520178e55ddac30fb3cfb30725e2f595983f333edea82b5377b3032c45b7483c1b0876f5ba7b46461edb563bd30d26e7adbe8a3b615", - "created_at": "2025-01-15T15:38:17.46356Z", + "id": "92045b8b37f75e4c36ed74665f68ebf4d932c19acd2a02d0c3604230a44a9537", + "created_at": "2025-03-27T01:06:37.823489Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "c72625f7d8d3cea767f3a3343c6308a66b191532e2f01b5fc36e7ba1ea5ad1bb", - "created_at": "2025-01-02T17:25:19.278525Z", + "id": "80f13fec122f492c20a9dc11bb7003a1e870fb75de24890568c0fb5e3b7365331618227d89162b7322e9b68b20a0b02a42d6b8bf9923091d34492a1375dc781026cd9845b6b561a0d284cbc77b5bdc39", + "created_at": "2025-02-20T11:33:28.513905Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "fd0aaea9b4ba4c8e23a6aefa1fba3a500fd617d9cf8dcfc4740837e030d595ea", - "created_at": "2024-12-27T21:25:50.077757Z", + "id": "80c9f99c1d02347ba3599ab752e55308681244fe97fcbc95eb0e630bcd97cb3ee927e8b15d5085938b4b18246f2e9ba2de3f357a6ca9127b1971df14742725841f0fd8537233b5e43a07a24422411816", + "created_at": "2025-02-06T05:12:00.670052Z", "user_id": "leia_organa" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "7806d403ee3740e98fc519a123a9450dbd9d90b13229bff5dbe7a1d5825d2fdf", - "created_at": "2024-12-27T17:32:18.338986Z", + "id": "8099cf56e010eb7a7ec2202eacffbc22c0d84b2c3007b9b45403f4f99fd42b670d6552521aea4c14263fd0ed0d034f2e3f25aa44145a4054ed7d067e25e2f221582d30de66f750e62e45e2c0fa73ed74", + "created_at": "2025-02-05T14:25:05.737649Z", "user_id": "leia_organa" } ], "invisible": false, - "birthland": "Polis Massa", - "private_settings": { - "readReceipts": { - "enabled": false - }, - "typingIndicators": { - "enabled": false - } - } + "is_moderator": true, + "birthland": "Polis Massa" }, "status": "member", - "created_at": "2025-06-15T00:25:38.137522Z", - "updated_at": "2025-06-15T00:25:38.137522Z", + "created_at": "2025-10-15T11:22:22.248971Z", + "updated_at": "2025-10-15T11:22:22.248971Z", "banned": false, "shadow_banned": false, "role": "admin", @@ -940,7 +916,7 @@ "member_count": 4, "config": { "created_at": "2021-03-01T19:26:18.406502Z", - "updated_at": "2025-05-05T18:07:33.269057Z", + "updated_at": "2025-07-28T15:20:21.098826Z", "name": "messaging", "typing_events": true, "read_events": true, @@ -954,9 +930,12 @@ "url_enrichment": true, "custom_events": true, "push_notifications": true, - "reminders": false, + "reminders": true, "mark_messages_pending": false, "polls": true, + "user_message_reminders": false, + "shared_locations": true, + "count_messages": false, "message_retention": "infinite", "max_message_length": 5000, "automod": "AI", @@ -997,22 +976,26 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "canBeAddedToGroups": true, + "canReceiveMessages": false, + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine", + "custom_extra_data_key": true, + "team": "test", + "type": "team", "privacy_settings": { "read_receipts": { - "enabled": false + "enabled": true }, "typing_indicators": { - "enabled": false + "enabled": true } - }, - "team": "test", - "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + } } } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_member.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_member.json index 097b0aee5b8..ffb7cd3c4d6 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_member.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_member.json @@ -1,7 +1,7 @@ { "type": "member.added", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "channel_id": "ec2807ff-5c60-41bc-a816-49578260471a", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "channel_id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "channel_type": "messaging", "member": { "user_id": "leia_organa", @@ -10,27 +10,20 @@ "role": "admin", "teams_role": null, "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-03-28T15:21:20.061525Z", - "last_active": "2025-06-14T17:34:03.224367Z", - "last_engaged_at": "2025-06-14T17:34:05.446982Z", + "updated_at": "2025-10-01T16:49:27.725672Z", + "last_active": "2025-10-15T11:19:09.931581Z", + "last_engaged_at": "2025-10-15T00:02:20.390107Z", "banned": false, - "online": false, - "language": "zh", - "birthland": "Polis Massa", - "private_settings": { - "readReceipts": { - "enabled": false - }, - "typingIndicators": { - "enabled": false - } - }, + "online": true, + "avg_response_time": 638602, "name": "Leia Organa", - "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png" + "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", + "birthland": "Polis Massa", + "is_moderator": true }, "status": "member", - "created_at": "2025-06-15T00:25:38.137522Z", - "updated_at": "2025-06-15T00:25:38.137522Z", + "created_at": "2025-10-15T11:22:22.248971Z", + "updated_at": "2025-10-15T11:22:22.248971Z", "banned": false, "shadow_banned": false, "is_global_banned": false, @@ -45,24 +38,17 @@ "role": "admin", "teams_role": null, "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-03-28T15:21:20.061525Z", - "last_active": "2025-06-14T17:34:03.224367Z", - "last_engaged_at": "2025-06-14T17:34:05.446982Z", + "updated_at": "2025-10-01T16:49:27.725672Z", + "last_active": "2025-10-15T11:19:09.931581Z", + "last_engaged_at": "2025-10-15T00:02:20.390107Z", "banned": false, - "online": false, - "language": "zh", + "online": true, + "avg_response_time": 638602, + "name": "Leia Organa", "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", "birthland": "Polis Massa", - "private_settings": { - "readReceipts": { - "enabled": false - }, - "typingIndicators": { - "enabled": false - } - }, - "name": "Leia Organa" + "is_moderator": true }, - "channel_last_message_at": "2025-06-15T00:25:36.86243Z", - "created_at": "2025-06-15T00:25:38.150649795Z" + "channel_last_message_at": "2025-10-15T11:22:21.804306Z", + "created_at": "2025-10-15T11:22:22.257574084Z" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_health_check.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_health_check.json index 9d5093a6f0a..86e1e1209f9 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_health_check.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_health_check.json @@ -1,5 +1,5 @@ { - "connection_id": "684a957c-0a15-3975-0200-000000000f8a", + "connection_id": "68e67b7d-0a15-3975-0200-0000000082cb", "me": { "id": "luke_skywalker", "name": "Luke Skywalker", @@ -8,10 +8,11 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", + "avg_response_time": 203648, "privacy_settings": { "typing_indicators": { "enabled": true @@ -24,16 +25,19 @@ "invisible": false, "mutes": [], "channel_mutes": [], - "unread_count": 0, - "total_unread_count": 0, - "unread_channels": 0, + "unread_count": 9, + "total_unread_count": 9, + "unread_channels": 1, "unread_threads": 0, - "type": "team", + "canBeAddedToGroups": true, "pando": "{\"speciality\":\"ios engineer\"}", + "custom_extra_data_key": true, + "canReceiveMessages": false, "birthland": "Tatooine", - "team": "test" + "team": "test", + "type": "team" }, "cid": "*", "type": "health.check", - "created_at": "2025-06-15T00:25:32.398620669Z" + "created_at": "2025-10-15T11:22:20.040248985Z" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_message.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_message.json index d97de06a1b6..c34b88ed7d9 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_message.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_message.json @@ -1,16 +1,16 @@ { "type": "message.new", - "created_at": "2025-06-15T00:25:36.923178296Z", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", + "created_at": "2025-10-15T11:22:21.838194472Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", "channel_member_count": 3, "channel_custom": { "name": "Sync Mock Server" }, "channel_type": "messaging", - "channel_id": "ec2807ff-5c60-41bc-a816-49578260471a", - "message_id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "channel_id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "message_id": "dc702391-84b6-44af-aa67-c349d2e72441", "message": { - "id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "id": "dc702391-84b6-44af-aa67-c349d2e72441", "text": "Test", "html": "Test
\n", "type": "regular", @@ -22,180 +22,187 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, "shadow_banned": false, "devices": [ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "804506291419e705e68fdc61b5f71297f30881364077b8c3f374f6938bef6cb4f9801da58770c8070108cf30ac06c060630037019523dc91d750de2293f8df7be86c8c8be6be95666859bdc62fbed488", - "created_at": "2025-06-14T16:19:23.502954Z", + "id": "80ff3d0ff101a3d4f3319e20996b2e33cbe4ff1673632911ba61471d9c7382cf10db29c41676c6a42cc7e4084f0b00b28b450da1fe52a97edb8c67d5690b0d9b600c863c34a34546a649be08e3a975cf", + "created_at": "2025-10-07T13:31:12.581472Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "6397e24030aa17262a850157abf97612eff0243e873b7d1f79c996662ecb1682", - "created_at": "2025-06-12T13:18:40.260038Z", + "id": "466ec8f052e4e43f6f429a55907217c289618204ebaf4f7ca8fe52c303b01d05", + "created_at": "2025-10-06T07:05:44.023463Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80215dc8442845c41f30d28c05db0a8f697f727303be0fb49ca7743af6a211d3", - "created_at": "2025-06-04T02:43:01.595306Z", + "id": "80dc67313692ff3d512089cd19df179395b298d106b86cd2aedf0edfe1de40cd7caba3025823acccf9173fce2000728459e6751c4c7c96b80415a441d54c690d3f2d1635d26a8d58c0407edff8fcfe34", + "created_at": "2025-09-23T11:14:39.868685Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8078596852ae3ecc7bb8d20eb1bde24d596115270e266be1e7164009c28c841c89120222e5594b8929bafb7b55ec47e5b1db2e1274b6e0c9a8f24ba1087832d4dc8acefc857be26848f2b074fdaa42fe", - "created_at": "2025-06-03T14:54:34.358128Z", + "id": "8013785658480684ee2a2f523bd4d52d6f2fac5e34283f4765362b4d526e5f374a46a0eeff277aee8d94ca872c4cdce2c021fef9cb1c71a4e5b28bba5481cab79c2ff7f111d4a7488c7a28de76736ba6", + "created_at": "2025-09-22T07:33:07.001628Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8009e0a929c11c0297edc1a8c994a68fb7064cebede77d29bbd663c93390b1d22394adbdeb06a68f9b07720daa0e300b1dd951f90bb49c81275a0eaed20f24c954ceba42b8c76010b9ceaa70f19c5a24", - "created_at": "2025-06-03T12:06:41.61606Z", + "id": "8075f5f2d91f892d2a16de528dea1fae54d63f9d1c09ca18501547ec8b3880c54766e80e0eb8e10920a8545cf5a08f0048adf01c029a17b69fda5dbc8019733fdb5b4923e80d525ca96bd833f02434c5", + "created_at": "2025-09-16T07:18:39.830014Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80b9b312b4b635f1f0e4005ba0acc30d8f022a59e5006edb24f4eb7546930dbe0de2ce85800eabc1ec1a004d0a87fc7520b4f9039718f4f8437c466eb33ab9b392a77607ce982e31e443685e2b6b90b1", - "created_at": "2025-05-30T21:14:29.53116Z", + "id": "804df9f905b9fd1f2c53e160a5f3f1db34490bea2ecb0fdb6aa99d9f407fd67b477079cc403e15b7424927276ac32b113c9820bb569b99a14d60fef0f5ae24804bea0e20be5da6d724f4c3abbf5cd0cb", + "created_at": "2025-09-15T18:13:06.007999Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", - "created_at": "2025-05-30T18:32:15.279068Z", + "id": "8044edf2252ff9f253dada5dbf39f018f454e5bcdaf188501c6d105a4f5740c1872acb619f113596a1cb6f9071667d20e601f134aa0c83db83ce733f458b60c5c1b8712e2808abd4a840ce0347a8ea1a", + "created_at": "2025-09-15T13:32:20.775357Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "804d29de95a5a1fee45ffa38a6700d75807f844dbdcdffb6256377697ca2095c1f4a43a1823b7858af4a3dd47d96fda739110aa11072b1c0bec52446806ce65b9408b68b81343a8594bf21d3c18af6c0", - "created_at": "2025-05-30T09:18:11.558444Z", + "id": "80fee24033dcaa2b50911104447c596a7490ff86fa6593eb8f0eaca6c699c951ddad5e39d5ce95d3858d12a0169ab126dec8c4fa4f791a723304bf6c3ee415b0fe67e4dd7422e7af1dc49396442946eb", + "created_at": "2025-09-13T16:07:49.949311Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80d9539ee4ffce5bfafbfdbbc323b743c049f08d5efbce01eeef090f9884001c24b5fde2c1e6a6b5699e2c8fea4b607d3ecb5f206668e5f04ccc1b1402bd618cb78a5c4e22bf0f1a7a762d121346d951", - "created_at": "2025-05-30T05:01:32.5559Z", + "id": "a23e236960612858446bc7b0e78152f0d03ff977da16a1beec3d4558b51c3377", + "created_at": "2025-09-11T14:55:25.842429Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8082e4f123b0f83543d1f7c04920c76ec7d4b4db9d8f2e8ff0cc4daeef338209be72df2b35257cfdb86623c14d241cf1d1f42b78fef01e16052d13b03f75ed135360886f1900d3a0e80e97b268514c77", - "created_at": "2025-05-30T05:00:30.137993Z", + "id": "5c1967db91dfc57b32d12728b8ac7410edc325daae78215430319239bb1b9378", + "created_at": "2025-09-10T10:32:28.865373Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "43d7b696c6a06de2954e74814eb9b0e28b91096f4d1eeb852694f5921679ef46", - "created_at": "2025-05-29T08:49:30.254119Z", + "id": "8082e4f123b0f83543d1f7c04920c76ec7d4b4db9d8f2e8ff0cc4daeef338209be72df2b35257cfdb86623c14d241cf1d1f42b78fef01e16052d13b03f75ed135360886f1900d3a0e80e97b268514c77", + "created_at": "2025-09-03T04:32:38.333126Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80aed57876c4ebe2a4bb743943b56da38392ddc22517d9e402874a28034678c5e2cbe50beb4929955801aea07c13c8d434a2cd1401c25dd5d0b7cdb9a60811c547e5f6ed6c163112f160c52149c9f76e", - "created_at": "2025-05-29T04:54:25.507462Z", + "id": "802e021f067e90a9be03d142b102c30a871ad7e16b41bf469eab29c1e2f7b480f433802b2a3e6585752c09e44ed9f71d858bb61dad135568caaaefdac4536529d3b43812f2077c95b57ff4483fd1ad26", + "created_at": "2025-09-02T16:12:13.231524Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80ab6527485c2cf2edbc709f5c252d6eab4ce65ba260a4e3d9f9ccce1dcb4f822553145f2ff49799333363c2907bc0d1ec25eab646b66da776fead61ccac0f4cbb6085d81819ad2c3c9d365b7472856e", - "created_at": "2025-05-27T12:28:46.620215Z", + "id": "8006075492db346334382095f7c068600bfa16f8216628c938b1e9bdb18eae4288cd1567707a67b9868ae4166495d92d1eb9c20b2984a0fc3bc578013bcf05654598b343fa8d3f807e5c296e8ce61dc1", + "created_at": "2025-09-02T07:14:39.15913Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80486ca05c15def9ffc4d915f9d0b2eeaa286450486e04c33f3e6dbc81f3a834766c3cac07a0de81ba90a20d171942443bd16043124deedcb4159af340c39361e11e3e91bf4737c87c794ea55f8338f2", - "created_at": "2025-05-23T10:49:52.417843Z", + "id": "802eefd1b58c8a23fefe5d181538f0109535ad3c5baabf31f6d7a5f898b8ef0c8386d882aa07c511cf97d28f8291f6f8c46b78d7c6639f5c70f09a69ca6a92aff4d9b007a4f4a89b3ab5b722ffb9c86c", + "created_at": "2025-09-01T11:36:07.581094Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "801415be332a8ce50194e0933d0446635ff626afc0652c4b484ea32d560e8e0ed522c270ebabffa470f042fb3478645cd7764c191cfc5d6c73dab852e10de9dfd07e09bbca340ad7bd1469c1f0926000", - "created_at": "2025-05-21T10:24:46.609564Z", + "id": "5c7d0b29710fba33189fb659b1cbc2be3491d4f3c4b399b8afefb8bc920103ec", + "created_at": "2025-08-28T11:02:17.709186Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80c9120effde0e21706972562de59f7a5c35b8ae45c154bf071b49bd6774a4ef16aa003efb42d7ff9b7da187deaf560a5c126917e9f91f5304d5c1fa6d94019d4a72e246a903afc6a209152aed9fcc06", - "created_at": "2025-05-20T11:03:27.103857Z", + "id": "8079dec1832d067a951130384525f5de98ae20fe23d131e584c0028b69bdb60aec0a461b19e2b8886e94a479781a115c703bad0e3726f644e12a812d37bdd2b79b2021cd103688a2424bde9c08c9f2f0", + "created_at": "2025-08-27T05:23:02.591215Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "b919e95520aebf36da438b1cbafb93e6cbc165de1e40d714b26b493f3ff6411f", - "created_at": "2025-05-16T13:52:18.372021Z", + "id": "809eb957c901bdbae1f20ee0bebdf84c12b6d3a141ba32b5898e7353a7575ef53f941dba98b544fd7c1a36e10d3b88abe9b65d12b44b2fd93dc4a7a57fa45a79750d8a3106fe0d54b46cebad6ec7cbda", + "created_at": "2025-08-26T15:54:24.98832Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "806f6650799cb5424543258a92eeebbd627aac976d7a7c610dc74bde5de1f465129ad76ac92c7e32d24bbe9d0601d2b2521c00386ba6542f9e7f8f99ea31582e055631cf15112764fe8d6a1e8391c67c", - "created_at": "2025-05-16T09:11:33.233014Z", + "id": "806541d07bd58f5d897f3cb28994fd47749351fb77f948edb2b140c7c147c21bab5e5f90c6124a138f809cefce008662220436a7031c09224434282393bf76d4ba0f61866ecd5c72807279da20618b0a", + "created_at": "2025-08-22T10:41:07.519822Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80fff6ff1cc87a8173608355c783e34925ccdf20029a013d81570a44d0c9769da833b5aa630d195e12dedadd781fec5a3df4f55dcb42035b1879a9a9bee452bbc9fc911b6104fe45e9e34a4ab3b2af22", - "created_at": "2025-05-15T22:14:07.879975Z", + "id": "808f6525eea58e6aa49bd81b12abbff5a5e9d5310c626559cc1c306f1b0b08496e27d06c64872046d39edb5c9c89f84f0f8debe6663b54ce1aff83269d13850464ae06d3f293f3d6748b0ebd9a91a2f8", + "created_at": "2025-08-19T00:56:28.078927Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "802de862e0eaf8de4920b0f6ed65e7e5daa6928401a443443713c0b45bfc993a1cf203d75e7f753c7fdffa03f7fc50a1447da3898f94f2afcf593610b1897902ece834d72c2567c9e831d0396333f9c1", - "created_at": "2025-05-13T07:49:41.024562Z", + "id": "802e7837a85219bea9972172678578d10f683c085da918b90a56a477f6692ccbb52ff7badf3ece11c1d612afed415347dac1a8acfc1dfa51385e2ea53689d43466c84f729b069f10efff86604bc7c40c", + "created_at": "2025-08-12T23:25:49.648064Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "803192da84414d63ee9ff14a2d6eb2094f5fb0aaae589db1fc031baeed386d2d7e682e56cff2417f16fe5468b91cf77cd3121a6c4758ad24e385b962125ffee6d4dd236d792177154e554b728740f0d8", - "created_at": "2025-05-12T13:27:58.032984Z", + "id": "809409e7859ebfe71a461ead24d36a911eb5cdbab7184f848b45c44b153e65ff15c4be82066a2d768dc7184ab9b3b0c1b3cb7ec1f0819f231a6d09ad64c33dbfb8d1b919d5fda0474d9f29e3cc2940b7", + "created_at": "2025-08-12T12:58:05.975459Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80aa7286ccf76a1bc406e8e8a7e8197014afc2e436ea331cefe1587c040b55edd18a8b5c516a622b939d5bc02d6a51a75f782c86c75f8d47b3a754a632608925d9cec594bc32398ac32ccfa57499ef53", - "created_at": "2025-05-12T09:40:48.415127Z", + "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", + "created_at": "2025-08-11T20:11:02.29744Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8083e22c635fefc3b8ca928aee3179830f2d3553fecd6a11ccd6dc6cb91672f035c4e76f4cb3f0332ce1e18fe4ecfa091ab247f353a35d3f903f7151bd00cff341852e862719edbd150f6a1778256e3d", - "created_at": "2025-05-07T08:38:58.92846Z", + "id": "803588facf5946ecfe386d4906321b9fe31fe4181b03bffbbfd4b733c4acd00f9046a16f7beeec102e95273d15c95c15a44a2076ba83ad001bbd77ce3810b6465a7ef92fe299da7038b636e762d6150b", + "created_at": "2025-08-08T11:31:24.887765Z", "user_id": "luke_skywalker" } ], "invisible": false, + "pando": "{\"speciality\":\"ios engineer\"}", "team": "test", + "canBeAddedToGroups": true, "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "canReceiveMessages": false, + "birthland": "Tatooine", + "custom_extra_data_key": true + }, + "member": { + "channel_role": "channel_member" }, "attachments": [], "latest_reactions": [], @@ -204,16 +211,11 @@ "reaction_scores": {}, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:36.86243Z", - "updated_at": "2025-06-15T00:25:36.86243Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:21.804306Z", + "updated_at": "2025-10-15T11:22:21.804306Z", "shadowed": false, "mentioned_users": [], - "i18n": { - "en_text": "Test", - "fr_text": "Testez", - "language": "en" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -229,15 +231,17 @@ "role": "admin", "teams": [], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", + "updated_at": "2025-09-15T05:51:41.748915Z", "banned": false, "online": true, - "last_active": "2025-06-15T00:25:32.362084978Z", + "last_active": "2025-10-15T11:22:19.961028904Z", "blocked_user_ids": [], + "avg_response_time": 203648, + "custom_extra_data_key": true, + "pando": "{\"speciality\":\"ios engineer\"}", "team": "test", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine", + "canReceiveMessages": false, "privacy_settings": { "read_receipts": { "enabled": false @@ -245,10 +249,12 @@ "typing_indicators": { "enabled": false } - } + }, + "canBeAddedToGroups": true, + "birthland": "Tatooine" }, "watcher_count": 1, - "unread_count": 0, - "total_unread_count": 0, - "unread_channels": 0 + "unread_count": 9, + "total_unread_count": 9, + "unread_channels": 1 } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_reaction.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_reaction.json index 92d03e644c3..f50cd514d28 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_reaction.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_reaction.json @@ -1,10 +1,10 @@ { "type": "reaction.new", - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "channel_id": "ec2807ff-5c60-41bc-a816-49578260471a", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "channel_id": "ec9f758c-3f7e-46f3-9618-bc5760428e5e", "channel_type": "messaging", "message": { - "id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "id": "dc702391-84b6-44af-aa67-c349d2e72441", "text": "Test", "html": "Test
\n", "type": "regular", @@ -13,47 +13,55 @@ "role": "admin", "teams_role": null, "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", - "last_active": "2025-06-15T00:25:32.362084978Z", - "last_engaged_at": "2025-06-14T02:15:22.646364Z", + "updated_at": "2025-09-15T05:51:41.748915Z", + "last_active": "2025-10-15T11:22:19.961028904Z", + "last_engaged_at": "2025-10-15T00:03:45.658694Z", "banned": false, "online": true, "language": "en", - "name": "Luke Skywalker", - "team": "test", + "avg_response_time": 203648, + "canBeAddedToGroups": true, + "canReceiveMessages": false, + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine", + "custom_extra_data_key": true, "type": "team", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "name": "Luke Skywalker", + "team": "test" }, "restricted_visibility": [], "attachments": [], "latest_reactions": [ { - "message_id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "message_id": "dc702391-84b6-44af-aa67-c349d2e72441", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", "role": "admin", "teams_role": null, "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", - "last_active": "2025-06-15T00:25:32.362084978Z", - "last_engaged_at": "2025-06-14T02:15:22.646364Z", + "updated_at": "2025-09-15T05:51:41.748915Z", + "last_active": "2025-10-15T11:22:19.961028904Z", + "last_engaged_at": "2025-10-15T00:03:45.658694Z", "banned": false, "online": true, "language": "en", - "birthland": "Tatooine", + "avg_response_time": 203648, + "canReceiveMessages": false, "name": "Luke Skywalker", "team": "test", "type": "team", - "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "pando": "{\"speciality\":\"ios engineer\"}" + "canBeAddedToGroups": true, + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine", + "custom_extra_data_key": true, + "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg" }, "type": "like", "score": 1, - "created_at": "2025-06-15T00:25:37.516538Z", - "updated_at": "2025-06-15T00:25:37.516538Z" + "created_at": "2025-10-15T11:22:21.987244Z", + "updated_at": "2025-10-15T11:22:21.987244Z" } ], "own_reactions": [], @@ -67,72 +75,110 @@ "like": { "count": 1, "sum_scores": 1, - "first_reaction_at": "2025-06-15T00:25:37.516538Z", - "last_reaction_at": "2025-06-15T00:25:37.516538Z" + "first_reaction_at": "2025-10-15T11:22:21.987244Z", + "last_reaction_at": "2025-10-15T11:22:21.987244Z" } }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:ec2807ff-5c60-41bc-a816-49578260471a", - "created_at": "2025-06-15T00:25:36.86243Z", - "updated_at": "2025-06-15T00:25:37.529233Z", + "cid": "messaging:ec9f758c-3f7e-46f3-9618-bc5760428e5e", + "created_at": "2025-10-15T11:22:21.804306Z", + "updated_at": "2025-10-15T11:22:22.001363Z", "shadowed": false, "mentioned_users": [], - "i18n": { - "en_text": "Test", - "fr_text": "Testez", - "language": "en" - }, "silent": false, "pinned": false, "pinned_at": null, "pinned_by": null, - "pin_expires": null + "pin_expires": null, + "member": { + "user_id": "luke_skywalker", + "user": { + "id": "luke_skywalker", + "role": "admin", + "teams_role": null, + "created_at": "2024-04-04T09:26:11.805899Z", + "updated_at": "2025-09-15T05:51:41.748915Z", + "last_active": "2025-10-15T11:22:19.961028904Z", + "last_engaged_at": "2025-10-15T00:03:45.658694Z", + "banned": false, + "online": true, + "language": "en", + "avg_response_time": 203648, + "custom_extra_data_key": true, + "team": "test", + "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", + "name": "Luke Skywalker", + "birthland": "Tatooine", + "type": "team", + "canBeAddedToGroups": true, + "canReceiveMessages": false, + "pando": "{\"speciality\":\"ios engineer\"}" + }, + "status": "member", + "created_at": "2025-10-15T11:22:20.279452Z", + "updated_at": "2025-10-15T11:22:20.279452Z", + "banned": false, + "shadow_banned": false, + "is_global_banned": false, + "archived_at": null, + "pinned_at": null, + "channel_role": "channel_member", + "notifications_muted": false + } }, "reaction": { - "message_id": "b9841bf2-9a49-4adf-ae93-5e07d37d7c22", + "message_id": "dc702391-84b6-44af-aa67-c349d2e72441", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", "role": "admin", "teams_role": null, "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", - "last_active": "2025-06-15T00:25:32.362084978Z", - "last_engaged_at": "2025-06-14T02:15:22.646364Z", + "updated_at": "2025-09-15T05:51:41.748915Z", + "last_active": "2025-10-15T11:22:19.961028904Z", + "last_engaged_at": "2025-10-15T00:03:45.658694Z", "banned": false, "online": true, "language": "en", + "avg_response_time": 203648, + "canBeAddedToGroups": true, "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", + "custom_extra_data_key": true, + "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", + "canReceiveMessages": false, "name": "Luke Skywalker", "team": "test", - "type": "team", - "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg" + "type": "team" }, "type": "like", "score": 1, - "created_at": "2025-06-15T00:25:37.516538Z", - "updated_at": "2025-06-15T00:25:37.516538Z" + "created_at": "2025-10-15T11:22:21.987244Z", + "updated_at": "2025-10-15T11:22:21.987244Z" }, "user": { "id": "luke_skywalker", "role": "admin", "teams_role": null, "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-06-06T08:22:36.844279Z", - "last_active": "2025-06-15T00:25:32.362084978Z", - "last_engaged_at": "2025-06-14T02:15:22.646364Z", + "updated_at": "2025-09-15T05:51:41.748915Z", + "last_active": "2025-10-15T11:22:19.961028904Z", + "last_engaged_at": "2025-10-15T00:03:45.658694Z", "banned": false, "online": true, "language": "en", + "avg_response_time": 203648, + "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", + "canReceiveMessages": false, "name": "Luke Skywalker", "team": "test", "type": "team", - "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", + "canBeAddedToGroups": true, "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "birthland": "Tatooine", + "custom_extra_data_key": true }, - "channel_last_message_at": "2025-06-15T00:25:36.86243Z", - "created_at": "2025-06-15T00:25:37.540065556Z" + "channel_last_message_at": "2025-10-15T11:22:21.804306Z", + "created_at": "2025-10-15T11:22:22.01374502Z" } \ No newline at end of file diff --git a/TestTools/StreamChatTestMockServer/MockServer/AttachmentResponses.swift b/TestTools/StreamChatTestMockServer/MockServer/AttachmentResponses.swift index 5cc5b6cffa1..09b17ba9cee 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/AttachmentResponses.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/AttachmentResponses.swift @@ -6,12 +6,11 @@ import XCTest public extension StreamMockServer { - func configureAttachmentEndpoints() { - server.register(MockEndpoint.image) { [weak self] request in + server.register(MockEndpoint.image) { [weak self] _ in self?.attachmentCreation(fileUrl: Attachments.image) } - server.register(MockEndpoint.file) { [weak self] request in + server.register(MockEndpoint.file) { [weak self] _ in self?.attachmentCreation(fileUrl: Attachments.file) } } @@ -21,5 +20,4 @@ public extension StreamMockServer { json[JSONKey.file] = fileUrl return .ok(.json(json)) } - } diff --git a/TestTools/StreamChatTestMockServer/MockServer/ChannelConfig.swift b/TestTools/StreamChatTestMockServer/MockServer/ChannelConfig.swift index eafe115e86c..b8189626c2d 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/ChannelConfig.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/ChannelConfig.swift @@ -10,7 +10,6 @@ import XCTest // MARK: - Config public struct ChannelConfigs { - struct Cooldown { var isEnabled = false var duration: Int = 3 @@ -37,9 +36,11 @@ public struct ChannelConfigs { channel[JSONKey.channel] = innerChannel } - mutating func updateConfig(config: ChannelConfig_Mock, - forChannelWithId id: String, - server: StreamMockServer) { + mutating func updateConfig( + config: ChannelConfig_Mock, + forChannelWithId id: String, + server: StreamMockServer + ) { var json = server.channelList guard var channels = json[JSONKey.channels] as? [[String: Any]], @@ -57,8 +58,10 @@ public struct ChannelConfigs { server.channelList = json } - mutating func config(forChannelId id: String, - server: StreamMockServer) -> ChannelConfig_Mock? { + mutating func config( + forChannelId id: String, + server: StreamMockServer + ) -> ChannelConfig_Mock? { if let config = configs[id] { return config } let config = loadConfig(forChannelId: id, server: server) @@ -66,8 +69,10 @@ public struct ChannelConfigs { return config } - private func loadConfig(forChannelId id: String, - server: StreamMockServer) -> ChannelConfig_Mock? { + private func loadConfig( + forChannelId id: String, + server: StreamMockServer + ) -> ChannelConfig_Mock? { guard let channel = server.channel(withId: id), let innerChannel = channel[JSONKey.channel] as? [String: Any], @@ -78,7 +83,6 @@ public struct ChannelConfigs { return try? ChannelConfig_Mock(configJson) } - } public struct ChannelConfig_Mock: Codable { @@ -100,16 +104,16 @@ public struct ChannelConfig_Mock: Codable { case typingEvents = "typing_events" case readEvents = "read_events" case connectEvents = "connect_events" - case search = "search" - case reactions = "reactions" - case replies = "replies" - case quotes = "quotes" - case mutes = "mutes" - case uploads = "uploads" + case search + case reactions + case replies + case quotes + case mutes + case uploads case urlEnrichment = "url_enrichment" case customEvents = "custom_events" case pushNotifications = "push_notifications" - case reminders = "reminders" + case reminders } public func update(json: inout [String: Any]) { diff --git a/TestTools/StreamChatTestMockServer/MockServer/ChannelResponses.swift b/TestTools/StreamChatTestMockServer/MockServer/ChannelResponses.swift index 6c06f313f98..0fad3d4aa1c 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/ChannelResponses.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/ChannelResponses.swift @@ -10,7 +10,6 @@ public let channelPayloadKey = ChannelPayload.CodingKeys.self var autogeneratedMessagesCounter = 0 public extension StreamMockServer { - private enum ChannelRequestType { case addMembers([String]) case removeMembers([String]) @@ -100,13 +99,13 @@ public extension StreamMockServer { func waitForChannelQueryUpdate(timeout: Double = StreamMockServer.waitTimeout) { let endTime = Date().timeIntervalSince1970 * 1000 + timeout * 1000 while !channelQueryEndpointWasCalled - && endTime > Date().timeIntervalSince1970 * 1000 {} + && endTime > Date().timeIntervalSince1970 * 1000 {} } func waitForChannelsUpdate(timeout: Double = StreamMockServer.waitTimeout) { let endTime = Date().timeIntervalSince1970 * 1000 + timeout * 1000 while !channelsEndpointWasCalled - && endTime > Date().timeIntervalSince1970 * 1000 {} + && endTime > Date().timeIntervalSince1970 * 1000 {} } private func updateChannel(withId id: String) { @@ -198,6 +197,7 @@ public extension StreamMockServer { } // MARK: Channel Members + private func handleChannelRequest(_ request: HttpRequest) -> HttpResponse? { guard let type = ChannelRequestType.type(from: request.body) else { print("Unhandled request: \(request)") @@ -212,9 +212,11 @@ public extension StreamMockServer { .ok(.json([JSONKey.events: []])) } - private func updateChannelMembers(_ request: HttpRequest, - ids: [String], - eventType: EventType) -> HttpResponse { + private func updateChannelMembers( + _ request: HttpRequest, + ids: [String], + eventType: EventType + ) -> HttpResponse { guard let id = request.params[EndpointQuery.channelId] else { @@ -365,12 +367,12 @@ public extension StreamMockServer { replyCount: Int? = 0, withAttachments: Bool = false, overallMessagesCount: Int = 1 - ) -> [String : Any]? { + ) -> [String: Any]? { let timeInterval = TimeInterval(index + channelIndex * 1000 - 123_456_789) let timestamp = TestData.stringTimestamp(Date(timeIntervalSinceNow: timeInterval)) let messageText = text == nil ? String(index) : text var message = mockMessage( - TestData.toJson(.message)[JSONKey.message] as? [String : Any], + TestData.toJson(.message)[JSONKey.message] as? [String: Any], channelId: channelId, messageId: id, text: messageText, @@ -400,12 +402,12 @@ public extension StreamMockServer { type = .file file[AttachmentCodingKeys.assetURL.rawValue] = Attachments.file file[AttachmentFile.CodingKeys.mimeType.rawValue] = "application/pdf" - file[AttachmentFile.CodingKeys.size.rawValue] = 123456 + file[AttachmentFile.CodingKeys.size.rawValue] = 123_456 case overallMessagesCount - 7, overallMessagesCount - 15: type = .video file[AttachmentCodingKeys.assetURL.rawValue] = Attachments.video file[AttachmentFile.CodingKeys.mimeType.rawValue] = "video/mp4" - file[AttachmentFile.CodingKeys.size.rawValue] = 123456 + file[AttachmentFile.CodingKeys.size.rawValue] = 123_456 default: break } diff --git a/TestTools/StreamChatTestMockServer/MockServer/DeviceRemoteControl.swift b/TestTools/StreamChatTestMockServer/MockServer/DeviceRemoteControl.swift index 64e627b0b64..3665d4a9a26 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/DeviceRemoteControl.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/DeviceRemoteControl.swift @@ -5,7 +5,6 @@ import Foundation public extension StreamMockServer { - func pushNotification( senderName: String, text: String, diff --git a/TestTools/StreamChatTestMockServer/MockServer/EventResponses.swift b/TestTools/StreamChatTestMockServer/MockServer/EventResponses.swift index ce72bd8abd0..1106cb426a1 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/EventResponses.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/EventResponses.swift @@ -8,7 +8,6 @@ import XCTest public let eventKey = EventPayload.CodingKeys.self public extension StreamMockServer { - func configureEventEndpoints() { server.register(MockEndpoint.event) { [weak self] request in let channelId = try XCTUnwrap(request.params[EndpointQuery.channelId]) diff --git a/TestTools/StreamChatTestMockServer/MockServer/MembersResponse.swift b/TestTools/StreamChatTestMockServer/MockServer/MembersResponse.swift index a404d2d69bf..ef35ab704c3 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/MembersResponse.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/MembersResponse.swift @@ -2,9 +2,7 @@ // Copyright © 2025 Stream.io Inc. All rights reserved. // - public extension StreamMockServer { - func configureMembersEndpoints() { server.register(MockEndpoint.members) { [weak self] request in return self?.mockMembersQuery(request) diff --git a/TestTools/StreamChatTestMockServer/MockServer/MessageList.swift b/TestTools/StreamChatTestMockServer/MockServer/MessageList.swift index d6a85a2de62..b0a0df16e6c 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/MessageList.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/MessageList.swift @@ -6,7 +6,6 @@ import XCTest public extension StreamMockServer { - func saveMessage(_ message: [String: Any]?) { guard let newMessage = message else { return } @@ -142,20 +141,24 @@ public extension StreamMockServer { return newMessageList.first } - func waitForWebsocketMessage(withText text: String, - timeout: Double = StreamMockServer.waitTimeout) { + func waitForWebsocketMessage( + withText text: String, + timeout: Double = StreamMockServer.waitTimeout + ) { let endTime = Date().timeIntervalSince1970 * 1000 + timeout * 1000 while latestWebsocketMessage != text - && endTime > Date().timeIntervalSince1970 * 1000 { + && endTime > Date().timeIntervalSince1970 * 1000 { print("Waiting for websocket message with text: '\(text)'") } } - func waitForHttpMessage(withText text: String, - timeout: Double = StreamMockServer.waitTimeout) { + func waitForHttpMessage( + withText text: String, + timeout: Double = StreamMockServer.waitTimeout + ) { let endTime = Date().timeIntervalSince1970 * 1000 + timeout * 1000 while latestHttpMessage != text - && endTime > Date().timeIntervalSince1970 * 1000 { + && endTime > Date().timeIntervalSince1970 * 1000 { print("Waiting for http message with text: '\(text)'") } } diff --git a/TestTools/StreamChatTestMockServer/MockServer/MessageResponses.swift b/TestTools/StreamChatTestMockServer/MockServer/MessageResponses.swift index d0943d89afc..379812f1aaa 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/MessageResponses.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/MessageResponses.swift @@ -9,7 +9,6 @@ public let messageKey = MessagePayloadsCodingKeys.self public let paginationKey = PaginationParameter.CodingKeys.self public extension StreamMockServer { - func configureMessagingEndpoints() { server.register(MockEndpoint.message) { [weak self] request in let channelId = try XCTUnwrap(request.params[EndpointQuery.channelId]) @@ -26,15 +25,19 @@ public extension StreamMockServer { let messageId = json[AttachmentActionRequestBody.CodingKeys.messageId.rawValue] as? String let channelId = json[AttachmentActionRequestBody.CodingKeys.channelId.rawValue] as? String let formData = json[AttachmentActionRequestBody.CodingKeys.data.rawValue] as? [String: Any] - return self?.ephemeralMessageCreation(messageId: try XCTUnwrap(messageId), - channelId: try XCTUnwrap(channelId), - formData: try XCTUnwrap(formData)) + return self?.ephemeralMessageCreation( + messageId: try XCTUnwrap(messageId), + channelId: try XCTUnwrap(channelId), + formData: try XCTUnwrap(formData) + ) } } - private func trackMessage(_ text: String, - messageType: MessageType, - eventType: EventType) { + private func trackMessage( + _ text: String, + messageType: MessageType, + eventType: EventType + ) { if eventType == .messageNew && messageType != .ephemeral { latestHttpMessage = text } @@ -81,10 +84,10 @@ public extension StreamMockServer { mockedMessage?[messageKey.text.rawValue] = text mockedMessage?[messageKey.html.rawValue] = text.html - if [Links.youtube, Links.unsplash].contains(where: {text.contains($0)}) { + if [Links.youtube, Links.unsplash].contains(where: { text.contains($0) }) { let jsonWithLink = text.contains(Links.youtube) ? MockFile.youtube : MockFile.unsplash let json = TestData.toJson(jsonWithLink)[JSONKey.message] as? [String: Any] - let linkAttachments = json?[messageKey.attachments.rawValue] + let linkAttachments = json?[messageKey.attachments.rawValue] var updatedAttachments = attachments as? [[String: Any]] ?? [] updatedAttachments += linkAttachments as? [[String: Any]] ?? [] mockedMessage?[messageKey.attachments.rawValue] = updatedAttachments @@ -201,10 +204,12 @@ public extension StreamMockServer { messageType = .reply } if messageText.starts(with: "/") && messageType != .ephemeral { - return messageInvalidCommand(message, - command: String(messageText.dropFirst(1)), - channelId: channelId, - parentId: parentId) + return messageInvalidCommand( + message, + command: String(messageText.dropFirst(1)), + channelId: channelId, + parentId: parentId + ) } else if messageType != .ephemeral && !forbiddenWords.isDisjoint(with: messageTextComponents) { return errorMessageHttpResponse( from: message, @@ -407,7 +412,6 @@ public extension StreamMockServer { let attachments = message?[messageKey.attachments.rawValue] ?? responseMessage?[messageKey.attachments.rawValue] - let mockedMessage = mockMessage( responseMessage, messageType: messageType, @@ -448,7 +452,7 @@ public extension StreamMockServer { messageType: MessageType, eventType: EventType, channelReply: Bool? = false - ){ + ) { if let parentId = httpMessage?[messageKey.parentId.rawValue] as? String { let parentMessage = findMessageById(parentId) websocketMessage( diff --git a/TestTools/StreamChatTestMockServer/MockServer/MockServerAttributes.swift b/TestTools/StreamChatTestMockServer/MockServer/MockServerAttributes.swift index 6f99d191ea5..8252b7e0f8c 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/MockServerAttributes.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/MockServerAttributes.swift @@ -2,8 +2,8 @@ // Copyright © 2025 Stream.io Inc. All rights reserved. // -@testable import StreamChat import Foundation +@testable import StreamChat public enum Message { public static func message(withInvalidCommand command: String) -> String { @@ -26,6 +26,7 @@ public enum MockFile: String { case httpAttachment = "http_attachment" case httpTruncate = "http_truncate" + case wsMessage = "ws_message" case wsChatEvent = "ws_events" case wsChannelEvent = "ws_events_channel" case wsMemberEvent = "ws_events_member" @@ -123,7 +124,6 @@ public enum APNSKey { } public enum UserDetails { - public static var users: [[String: String]] { [ hanSolo, @@ -153,6 +153,8 @@ public enum UserDetails { userKey.imageURL.rawValue: lukeSkywalkerImageURL ] + public static let countDookuId = "count_dooku" + public static let countDookuName = "Count Dooku" public static let countDooku = [ userKey.id.rawValue: "count_dooku", userKey.name.rawValue: "Count Dooku", @@ -160,12 +162,15 @@ public enum UserDetails { ] public static let leiaOrganaId = "leia_organa" + public static let leiaOrganaName = "Leia Organa" public static let leiaOrgana = [ userKey.id.rawValue: leiaOrganaId, userKey.name.rawValue: "Leia Organa", userKey.imageURL.rawValue: "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png" ] + public static let landoCalrissianId = "lando_calrissian" + public static let landoCalrissianName = "Lando Calrissian" public static let landoCalrissian = [ userKey.id.rawValue: "lando_calrissian", userKey.name.rawValue: "Lando Calrissian", diff --git a/TestTools/StreamChatTestMockServer/MockServer/ReactionResponses.swift b/TestTools/StreamChatTestMockServer/MockServer/ReactionResponses.swift index 64ca10b2b22..a8b3029707f 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/ReactionResponses.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/ReactionResponses.swift @@ -8,7 +8,6 @@ import XCTest public let reactionKey = MessageReactionPayload.CodingKeys.self public extension StreamMockServer { - func configureReactionEndpoints() { server.register(MockEndpoint.reaction) { [weak self] request in let messageId = try XCTUnwrap(request.params[EndpointQuery.messageId]) diff --git a/TestTools/StreamChatTestMockServer/MockServer/StreamMockServer.swift b/TestTools/StreamChatTestMockServer/MockServer/StreamMockServer.swift index 142cea4edd0..97d426bc03c 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/StreamMockServer.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/StreamMockServer.swift @@ -2,12 +2,11 @@ // Copyright © 2025 Stream.io Inc. All rights reserved. // -@testable import StreamChat import Foundation +@testable import StreamChat import XCTest public final class StreamMockServer { - // Delays all HTTP responses by given time interval, 0 by default public static var httpResponseDelay: TimeInterval = 0.0 // Waits for all HTTP and Websocket responses during given time interval, 10 by default @@ -106,7 +105,6 @@ extension StreamMockServer { // MARK: Config public extension StreamMockServer { - func config(forChannelId id: String) -> ChannelConfig_Mock? { channelConfigs.config(forChannelId: id, server: self) } @@ -121,7 +119,6 @@ public extension StreamMockServer { } public extension StreamMockServer { - func setCooldown(enabled: Bool, duration: Int, inChannelWithId id: String) { channelConfigs.setCooldown(enabled: enabled, duration: duration) diff --git a/TestTools/StreamChatTestMockServer/MockServer/User.swift b/TestTools/StreamChatTestMockServer/MockServer/User.swift index 683f91bab2a..cfa431140a9 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/User.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/User.swift @@ -7,7 +7,6 @@ public let userKey = UserPayloadsCodingKeys.self public extension StreamMockServer { - func setUpUser( source: [String: Any]?, details: [String: String] = [:] diff --git a/TestTools/StreamChatTestMockServer/MockServer/WebsocketResponses.swift b/TestTools/StreamChatTestMockServer/MockServer/WebsocketResponses.swift index 79244a38dab..9fef7cff03a 100644 --- a/TestTools/StreamChatTestMockServer/MockServer/WebsocketResponses.swift +++ b/TestTools/StreamChatTestMockServer/MockServer/WebsocketResponses.swift @@ -2,11 +2,10 @@ // Copyright © 2025 Stream.io Inc. All rights reserved. // -@testable import StreamChat import Foundation +@testable import StreamChat public extension StreamMockServer { - /// Sends an event over a websocket connection /// /// - Parameters: @@ -62,7 +61,7 @@ public extension StreamMockServer { ) -> Self { guard let messageId = messageId else { return self } - let mockFile = messageType == .ephemeral ? MockFile.ephemeralMessage : MockFile.message + let mockFile = messageType == .ephemeral ? MockFile.ephemeralMessage : MockFile.wsMessage var json = TestData.getMockResponse(fromFile: mockFile).json var mockedMessage: [String: Any]? @@ -198,7 +197,6 @@ public extension StreamMockServer { // MARK: Channel Members public extension StreamMockServer { - /// Adds new members to channel /// /// - Parameters: diff --git a/TestTools/StreamChatTestMockServer/Robots/BackendRobot.swift b/TestTools/StreamChatTestMockServer/Robots/BackendRobot.swift index eba53f70ac9..074cebedb13 100644 --- a/TestTools/StreamChatTestMockServer/Robots/BackendRobot.swift +++ b/TestTools/StreamChatTestMockServer/Robots/BackendRobot.swift @@ -6,7 +6,6 @@ import Foundation import XCTest public class BackendRobot { - private var server: StreamMockServer public init(_ server: StreamMockServer) { @@ -50,7 +49,7 @@ public class BackendRobot { UserDetails.countDooku ], withAttachments: Bool = false - ) -> Self { + ) -> Self { var json = server.channelList guard let sampleChannel = (json[JSONKey.channels] as? [[String: Any]])?.first else { return self } diff --git a/TestTools/StreamChatTestMockServer/Robots/ParticipantRobot.swift b/TestTools/StreamChatTestMockServer/Robots/ParticipantRobot.swift index cc18329c41d..9d78a3cab71 100644 --- a/TestTools/StreamChatTestMockServer/Robots/ParticipantRobot.swift +++ b/TestTools/StreamChatTestMockServer/Robots/ParticipantRobot.swift @@ -6,10 +6,9 @@ import XCTest public class ParticipantRobot { - private var server: StreamMockServer private var threadParentId: String? - private var user: [String: String] = UserDetails.hanSolo + private var user: [String: String] = UserDetails.countDooku public init(_ server: StreamMockServer) { self.server = server @@ -66,7 +65,7 @@ public class ParticipantRobot { // Sleep in seconds @discardableResult public func wait(_ duration: TimeInterval) -> Self { - let sleepTime = UInt32(duration * 1000000) + let sleepTime = UInt32(duration * 1_000_000) usleep(sleepTime) return self } @@ -97,14 +96,16 @@ public class ParticipantRobot { } @discardableResult - public func sendMessage(_ text: String, - withPushNotification: Bool = false, - bundleIdForPushNotification: String = "", - waitForAppearance: Bool = true, - waitForChannelQuery: Bool = true, - waitBeforeSending: TimeInterval = 0, - file: StaticString = #filePath, - line: UInt = #line) -> Self { + public func sendMessage( + _ text: String, + withPushNotification: Bool = false, + bundleIdForPushNotification: String = "", + waitForAppearance: Bool = true, + waitForChannelQuery: Bool = true, + waitBeforeSending: TimeInterval = 0, + file: StaticString = #filePath, + line: UInt = #line + ) -> Self { if waitBeforeSending > 0 { wait(waitBeforeSending) } @@ -379,17 +380,19 @@ public class ParticipantRobot { } @discardableResult - public func uploadAttachment(type: AttachmentType, - count: Int = 1, - asReplyToFirstMessage: Bool = false, - asReplyToLastMessage: Bool = false, - inThread: Bool = false, - alsoInChannel: Bool = false, - waitForAppearance: Bool = true, - waitForChannelQuery: Bool = true, - waitBeforeSending: TimeInterval = 0, - file: StaticString = #filePath, - line: UInt = #line) -> Self { + public func uploadAttachment( + type: AttachmentType, + count: Int = 1, + asReplyToFirstMessage: Bool = false, + asReplyToLastMessage: Bool = false, + inThread: Bool = false, + alsoInChannel: Bool = false, + waitForAppearance: Bool = true, + waitForChannelQuery: Bool = true, + waitBeforeSending: TimeInterval = 0, + file: StaticString = #filePath, + line: UInt = #line + ) -> Self { if waitBeforeSending > 0 { wait(waitBeforeSending) } @@ -433,7 +436,7 @@ public class ParticipantRobot { } if type != .image { - file[AttachmentFile.CodingKeys.size.rawValue] = 123456 + file[AttachmentFile.CodingKeys.size.rawValue] = 123_456 } for i in 1...count { diff --git a/TestTools/StreamChatTestMockServer/StreamChatTestMockServer.swift b/TestTools/StreamChatTestMockServer/StreamChatTestMockServer.swift index a24caf8f6c6..b3bf38fb3f2 100644 --- a/TestTools/StreamChatTestMockServer/StreamChatTestMockServer.swift +++ b/TestTools/StreamChatTestMockServer/StreamChatTestMockServer.swift @@ -5,7 +5,6 @@ import Foundation extension Bundle { - private final class StreamChatTestMockServer {} static let bundleName = "StreamChat_StreamChatTestMockServer" diff --git a/TestTools/StreamChatTestMockServer/Swifter/DemoServer.swift b/TestTools/StreamChatTestMockServer/Swifter/DemoServer.swift index 495821473d0..2e811e8f9a0 100644 --- a/TestTools/StreamChatTestMockServer/Swifter/DemoServer.swift +++ b/TestTools/StreamChatTestMockServer/Swifter/DemoServer.swift @@ -1,15 +1,11 @@ // -// DemoServer.swift -// Swifter -// -// Copyright (c) 2014-2016 Damian Kołakowski. All rights reserved. +// Copyright © 2025 Stream.io Inc. All rights reserved. // import Foundation // swiftlint:disable function_body_length public func demoServer(_ publicDir: String) -> HttpServer { - print(publicDir) let server = HttpServer() @@ -125,7 +121,6 @@ public func demoServer(_ publicDir: String) -> HttpServer { } } } - } javascript { src = "http://cdn.staticfile.org/twitter-bootstrap/3.3.0/js/bootstrap.min.js" diff --git a/TestTools/StreamChatTestMockServer/Swifter/Errno.swift b/TestTools/StreamChatTestMockServer/Swifter/Errno.swift index 3657b95ee1c..c36d7414020 100644 --- a/TestTools/StreamChatTestMockServer/Swifter/Errno.swift +++ b/TestTools/StreamChatTestMockServer/Swifter/Errno.swift @@ -1,14 +1,10 @@ // -// Errno.swift -// Swifter -// -// Copyright © 2016 Damian Kołakowski. All rights reserved. +// Copyright © 2025 Stream.io Inc. All rights reserved. // import Foundation public class Errno { - public class func description() -> String { // https://forums.developer.apple.com/thread/113919 return String(cString: strerror(errno)) diff --git a/TestTools/StreamChatTestMockServer/Swifter/Files.swift b/TestTools/StreamChatTestMockServer/Swifter/Files.swift index a45e2c5b48e..e47152285b1 100644 --- a/TestTools/StreamChatTestMockServer/Swifter/Files.swift +++ b/TestTools/StreamChatTestMockServer/Swifter/Files.swift @@ -1,8 +1,5 @@ // -// HttpHandlers+Files.swift -// Swifter -// -// Copyright (c) 2014-2016 Damian Kołakowski. All rights reserved. +// Copyright © 2025 Stream.io Inc. All rights reserved. // import Foundation @@ -14,7 +11,7 @@ public func shareFile(_ path: String) -> ((HttpRequest) -> HttpResponse) { var responseHeader: [String: String] = ["Content-Type": mimeType] if let attr = try? FileManager.default.attributesOfItem(atPath: path), - let fileSize = attr[FileAttributeKey.size] as? UInt64 { + let fileSize = attr[FileAttributeKey.size] as? UInt64 { responseHeader["Content-Length"] = String(fileSize) } return .raw(200, "OK", responseHeader, { writer in @@ -48,7 +45,7 @@ public func shareFilesFromDirectory(_ directoryPath: String, defaults: [String] var responseHeader: [String: String] = ["Content-Type": mimeType] if let attr = try? FileManager.default.attributesOfItem(atPath: filePath), - let fileSize = attr[FileAttributeKey.size] as? UInt64 { + let fileSize = attr[FileAttributeKey.size] as? UInt64 { responseHeader["Content-Length"] = String(fileSize) } @@ -73,7 +70,7 @@ public func directoryBrowser(_ dir: String) -> ((HttpRequest) -> HttpResponse) { } if try filePath.directory() { var files = try filePath.files() - files.sort(by: {$0.lowercased() < $1.lowercased()}) + files.sort(by: { $0.lowercased() < $1.lowercased() }) return scopes { html { body { @@ -89,7 +86,7 @@ public func directoryBrowser(_ dir: String) -> ((HttpRequest) -> HttpResponse) { } } } - }(request) + }(request) } else { guard let file = try? filePath.openForReading() else { return .notFound() diff --git a/TestTools/StreamChatTestMockServer/Swifter/HttpParser.swift b/TestTools/StreamChatTestMockServer/Swifter/HttpParser.swift index 5c1abfa9e24..31a5d0fa83a 100644 --- a/TestTools/StreamChatTestMockServer/Swifter/HttpParser.swift +++ b/TestTools/StreamChatTestMockServer/Swifter/HttpParser.swift @@ -1,8 +1,5 @@ // -// HttpParser.swift -// Swifter -// -// Copyright (c) 2014-2016 Damian Kołakowski. All rights reserved. +// Copyright © 2025 Stream.io Inc. All rights reserved. // import Foundation @@ -13,8 +10,7 @@ enum HttpParserError: Error, Equatable { } public class HttpParser { - - public init() { } + public init() {} public func readHttpRequest(_ socket: Socket) throws -> HttpRequest { let statusLine = try socket.readLine() @@ -38,7 +34,7 @@ public class HttpParser { request.body = try readBody(socket, size: contentLengthValue) } return request - } + } private func readBody(_ socket: Socket, size: Int) throws -> [UInt8] { return try socket.read(length: size) @@ -57,7 +53,7 @@ public class HttpParser { func supportsKeepAlive(_ headers: [String: String]) -> Bool { if let value = headers["connection"] { - return "keep-alive" == value.trimmingCharacters(in: .whitespaces) + return value.trimmingCharacters(in: .whitespaces) == "keep-alive" } return false } diff --git a/TestTools/StreamChatTestMockServer/Swifter/HttpRequest.swift b/TestTools/StreamChatTestMockServer/Swifter/HttpRequest.swift index 00d0962f30b..be11678cd8a 100644 --- a/TestTools/StreamChatTestMockServer/Swifter/HttpRequest.swift +++ b/TestTools/StreamChatTestMockServer/Swifter/HttpRequest.swift @@ -1,14 +1,10 @@ // -// HttpRequest.swift -// Swifter -// -// Copyright (c) 2014-2016 Damian Kołakowski. All rights reserved. +// Copyright © 2025 Stream.io Inc. All rights reserved. // import Foundation public class HttpRequest { - public var path: String = "" public var queryParams: [(String, String)] = [] public var method: String = "" @@ -23,7 +19,7 @@ public class HttpRequest { guard let headerValue = headers[headerName] else { return false } - return headerValue.components(separatedBy: ",").filter({ $0.trimmingCharacters(in: .whitespaces).lowercased() == token }).count > 0 + return !headerValue.components(separatedBy: ",").filter({ $0.trimmingCharacters(in: .whitespaces).lowercased() == token }).isEmpty } public func parseUrlencodedForm() -> [(String, String)] { @@ -41,15 +37,16 @@ public class HttpRequest { return utf8String.components(separatedBy: "&").map { param -> (String, String) in let tokens = param.components(separatedBy: "=") if let name = tokens.first?.removingPercentEncoding, let value = tokens.last?.removingPercentEncoding, tokens.count == 2 { - return (name.replacingOccurrences(of: "+", with: " "), - value.replacingOccurrences(of: "+", with: " ")) + return ( + name.replacingOccurrences(of: "+", with: " "), + value.replacingOccurrences(of: "+", with: " ") + ) } return ("", "") } } public struct MultiPart { - public let headers: [String: String] public let body: [UInt8] @@ -74,7 +71,7 @@ public class HttpRequest { } return results }) - }.first + }.first } } @@ -93,7 +90,7 @@ public class HttpRequest { boundary = tokens.last } }) - if let boundary = boundary, boundary.utf8.count > 0 { + if let boundary = boundary, !boundary.utf8.isEmpty { return parseMultiPartFormData(body, boundary: "--\(boundary)") } return [] @@ -114,7 +111,7 @@ public class HttpRequest { return nil } } else { - let /* ignore */ _ = nextUTF8MultiPartLine(&generator) + /* ignore */ _ = nextUTF8MultiPartLine(&generator) } var headers = [String: String]() while let line = nextUTF8MultiPartLine(&generator), !line.isEmpty { @@ -151,13 +148,13 @@ public class HttpRequest { let boundaryArray = [UInt8](boundary.utf8) var matchOffset = 0 while let x = generator.next() { - matchOffset = ( x == boundaryArray[matchOffset] ? matchOffset + 1 : 0 ) + matchOffset = (x == boundaryArray[matchOffset] ? matchOffset + 1 : 0) body.append(x) if matchOffset == boundaryArray.count { #if swift(>=4.2) - body.removeSubrange(body.count-matchOffset ..< body.count) + body.removeSubrange(body.count - matchOffset..Hello<\/p>\n",
+ "pinned": false,
+ "pinned_at": null,
+ "pin_expires": null,
+ "pinned_by": null
+ },
+ "type" : "message.deleted",
+ "deleted_for_me": true,
+ "cid" : "messaging:general"
+}
+
diff --git a/TestTools/StreamChatTestTools/Fixtures/JSONs/Message.json b/TestTools/StreamChatTestTools/Fixtures/JSONs/Message.json
index 970418528a9..4c8fae1c08b 100644
--- a/TestTools/StreamChatTestTools/Fixtures/JSONs/Message.json
+++ b/TestTools/StreamChatTestTools/Fixtures/JSONs/Message.json
@@ -6,6 +6,7 @@
},
"silent" : true,
"shadowed": true,
+ "deleted_for_me": true,
"created_at" : "2020-07-16T15:39:03.010717Z",
"deleted_at" : "2020-07-16T15:55:03.010717Z",
"reaction_scores" : {
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/AttachmentUploadingState_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/AttachmentUploadingState_Mock.swift
index 320480e6b46..b68e16ac4f5 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/AttachmentUploadingState_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/AttachmentUploadingState_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-@testable import StreamChat
import Foundation
+@testable import StreamChat
public extension AttachmentUploadingState {
/// Creates a new `AttachmentUploadingState` object from the provided data.
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageAudioAttachment_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageAudioAttachment_Mock.swift
index 330c90eb8d8..1cd3d31f389 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageAudioAttachment_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageAudioAttachment_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-@testable import StreamChat
import Foundation
+@testable import StreamChat
public extension ChatMessageAudioAttachment {
static func mock(
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageFileAttachment_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageFileAttachment_Mock.swift
index 4915f40303a..09669b7a7dd 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageFileAttachment_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageFileAttachment_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-@testable import StreamChat
import Foundation
+@testable import StreamChat
public extension ChatMessageFileAttachment {
/// Creates a new `ChatMessageFileAttachment` object from the provided data.
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageImageAttachment_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageImageAttachment_Mock.swift
index 753ae4270cc..e61d5b29d7c 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageImageAttachment_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageImageAttachment_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-@testable import StreamChat
import Foundation
+@testable import StreamChat
extension ChatMessageImageAttachment {
/// Creates a new `ChatMessageImageAttachment` object from the provided data.
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageLinkAttachment_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageLinkAttachment_Mock.swift
index 8989f1afd2f..dc5f51779ab 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageLinkAttachment_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageLinkAttachment_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-@testable import StreamChat
import Foundation
+@testable import StreamChat
extension ChatMessageLinkAttachment {
/// Creates a new `ChatMessageLinkAttachment` object from the provided data.
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageVideoAttachment_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageVideoAttachment_Mock.swift
index bdc63d3b73c..22868c35285 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageVideoAttachment_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageVideoAttachment_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-@testable import StreamChat
import Foundation
+@testable import StreamChat
public extension ChatMessageVideoAttachment {
static func mock(
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageVoiceRecordingAttachment_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageVoiceRecordingAttachment_Mock.swift
index 40c9b02c5f7..6a1c6a40797 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageVoiceRecordingAttachment_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/ChatMessageVoiceRecordingAttachment_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-@testable import StreamChat
import Foundation
+@testable import StreamChat
public extension ChatMessageVoiceRecordingAttachment {
/// Creates a new `ChatMessageVoiceRecordingAttachment` object from the provided data.
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/StreamAttachment_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/StreamAttachment_Mock.swift
index 43b03abbebb..9c8d3fa9141 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/StreamAttachment_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Attachments/StreamAttachment_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-@testable import StreamChat
import Foundation
+@testable import StreamChat
public extension StreamAttachment {
/// Creates a new `ChatMessageFileAttachment` object from the provided data.
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/ChatMessage_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/ChatMessage_Mock.swift
index 32660e49536..cc0429bad18 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/ChatMessage_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/ChatMessage_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-import Foundation
import CoreData.NSManagedObjectContext
+import Foundation
@testable import StreamChat
public extension ChatMessage {
@@ -53,7 +53,8 @@ public extension ChatMessage {
draftReply: DraftMessage? = nil,
reminder: MessageReminderInfo? = nil,
sharedLocation: SharedLocation? = nil,
- channelRole: MemberRole? = nil
+ channelRole: MemberRole? = nil,
+ deletedForMe: Bool = false
) -> Self {
.init(
id: id,
@@ -74,6 +75,7 @@ public extension ChatMessage {
isBounced: isBounced,
isSilent: isSilent,
isShadowed: isShadowed,
+ deletedForMe: deletedForMe,
reactionScores: reactionScores,
reactionCounts: reactionCounts,
reactionGroups: reactionGroups,
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/MessageReminder_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/MessageReminder_Mock.swift
index e2ec5bfe7cc..da9789be567 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/MessageReminder_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/MessageReminder_Mock.swift
@@ -23,4 +23,4 @@ public extension MessageReminder {
updatedAt: updatedAt
)
}
-}
+}
diff --git a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Poll_Mock.swift b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Poll_Mock.swift
index 5f3a2efc85b..d6ddc85df8e 100644
--- a/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Poll_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/Models + Extensions/Poll_Mock.swift
@@ -17,8 +17,8 @@ extension Poll {
name: String = .unique,
updatedAt: Date? = nil,
voteCount: Int = 0,
- extraData: [String : RawJSON] = [:],
- voteCountsByOption: [String : Int]? = nil,
+ extraData: [String: RawJSON] = [:],
+ voteCountsByOption: [String: Int]? = nil,
isClosed: Bool = false,
maxVotesAllowed: Int? = nil,
votingVisibility: VotingVisibility? = nil,
@@ -48,12 +48,13 @@ extension Poll {
createdBy: createdBy,
latestAnswers: latestAnswers,
options: options,
- latestVotesByOption: latestVotesByOption,
+ latestVotesByOption: latestVotesByOption,
latestVotes: latestVotes,
ownVotes: ownVotes
)
}
}
+
extension PollVote {
static func mock(
id: String = .unique,
diff --git a/TestTools/StreamChatTestTools/Mocks/StreamChat/ConnectionRepository_Mock.swift b/TestTools/StreamChatTestTools/Mocks/StreamChat/ConnectionRepository_Mock.swift
index 3c885d7a93c..1cc1ea9271e 100644
--- a/TestTools/StreamChatTestTools/Mocks/StreamChat/ConnectionRepository_Mock.swift
+++ b/TestTools/StreamChatTestTools/Mocks/StreamChat/ConnectionRepository_Mock.swift
@@ -2,8 +2,8 @@
// Copyright © 2025 Stream.io Inc. All rights reserved.
//
-@testable import StreamChat
import Foundation
+@testable import StreamChat
/// Mock implementation of `ChatClientUpdater`
final class ConnectionRepository_Mock: ConnectionRepository, Spy {
@@ -34,19 +34,23 @@ final class ConnectionRepository_Mock: ConnectionRepository, Spy {
var provideConnectionIdResult: Result