diff --git a/.github/actions/setup-ios-runtime/action.yml b/.github/actions/setup-ios-runtime/action.yml index 89164b238ac..d54e78feba0 100644 --- a/.github/actions/setup-ios-runtime/action.yml +++ b/.github/actions/setup-ios-runtime/action.yml @@ -7,7 +7,6 @@ runs: shell: bash run: | sudo rm -rfv ~/Library/Developer/CoreSimulator/* || true - brew install blacktop/tap/ipsw bundle exec fastlane install_runtime ios:${{ inputs.version }} sudo rm -rfv *.dmg || true xcrun simctl list runtimes diff --git a/.github/workflows/cron-checks.yml b/.github/workflows/cron-checks.yml index b89bdcdadd8..dcbca11e85f 100644 --- a/.github/workflows/cron-checks.yml +++ b/.github/workflows/cron-checks.yml @@ -79,6 +79,7 @@ jobs: env: INSTALL_ALLURE: true INSTALL_YEETD: true + INSTALL_IPSW: true SKIP_MINT_BOOTSTRAP: true - uses: ./.github/actions/setup-ios-runtime if: ${{ matrix.setup_runtime }} @@ -146,6 +147,7 @@ jobs: - uses: ./.github/actions/bootstrap env: INSTALL_YEETD: true + INSTALL_IPSW: true - uses: ./.github/actions/setup-ios-runtime if: ${{ matrix.setup_runtime }} timeout-minutes: 60 diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e8d2cfd5ba..b61be019c4f 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.78.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.78.0) +_April 24, 2025_ + +## StreamChat +### ✅ Added +- Add `CurrentUserUnreads.totalUnreadMessagesCount` [#3651](https://github.com/GetStream/stream-chat-swift/pull/3651) +### 🐞 Fixed +- Fix `FilterKey.id` not returning any channels in `ChannelListQuery` [#3643](https://github.com/GetStream/stream-chat-swift/pull/3643) +- Fix incorrect channel list sorting when sorted by `.hasUnread` [#3646](https://github.com/GetStream/stream-chat-swift/pull/3646) +- Fix `CurrentUserUnreads.totalUnreadChannelsCount` with incorrect value [#3651](https://github.com/GetStream/stream-chat-swift/pull/3651) +- Fix `unsetProperties` not having any effect in `CurrentUserController.updateUserData()` [#3650](https://github.com/GetStream/stream-chat-swift/pull/3650) +### 🔄 Changed +- Change the `teamsRole` parameter from `[String: String]` to `[TeamId: UserRole]` [#3650](https://github.com/GetStream/stream-chat-swift/pull/3650) + +## StreamChatUI +### 🐞 Fixed +- Fix message search with empty avatars [#3644](https://github.com/GetStream/stream-chat-swift/pull/3644) + # [4.77.0](https://github.com/GetStream/stream-chat-swift/releases/tag/4.77.0) _April 09, 2025_ diff --git a/DemoApp/StreamChat/Components/DemoChatChannelListRouter.swift b/DemoApp/StreamChat/Components/DemoChatChannelListRouter.swift index b3d55d801c4..766207b8674 100644 --- a/DemoApp/StreamChat/Components/DemoChatChannelListRouter.swift +++ b/DemoApp/StreamChat/Components/DemoChatChannelListRouter.swift @@ -651,23 +651,18 @@ final class DemoChatChannelListRouter: ChatChannelListRouter { } }), .init(title: "Reset User Image", handler: { [unowned self] _ in - do { - let connectedUser = try self.rootViewController.controller.client.makeConnectedUser() - Task { - do { - try await connectedUser.update(unset: ["image"]) - } catch { + channelController.client.currentUserController() + .updateUserData(unsetProperties: ["image"]) { [unowned self] error in + if let error { self.rootViewController.presentAlert(title: error.localizedDescription) } } - } catch { - self.rootViewController.presentAlert(title: error.localizedDescription) - } }), .init(title: "Add a team role for the current user", isEnabled: true, handler: { [unowned self] _ in self.rootViewController.presentAlert(title: "Enter the team role", textFieldPlaceholder: "Enter role") { role in if let role, !role.isEmpty { - client.currentUserController().updateUserData(teamsRole: ["ios": role]) { error in + let userRole = UserRole(rawValue: role) + client.currentUserController().updateUserData(teamsRole: ["ios": userRole]) { error in if let error { log.error("Couldn't add role to custom team for the current user: \(error)") } diff --git a/DemoApp/StreamChat/Components/DemoChatChannelListVC.swift b/DemoApp/StreamChat/Components/DemoChatChannelListVC.swift index dafb276da84..06c870f64f6 100644 --- a/DemoApp/StreamChat/Components/DemoChatChannelListVC.swift +++ b/DemoApp/StreamChat/Components/DemoChatChannelListVC.swift @@ -41,10 +41,23 @@ final class DemoChatChannelListVC: ChatChannelListVC { .equal(.hidden, to: true) ])) - lazy var unreadChannelsQuery: ChannelListQuery = .init(filter: .and([ - .containMembers(userIds: [currentUserId]), - .hasUnread - ]), sort: [.init(key: .unreadCount, isAscending: false)]) + lazy var unreadCountChannelsQuery: ChannelListQuery = .init( + filter: .and([ + .containMembers(userIds: [currentUserId]), + .hasUnread + ]), + sort: [.init(key: .unreadCount, isAscending: false)] + ) + + lazy var sortedByHasUnreadChannelsQuery: ChannelListQuery = .init( + filter: .and([ + .containMembers(userIds: [currentUserId]) + ]), + sort: [ + .init(key: .hasUnread, isAscending: false), + .init(key: .updatedAt, isAscending: false) + ] + ) lazy var mutedChannelsQuery: ChannelListQuery = .init(filter: .and([ .containMembers(userIds: [currentUserId]), @@ -132,12 +145,21 @@ final class DemoChatChannelListVC: ChatChannelListVC { } ) - let unreadChannelsAction = UIAlertAction( - title: "Unread Channels", + let unreadCountChannelsAction = UIAlertAction( + title: "Unread Count Channels", + style: .default, + handler: { [weak self] _ in + self?.title = "Unread Count Channels" + self?.setUnreadCountChannelsQuery() + } + ) + + let hasUnreadChannelsAction = UIAlertAction( + title: "Sorted hasUnread Channels", style: .default, handler: { [weak self] _ in - self?.title = "Unread Channels" - self?.setUnreadChannelsQuery() + self?.title = "Sorted hasUnread Channels" + self?.setSortedByHasUnreadChannelsQuery() } ) @@ -187,7 +209,8 @@ final class DemoChatChannelListVC: ChatChannelListVC { title: "Filter Channels", actions: [ defaultChannelsAction, - unreadChannelsAction, + unreadCountChannelsAction, + hasUnreadChannelsAction, hiddenChannelsAction, mutedChannelsAction, coolChannelsAction, @@ -204,8 +227,12 @@ final class DemoChatChannelListVC: ChatChannelListVC { replaceQuery(hiddenChannelsQuery) } - func setUnreadChannelsQuery() { - replaceQuery(unreadChannelsQuery) + func setUnreadCountChannelsQuery() { + replaceQuery(unreadCountChannelsQuery) + } + + func setSortedByHasUnreadChannelsQuery() { + replaceQuery(sortedByHasUnreadChannelsQuery) } func setMutedChannelsQuery() { diff --git a/Gemfile.lock b/Gemfile.lock index 5ef15e979cd..a86d8f86437 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -295,7 +295,7 @@ GEM netrc (0.11.0) nio4r (2.7.3) nkf (0.2.0) - nokogiri (1.18.4) + nokogiri (1.18.8) mini_portile2 (~> 2.8.2) racc (~> 1.4) octokit (9.1.0) diff --git a/Githubfile b/Githubfile index 6af32281d0b..a6ac5737af8 100644 --- a/Githubfile +++ b/Githubfile @@ -6,3 +6,4 @@ export YEETD_VERSION='1.0' export GCLOUD_VERSION='464.0.0' export MINT_VERSION='0.17.5' export SONAR_VERSION='6.2.1.4610' +export IPSW_VERSION='3.1.592' diff --git a/Scripts/bootstrap.sh b/Scripts/bootstrap.sh index 9498c54f14d..04a26b1ff45 100755 --- a/Scripts/bootstrap.sh +++ b/Scripts/bootstrap.sh @@ -87,4 +87,13 @@ if [[ ${INSTALL_GCLOUD-default} == true ]]; then gcloud auth activate-service-account --key-file="./fastlane/gcloud-service-account-key.json" gcloud config set project stream-chat-swift gcloud services enable toolresults.googleapis.com -fi \ No newline at end of file +fi + +if [[ ${INSTALL_IPSW-default} == true ]]; then + puts "Install ipsw v${IPSW_VERSION}" + FILE="ipsw_${IPSW_VERSION}_macOS_universal.tar.gz" + wget "https://github.com/blacktop/ipsw/releases/download/v${IPSW_VERSION}/${FILE}" + tar -xzf "$FILE" + chmod +x ipsw + sudo mv ipsw /usr/local/bin/ +fi diff --git a/Sources/StreamChat/APIClient/Endpoints/Payloads/UserPayloads.swift b/Sources/StreamChat/APIClient/Endpoints/Payloads/UserPayloads.swift index 8b00a6fdf5f..8210005270c 100644 --- a/Sources/StreamChat/APIClient/Endpoints/Payloads/UserPayloads.swift +++ b/Sources/StreamChat/APIClient/Endpoints/Payloads/UserPayloads.swift @@ -173,14 +173,14 @@ struct UserUpdateRequestBody: Encodable { let privacySettings: UserPrivacySettingsPayload? let role: UserRole? let extraData: [String: RawJSON]? - let teamsRole: [String: String]? + let teamsRole: [TeamId: UserRole]? init( name: String?, imageURL: URL?, privacySettings: UserPrivacySettingsPayload?, role: UserRole?, - teamsRole: [String: String]?, + teamsRole: [TeamId: UserRole]?, extraData: [String: RawJSON]? ) { self.name = name diff --git a/Sources/StreamChat/Controllers/CurrentUserController/CurrentUserController.swift b/Sources/StreamChat/Controllers/CurrentUserController/CurrentUserController.swift index e1e3c56d649..83ec7c2b45c 100644 --- a/Sources/StreamChat/Controllers/CurrentUserController/CurrentUserController.swift +++ b/Sources/StreamChat/Controllers/CurrentUserController/CurrentUserController.swift @@ -185,7 +185,7 @@ public extension CurrentChatUserController { /// /// By default all data is `nil`, and it won't be updated unless a value is provided. /// - /// - Note: This operation does a partial user update which keeps existing data if not modified. Use ``unset`` for clearing the existing state. + /// - Note: This operation does a partial user update which keeps existing data if not modified. Use ``unsetProperties`` for clearing the existing state. /// /// - Parameters: /// - name: Optionally provide a new name to be updated. @@ -194,14 +194,14 @@ public extension CurrentChatUserController { /// - role: The role for the user. /// - teamsRole: The role for the user in a specific team. Example: `["teamId": "role"]`. /// - userExtraData: Optionally provide new user extra data to be updated. - /// - unset: Existing values for specified properties are removed. For example, `image` or `name`. + /// - unsetProperties: Remove existing properties from the user. For example, `image` or `name`. /// - completion: Called when user is successfuly updated, or with error. func updateUserData( name: String? = nil, imageURL: URL? = nil, privacySettings: UserPrivacySettings? = nil, role: UserRole? = nil, - teamsRole: [String: String]? = nil, + teamsRole: [TeamId: UserRole]? = nil, userExtraData: [String: RawJSON] = [:], unsetProperties: Set = [], completion: ((Error?) -> Void)? = nil @@ -218,7 +218,8 @@ public extension CurrentChatUserController { privacySettings: privacySettings, role: role, teamsRole: teamsRole, - userExtraData: userExtraData + userExtraData: userExtraData, + unset: unsetProperties ) { error in self.callback { completion?(error) @@ -232,7 +233,7 @@ public extension CurrentChatUserController { /// /// - Parameters: /// - extraData: The additional data to be added to the member object. - /// - unsetProperties: The custom properties to be removed from the member object. + /// - unsetProperties: The properties to be removed from the member object. /// - channelId: The channel where the member data is updated. /// - completion: Returns the updated member object or an error if the update fails. func updateMemberData( diff --git a/Sources/StreamChat/Database/DTOs/ChannelDTO.swift b/Sources/StreamChat/Database/DTOs/ChannelDTO.swift index bc8ddb3d3e6..521b7a88d7f 100644 --- a/Sources/StreamChat/Database/DTOs/ChannelDTO.swift +++ b/Sources/StreamChat/Database/DTOs/ChannelDTO.swift @@ -7,6 +7,9 @@ import Foundation @objc(ChannelDTO) class ChannelDTO: NSManagedObject { + // The cid without the channel type. + @NSManaged var id: String? + // The channel id which includes channelType:channelId. @NSManaged var cid: String @NSManaged var name: String? @NSManaged var imageURL: URL? @@ -62,7 +65,11 @@ class ChannelDTO: NSManagedObject { @NSManaged var messages: Set @NSManaged var pinnedMessages: Set @NSManaged var reads: Set + + /// Helper properties used for sorting channels with unread counts of the current user. @NSManaged var currentUserUnreadMessagesCount: Int32 + @NSManaged var hasUnreadSorting: Int16 + @NSManaged var watchers: Set @NSManaged var memberListQueries: Set @NSManaged var previewMessage: MessageDTO? @@ -79,12 +86,13 @@ class ChannelDTO: NSManagedObject { } // Update the unreadMessagesCount for the current user. - // At the moment this computed property is used for `hasUnread` automatic channel list filtering. + // At the moment this computed property is used for `hasUnread` and `unreadCount` automatic channel list filtering. if let currentUserId = managedObjectContext?.currentUser?.user.id { let currentUserUnread = reads.first(where: { $0.user.id == currentUserId }) let newUnreadCount = currentUserUnread?.unreadMessageCount ?? 0 if newUnreadCount != currentUserUnreadMessagesCount { currentUserUnreadMessagesCount = newUnreadCount + hasUnreadSorting = newUnreadCount > 0 ? 1 : 0 } } @@ -105,7 +113,7 @@ class ChannelDTO: NSManagedObject { newestMessageAt = nil } } - + // Update the date for sorting every time new message in this channel arrive. // This will ensure that the channel list is updated/sorted when new message arrives. // Note: If a channel is truncated, the server will update the lastMessageAt to a minimum value, and not remove it. @@ -240,6 +248,7 @@ extension NSManagedObjectContext { dto.extraData = Data() } dto.typeRawValue = payload.typeRawValue + dto.id = payload.cid.id dto.config = payload.config.asDTO(context: self, cid: dto.cid) if let ownCapabilities = payload.ownCapabilities { dto.ownCapabilities = ownCapabilities diff --git a/Sources/StreamChat/Database/StreamChatModel.xcdatamodeld/StreamChatModel.xcdatamodel/contents b/Sources/StreamChat/Database/StreamChatModel.xcdatamodeld/StreamChatModel.xcdatamodel/contents index e6e1223d226..97ecb5c8c87 100644 --- a/Sources/StreamChat/Database/StreamChatModel.xcdatamodeld/StreamChatModel.xcdatamodel/contents +++ b/Sources/StreamChat/Database/StreamChatModel.xcdatamodeld/StreamChatModel.xcdatamodel/contents @@ -1,5 +1,5 @@ - + @@ -44,6 +44,8 @@ + + diff --git a/Sources/StreamChat/Generated/SystemEnvironment+Version.swift b/Sources/StreamChat/Generated/SystemEnvironment+Version.swift index a074bf76e3f..f496c1b5195 100644 --- a/Sources/StreamChat/Generated/SystemEnvironment+Version.swift +++ b/Sources/StreamChat/Generated/SystemEnvironment+Version.swift @@ -7,5 +7,5 @@ import Foundation extension SystemEnvironment { /// A Stream Chat version. - public static let version: String = "4.77.0" + public static let version: String = "4.78.0" } diff --git a/Sources/StreamChat/Info.plist b/Sources/StreamChat/Info.plist index 210d3fee7a9..33afba89404 100644 --- a/Sources/StreamChat/Info.plist +++ b/Sources/StreamChat/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.77.0 + 4.78.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) diff --git a/Sources/StreamChat/Models/CurrentUser.swift b/Sources/StreamChat/Models/CurrentUser.swift index 6e2e5e72404..5c1dde2daa3 100644 --- a/Sources/StreamChat/Models/CurrentUser.swift +++ b/Sources/StreamChat/Models/CurrentUser.swift @@ -120,6 +120,8 @@ public class CurrentChatUser: ChatUser { /// The total unread information from the current user. public struct CurrentUserUnreads { + /// The total number of unread messages. + public let totalUnreadMessagesCount: Int /// The total number of unread channels. public let totalUnreadChannelsCount: Int /// The total number of unread threads. @@ -166,14 +168,16 @@ public struct UnreadThread { extension CurrentUserUnreadsPayload { func asModel() -> CurrentUserUnreads { - CurrentUserUnreads( - totalUnreadChannelsCount: totalUnreadCount, + let unreadChannels: [UnreadChannel] = channels.map { .init( + channelId: $0.channelId, + unreadMessagesCount: $0.unreadCount, + lastRead: $0.lastRead + ) } + return CurrentUserUnreads( + totalUnreadMessagesCount: totalUnreadCount, + totalUnreadChannelsCount: unreadChannels.count, totalUnreadThreadsCount: totalUnreadThreadsCount, - unreadChannels: channels.map { .init( - channelId: $0.channelId, - unreadMessagesCount: $0.unreadCount, - lastRead: $0.lastRead - ) }, + unreadChannels: unreadChannels, unreadThreads: threads.map { .init( parentMessageId: $0.parentMessageId, unreadRepliesCount: $0.unreadCount, diff --git a/Sources/StreamChat/Query/ChannelListQuery.swift b/Sources/StreamChat/Query/ChannelListQuery.swift index 604594b2462..ff4f35cf76b 100644 --- a/Sources/StreamChat/Query/ChannelListQuery.swift +++ b/Sources/StreamChat/Query/ChannelListQuery.swift @@ -63,7 +63,10 @@ public extension FilterKey where Scope: AnyChannelListFilterScope { /// Supported operators: `in`, `equal` /// - Warning: Querying by the channel Identifier should be done using the `cid` field as much as possible to optimize API performance. /// As the full channel ID, `cid`s are indexed everywhere in Stream database where `id` is not. - static var id: FilterKey { .init(rawValue: "id", keyPathString: #keyPath(ChannelDTO.cid)) } + static var id: FilterKey { .init( + rawValue: "id", + keyPathString: #keyPath(ChannelDTO.id) + ) } /// A filter key for matching the `name` value. static var name: FilterKey { .init(rawValue: "name", keyPathString: #keyPath(ChannelDTO.name)) } diff --git a/Sources/StreamChat/Query/Sorting/ChannelListSortingKey.swift b/Sources/StreamChat/Query/Sorting/ChannelListSortingKey.swift index d15270a2732..5b47b11f066 100644 --- a/Sources/StreamChat/Query/Sorting/ChannelListSortingKey.swift +++ b/Sources/StreamChat/Query/Sorting/ChannelListSortingKey.swift @@ -63,7 +63,7 @@ public struct ChannelListSortingKey: SortingKey, Equatable { /// **Note:** If you want to sort by number of unreads, you should use the `unreadCount` sorting key. public static let hasUnread = Self( keyPath: \.hasUnread, - localKey: nil, + localKey: #keyPath(ChannelDTO.hasUnreadSorting), remoteKey: "has_unread" ) diff --git a/Sources/StreamChat/StateLayer/ConnectedUser.swift b/Sources/StreamChat/StateLayer/ConnectedUser.swift index 94f010df5b6..8989c7c2611 100644 --- a/Sources/StreamChat/StateLayer/ConnectedUser.swift +++ b/Sources/StreamChat/StateLayer/ConnectedUser.swift @@ -55,7 +55,7 @@ public final class ConnectedUser { imageURL: URL? = nil, privacySettings: UserPrivacySettings? = nil, role: UserRole? = nil, - teamRoles: [String: String]? = nil, + teamRoles: [TeamId: UserRole]? = nil, extraData: [String: RawJSON] = [:], unset: Set = [] ) async throws { diff --git a/Sources/StreamChat/Workers/CurrentUserUpdater.swift b/Sources/StreamChat/Workers/CurrentUserUpdater.swift index c93d6a87027..bb47067f1af 100644 --- a/Sources/StreamChat/Workers/CurrentUserUpdater.swift +++ b/Sources/StreamChat/Workers/CurrentUserUpdater.swift @@ -25,9 +25,9 @@ class CurrentUserUpdater: Worker { imageURL: URL?, privacySettings: UserPrivacySettings?, role: UserRole?, - teamsRole: [String: String]? = nil, + teamsRole: [TeamId: UserRole]?, userExtraData: [String: RawJSON]?, - unset: Set = [], + unset: Set, completion: ((Error?) -> Void)? = nil ) { let params: [Any?] = [name, imageURL, userExtraData] @@ -290,7 +290,7 @@ extension CurrentUserUpdater { imageURL: URL?, privacySettings: UserPrivacySettings?, role: UserRole?, - teamsRole: [String: String]?, + teamsRole: [TeamId: UserRole]?, userExtraData: [String: RawJSON]?, unset: Set ) async throws { diff --git a/Sources/StreamChatUI/ChatChannelList/ChatChannelListItemView.swift b/Sources/StreamChatUI/ChatChannelList/ChatChannelListItemView.swift index cde59ebc003..2aafe1c9bc9 100644 --- a/Sources/StreamChatUI/ChatChannelList/ChatChannelListItemView.swift +++ b/Sources/StreamChatUI/ChatChannelList/ChatChannelListItemView.swift @@ -291,21 +291,16 @@ open class ChatChannelListItemView: _View, ThemeProvider, SwiftUIRepresentable { topContainer, bottomContainer ]) - let avatarView: UIView - - if content?.searchedMessage != nil { - avatarView = userAvatarView - } else { - avatarView = self.avatarView - } - NSLayoutConstraint.activate([ avatarView.heightAnchor.pin(equalToConstant: 48), - avatarView.widthAnchor.pin(equalTo: avatarView.heightAnchor) + avatarView.widthAnchor.pin(equalTo: avatarView.heightAnchor), + userAvatarView.heightAnchor.pin(equalToConstant: 48), + userAvatarView.widthAnchor.pin(equalTo: userAvatarView.heightAnchor) ]) mainContainer.addArrangedSubviews([ avatarView, + userAvatarView, rightContainer ]) @@ -332,8 +327,12 @@ open class ChatChannelListItemView: _View, ThemeProvider, SwiftUIRepresentable { if let searchedMessage = content?.searchedMessage { userAvatarView.content = searchedMessage.author + userAvatarView.isHidden = false + avatarView.isHidden = true } else { avatarView.content = (content?.channel, content?.currentUserId) + avatarView.isHidden = false + userAvatarView.isHidden = true } unreadCountView.content = content?.channel.unreadCount ?? .noUnread diff --git a/Sources/StreamChatUI/Info.plist b/Sources/StreamChatUI/Info.plist index 210d3fee7a9..33afba89404 100644 --- a/Sources/StreamChatUI/Info.plist +++ b/Sources/StreamChatUI/Info.plist @@ -15,7 +15,7 @@ CFBundlePackageType $(PRODUCT_BUNDLE_PACKAGE_TYPE) CFBundleShortVersionString - 4.77.0 + 4.78.0 CFBundleVersion $(CURRENT_PROJECT_VERSION) diff --git a/StreamChat-XCFramework.podspec b/StreamChat-XCFramework.podspec index 881a68e132d..044c35d1bc8 100644 --- a/StreamChat-XCFramework.podspec +++ b/StreamChat-XCFramework.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "StreamChat-XCFramework" - spec.version = "4.77.0" + spec.version = "4.78.0" spec.summary = "StreamChat iOS Client" spec.description = "stream-chat-swift is the official Swift client for Stream Chat, a service for building chat applications." diff --git a/StreamChat.podspec b/StreamChat.podspec index c3b497cb083..8e193633a9f 100644 --- a/StreamChat.podspec +++ b/StreamChat.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "StreamChat" - spec.version = "4.77.0" + spec.version = "4.78.0" spec.summary = "StreamChat iOS Chat Client" spec.description = "stream-chat-swift is the official Swift client for Stream Chat, a service for building chat applications." diff --git a/StreamChatArtifacts.json b/StreamChatArtifacts.json index ab057e6200b..31e33e8d6e1 100644 --- a/StreamChatArtifacts.json +++ b/StreamChatArtifacts.json @@ -1 +1 @@ -{"4.7.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.7.0/StreamChat-All.zip","4.8.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.8.0/StreamChat-All.zip","4.9.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.9.0/StreamChat-All.zip","4.10.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.10.0/StreamChat-All.zip","4.10.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.10.1/StreamChat-All.zip","4.11.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.11.0/StreamChat-All.zip","4.12.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.12.0/StreamChat-All.zip","4.13.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.13.0/StreamChat-All.zip","4.13.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.13.1/StreamChat-All.zip","4.14.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.14.0/StreamChat-All.zip","4.15.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.15.0/StreamChat-All.zip","4.15.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.15.1/StreamChat-All.zip","4.16.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.16.0/StreamChat-All.zip","4.17.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.17.0/StreamChat-All.zip","4.18.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.18.0/StreamChat-All.zip","4.19.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.19.0/StreamChat-All.zip","4.20.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.20.0/StreamChat-All.zip","4.21.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.0/StreamChat-All.zip","4.21.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.1/StreamChat-All.zip","4.21.2":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.2/StreamChat-All.zip","4.22.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.22.0/StreamChat-All.zip","4.23.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.23.0/StreamChat-All.zip","4.24.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.24.0/StreamChat-All.zip","4.24.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.24.1/StreamChat-All.zip","4.25.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.25.0/StreamChat-All.zip","4.25.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.25.1/StreamChat-All.zip","4.26.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.26.0/StreamChat-All.zip","4.27.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.27.0/StreamChat-All.zip","4.27.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.27.1/StreamChat-All.zip","4.28.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.28.0/StreamChat-All.zip","4.29.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.29.0/StreamChat-All.zip","4.30.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.30.0/StreamChat-All.zip","4.31.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.31.0/StreamChat-All.zip","4.32.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.32.0/StreamChat-All.zip","4.33.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.33.0/StreamChat-All.zip","4.34.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.34.0/StreamChat-All.zip","4.35.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.0/StreamChat-All.zip","4.35.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.1/StreamChat-All.zip","4.35.2":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.2/StreamChat-All.zip","4.36.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.36.0/StreamChat-All.zip","4.37.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.37.0/StreamChat-All.zip","4.37.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.37.1/StreamChat-All.zip","4.38.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.38.0/StreamChat-All.zip","4.39.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.39.0/StreamChat-All.zip","4.40.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.40.0/StreamChat-All.zip","4.41.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.41.0/StreamChat-All.zip","4.42.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.42.0/StreamChat-All.zip","4.43.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.43.0/StreamChat-All.zip","4.44.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.44.0/StreamChat-All.zip","4.45.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.45.0/StreamChat-All.zip","4.46.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.46.0/StreamChat-All.zip","4.47.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.47.0/StreamChat-All.zip","4.47.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.47.1/StreamChat-All.zip","4.48.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.48.0/StreamChat-All.zip","4.48.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.48.1/StreamChat-All.zip","4.49.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.49.0/StreamChat-All.zip","4.50.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.50.0/StreamChat-All.zip","4.51.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.51.0/StreamChat-All.zip","4.52.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.52.0/StreamChat-All.zip","4.53.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.53.0/StreamChat-All.zip","4.54.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.54.0/StreamChat-All.zip","4.55.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.55.0/StreamChat-All.zip","4.56.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.56.0/StreamChat-All.zip","4.56.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.56.1/StreamChat-All.zip","4.57.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.57.0/StreamChat-All.zip","4.58.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.58.0/StreamChat-All.zip","4.59.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.59.0/StreamChat-All.zip","4.60.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.60.0/StreamChat-All.zip","4.61.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.61.0/StreamChat-All.zip","4.62.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.62.0/StreamChat-All.zip","4.63.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.63.0/StreamChat-All.zip","4.64.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.64.0/StreamChat-All.zip","4.65.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.65.0/StreamChat-All.zip","4.66.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.66.0/StreamChat-All.zip","4.67.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.67.0/StreamChat-All.zip","4.68.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.68.0/StreamChat-All.zip","4.69.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.69.0/StreamChat-All.zip","4.70.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.70.0/StreamChat-All.zip","4.71.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.71.0/StreamChat-All.zip","4.72.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.72.0/StreamChat-All.zip","4.73.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.73.0/StreamChat-All.zip","4.74.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.74.0/StreamChat-All.zip","4.75.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.75.0/StreamChat-All.zip","4.76.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.76.0/StreamChat-All.zip","4.77.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.77.0/StreamChat-All.zip"} \ No newline at end of file +{"4.7.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.7.0/StreamChat-All.zip","4.8.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.8.0/StreamChat-All.zip","4.9.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.9.0/StreamChat-All.zip","4.10.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.10.0/StreamChat-All.zip","4.10.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.10.1/StreamChat-All.zip","4.11.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.11.0/StreamChat-All.zip","4.12.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.12.0/StreamChat-All.zip","4.13.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.13.0/StreamChat-All.zip","4.13.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.13.1/StreamChat-All.zip","4.14.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.14.0/StreamChat-All.zip","4.15.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.15.0/StreamChat-All.zip","4.15.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.15.1/StreamChat-All.zip","4.16.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.16.0/StreamChat-All.zip","4.17.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.17.0/StreamChat-All.zip","4.18.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.18.0/StreamChat-All.zip","4.19.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.19.0/StreamChat-All.zip","4.20.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.20.0/StreamChat-All.zip","4.21.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.0/StreamChat-All.zip","4.21.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.1/StreamChat-All.zip","4.21.2":"https://github.com/GetStream/stream-chat-swift/releases/download/4.21.2/StreamChat-All.zip","4.22.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.22.0/StreamChat-All.zip","4.23.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.23.0/StreamChat-All.zip","4.24.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.24.0/StreamChat-All.zip","4.24.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.24.1/StreamChat-All.zip","4.25.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.25.0/StreamChat-All.zip","4.25.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.25.1/StreamChat-All.zip","4.26.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.26.0/StreamChat-All.zip","4.27.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.27.0/StreamChat-All.zip","4.27.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.27.1/StreamChat-All.zip","4.28.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.28.0/StreamChat-All.zip","4.29.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.29.0/StreamChat-All.zip","4.30.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.30.0/StreamChat-All.zip","4.31.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.31.0/StreamChat-All.zip","4.32.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.32.0/StreamChat-All.zip","4.33.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.33.0/StreamChat-All.zip","4.34.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.34.0/StreamChat-All.zip","4.35.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.0/StreamChat-All.zip","4.35.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.1/StreamChat-All.zip","4.35.2":"https://github.com/GetStream/stream-chat-swift/releases/download/4.35.2/StreamChat-All.zip","4.36.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.36.0/StreamChat-All.zip","4.37.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.37.0/StreamChat-All.zip","4.37.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.37.1/StreamChat-All.zip","4.38.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.38.0/StreamChat-All.zip","4.39.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.39.0/StreamChat-All.zip","4.40.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.40.0/StreamChat-All.zip","4.41.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.41.0/StreamChat-All.zip","4.42.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.42.0/StreamChat-All.zip","4.43.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.43.0/StreamChat-All.zip","4.44.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.44.0/StreamChat-All.zip","4.45.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.45.0/StreamChat-All.zip","4.46.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.46.0/StreamChat-All.zip","4.47.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.47.0/StreamChat-All.zip","4.47.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.47.1/StreamChat-All.zip","4.48.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.48.0/StreamChat-All.zip","4.48.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.48.1/StreamChat-All.zip","4.49.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.49.0/StreamChat-All.zip","4.50.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.50.0/StreamChat-All.zip","4.51.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.51.0/StreamChat-All.zip","4.52.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.52.0/StreamChat-All.zip","4.53.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.53.0/StreamChat-All.zip","4.54.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.54.0/StreamChat-All.zip","4.55.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.55.0/StreamChat-All.zip","4.56.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.56.0/StreamChat-All.zip","4.56.1":"https://github.com/GetStream/stream-chat-swift/releases/download/4.56.1/StreamChat-All.zip","4.57.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.57.0/StreamChat-All.zip","4.58.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.58.0/StreamChat-All.zip","4.59.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.59.0/StreamChat-All.zip","4.60.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.60.0/StreamChat-All.zip","4.61.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.61.0/StreamChat-All.zip","4.62.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.62.0/StreamChat-All.zip","4.63.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.63.0/StreamChat-All.zip","4.64.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.64.0/StreamChat-All.zip","4.65.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.65.0/StreamChat-All.zip","4.66.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.66.0/StreamChat-All.zip","4.67.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.67.0/StreamChat-All.zip","4.68.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.68.0/StreamChat-All.zip","4.69.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.69.0/StreamChat-All.zip","4.70.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.70.0/StreamChat-All.zip","4.71.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.71.0/StreamChat-All.zip","4.72.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.72.0/StreamChat-All.zip","4.73.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.73.0/StreamChat-All.zip","4.74.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.74.0/StreamChat-All.zip","4.75.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.75.0/StreamChat-All.zip","4.76.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.76.0/StreamChat-All.zip","4.77.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.77.0/StreamChat-All.zip","4.78.0":"https://github.com/GetStream/stream-chat-swift/releases/download/4.78.0/StreamChat-All.zip"} \ No newline at end of file diff --git a/StreamChatUI-XCFramework.podspec b/StreamChatUI-XCFramework.podspec index 03bca457df9..925d172201f 100644 --- a/StreamChatUI-XCFramework.podspec +++ b/StreamChatUI-XCFramework.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "StreamChatUI-XCFramework" - spec.version = "4.77.0" + spec.version = "4.78.0" spec.summary = "StreamChat UI Components" spec.description = "StreamChatUI SDK offers flexible UI components able to display data provided by StreamChat SDK." diff --git a/StreamChatUI.podspec b/StreamChatUI.podspec index 16151574d94..a05e030d19f 100644 --- a/StreamChatUI.podspec +++ b/StreamChatUI.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |spec| spec.name = "StreamChatUI" - spec.version = "4.77.0" + spec.version = "4.78.0" spec.summary = "StreamChat UI Components" spec.description = "StreamChatUI SDK offers flexible UI components able to display data provided by StreamChat SDK." diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_add_member.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_add_member.json index 303833a57bf..b2663d62c9c 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_add_member.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_add_member.json @@ -1,25 +1,25 @@ { "channel": { - "id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "type": "messaging", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "last_message_at": "2025-03-15T00:15:56.802706Z", - "created_at": "2025-03-15T00:15:53.237136Z", - "updated_at": "2025-03-15T00:15:53.237137Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "last_message_at": "2025-04-15T00:16:26.330954Z", + "created_at": "2025-04-15T00:16:22.748759Z", + "updated_at": "2025-04-15T00:16:22.748759Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -134,15 +134,15 @@ "updated_at": "2025-03-03T10:00:37.133281Z", "banned": false, "online": false, - "last_active": "2025-03-13T18:04:51.960419Z", + "last_active": "2025-04-13T17:46:17.972722Z", "blocked_user_ids": [ ], "birthland": "Serenno" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -155,24 +155,24 @@ "id": "han_solo", "name": "Han Solo", "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "", + "language": "zh", "role": "user", "teams": [ ], "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-02-27T16:17:46.871132Z", + "updated_at": "2025-03-28T13:23:50.000852Z", "banned": false, "online": false, - "last_active": "2025-03-14T17:10:33.441699Z", + "last_active": "2025-04-11T10:38:19.970146Z", "blocked_user_ids": [ ], "birthland": "Corellia" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -185,27 +185,27 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test" + "team": "test", + "type": "team" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -218,32 +218,32 @@ "id": "leia_organa", "name": "Leia Organa", "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", - "language": "ru", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-02-20T11:14:21.287666Z", + "updated_at": "2025-03-28T15:21:20.061525Z", "banned": false, "online": false, - "last_active": "2025-03-14T13:17:25.910928Z", + "last_active": "2025-04-14T14:52:53.853303Z", "blocked_user_ids": [ ], "private_settings": { - "readReceipts": { + "typingIndicators": { "enabled": false }, - "typingIndicators": { + "readReceipts": { "enabled": false } }, "birthland": "Polis Massa" }, "status": "member", - "created_at": "2025-03-15T00:15:57.890803Z", - "updated_at": "2025-03-15T00:15:57.890803Z", + "created_at": "2025-04-15T00:16:27.384218Z", + "updated_at": "2025-04-15T00:16:27.384218Z", "banned": false, "shadow_banned": false, "role": "admin", @@ -251,5 +251,5 @@ "notifications_muted": false } ], - "duration": "32.74ms" + "duration": "34.28ms" } \ 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 4974b12b815..b0c832ad590 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/ca1d0939-dcfa-47ae-aff1-99f87ddb4b84.yoda.jpg?Key-Pair-Id=APKAIHG36VEWPDULE23Q&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9mcmFua2Z1cnQuc3RyZWFtLWlvLWNkbi5jb20vMTAyMzk5L2ltYWdlcy9jYTFkMDkzOS1kY2ZhLTQ3YWUtYWZmMS05OWY4N2RkYjRiODQueW9kYS5qcGc~Km9oPTAqb3c9MCoiLCJDb25kaXRpb24iOnsiRGF0ZUxlc3NUaGFuIjp7IkFXUzpFcG9jaFRpbWUiOjE3NDMyMDczNTh9fX1dfQ__&Signature=K-hSpvlA9G2OfTEbJC9mqXsV1cofTi~zMlAqtGpaWaA44Ew~tKuL7GBY5s29fqLnBjFc8johfDexTNcKCdpg0bvAT197f66upZV0hzR1fGq1tlIm150olBUVKPLDX8FNKBB77S3dNfG6Pwcniv2wWYV85G5yFcP6Bka20B58laRarTtp32vSmq5BjEA7PIueiRR1dGFCykqJsl0-4M~NCLYhuGtqlb7Q5aT2GPrFT9hmf-vFYNNApfe90gZo3i1O6ZeLdF-PwfCqNUiHCvKehUtpjgVYwBqPJHoiPEOe1c018BLsC0JnKaCZQJofHIooLnwVz1skwCdu0NVytwVjSw__&oh=0&ow=0", - "duration": "137.68ms" + "file": "https://frankfurt.stream-io-cdn.com/102399/images/9d82ab18-443c-44a9-ba97-b095625d9db1.yoda.jpg?Key-Pair-Id=APKAIHG36VEWPDULE23Q&Policy=eyJTdGF0ZW1lbnQiOlt7IlJlc291cmNlIjoiaHR0cHM6Ly9mcmFua2Z1cnQuc3RyZWFtLWlvLWNkbi5jb20vMTAyMzk5L2ltYWdlcy85ZDgyYWIxOC00NDNjLTQ0YTktYmE5Ny1iMDk1NjI1ZDlkYjEueW9kYS5qcGcqIiwiQ29uZGl0aW9uIjp7IkRhdGVMZXNzVGhhbiI6eyJBV1M6RXBvY2hUaW1lIjoxNzQ1ODg1Nzg3fX19XX0_&Signature=Q~gQ6PAhumCwgsvjSYRMF9n97gZnim6XryMCh2seHYOX-1Qn8T6dWWR4ekS8vAOkn0ETcS0aQaTDcdzMxSqCmZz0uLY5XF6sZyNksV~-2JC9pQuLAdBvzBZdhxsNDen6~svYSiD7jYD~~2~LixalgRdsWWwphHygF7X4AZv7bGwktQQvIkwmDT~5tmIeV5LDqdZUSK7VeBtkNgPfwJrkRVBHIeB9tedOpdDfXJaSpCTM9olWj9qy6Ue0m6uauJEP72IlUr1xea3PQhTlcU9kA-m4NTFT4EsPJzvfThsjnqEuaIiZic4eMFU3t0KfCmNHhDx~UXaNYLHHkjAysbT0iw__", + "duration": "35.11ms" } \ 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 2685aa57a0d..47186407110 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_creation.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_creation.json @@ -1,24 +1,24 @@ { "channel": { - "id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "type": "messaging", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:15:53.237136Z", - "updated_at": "2025-03-15T00:15:53.237137Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:22.748759Z", + "updated_at": "2025-04-15T00:16:22.748759Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -140,13 +140,13 @@ "updated_at": "2025-03-03T10:00:37.133281Z", "banned": false, "online": false, - "last_active": "2025-03-13T18:04:51.960419Z", + "last_active": "2025-04-13T17:46:17.972722Z", "blocked_user_ids": [ ], "birthland": "Serenno" }, - "last_read": "2025-03-15T00:15:53.291941472Z", + "last_read": "2025-04-15T00:16:22.840877826Z", "unread_messages": 0 }, { @@ -154,22 +154,22 @@ "id": "han_solo", "name": "Han Solo", "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "", + "language": "zh", "role": "user", "teams": [ ], "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-02-27T16:17:46.871132Z", + "updated_at": "2025-03-28T13:23:50.000852Z", "banned": false, "online": false, - "last_active": "2025-03-14T17:10:33.441699Z", + "last_active": "2025-04-11T10:38:19.970146Z", "blocked_user_ids": [ ], "birthland": "Corellia" }, - "last_read": "2025-03-15T00:15:53.291941472Z", + "last_read": "2025-04-15T00:16:22.840877826Z", "unread_messages": 0 }, { @@ -177,25 +177,25 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], + "birthland": "Tatooine", "team": "test", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "pando": "{\"speciality\":\"ios engineer\"}" }, - "last_read": "2025-03-15T00:15:53.291941472Z", + "last_read": "2025-04-15T00:16:22.840877826Z", "unread_messages": 0 } ], @@ -215,15 +215,15 @@ "updated_at": "2025-03-03T10:00:37.133281Z", "banned": false, "online": false, - "last_active": "2025-03-13T18:04:51.960419Z", + "last_active": "2025-04-13T17:46:17.972722Z", "blocked_user_ids": [ ], "birthland": "Serenno" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -236,24 +236,24 @@ "id": "han_solo", "name": "Han Solo", "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "", + "language": "zh", "role": "user", "teams": [ ], "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-02-27T16:17:46.871132Z", + "updated_at": "2025-03-28T13:23:50.000852Z", "banned": false, "online": false, - "last_active": "2025-03-14T17:10:33.441699Z", + "last_active": "2025-04-11T10:38:19.970146Z", "blocked_user_ids": [ ], "birthland": "Corellia" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -266,27 +266,27 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], + "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test", - "type": "team" + "team": "test" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -299,27 +299,27 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", "team": "test", - "type": "team" + "type": "team", + "pando": "{\"speciality\":\"ios engineer\"}" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -329,5 +329,5 @@ "threads": [ ], - "duration": "112.48ms" + "duration": "158.23ms" } \ 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 05aada7eace..35a62a78c24 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_removal.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channel_removal.json @@ -1,12 +1,12 @@ { - "duration": "34.53ms", + "duration": "32.63ms", "channel": { - "id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "type": "messaging", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:15:53.237136Z", - "updated_at": "2025-03-15T00:16:02.845003Z", - "deleted_at": "2025-03-15T00:16:03.417951Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:22.748759Z", + "updated_at": "2025-04-15T00:16:38.373565Z", + "deleted_at": "2025-04-15T00:16:38.948897Z", "created_by": null, "frozen": false, "disabled": false, @@ -26,15 +26,15 @@ "updated_at": "2025-03-03T10:00:37.133281Z", "banned": false, "online": false, - "last_active": "2025-03-13T18:04:51.960419Z", + "last_active": "2025-04-13T17:46:17.972722Z", "blocked_user_ids": [ ], "birthland": "Serenno" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -47,24 +47,24 @@ "id": "han_solo", "name": "Han Solo", "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "", + "language": "zh", "role": "user", "teams": [ ], "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-02-27T16:17:46.871132Z", + "updated_at": "2025-03-28T13:23:50.000852Z", "banned": false, "online": false, - "last_active": "2025-03-14T17:10:33.441699Z", + "last_active": "2025-04-11T10:38:19.970146Z", "blocked_user_ids": [ ], "birthland": "Corellia" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -77,16 +77,16 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -96,8 +96,8 @@ "birthland": "Tatooine" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -110,20 +110,19 @@ "id": "leia_organa", "name": "Leia Organa", "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", - "language": "ru", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-02-20T11:14:21.287666Z", + "updated_at": "2025-03-28T15:21:20.061525Z", "banned": false, "online": false, - "last_active": "2025-03-14T13:17:25.910928Z", + "last_active": "2025-04-14T14:52:53.853303Z", "blocked_user_ids": [ ], - "birthland": "Polis Massa", "private_settings": { "readReceipts": { "enabled": false @@ -131,11 +130,12 @@ "typingIndicators": { "enabled": false } - } + }, + "birthland": "Polis Massa" }, "status": "member", - "created_at": "2025-03-15T00:15:57.890803Z", - "updated_at": "2025-03-15T00:15:57.890803Z", + "created_at": "2025-04-15T00:16:27.384218Z", + "updated_at": "2025-04-15T00:16:27.384218Z", "banned": false, "shadow_banned": false, "role": "admin", @@ -192,28 +192,28 @@ } ] }, - "truncated_at": "2025-03-15T00:16:03.417951Z", + "truncated_at": "2025-04-15T00:16:38.948897Z", "truncated_by": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test" + "team": "test", + "type": "team", + "pando": "{\"speciality\":\"ios engineer\"}" } } } \ 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 9783f8b52f9..6c5a2ab3f47 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channels.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_channels.json @@ -2,25 +2,25 @@ "channels": [ { "channel": { - "id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "type": "messaging", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:15:53.237136Z", - "updated_at": "2025-03-15T00:15:53.237137Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:22.748759Z", + "updated_at": "2025-04-15T00:16:22.748759Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -142,63 +142,63 @@ "updated_at": "2025-03-03T10:00:37.133281Z", "banned": false, "online": false, - "last_active": "2025-03-13T18:04:51.960419Z", + "last_active": "2025-04-13T17:46:17.972722Z", "blocked_user_ids": [ ], "birthland": "Serenno" }, "unread_messages": 0, - "last_read": "2025-03-15T00:15:53Z" + "last_read": "2025-04-15T00:16:23Z" }, { "user": { "id": "han_solo", "name": "Han Solo", "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "", + "language": "zh", "role": "user", "teams": [ ], "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-02-27T16:17:46.871132Z", + "updated_at": "2025-03-28T13:23:50.000852Z", "banned": false, "online": false, - "last_active": "2025-03-14T17:10:33.441699Z", + "last_active": "2025-04-11T10:38:19.970146Z", "blocked_user_ids": [ ], "birthland": "Corellia" }, "unread_messages": 0, - "last_read": "2025-03-15T00:15:53Z" + "last_read": "2025-04-15T00:16:23Z" }, { "user": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], + "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test", - "type": "team" + "team": "test" }, "unread_messages": 0, - "last_read": "2025-03-15T00:15:53Z" + "last_read": "2025-04-15T00:16:23Z" } ], "members": [ @@ -217,15 +217,15 @@ "updated_at": "2025-03-03T10:00:37.133281Z", "banned": false, "online": false, - "last_active": "2025-03-13T18:04:51.960419Z", + "last_active": "2025-04-13T17:46:17.972722Z", "blocked_user_ids": [ ], "birthland": "Serenno" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -238,24 +238,24 @@ "id": "han_solo", "name": "Han Solo", "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "", + "language": "zh", "role": "user", "teams": [ ], "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-02-27T16:17:46.871132Z", + "updated_at": "2025-03-28T13:23:50.000852Z", "banned": false, "online": false, - "last_active": "2025-03-14T17:10:33.441699Z", + "last_active": "2025-04-11T10:38:19.970146Z", "blocked_user_ids": [ ], "birthland": "Corellia" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -268,27 +268,27 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], + "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test", - "type": "team" + "team": "test" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -301,16 +301,16 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -320,8 +320,8 @@ "birthland": "Tatooine" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "channel_role": "channel_member", @@ -332,5 +332,5 @@ ] } ], - "duration": "63.13ms" + "duration": "142.93ms" } \ 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 97306c7539b..756f10686c1 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_events.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_events.json @@ -1,23 +1,23 @@ { "event": { "type": "typing.start", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "channel_id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "channel_id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "channel_type": "messaging", "user": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -26,7 +26,7 @@ "team": "test", "type": "team" }, - "created_at": "2025-03-15T00:15:54.695807648Z" + "created_at": "2025-04-15T00:16:24.291020033Z" }, - "duration": "6.26ms" + "duration": "5.87ms" } \ 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 f5ad2c34041..7c881bd2fee 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": "242685d1-c2d5-4681-9f8d-f0b8623a7c9d", + "id": "692c7882-27f1-4a17-9eec-d05a65bf66cb", "text": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi", "html": "

https://giphy.com/gifs/test-gw3IWyGkC0rsazTi

\n", "type": "regular", @@ -8,23 +8,23 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "team": "test", "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "birthland": "Tatooine", + "team": "test" }, "attachments": [ { @@ -32,9 +32,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.Y2lkPTc5MGI3NjExY2NwOHd5c2k2MzhkazVlMThpMnJ3cDdzN2VuN29wOWc1ZHVobW92YSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.webp", - "thumb_url": "https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExY2NwOHd5c2k2MzhkazVlMThpMnJ3cDdzN2VuN29wOWc1ZHVobW92YSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.webp", - "asset_url": "https://media1.giphy.com/media/v1.Y2lkPTc5MGI3NjExY2NwOHd5c2k2MzhkazVlMThpMnJ3cDdzN2VuN29wOWc1ZHVobW92YSZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.mp4", + "image_url": "https://media4.giphy.com/media/v1.Y2lkPTc5MGI3NjExNm9nNTVhb2R0ZG1zNWtqcmFrYng3eWNoeDRzcHd3c25qYjFlOGNnZyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.webp", + "thumb_url": "https://media4.giphy.com/media/v1.Y2lkPTc5MGI3NjExNm9nNTVhb2R0ZG1zNWtqcmFrYng3eWNoeDRzcHd3c25qYjFlOGNnZyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.webp", + "asset_url": "https://media4.giphy.com/media/v1.Y2lkPTc5MGI3NjExNm9nNTVhb2R0ZG1zNWtqcmFrYng3eWNoeDRzcHd3c25qYjFlOGNnZyZlcD12MV9pbnRlcm5hbF9naWZfYnlfaWQmY3Q9Zw/gw3IWyGkC0rsazTi/giphy.mp4", "og_scrape_url": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi" } ], @@ -50,18 +50,13 @@ }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:16:02.280998Z", - "updated_at": "2025-03-15T00:16:02.280998Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:37.861084Z", + "updated_at": "2025-04-15T00:16:37.861084Z", "shadowed": false, "mentioned_users": [ ], - "i18n": { - "id_text": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi", - "ru_text": "https://giphy.com/gifs/test-gw3IWyGkC0rsazTi", - "language": "id" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -71,5 +66,5 @@ ] }, - "duration": "571.41ms" + "duration": "365.79ms" } \ 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 0c78080a4b7..9aa54f4a366 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_message.json @@ -1,6 +1,6 @@ { "message": { - "id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "text": "Test", "html": "

Test

\n", "type": "regular", @@ -8,23 +8,23 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "birthland": "Tatooine", "team": "test", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "attachments": [ @@ -41,9 +41,9 @@ }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:15:56.802706Z", - "updated_at": "2025-03-15T00:15:56.802706Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:26.330954Z", + "updated_at": "2025-04-15T00:16:26.330954Z", "shadowed": false, "mentioned_users": [ @@ -57,5 +57,5 @@ ] }, - "duration": "1659.24ms" + "duration": "1625.16ms" } \ 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 a78ed740912..1902113235e 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": "b54caa37-debe-41dc-ad4e-f1b08ab550b7", + "id": "76a34f7e-389a-404b-a23f-8eb815369776", "text": "/giphy Test", "command": "giphy", "html": "

/giphy Test

\n", @@ -9,16 +9,16 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -31,8 +31,8 @@ { "type": "giphy", "title": "Test", - "title_link": "https://giphy.com/gifs/dog-hello-pun-yoJC2qNujv3gJWP504", - "thumb_url": "https://media0.giphy.com/media/yoJC2qNujv3gJWP504/giphy.gif?cid=c4b036756rudds4wzvwj2tiidfa6vuotyn8ovgwvgszezm68&ep=v1_gifs_search&rid=giphy.gif&ct=g", + "title_link": "https://giphy.com/gifs/justin-test-YRhJCaRX2fZW2ulZzq", + "thumb_url": "https://media4.giphy.com/media/v1.Y2lkPWM0YjAzNjc1ajRzdjQ5aGpxOGF3bnlmd2p5NzFzeDZuajExaGp0cG1wZzJ1YWYyZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/YRhJCaRX2fZW2ulZzq/giphy.gif", "actions": [ { "name": "image_action", @@ -58,52 +58,52 @@ ], "giphy": { "original": { - "url": "https://media0.giphy.com/media/yoJC2qNujv3gJWP504/giphy.gif?cid=c4b036756rudds4wzvwj2tiidfa6vuotyn8ovgwvgszezm68&ep=v1_gifs_search&rid=giphy.gif&ct=g", - "width": "533", - "height": "301", - "size": "1807240", - "frames": "24" + "url": "https://media4.giphy.com/media/v1.Y2lkPWM0YjAzNjc1ajRzdjQ5aGpxOGF3bnlmd2p5NzFzeDZuajExaGp0cG1wZzJ1YWYyZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/YRhJCaRX2fZW2ulZzq/giphy.gif", + "width": "480", + "height": "360", + "size": "2523659", + "frames": "75" }, "fixed_height": { - "url": "https://media0.giphy.com/media/yoJC2qNujv3gJWP504/200.gif?cid=c4b036756rudds4wzvwj2tiidfa6vuotyn8ovgwvgszezm68&ep=v1_gifs_search&rid=200.gif&ct=g", - "width": "354", + "url": "https://media4.giphy.com/media/v1.Y2lkPWM0YjAzNjc1ajRzdjQ5aGpxOGF3bnlmd2p5NzFzeDZuajExaGp0cG1wZzJ1YWYyZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/YRhJCaRX2fZW2ulZzq/200.gif", + "width": "267", "height": "200", - "size": "705342", + "size": "845116", "frames": "" }, "fixed_height_still": { - "url": "https://media0.giphy.com/media/yoJC2qNujv3gJWP504/200_s.gif?cid=c4b036756rudds4wzvwj2tiidfa6vuotyn8ovgwvgszezm68&ep=v1_gifs_search&rid=200_s.gif&ct=g", - "width": "354", + "url": "https://media4.giphy.com/media/v1.Y2lkPWM0YjAzNjc1ajRzdjQ5aGpxOGF3bnlmd2p5NzFzeDZuajExaGp0cG1wZzJ1YWYyZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/YRhJCaRX2fZW2ulZzq/200_s.gif", + "width": "267", "height": "200", - "size": "30051", + "size": "15823", "frames": "" }, "fixed_height_downsampled": { - "url": "https://media0.giphy.com/media/yoJC2qNujv3gJWP504/200_d.gif?cid=c4b036756rudds4wzvwj2tiidfa6vuotyn8ovgwvgszezm68&ep=v1_gifs_search&rid=200_d.gif&ct=g", - "width": "354", + "url": "https://media4.giphy.com/media/v1.Y2lkPWM0YjAzNjc1ajRzdjQ5aGpxOGF3bnlmd2p5NzFzeDZuajExaGp0cG1wZzJ1YWYyZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/YRhJCaRX2fZW2ulZzq/200_d.gif", + "width": "267", "height": "200", - "size": "196979", + "size": "93753", "frames": "" }, "fixed_width": { - "url": "https://media0.giphy.com/media/yoJC2qNujv3gJWP504/200w.gif?cid=c4b036756rudds4wzvwj2tiidfa6vuotyn8ovgwvgszezm68&ep=v1_gifs_search&rid=200w.gif&ct=g", + "url": "https://media4.giphy.com/media/v1.Y2lkPWM0YjAzNjc1ajRzdjQ5aGpxOGF3bnlmd2p5NzFzeDZuajExaGp0cG1wZzJ1YWYyZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/YRhJCaRX2fZW2ulZzq/200w.gif", "width": "200", - "height": "113", - "size": "325561", + "height": "150", + "size": "451519", "frames": "" }, "fixed_width_still": { - "url": "https://media0.giphy.com/media/yoJC2qNujv3gJWP504/200w_s.gif?cid=c4b036756rudds4wzvwj2tiidfa6vuotyn8ovgwvgszezm68&ep=v1_gifs_search&rid=200w_s.gif&ct=g", + "url": "https://media4.giphy.com/media/v1.Y2lkPWM0YjAzNjc1ajRzdjQ5aGpxOGF3bnlmd2p5NzFzeDZuajExaGp0cG1wZzJ1YWYyZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/YRhJCaRX2fZW2ulZzq/200w_s.gif", "width": "200", - "height": "113", - "size": "14942", + "height": "150", + "size": "13751", "frames": "" }, "fixed_width_downsampled": { - "url": "https://media0.giphy.com/media/yoJC2qNujv3gJWP504/200w_d.gif?cid=c4b036756rudds4wzvwj2tiidfa6vuotyn8ovgwvgszezm68&ep=v1_gifs_search&rid=200w_d.gif&ct=g", + "url": "https://media4.giphy.com/media/v1.Y2lkPWM0YjAzNjc1ajRzdjQ5aGpxOGF3bnlmd2p5NzFzeDZuajExaGp0cG1wZzJ1YWYyZSZlcD12MV9naWZzX3NlYXJjaCZjdD1n/YRhJCaRX2fZW2ulZzq/200w_d.gif", "width": "200", - "height": "113", - "size": "83097", + "height": "150", + "size": "56164", "frames": "" } } @@ -121,18 +121,13 @@ }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:15:59.336014Z", - "updated_at": "2025-03-15T00:15:59.336014Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:28.574903Z", + "updated_at": "2025-04-15T00:16:28.574903Z", "shadowed": false, "mentioned_users": [ ], - "i18n": { - "id_text": "/giphy Test", - "ru_text": "/giphy Testo", - "language": "id" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -141,10 +136,10 @@ "restricted_visibility": [ ], - "args": "Test", "command_info": { "name": "Giphy" - } + }, + "args": "Test" }, - "duration": "319.56ms" + "duration": "195.18ms" } \ 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 1606e9eaefc..bc5fe69eea6 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_reaction.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_reaction.json @@ -1,6 +1,6 @@ { "message": { - "id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "text": "Test", "html": "

Test

\n", "type": "regular", @@ -8,45 +8,45 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "team": "test", - "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "birthland": "Tatooine", + "team": "test", + "type": "team" }, "attachments": [ ], "latest_reactions": [ { - "message_id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "message_id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -57,40 +57,40 @@ }, "type": "like", "score": 1, - "created_at": "2025-03-15T00:15:57.332808Z", - "updated_at": "2025-03-15T00:15:57.332808Z" + "created_at": "2025-04-15T00:16:26.873704Z", + "updated_at": "2025-04-15T00:16:26.873704Z" } ], "own_reactions": [ { - "message_id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "message_id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], + "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test", - "type": "team" + "team": "test" }, "type": "like", "score": 1, - "created_at": "2025-03-15T00:15:57.332808Z", - "updated_at": "2025-03-15T00:15:57.332808Z" + "created_at": "2025-04-15T00:16:26.873704Z", + "updated_at": "2025-04-15T00:16:26.873704Z" } ], "reaction_counts": { @@ -103,15 +103,15 @@ "like": { "count": 1, "sum_scores": 1, - "first_reaction_at": "2025-03-15T00:15:57.332808Z", - "last_reaction_at": "2025-03-15T00:15:57.332808Z" + "first_reaction_at": "2025-04-15T00:16:26.873704Z", + "last_reaction_at": "2025-04-15T00:16:26.873704Z" } }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:15:56.802706Z", - "updated_at": "2025-03-15T00:15:57.343296Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:26.330954Z", + "updated_at": "2025-04-15T00:16:26.883226Z", "shadowed": false, "mentioned_users": [ @@ -126,34 +126,34 @@ ] }, "reaction": { - "message_id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "message_id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine", "team": "test", - "type": "team" + "type": "team", + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "type": "like", "score": 1, - "created_at": "2025-03-15T00:15:57.332808Z", - "updated_at": "2025-03-15T00:15:57.332808Z" + "created_at": "2025-04-15T00:16:26.873704Z", + "updated_at": "2025-04-15T00:16:26.873704Z" }, - "duration": "31.72ms" + "duration": "29.17ms" } \ 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 c044ac0a2f8..8ec1db02759 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_truncate.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_truncate.json @@ -1,26 +1,26 @@ { - "duration": "87.38ms", + "duration": "78.13ms", "channel": { - "id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "type": "messaging", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", "last_message_at": "0001-01-01T00:00:00Z", - "created_at": "2025-03-15T00:15:53.237136Z", - "updated_at": "2025-03-15T00:16:02.845003Z", + "created_at": "2025-04-15T00:16:22.748759Z", + "updated_at": "2025-04-15T00:16:38.373565Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -47,15 +47,15 @@ "updated_at": "2025-03-03T10:00:37.133281Z", "banned": false, "online": false, - "last_active": "2025-03-13T18:04:51.960419Z", + "last_active": "2025-04-13T17:46:17.972722Z", "blocked_user_ids": [ ], "birthland": "Serenno" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -68,24 +68,24 @@ "id": "han_solo", "name": "Han Solo", "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "", + "language": "zh", "role": "user", "teams": [ ], "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-02-27T16:17:46.871132Z", + "updated_at": "2025-03-28T13:23:50.000852Z", "banned": false, "online": false, - "last_active": "2025-03-14T17:10:33.441699Z", + "last_active": "2025-04-11T10:38:19.970146Z", "blocked_user_ids": [ ], "birthland": "Corellia" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -98,27 +98,27 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "type": "team", "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", - "team": "test" + "team": "test", + "type": "team" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -131,16 +131,16 @@ "id": "leia_organa", "name": "Leia Organa", "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", - "language": "ru", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-02-20T11:14:21.287666Z", + "updated_at": "2025-03-28T15:21:20.061525Z", "banned": false, "online": false, - "last_active": "2025-03-14T13:17:25.910928Z", + "last_active": "2025-04-14T14:52:53.853303Z", "blocked_user_ids": [ ], @@ -155,8 +155,8 @@ } }, "status": "member", - "created_at": "2025-03-15T00:15:57.890803Z", - "updated_at": "2025-03-15T00:15:57.890803Z", + "created_at": "2025-04-15T00:16:27.384218Z", + "updated_at": "2025-04-15T00:16:27.384218Z", "banned": false, "shadow_banned": false, "role": "admin", @@ -214,21 +214,21 @@ } ] }, - "truncated_at": "2025-03-15T00:16:02.838566Z", + "truncated_at": "2025-04-15T00:16:38.365247Z", "truncated_by": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -240,7 +240,7 @@ "name": "Sync Mock Server" }, "message": { - "id": "54cf8e5f-9b52-4d1b-bbe6-2c7dadf13718", + "id": "c9d35358-6695-4b04-9582-c6eaf64b1dea", "text": "Channel truncated", "html": "

Channel truncated

\n", "type": "system", @@ -248,23 +248,23 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine", "team": "test", - "type": "team" + "type": "team", + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "attachments": [ @@ -281,9 +281,9 @@ }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:16:02.838567Z", - "updated_at": "2025-03-15T00:16:02.838567Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:38.365248Z", + "updated_at": "2025-04-15T00:16:38.365248Z", "shadowed": false, "mentioned_users": [ diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_unsplash_link.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/http_unsplash_link.json index 47474c485d4..eee4e8430e3 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": "3071d78f-dfb2-4900-8ac5-a26a4a245494", + "id": "74823860-6a30-4ffc-afa9-a997d4464496", "text": "https://unsplash.com/photos/1_2d3MRbI9c", "html": "

https://unsplash.com/photos/1_2d3MRbI9c

\n", "type": "regular", @@ -8,32 +8,33 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine", "team": "test", - "type": "team" + "type": "team", + "pando": "{\"speciality\":\"ios engineer\"}" }, "attachments": [ { "type": "image", + "author_name": "Photo by Joao Branco on Unsplash", "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=M3wxMjA3fDB8MXxhbGx8fHx8fHx8fHwxNzQxOTk3NzYwfA&ixlib=rb-4.0.3", - "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=M3wxMjA3fDB8MXxhbGx8fHx8fHx8fHwxNzQxOTk3NzYwfA&ixlib=rb-4.0.3", + "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=M3wxMjA3fDB8MXxhbGx8fHx8fHx8fHwxNzQ0Njc2MTk2fA&ixlib=rb-4.0.3", + "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=M3wxMjA3fDB8MXxhbGx8fHx8fHx8fHwxNzQ0Njc2MTk2fA&ixlib=rb-4.0.3", "og_scrape_url": "https://unsplash.com/photos/1_2d3MRbI9c" } ], @@ -49,18 +50,13 @@ }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:16:01.252143Z", - "updated_at": "2025-03-15T00:16:01.252143Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:37.019201Z", + "updated_at": "2025-04-15T00:16:37.019201Z", "shadowed": false, "mentioned_users": [ ], - "i18n": { - "id_text": "https://unsplash.com/photos/1_2d3MRbI9c", - "ru_text": "https://unsplash.com/photos/1_2d3MRbI9c", - "language": "id" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -70,5 +66,5 @@ ] }, - "duration": "967.11ms" + "duration": "3830.97ms" } \ 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 2725564d540..776fdef3ba9 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": "1ba2f092-6dab-49e5-a500-83a1d2e477c1", + "id": "2c66ad88-45e6-49e2-9f92-cae4f03f1fdd", "text": "https://youtube.com/watch?v=xOX7MsrbaPY", "html": "

https://youtube.com/watch?v=xOX7MsrbaPY

\n", "type": "regular", @@ -8,34 +8,32 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], + "birthland": "Tatooine", "team": "test", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "pando": "{\"speciality\":\"ios engineer\"}" }, "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" } ], @@ -51,18 +49,13 @@ }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:15:59.807218Z", - "updated_at": "2025-03-15T00:15:59.807218Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:32.692774Z", + "updated_at": "2025-04-15T00:16:32.692774Z", "shadowed": false, "mentioned_users": [ ], - "i18n": { - "id_text": "https://youtube.com/watch?v=xOX7MsrbaPY", - "ru_text": "https://youtube.com/watch?v=xOX7MsrbaPY", - "language": "id" - }, "silent": false, "pinned": false, "pinned_at": null, @@ -72,5 +65,5 @@ ] }, - "duration": "313.78ms" + "duration": "3655.81ms" } \ 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 2f1e2babf0f..3fbee553f4c 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events.json @@ -1,22 +1,22 @@ { "type": "typing.start", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "channel_id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "channel_id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "channel_type": "messaging", "user": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -33,176 +33,182 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "970992ef7218e0f764d5b7c2db4101656139af2bfe04e381ac2b8260bc59203e", - "created_at": "2025-03-14T20:15:24.027442Z", + "id": "8d03a49814d0d0e679d3b30ec66f269ff092c4c62b282a72578b16053c301401", + "created_at": "2025-04-14T13:40:26.574101Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80fcd0790fdf87a1d7dbff85e9d63996d5a1f6c19ea9ce323ab08935f313de88b03a1ede97d9297254d34b5a7e296d4f6869dc460c887a4a02f9322c6813733a067c20e5a03e1cefb09352b09e6456e9", - "created_at": "2025-03-14T09:10:44.513823Z", + "id": "807e96799a68154ec13e891e100644970203456c638a2f9e7b4fd91a2f0f06bed16a11aa7da6c7d911abfc13c874e6253476b116fafbb49b3c20f6b061dbbb02a6ee3cf49710c09ba3275177470e97f1", + "created_at": "2025-04-12T23:54:09.712381Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "7e88aa732165ab5c0504b11b7c965c8b4bbfe4bb8b48c640fc3dc7ef3a9a4723", - "created_at": "2025-03-14T07:36:53.795178Z", + "id": "801f108a7521af9233f66e763339a5faff36e534ef24bce87154544ae1b4f7add0b077ce763b0449ba774b8e59e0362fee7fb1e5416081c835060aa013ea22bd04e7fd775cfbbe7b4fbff5be9dfde484", + "created_at": "2025-04-11T16:37:51.530595Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80ecacba23dc64a727442d627e9bd6f444f9e412f135c3d6d138a24d479dfca4fd108e72eee79c45b22fbf890a29f59b407c333461e358d4b1cbfc4c79456c59a4bbfc27ab829fedc56f94456316d053", - "created_at": "2025-03-13T21:44:08.488516Z", + "id": "80d8b1cb518b1a52f2bb74d5419a0423dab04b7cc09b2cd6f8a15320ce3c73dbc80f36f3040527e609b7e28a4d8178376e823e00f7cf260115270af7985fe04127b2fa9aaf02706512bd244b81a1fc9c", + "created_at": "2025-04-11T13:31:52.280365Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80145fcb19b30e2a1b6c8a988fce57cd295acb8194a7c59b438e54c4d6309a762f1c6626f2f49bce02161c8da32b7ec3d3507857f69ca1c04a30499494400b11f166710c865b7cdc2d9cd5fd2613efbe", - "created_at": "2025-03-13T12:30:05.817314Z", + "id": "8038a5505bb005e035aa1d828db907b031c8b70c424e01cb7037eb4c29efe44524a4f555e2a42d79eb4b61f6a4979ea4672759854acb0be7a4161130f5d4c1fc6c79bb0ef9dceaaaac290a00b99a5555", + "created_at": "2025-04-11T10:51:02.893652Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8068d511901e2a868de612b11b5d67cdbca298a4362beff50cf7ff8a17e559af852f86d6df80061ce9eb9d1d1495fd0859607b8935f1b9e13bcef4c4934f2b1e8187392c11507057432c5742c5ab94d7", - "created_at": "2025-03-13T10:52:34.639454Z", + "id": "b919e95520aebf36da438b1cbafb93e6cbc165de1e40d714b26b493f3ff6411f", + "created_at": "2025-04-10T15:21:46.788239Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80415a8ca8f251ab6e9529270d5f2ac837a9f16f9f80ad52230d0c16bbc9491e8226b22c3035501fccb083cad8cb629403e2a204f66719878dfc947970add889c0ca92c161058106a0b9c25bebbaeab4", - "created_at": "2025-03-11T22:07:17.920547Z", + "id": "7d602801d15a89a03a1e9368796d824c86d8eef2c67f5294d6aa63313084fac3", + "created_at": "2025-04-10T13:55:30.732777Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "d97580a08acbd6dcae5c9f933a1e6fda90c8731774d4b59a3009d763137960d5", - "created_at": "2025-03-11T08:05:12.083551Z", + "id": "970992ef7218e0f764d5b7c2db4101656139af2bfe04e381ac2b8260bc59203e", + "created_at": "2025-04-09T21:06:46.262547Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "800ea64bdf895e7233e38e27f538476aae4280e56bc5c2c0277ddc477495632d54f987dc006d70eeebaf474db586e17fbdcc0f1dd25996a0aa0f8110bce78d8ee5e02faff15b4b07832422ca3d89f0c4", - "created_at": "2025-03-10T04:46:42.213717Z", + "id": "801e6888eb325be991f9a48e631756fa8369343b5589ec6357b374331a4d00afc204c6c370b368572cb174b629a313429eaf5bcdedde910fc9950463c671904bd73c8c16a962648b9ee4d18196f1527f", + "created_at": "2025-04-09T12:36:28.436132Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80a9f3afb592e51055344bc158d91ad74ddabf0adf44ad9f60fe3847fe790d7151c9d4001d37f7f0ed8c4aaebf86a5a475f67e70222c4da8e96cf2eaea2a00b7fd502bdf8d52eb3b9753f0be6efb38f5", - "created_at": "2025-03-07T06:27:13.076238Z", + "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", + "created_at": "2025-04-07T18:32:35.310698Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8024a6916f047a2e07ae92321491c2fdbebf6b39175da172561a12e0c5ec48a1129586f98e43ad9f12c7205367b3c37290cec7d51497b63789c8d9462a37433eefa776422627666cde71fa85f8616a56", - "created_at": "2025-03-06T06:04:30.710001Z", + "id": "80d83a56613f579bf887ed233f28dc2f8621cf45fd026d0ef81e0d2cae520bfcc6fc4701d9c900e12111729b869fa3a9ee57b1f0304708f262bebc77095aa18d745d6e83c168dfdf747faeb9cc15226d", + "created_at": "2025-04-07T13:52:04.797217Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", - "created_at": "2025-02-27T15:44:06.136153Z", + "id": "80583021bb9d509ae321caf868555b05a00b2a36005b90680e9ef8dc15fb9e828004adde872dadb27b93ae3eb85bbaa421c3786af0f500ef3d4953f166dfaf66a1f07a559f4f65cc0ab7f0062238224c", + "created_at": "2025-04-05T23:53:04.794049Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "34057215a44109103833fffd0233abd2f00178ada4a88c7134bd5216392a44a5", - "created_at": "2025-02-27T10:27:00.77165Z", + "id": "e132488ccab386465b48a388538655d1d66faef1db6b8971c9d8868ec794329c", + "created_at": "2025-04-02T15:43:20.717524Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8073fd3d547fdbb7e82fe9dceb476016339ca5ffc9ffa6c921178ba8212a5cbb2755639217a43fcfc78c32af4cf6fbda8de895aca2db7877548528b9b3823520198ee77066f268e5518bd47034e4510a", - "created_at": "2025-02-26T07:42:12.632215Z", + "id": "48477b04fca56eebcf2a42e22cf0dc72d11a16c7d804586ccdd9eaacc1d0c1b2", + "created_at": "2025-03-31T23:34:57.289343Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "806e4e741a0f3bbf5537b4e721254c9c779f7fe60072784adaf9388a5ec242efb3fa3bf92d1a156e523bf22406f157411626f5bdeed7a9a38778a993f2ebc27fd357f80fa55b6db5ccf8950189ad73c1", - "created_at": "2025-02-25T21:19:43.832593Z", + "id": "808ad38affdee51ad570f5aa4cb3ffe0d403d0545f5cd0d5afee12a1d04d3d43ade987d77ceb2d7cae6beb9cb3947c06950a20fcbbe429751f0da4b00e86781a866f8f460e7695d1ca9ac32ce467f340", + "created_at": "2025-03-31T11:13:11.18128Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "018dcb3e3abb7f114ff48c8578b22deda08f59b552b8b2223345f3a324ae33a1", - "created_at": "2025-02-24T19:01:55.143254Z", + "id": "8052781158ed62b8e318f7363b053d1c51585af60d58aa46d9b1715ffa5923ddbca2be39edd7af935971c6f7e1f325dc9c5c6f4f03409a70e99ceb9f8c68f6f5a6b699b1a44169462059868fbf117e89", + "created_at": "2025-03-30T09:20:28.822319Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80d8da89823d58917a0aa8e3960a8a58c4916ef019349a1329e328122dd0933581787e7db1b8de83188150d30ebf3bcc87773d152d7756ba0473ddfbcc912137e63b3edfe135768ba0cbe0a45e7fec9a", - "created_at": "2025-02-21T16:31:52.93218Z", + "id": "8000f93ac489af16292294e8f62ea3c20a645f260403a01b084a1fcc651a4bf999036f6c61f2f1e440ee2c19d01928315408999734a4a5ce89aeedf36cab083e592090d1a4405c3b05da3acb76264962", + "created_at": "2025-03-28T06:01:14.921573Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "78672cd7b3eaaa8dd0bfea4f7437565e1144a2473c1f8f4be8abe18078f30083", - "created_at": "2025-02-20T11:53:41.838222Z", + "id": "80e85d9d81a5b5e93a069573e8e0ae004b2b5486feec7678438aab851118e5b4707520a3670213c5559c9cb05fe847eb0fdc028293f8e346abefb5abf9ddf21ceba0453f3b65c6579631f2438b17ae75", + "created_at": "2025-03-26T10:09:31.794067Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80908716fdcadf1ef9b49b0c4cdacf324152c4780c4934719dbbc60fb136c4d75a0e5f71acd43c2ed55b394a727cffc9a226fef342b470ee4d738b5798b777f29b104c7e4cd5e8fd56f1b69cf2d33c03", - "created_at": "2025-02-17T13:18:44.245138Z", + "id": "80325337b7fc07c60b4d4fb151fbceac91387bf4816463423d331ef82a698335b3882590c57e55266ddf4f6105b429aa5c0f4f89e5fffac4a764857a3b9725cb70b5eddc836519ecacfef86265dae815", + "created_at": "2025-03-25T17:17:01.718907Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80a09056e398cab73a0e1473d8f43d9cc2555deb42e64b13efa9ff7f3fce458b21638d51e49432ccea4375010f930216e9fc55d3925400b78e72dcfd11e8fc8a2ac1b05452c438739a91177abbe31fdb", - "created_at": "2025-02-16T09:25:53.105629Z", + "id": "5c16cf567432ef92870150148eb9459be0b2ddab8618c8c8913a6c6bf17f727f", + "created_at": "2025-03-25T16:35:41.420372Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "e2c6bed363247a93ea49699385e50de99efba5707808cbd7b2d3f4e46a7cbfb9", - "created_at": "2025-02-13T17:54:30.965611Z", + "id": "80c6bcf3cd2905f2caf65cf56fd150b868dc193f7e4a6ee36a02ec534cf49b9eb5945152bbdabafcc5251fdfa9342b57f056b80f4b6bbccc9577c933f5e75756b388ce957d163a2de94328716ac7c9ba", + "created_at": "2025-03-24T10:16:54.738886Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8078596852ae3ecc7bb8d20eb1bde24d596115270e266be1e7164009c28c841c89120222e5594b8929bafb7b55ec47e5b1db2e1274b6e0c9a8f24ba1087832d4dc8acefc857be26848f2b074fdaa42fe", - "created_at": "2025-02-12T13:52:59.060649Z", + "id": "80f7c2fe7eba463f99fd62d7bc0e0333a58427598b4e26f1b55cd6f3c1cd32831778f4e869b5fef18cb4f9f0ccc7172de207a642e281aeab36a3565f5e57fca13c34b0df6955c2708c17206919a83734", + "created_at": "2025-03-22T19:01:18.93624Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "805fbd71d240360c14b785cd89f59846acf40e15514e3cf89efdbc30f360999873c4713b6fd6f192072c075c41243b82f8b89ea4880f7694f72815934477e7cf8d80c303d7bb25c8c0730e6268a1e3d2", - "created_at": "2025-02-12T10:55:34.960205Z", + "id": "803192da84414d63ee9ff14a2d6eb2094f5fb0aaae589db1fc031baeed386d2d7e682e56cff2417f16fe5468b91cf77cd3121a6c4758ad24e385b962125ffee6d4dd236d792177154e554b728740f0d8", + "created_at": "2025-03-19T14:17:02.821412Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "2716b6f605e691bf7dc7d88d1a45968dd6807ed91dbbf793777d152f796994b0", - "created_at": "2025-02-11T01:03:34.75674Z", + "id": "8030b214266e8b3f4213b7020b09ba1a3ddfc2183c8d0585bc219704d67e2e386e094f7f734e8a9d000198321f92d57acda674d02e10dda7590724869901dd7af4e948ff653b7b236af9aad922e49ae2", + "created_at": "2025-03-19T10:34:24.727232Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809975048776300710e9bf304eabc27813c3042266dc085420362ea254ebeccea39666720bc25ffc5a022b79062f1e5f1f1de6d1565850cc78ba3c9df1a810e7d4128b73c2f76210189febf4ee0df9b1", - "created_at": "2025-02-10T01:52:00.239203Z", + "id": "fbf3e2ca51e25ad7056dc49d0b5a6ace35e72e3fd3b276586e4b6d2151539dd5", + "created_at": "2025-03-18T07:01:39.975689Z", "user_id": "luke_skywalker" } ], @@ -212,5 +218,5 @@ "pando": "{\"speciality\":\"ios engineer\"}", "birthland": "Tatooine" }, - "created_at": "2025-03-15T00:15:54.695807648Z" + "created_at": "2025-04-15T00:16:24.291020033Z" } \ 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 7f673ec72ca..b17916c6af1 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_channel.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_channel.json @@ -1,32 +1,32 @@ { "type": "channel.updated", - "created_at": "2025-03-15T00:15:57.908839203Z", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "channel_last_message_at": "2025-03-15T00:15:56.802706Z", + "created_at": "2025-04-15T00:16:27.402904042Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "channel_last_message_at": "2025-04-15T00:16:26.330954Z", "channel_member_count": 4, "channel_type": "messaging", - "channel_id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "channel_id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "channel": { - "id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "type": "messaging", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "last_message_at": "2025-03-15T00:15:56.802706Z", - "created_at": "2025-03-15T00:15:53.237136Z", - "updated_at": "2025-03-15T00:15:53.237137Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "last_message_at": "2025-04-15T00:16:26.330954Z", + "created_at": "2025-04-15T00:16:22.748759Z", + "updated_at": "2025-04-15T00:16:22.748759Z", "created_by": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -43,176 +43,182 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "970992ef7218e0f764d5b7c2db4101656139af2bfe04e381ac2b8260bc59203e", - "created_at": "2025-03-14T20:15:24.027442Z", + "id": "8d03a49814d0d0e679d3b30ec66f269ff092c4c62b282a72578b16053c301401", + "created_at": "2025-04-14T13:40:26.574101Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80fcd0790fdf87a1d7dbff85e9d63996d5a1f6c19ea9ce323ab08935f313de88b03a1ede97d9297254d34b5a7e296d4f6869dc460c887a4a02f9322c6813733a067c20e5a03e1cefb09352b09e6456e9", - "created_at": "2025-03-14T09:10:44.513823Z", + "id": "807e96799a68154ec13e891e100644970203456c638a2f9e7b4fd91a2f0f06bed16a11aa7da6c7d911abfc13c874e6253476b116fafbb49b3c20f6b061dbbb02a6ee3cf49710c09ba3275177470e97f1", + "created_at": "2025-04-12T23:54:09.712381Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "7e88aa732165ab5c0504b11b7c965c8b4bbfe4bb8b48c640fc3dc7ef3a9a4723", - "created_at": "2025-03-14T07:36:53.795178Z", + "id": "801f108a7521af9233f66e763339a5faff36e534ef24bce87154544ae1b4f7add0b077ce763b0449ba774b8e59e0362fee7fb1e5416081c835060aa013ea22bd04e7fd775cfbbe7b4fbff5be9dfde484", + "created_at": "2025-04-11T16:37:51.530595Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80ecacba23dc64a727442d627e9bd6f444f9e412f135c3d6d138a24d479dfca4fd108e72eee79c45b22fbf890a29f59b407c333461e358d4b1cbfc4c79456c59a4bbfc27ab829fedc56f94456316d053", - "created_at": "2025-03-13T21:44:08.488516Z", + "id": "80d8b1cb518b1a52f2bb74d5419a0423dab04b7cc09b2cd6f8a15320ce3c73dbc80f36f3040527e609b7e28a4d8178376e823e00f7cf260115270af7985fe04127b2fa9aaf02706512bd244b81a1fc9c", + "created_at": "2025-04-11T13:31:52.280365Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80145fcb19b30e2a1b6c8a988fce57cd295acb8194a7c59b438e54c4d6309a762f1c6626f2f49bce02161c8da32b7ec3d3507857f69ca1c04a30499494400b11f166710c865b7cdc2d9cd5fd2613efbe", - "created_at": "2025-03-13T12:30:05.817314Z", + "id": "8038a5505bb005e035aa1d828db907b031c8b70c424e01cb7037eb4c29efe44524a4f555e2a42d79eb4b61f6a4979ea4672759854acb0be7a4161130f5d4c1fc6c79bb0ef9dceaaaac290a00b99a5555", + "created_at": "2025-04-11T10:51:02.893652Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8068d511901e2a868de612b11b5d67cdbca298a4362beff50cf7ff8a17e559af852f86d6df80061ce9eb9d1d1495fd0859607b8935f1b9e13bcef4c4934f2b1e8187392c11507057432c5742c5ab94d7", - "created_at": "2025-03-13T10:52:34.639454Z", + "id": "b919e95520aebf36da438b1cbafb93e6cbc165de1e40d714b26b493f3ff6411f", + "created_at": "2025-04-10T15:21:46.788239Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80415a8ca8f251ab6e9529270d5f2ac837a9f16f9f80ad52230d0c16bbc9491e8226b22c3035501fccb083cad8cb629403e2a204f66719878dfc947970add889c0ca92c161058106a0b9c25bebbaeab4", - "created_at": "2025-03-11T22:07:17.920547Z", + "id": "7d602801d15a89a03a1e9368796d824c86d8eef2c67f5294d6aa63313084fac3", + "created_at": "2025-04-10T13:55:30.732777Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "d97580a08acbd6dcae5c9f933a1e6fda90c8731774d4b59a3009d763137960d5", - "created_at": "2025-03-11T08:05:12.083551Z", + "id": "970992ef7218e0f764d5b7c2db4101656139af2bfe04e381ac2b8260bc59203e", + "created_at": "2025-04-09T21:06:46.262547Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "800ea64bdf895e7233e38e27f538476aae4280e56bc5c2c0277ddc477495632d54f987dc006d70eeebaf474db586e17fbdcc0f1dd25996a0aa0f8110bce78d8ee5e02faff15b4b07832422ca3d89f0c4", - "created_at": "2025-03-10T04:46:42.213717Z", + "id": "801e6888eb325be991f9a48e631756fa8369343b5589ec6357b374331a4d00afc204c6c370b368572cb174b629a313429eaf5bcdedde910fc9950463c671904bd73c8c16a962648b9ee4d18196f1527f", + "created_at": "2025-04-09T12:36:28.436132Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80a9f3afb592e51055344bc158d91ad74ddabf0adf44ad9f60fe3847fe790d7151c9d4001d37f7f0ed8c4aaebf86a5a475f67e70222c4da8e96cf2eaea2a00b7fd502bdf8d52eb3b9753f0be6efb38f5", - "created_at": "2025-03-07T06:27:13.076238Z", + "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", + "created_at": "2025-04-07T18:32:35.310698Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8024a6916f047a2e07ae92321491c2fdbebf6b39175da172561a12e0c5ec48a1129586f98e43ad9f12c7205367b3c37290cec7d51497b63789c8d9462a37433eefa776422627666cde71fa85f8616a56", - "created_at": "2025-03-06T06:04:30.710001Z", + "id": "80d83a56613f579bf887ed233f28dc2f8621cf45fd026d0ef81e0d2cae520bfcc6fc4701d9c900e12111729b869fa3a9ee57b1f0304708f262bebc77095aa18d745d6e83c168dfdf747faeb9cc15226d", + "created_at": "2025-04-07T13:52:04.797217Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", - "created_at": "2025-02-27T15:44:06.136153Z", + "id": "80583021bb9d509ae321caf868555b05a00b2a36005b90680e9ef8dc15fb9e828004adde872dadb27b93ae3eb85bbaa421c3786af0f500ef3d4953f166dfaf66a1f07a559f4f65cc0ab7f0062238224c", + "created_at": "2025-04-05T23:53:04.794049Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "34057215a44109103833fffd0233abd2f00178ada4a88c7134bd5216392a44a5", - "created_at": "2025-02-27T10:27:00.77165Z", + "id": "e132488ccab386465b48a388538655d1d66faef1db6b8971c9d8868ec794329c", + "created_at": "2025-04-02T15:43:20.717524Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8073fd3d547fdbb7e82fe9dceb476016339ca5ffc9ffa6c921178ba8212a5cbb2755639217a43fcfc78c32af4cf6fbda8de895aca2db7877548528b9b3823520198ee77066f268e5518bd47034e4510a", - "created_at": "2025-02-26T07:42:12.632215Z", + "id": "48477b04fca56eebcf2a42e22cf0dc72d11a16c7d804586ccdd9eaacc1d0c1b2", + "created_at": "2025-03-31T23:34:57.289343Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "806e4e741a0f3bbf5537b4e721254c9c779f7fe60072784adaf9388a5ec242efb3fa3bf92d1a156e523bf22406f157411626f5bdeed7a9a38778a993f2ebc27fd357f80fa55b6db5ccf8950189ad73c1", - "created_at": "2025-02-25T21:19:43.832593Z", + "id": "808ad38affdee51ad570f5aa4cb3ffe0d403d0545f5cd0d5afee12a1d04d3d43ade987d77ceb2d7cae6beb9cb3947c06950a20fcbbe429751f0da4b00e86781a866f8f460e7695d1ca9ac32ce467f340", + "created_at": "2025-03-31T11:13:11.18128Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "018dcb3e3abb7f114ff48c8578b22deda08f59b552b8b2223345f3a324ae33a1", - "created_at": "2025-02-24T19:01:55.143254Z", + "id": "8052781158ed62b8e318f7363b053d1c51585af60d58aa46d9b1715ffa5923ddbca2be39edd7af935971c6f7e1f325dc9c5c6f4f03409a70e99ceb9f8c68f6f5a6b699b1a44169462059868fbf117e89", + "created_at": "2025-03-30T09:20:28.822319Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80d8da89823d58917a0aa8e3960a8a58c4916ef019349a1329e328122dd0933581787e7db1b8de83188150d30ebf3bcc87773d152d7756ba0473ddfbcc912137e63b3edfe135768ba0cbe0a45e7fec9a", - "created_at": "2025-02-21T16:31:52.93218Z", + "id": "8000f93ac489af16292294e8f62ea3c20a645f260403a01b084a1fcc651a4bf999036f6c61f2f1e440ee2c19d01928315408999734a4a5ce89aeedf36cab083e592090d1a4405c3b05da3acb76264962", + "created_at": "2025-03-28T06:01:14.921573Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "78672cd7b3eaaa8dd0bfea4f7437565e1144a2473c1f8f4be8abe18078f30083", - "created_at": "2025-02-20T11:53:41.838222Z", + "id": "80e85d9d81a5b5e93a069573e8e0ae004b2b5486feec7678438aab851118e5b4707520a3670213c5559c9cb05fe847eb0fdc028293f8e346abefb5abf9ddf21ceba0453f3b65c6579631f2438b17ae75", + "created_at": "2025-03-26T10:09:31.794067Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80908716fdcadf1ef9b49b0c4cdacf324152c4780c4934719dbbc60fb136c4d75a0e5f71acd43c2ed55b394a727cffc9a226fef342b470ee4d738b5798b777f29b104c7e4cd5e8fd56f1b69cf2d33c03", - "created_at": "2025-02-17T13:18:44.245138Z", + "id": "80325337b7fc07c60b4d4fb151fbceac91387bf4816463423d331ef82a698335b3882590c57e55266ddf4f6105b429aa5c0f4f89e5fffac4a764857a3b9725cb70b5eddc836519ecacfef86265dae815", + "created_at": "2025-03-25T17:17:01.718907Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80a09056e398cab73a0e1473d8f43d9cc2555deb42e64b13efa9ff7f3fce458b21638d51e49432ccea4375010f930216e9fc55d3925400b78e72dcfd11e8fc8a2ac1b05452c438739a91177abbe31fdb", - "created_at": "2025-02-16T09:25:53.105629Z", + "id": "5c16cf567432ef92870150148eb9459be0b2ddab8618c8c8913a6c6bf17f727f", + "created_at": "2025-03-25T16:35:41.420372Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "e2c6bed363247a93ea49699385e50de99efba5707808cbd7b2d3f4e46a7cbfb9", - "created_at": "2025-02-13T17:54:30.965611Z", + "id": "80c6bcf3cd2905f2caf65cf56fd150b868dc193f7e4a6ee36a02ec534cf49b9eb5945152bbdabafcc5251fdfa9342b57f056b80f4b6bbccc9577c933f5e75756b388ce957d163a2de94328716ac7c9ba", + "created_at": "2025-03-24T10:16:54.738886Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8078596852ae3ecc7bb8d20eb1bde24d596115270e266be1e7164009c28c841c89120222e5594b8929bafb7b55ec47e5b1db2e1274b6e0c9a8f24ba1087832d4dc8acefc857be26848f2b074fdaa42fe", - "created_at": "2025-02-12T13:52:59.060649Z", + "id": "80f7c2fe7eba463f99fd62d7bc0e0333a58427598b4e26f1b55cd6f3c1cd32831778f4e869b5fef18cb4f9f0ccc7172de207a642e281aeab36a3565f5e57fca13c34b0df6955c2708c17206919a83734", + "created_at": "2025-03-22T19:01:18.93624Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "805fbd71d240360c14b785cd89f59846acf40e15514e3cf89efdbc30f360999873c4713b6fd6f192072c075c41243b82f8b89ea4880f7694f72815934477e7cf8d80c303d7bb25c8c0730e6268a1e3d2", - "created_at": "2025-02-12T10:55:34.960205Z", + "id": "803192da84414d63ee9ff14a2d6eb2094f5fb0aaae589db1fc031baeed386d2d7e682e56cff2417f16fe5468b91cf77cd3121a6c4758ad24e385b962125ffee6d4dd236d792177154e554b728740f0d8", + "created_at": "2025-03-19T14:17:02.821412Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "2716b6f605e691bf7dc7d88d1a45968dd6807ed91dbbf793777d152f796994b0", - "created_at": "2025-02-11T01:03:34.75674Z", + "id": "8030b214266e8b3f4213b7020b09ba1a3ddfc2183c8d0585bc219704d67e2e386e094f7f734e8a9d000198321f92d57acda674d02e10dda7590724869901dd7af4e948ff653b7b236af9aad922e49ae2", + "created_at": "2025-03-19T10:34:24.727232Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809975048776300710e9bf304eabc27813c3042266dc085420362ea254ebeccea39666720bc25ffc5a022b79062f1e5f1f1de6d1565850cc78ba3c9df1a810e7d4128b73c2f76210189febf4ee0df9b1", - "created_at": "2025-02-10T01:52:00.239203Z", + "id": "fbf3e2ca51e25ad7056dc49d0b5a6ace35e72e3fd3b276586e4b6d2151539dd5", + "created_at": "2025-03-18T07:01:39.975689Z", "user_id": "luke_skywalker" } ], @@ -240,7 +246,7 @@ "updated_at": "2025-03-03T10:00:37.133281Z", "banned": false, "online": false, - "last_active": "2025-03-13T18:04:51.960419Z", + "last_active": "2025-04-13T17:46:17.972722Z", "blocked_user_ids": [ ], @@ -254,6 +260,13 @@ } }, "devices": [ + { + "push_provider": "apn", + "push_provider_name": "APN-Configuration", + "id": "80c5a6b6e6b8470c8631b25d398d68b04c218c5806cdc8a62893c1b96acb3382623f277bbbefe5e0b6f17f6b221627140037dad8c8bed5eca8eaebe00f9353627eaf6253bed1c72352b1f7c30e3af5d1", + "created_at": "2025-04-13T16:47:57.568822Z", + "user_id": "count_dooku" + }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", @@ -347,8 +360,8 @@ "birthland": "Serenno" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -361,16 +374,16 @@ "id": "han_solo", "name": "Han Solo", "image": "https://vignette.wikia.nocookie.net/starwars/images/e/e2/TFAHanSolo.png", - "language": "", + "language": "zh", "role": "user", "teams": [ ], "created_at": "2024-04-04T09:18:11.060737Z", - "updated_at": "2025-02-27T16:17:46.871132Z", + "updated_at": "2025-03-28T13:23:50.000852Z", "banned": false, "online": false, - "last_active": "2025-03-14T17:10:33.441699Z", + "last_active": "2025-04-11T10:38:19.970146Z", "blocked_user_ids": [ ], @@ -387,8 +400,40 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80cd34aa5dab4617b45d27b6db9295d65f3c07a7daa17474aac8e0b7b5bf0f12c0594d906b157fffb69498ffb59d1bda54b70be450c310bf368cb160e07cd306cbb045e6a406d0148201880c98a16388", - "created_at": "2025-03-14T17:13:38.514634Z", + "id": "8044c176cfde058bf5cbd79fa72e14dff3bc931ad295db6a25d413c339e78f3e256ce84a9413b53a3d5bedb1581c54fc27d1a3626c5aa59dddf3967aa4c09f0e795e74e341f224bfb8dfafb05ccfe8ba", + "created_at": "2025-04-11T10:50:47.782896Z", + "user_id": "han_solo" + }, + { + "push_provider": "apn", + "push_provider_name": "APN-Configuration", + "id": "14216b28af8556468ae8dbf08a5ea602f9deb9c2eb115d9b6aacf7f7bde74ade", + "created_at": "2025-04-04T12:32:44.195717Z", + "disabled": true, + "disabled_reason": "Unregistered", + "user_id": "han_solo" + }, + { + "push_provider": "apn", + "push_provider_name": "APN-Configuration", + "id": "8312675d1f9738030286c5ec019d1b195ba7fc1722036b6f93befb0564fbe4a1", + "created_at": "2025-03-31T10:45:01.90956Z", + "user_id": "han_solo" + }, + { + "push_provider": "apn", + "push_provider_name": "APN-Configuration", + "id": "91b57a750c495c5037d3d61de6db662172bdfa57a58c12f3de9cd8ccd90a6c94", + "created_at": "2025-03-26T17:25:33.358486Z", + "disabled": true, + "disabled_reason": "Unregistered", + "user_id": "han_solo" + }, + { + "push_provider": "apn", + "push_provider_name": "APN-Configuration", + "id": "200b284b4c9ea0ddfb21da49745e2ff52d407e0a7dd4e8f78a5c8f72ebdc297b", + "created_at": "2025-03-18T04:30:58.970837Z", "user_id": "han_solo" }, { @@ -396,6 +441,8 @@ "push_provider_name": "APN-Configuration", "id": "80d9d0bc03125a978459bc86d4aa4cc04ff4cc7bb279b35dc4568654a9d7acdf7a37adc2deaa936957fc9ab3b5e6d3aa85bf07329b06a66be5fe2b985cb0749ca90cfa50b2e928053d4e3ef4bab7b2bd", "created_at": "2025-03-13T21:45:37.216501Z", + "disabled": true, + "disabled_reason": "Unregistered", "user_id": "han_solo" }, { @@ -403,6 +450,8 @@ "push_provider_name": "APN-Configuration", "id": "80c8a0da779769580e9635d17365100495cdd9cda2233c7db995c5acef47eb53a4c87b834a5398f2b2223895dd83dcce90604e687bb01c52a9b1701b19498cbd0336d2be8fab1a50800cad2e27cb555a", "created_at": "2025-03-12T02:55:24.755441Z", + "disabled": true, + "disabled_reason": "Unregistered", "user_id": "han_solo" }, { @@ -433,15 +482,6 @@ "created_at": "2025-02-27T10:35:26.432802Z", "user_id": "han_solo" }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "14216b28af8556468ae8dbf08a5ea602f9deb9c2eb115d9b6aacf7f7bde74ade", - "created_at": "2025-02-12T10:58:40.574878Z", - "disabled": true, - "disabled_reason": "Unregistered", - "user_id": "han_solo" - }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", @@ -505,13 +545,6 @@ "created_at": "2025-01-11T11:27:14.812828Z", "user_id": "han_solo" }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "80a189064a8e5bf1a5a12daba9c8309f359455a441fbec84c213b9e684b481b7a9aa75e3d1e8aada6c4cc683b262f436f5d48f9759370dbf463c9b85fc78dd5bb6a007b5751ea4eacd2a118305d90b89", - "created_at": "2025-01-09T16:09:44.165444Z", - "user_id": "han_solo" - }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", @@ -532,28 +565,14 @@ "id": "80978cff32cde2de16878ab7fae0bb7043ce21374ec5f08d92578616f2ab07b136219040b050e3b9133c8826e0f98d8b4fe10ae89ae5580ea733782c326b0d6abf7e95ba29fc4b02de069dac755874f4", "created_at": "2024-12-27T09:59:26.50571Z", "user_id": "han_solo" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "4b8b44d076dca7890d5dafd2401c376be147c887e909d206ad51c3f50f26cb9d", - "created_at": "2024-12-21T22:33:14.608961Z", - "user_id": "han_solo" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "b31ae9a7d13f81858bfb7a702d121bccaaf51dd0a1fa12126efc8a33def0d402", - "created_at": "2024-12-19T20:29:50.716431Z", - "user_id": "han_solo" } ], "invisible": false, "birthland": "Corellia" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "member", @@ -566,16 +585,16 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -592,188 +611,194 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "970992ef7218e0f764d5b7c2db4101656139af2bfe04e381ac2b8260bc59203e", - "created_at": "2025-03-14T20:15:24.027442Z", + "id": "8d03a49814d0d0e679d3b30ec66f269ff092c4c62b282a72578b16053c301401", + "created_at": "2025-04-14T13:40:26.574101Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80fcd0790fdf87a1d7dbff85e9d63996d5a1f6c19ea9ce323ab08935f313de88b03a1ede97d9297254d34b5a7e296d4f6869dc460c887a4a02f9322c6813733a067c20e5a03e1cefb09352b09e6456e9", - "created_at": "2025-03-14T09:10:44.513823Z", + "id": "807e96799a68154ec13e891e100644970203456c638a2f9e7b4fd91a2f0f06bed16a11aa7da6c7d911abfc13c874e6253476b116fafbb49b3c20f6b061dbbb02a6ee3cf49710c09ba3275177470e97f1", + "created_at": "2025-04-12T23:54:09.712381Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "7e88aa732165ab5c0504b11b7c965c8b4bbfe4bb8b48c640fc3dc7ef3a9a4723", - "created_at": "2025-03-14T07:36:53.795178Z", + "id": "801f108a7521af9233f66e763339a5faff36e534ef24bce87154544ae1b4f7add0b077ce763b0449ba774b8e59e0362fee7fb1e5416081c835060aa013ea22bd04e7fd775cfbbe7b4fbff5be9dfde484", + "created_at": "2025-04-11T16:37:51.530595Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80ecacba23dc64a727442d627e9bd6f444f9e412f135c3d6d138a24d479dfca4fd108e72eee79c45b22fbf890a29f59b407c333461e358d4b1cbfc4c79456c59a4bbfc27ab829fedc56f94456316d053", - "created_at": "2025-03-13T21:44:08.488516Z", + "id": "80d8b1cb518b1a52f2bb74d5419a0423dab04b7cc09b2cd6f8a15320ce3c73dbc80f36f3040527e609b7e28a4d8178376e823e00f7cf260115270af7985fe04127b2fa9aaf02706512bd244b81a1fc9c", + "created_at": "2025-04-11T13:31:52.280365Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80145fcb19b30e2a1b6c8a988fce57cd295acb8194a7c59b438e54c4d6309a762f1c6626f2f49bce02161c8da32b7ec3d3507857f69ca1c04a30499494400b11f166710c865b7cdc2d9cd5fd2613efbe", - "created_at": "2025-03-13T12:30:05.817314Z", + "id": "8038a5505bb005e035aa1d828db907b031c8b70c424e01cb7037eb4c29efe44524a4f555e2a42d79eb4b61f6a4979ea4672759854acb0be7a4161130f5d4c1fc6c79bb0ef9dceaaaac290a00b99a5555", + "created_at": "2025-04-11T10:51:02.893652Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8068d511901e2a868de612b11b5d67cdbca298a4362beff50cf7ff8a17e559af852f86d6df80061ce9eb9d1d1495fd0859607b8935f1b9e13bcef4c4934f2b1e8187392c11507057432c5742c5ab94d7", - "created_at": "2025-03-13T10:52:34.639454Z", + "id": "b919e95520aebf36da438b1cbafb93e6cbc165de1e40d714b26b493f3ff6411f", + "created_at": "2025-04-10T15:21:46.788239Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80415a8ca8f251ab6e9529270d5f2ac837a9f16f9f80ad52230d0c16bbc9491e8226b22c3035501fccb083cad8cb629403e2a204f66719878dfc947970add889c0ca92c161058106a0b9c25bebbaeab4", - "created_at": "2025-03-11T22:07:17.920547Z", + "id": "7d602801d15a89a03a1e9368796d824c86d8eef2c67f5294d6aa63313084fac3", + "created_at": "2025-04-10T13:55:30.732777Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "d97580a08acbd6dcae5c9f933a1e6fda90c8731774d4b59a3009d763137960d5", - "created_at": "2025-03-11T08:05:12.083551Z", + "id": "970992ef7218e0f764d5b7c2db4101656139af2bfe04e381ac2b8260bc59203e", + "created_at": "2025-04-09T21:06:46.262547Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "800ea64bdf895e7233e38e27f538476aae4280e56bc5c2c0277ddc477495632d54f987dc006d70eeebaf474db586e17fbdcc0f1dd25996a0aa0f8110bce78d8ee5e02faff15b4b07832422ca3d89f0c4", - "created_at": "2025-03-10T04:46:42.213717Z", + "id": "801e6888eb325be991f9a48e631756fa8369343b5589ec6357b374331a4d00afc204c6c370b368572cb174b629a313429eaf5bcdedde910fc9950463c671904bd73c8c16a962648b9ee4d18196f1527f", + "created_at": "2025-04-09T12:36:28.436132Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80a9f3afb592e51055344bc158d91ad74ddabf0adf44ad9f60fe3847fe790d7151c9d4001d37f7f0ed8c4aaebf86a5a475f67e70222c4da8e96cf2eaea2a00b7fd502bdf8d52eb3b9753f0be6efb38f5", - "created_at": "2025-03-07T06:27:13.076238Z", + "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", + "created_at": "2025-04-07T18:32:35.310698Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8024a6916f047a2e07ae92321491c2fdbebf6b39175da172561a12e0c5ec48a1129586f98e43ad9f12c7205367b3c37290cec7d51497b63789c8d9462a37433eefa776422627666cde71fa85f8616a56", - "created_at": "2025-03-06T06:04:30.710001Z", + "id": "80d83a56613f579bf887ed233f28dc2f8621cf45fd026d0ef81e0d2cae520bfcc6fc4701d9c900e12111729b869fa3a9ee57b1f0304708f262bebc77095aa18d745d6e83c168dfdf747faeb9cc15226d", + "created_at": "2025-04-07T13:52:04.797217Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", - "created_at": "2025-02-27T15:44:06.136153Z", + "id": "80583021bb9d509ae321caf868555b05a00b2a36005b90680e9ef8dc15fb9e828004adde872dadb27b93ae3eb85bbaa421c3786af0f500ef3d4953f166dfaf66a1f07a559f4f65cc0ab7f0062238224c", + "created_at": "2025-04-05T23:53:04.794049Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "34057215a44109103833fffd0233abd2f00178ada4a88c7134bd5216392a44a5", - "created_at": "2025-02-27T10:27:00.77165Z", + "id": "e132488ccab386465b48a388538655d1d66faef1db6b8971c9d8868ec794329c", + "created_at": "2025-04-02T15:43:20.717524Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8073fd3d547fdbb7e82fe9dceb476016339ca5ffc9ffa6c921178ba8212a5cbb2755639217a43fcfc78c32af4cf6fbda8de895aca2db7877548528b9b3823520198ee77066f268e5518bd47034e4510a", - "created_at": "2025-02-26T07:42:12.632215Z", + "id": "48477b04fca56eebcf2a42e22cf0dc72d11a16c7d804586ccdd9eaacc1d0c1b2", + "created_at": "2025-03-31T23:34:57.289343Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "806e4e741a0f3bbf5537b4e721254c9c779f7fe60072784adaf9388a5ec242efb3fa3bf92d1a156e523bf22406f157411626f5bdeed7a9a38778a993f2ebc27fd357f80fa55b6db5ccf8950189ad73c1", - "created_at": "2025-02-25T21:19:43.832593Z", + "id": "808ad38affdee51ad570f5aa4cb3ffe0d403d0545f5cd0d5afee12a1d04d3d43ade987d77ceb2d7cae6beb9cb3947c06950a20fcbbe429751f0da4b00e86781a866f8f460e7695d1ca9ac32ce467f340", + "created_at": "2025-03-31T11:13:11.18128Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "018dcb3e3abb7f114ff48c8578b22deda08f59b552b8b2223345f3a324ae33a1", - "created_at": "2025-02-24T19:01:55.143254Z", + "id": "8052781158ed62b8e318f7363b053d1c51585af60d58aa46d9b1715ffa5923ddbca2be39edd7af935971c6f7e1f325dc9c5c6f4f03409a70e99ceb9f8c68f6f5a6b699b1a44169462059868fbf117e89", + "created_at": "2025-03-30T09:20:28.822319Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80d8da89823d58917a0aa8e3960a8a58c4916ef019349a1329e328122dd0933581787e7db1b8de83188150d30ebf3bcc87773d152d7756ba0473ddfbcc912137e63b3edfe135768ba0cbe0a45e7fec9a", - "created_at": "2025-02-21T16:31:52.93218Z", + "id": "8000f93ac489af16292294e8f62ea3c20a645f260403a01b084a1fcc651a4bf999036f6c61f2f1e440ee2c19d01928315408999734a4a5ce89aeedf36cab083e592090d1a4405c3b05da3acb76264962", + "created_at": "2025-03-28T06:01:14.921573Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "78672cd7b3eaaa8dd0bfea4f7437565e1144a2473c1f8f4be8abe18078f30083", - "created_at": "2025-02-20T11:53:41.838222Z", + "id": "80e85d9d81a5b5e93a069573e8e0ae004b2b5486feec7678438aab851118e5b4707520a3670213c5559c9cb05fe847eb0fdc028293f8e346abefb5abf9ddf21ceba0453f3b65c6579631f2438b17ae75", + "created_at": "2025-03-26T10:09:31.794067Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80908716fdcadf1ef9b49b0c4cdacf324152c4780c4934719dbbc60fb136c4d75a0e5f71acd43c2ed55b394a727cffc9a226fef342b470ee4d738b5798b777f29b104c7e4cd5e8fd56f1b69cf2d33c03", - "created_at": "2025-02-17T13:18:44.245138Z", + "id": "80325337b7fc07c60b4d4fb151fbceac91387bf4816463423d331ef82a698335b3882590c57e55266ddf4f6105b429aa5c0f4f89e5fffac4a764857a3b9725cb70b5eddc836519ecacfef86265dae815", + "created_at": "2025-03-25T17:17:01.718907Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80a09056e398cab73a0e1473d8f43d9cc2555deb42e64b13efa9ff7f3fce458b21638d51e49432ccea4375010f930216e9fc55d3925400b78e72dcfd11e8fc8a2ac1b05452c438739a91177abbe31fdb", - "created_at": "2025-02-16T09:25:53.105629Z", + "id": "5c16cf567432ef92870150148eb9459be0b2ddab8618c8c8913a6c6bf17f727f", + "created_at": "2025-03-25T16:35:41.420372Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "e2c6bed363247a93ea49699385e50de99efba5707808cbd7b2d3f4e46a7cbfb9", - "created_at": "2025-02-13T17:54:30.965611Z", + "id": "80c6bcf3cd2905f2caf65cf56fd150b868dc193f7e4a6ee36a02ec534cf49b9eb5945152bbdabafcc5251fdfa9342b57f056b80f4b6bbccc9577c933f5e75756b388ce957d163a2de94328716ac7c9ba", + "created_at": "2025-03-24T10:16:54.738886Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8078596852ae3ecc7bb8d20eb1bde24d596115270e266be1e7164009c28c841c89120222e5594b8929bafb7b55ec47e5b1db2e1274b6e0c9a8f24ba1087832d4dc8acefc857be26848f2b074fdaa42fe", - "created_at": "2025-02-12T13:52:59.060649Z", + "id": "80f7c2fe7eba463f99fd62d7bc0e0333a58427598b4e26f1b55cd6f3c1cd32831778f4e869b5fef18cb4f9f0ccc7172de207a642e281aeab36a3565f5e57fca13c34b0df6955c2708c17206919a83734", + "created_at": "2025-03-22T19:01:18.93624Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "805fbd71d240360c14b785cd89f59846acf40e15514e3cf89efdbc30f360999873c4713b6fd6f192072c075c41243b82f8b89ea4880f7694f72815934477e7cf8d80c303d7bb25c8c0730e6268a1e3d2", - "created_at": "2025-02-12T10:55:34.960205Z", + "id": "803192da84414d63ee9ff14a2d6eb2094f5fb0aaae589db1fc031baeed386d2d7e682e56cff2417f16fe5468b91cf77cd3121a6c4758ad24e385b962125ffee6d4dd236d792177154e554b728740f0d8", + "created_at": "2025-03-19T14:17:02.821412Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "2716b6f605e691bf7dc7d88d1a45968dd6807ed91dbbf793777d152f796994b0", - "created_at": "2025-02-11T01:03:34.75674Z", + "id": "8030b214266e8b3f4213b7020b09ba1a3ddfc2183c8d0585bc219704d67e2e386e094f7f734e8a9d000198321f92d57acda674d02e10dda7590724869901dd7af4e948ff653b7b236af9aad922e49ae2", + "created_at": "2025-03-19T10:34:24.727232Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809975048776300710e9bf304eabc27813c3042266dc085420362ea254ebeccea39666720bc25ffc5a022b79062f1e5f1f1de6d1565850cc78ba3c9df1a810e7d4128b73c2f76210189febf4ee0df9b1", - "created_at": "2025-02-10T01:52:00.239203Z", + "id": "fbf3e2ca51e25ad7056dc49d0b5a6ace35e72e3fd3b276586e4b6d2151539dd5", + "created_at": "2025-03-18T07:01:39.975689Z", "user_id": "luke_skywalker" } ], "invisible": false, - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine", "team": "test", - "type": "team" + "type": "team", + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "status": "member", - "created_at": "2025-03-15T00:15:53.24959Z", - "updated_at": "2025-03-15T00:15:53.24959Z", + "created_at": "2025-04-15T00:16:22.77601Z", + "updated_at": "2025-04-15T00:16:22.77601Z", "banned": false, "shadow_banned": false, "role": "owner", @@ -786,16 +811,16 @@ "id": "leia_organa", "name": "Leia Organa", "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", - "language": "ru", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-02-20T11:14:21.287666Z", + "updated_at": "2025-03-28T15:21:20.061525Z", "banned": false, "online": false, - "last_active": "2025-03-14T13:17:25.910928Z", + "last_active": "2025-04-14T14:52:53.853303Z", "blocked_user_ids": [ ], @@ -812,8 +837,36 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8030b214266e8b3f4213b7020b09ba1a3ddfc2183c8d0585bc219704d67e2e386e094f7f734e8a9d000198321f92d57acda674d02e10dda7590724869901dd7af4e948ff653b7b236af9aad922e49ae2", - "created_at": "2025-03-04T07:45:22.930982Z", + "id": "80390cd4b5322ce878abb0ea8c6f2f554d21f2233767b61b4eb3a916e0be7325bc225528ffd97e3503ac6a56c5a62b747150b0d44abbeb6fb8c8e8b2dbf7fbe4291f3dbcac257ab869a6046876db1289", + "created_at": "2025-04-07T13:06:09.56915Z", + "user_id": "leia_organa" + }, + { + "push_provider": "apn", + "push_provider_name": "APN-Configuration", + "id": "f71e38ca56a6625256d487331369e2b950219fd0d55e8d7cb82fbd88966fee65", + "created_at": "2025-04-06T04:27:36.245492Z", + "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": "801e6f523b6d0013d0a499870f5131f0bfeb9a91968196767a2c3298bcb4e5eabff67b8edca870d30fb401108821ee697f6f13a25d2818f2179169ed39192ac5e9a0380bacf81317309fdef6e6f4907d", + "created_at": "2025-03-29T10:00:46.740666Z", + "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" }, { @@ -941,44 +994,10 @@ "id": "a087b19d26073575b4bbb498a615c47b011a6ff82a463cc5115c47986be8b012", "created_at": "2024-12-16T00:47:44.886922Z", "user_id": "leia_organa" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "b58dd549e608c3e824e3ea003093fc5ac64385fcf27e83bd817ba57189c312a5", - "created_at": "2024-12-15T00:36:12.083564Z", - "user_id": "leia_organa" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "8db23a998bc60bf451c6eb293d52d1bf730244a1d47285a44ca098f4fb4a0137", - "created_at": "2024-12-09T00:15:31.29602Z", - "user_id": "leia_organa" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "df25ba5be202c91abcc286425dd009d0ef91717d029b62d80fe99bb11f652b4d", - "created_at": "2024-12-06T10:24:35.549968Z", - "user_id": "leia_organa" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "80350a46b24fa6840207d47beb32d3d1ecf2779aefb27e117f011b25229ceb3e08f5393d8d0508e4be5eb0c1276b97686fdfeb4f6900873c97e8881b088cae9d5e7ff3481abe08c014328795aa71fb01", - "created_at": "2024-11-27T16:17:30.704315Z", - "user_id": "leia_organa" - }, - { - "push_provider": "apn", - "push_provider_name": "APN-Configuration", - "id": "8089476c99621fd0ee82c8df88a4ea4f764c2b146f731ea0ed444da40ed9aa624ab41d57eb08ed5d443662f5827857451049623a763566bd1aac1eefc7f0f12aac7d88e0bc465e2cc758689fc0def34a", - "created_at": "2024-11-26T16:55:38.139674Z", - "user_id": "leia_organa" } ], "invisible": false, + "birthland": "Polis Massa", "private_settings": { "readReceipts": { "enabled": false @@ -986,12 +1005,11 @@ "typingIndicators": { "enabled": false } - }, - "birthland": "Polis Massa" + } }, "status": "member", - "created_at": "2025-03-15T00:15:57.890803Z", - "updated_at": "2025-03-15T00:15:57.890803Z", + "created_at": "2025-04-15T00:16:27.384218Z", + "updated_at": "2025-04-15T00:16:27.384218Z", "banned": false, "shadow_banned": false, "role": "admin", @@ -1055,16 +1073,16 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], diff --git a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_member.json b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_member.json index 638e560af78..056815a810e 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_member.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_events_member.json @@ -1,20 +1,23 @@ { "type": "member.added", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "channel_id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "channel_id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "channel_type": "messaging", "member": { "user_id": "leia_organa", "user": { "id": "leia_organa", "role": "admin", + "teams_role": null, "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-02-20T11:14:21.287666Z", - "last_active": "2025-03-14T13:17:25.910928Z", - "last_engaged_at": "2025-03-14T04:10:13.086949Z", + "updated_at": "2025-03-28T15:21:20.061525Z", + "last_active": "2025-04-14T14:52:53.853303Z", + "last_engaged_at": "2025-04-14T14:53:28.003807Z", "banned": false, "online": false, - "language": "ru", + "language": "zh", + "name": "Leia Organa", + "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", "birthland": "Polis Massa", "private_settings": { "readReceipts": { @@ -23,13 +26,11 @@ "typingIndicators": { "enabled": false } - }, - "name": "Leia Organa", - "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png" + } }, "status": "member", - "created_at": "2025-03-15T00:15:57.890803Z", - "updated_at": "2025-03-15T00:15:57.890803Z", + "created_at": "2025-04-15T00:16:27.384218Z", + "updated_at": "2025-04-15T00:16:27.384218Z", "banned": false, "shadow_banned": false, "is_global_banned": false, @@ -42,13 +43,16 @@ "user": { "id": "leia_organa", "role": "admin", + "teams_role": null, "created_at": "2024-04-04T09:42:00.68335Z", - "updated_at": "2025-02-20T11:14:21.287666Z", - "last_active": "2025-03-14T13:17:25.910928Z", - "last_engaged_at": "2025-03-14T04:10:13.086949Z", + "updated_at": "2025-03-28T15:21:20.061525Z", + "last_active": "2025-04-14T14:52:53.853303Z", + "last_engaged_at": "2025-04-14T14:53:28.003807Z", "banned": false, "online": false, - "language": "ru", + "language": "zh", + "name": "Leia Organa", + "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png", "birthland": "Polis Massa", "private_settings": { "readReceipts": { @@ -57,10 +61,8 @@ "typingIndicators": { "enabled": false } - }, - "name": "Leia Organa", - "image": "https://vignette.wikia.nocookie.net/starwars/images/f/fc/Leia_Organa_TLJ.png" + } }, - "channel_last_message_at": "2025-03-15T00:15:56.802706Z", - "created_at": "2025-03-15T00:15:57.898833665Z" + "channel_last_message_at": "2025-04-15T00:16:26.330954Z", + "created_at": "2025-04-15T00:16:27.392736671Z" } \ 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 0e24bc0f6f8..87608e9224b 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_health_check.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_health_check.json @@ -1,19 +1,19 @@ { - "connection_id": "67d2d057-0a15-3975-0200-000000000552", + "connection_id": "67f8d030-0a15-3975-0200-00000000060b", "me": { "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "privacy_settings": { "typing_indicators": { "enabled": true @@ -32,16 +32,16 @@ "channel_mutes": [ ], - "unread_count": 0, - "total_unread_count": 0, - "unread_channels": 0, + "unread_count": 5, + "total_unread_count": 5, + "unread_channels": 1, "unread_threads": 0, - "birthland": "Tatooine", "team": "test", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "cid": "*", "type": "health.check", - "created_at": "2025-03-15T00:15:52.39176372Z" + "created_at": "2025-04-15T00:16:22.039199741Z" } \ 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 815937f8e38..abc9c1f0e86 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_message.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_message.json @@ -1,17 +1,17 @@ { "type": "message.new", - "created_at": "2025-03-15T00:15:56.833267761Z", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "channel_last_message_at": "2025-03-15T00:15:56.802706Z", + "created_at": "2025-04-15T00:16:26.38149097Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "channel_last_message_at": "2025-04-15T00:16:26.330954Z", "channel_member_count": 3, "channel_custom": { "name": "Sync Mock Server" }, "channel_type": "messaging", - "channel_id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", - "message_id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "channel_id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "message_id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "message": { - "id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "text": "Test", "html": "

Test

\n", "type": "regular", @@ -19,16 +19,16 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], @@ -37,184 +37,190 @@ { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "970992ef7218e0f764d5b7c2db4101656139af2bfe04e381ac2b8260bc59203e", - "created_at": "2025-03-14T20:15:24.027442Z", + "id": "8d03a49814d0d0e679d3b30ec66f269ff092c4c62b282a72578b16053c301401", + "created_at": "2025-04-14T13:40:26.574101Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80fcd0790fdf87a1d7dbff85e9d63996d5a1f6c19ea9ce323ab08935f313de88b03a1ede97d9297254d34b5a7e296d4f6869dc460c887a4a02f9322c6813733a067c20e5a03e1cefb09352b09e6456e9", - "created_at": "2025-03-14T09:10:44.513823Z", + "id": "807e96799a68154ec13e891e100644970203456c638a2f9e7b4fd91a2f0f06bed16a11aa7da6c7d911abfc13c874e6253476b116fafbb49b3c20f6b061dbbb02a6ee3cf49710c09ba3275177470e97f1", + "created_at": "2025-04-12T23:54:09.712381Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "7e88aa732165ab5c0504b11b7c965c8b4bbfe4bb8b48c640fc3dc7ef3a9a4723", - "created_at": "2025-03-14T07:36:53.795178Z", + "id": "801f108a7521af9233f66e763339a5faff36e534ef24bce87154544ae1b4f7add0b077ce763b0449ba774b8e59e0362fee7fb1e5416081c835060aa013ea22bd04e7fd775cfbbe7b4fbff5be9dfde484", + "created_at": "2025-04-11T16:37:51.530595Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80ecacba23dc64a727442d627e9bd6f444f9e412f135c3d6d138a24d479dfca4fd108e72eee79c45b22fbf890a29f59b407c333461e358d4b1cbfc4c79456c59a4bbfc27ab829fedc56f94456316d053", - "created_at": "2025-03-13T21:44:08.488516Z", + "id": "80d8b1cb518b1a52f2bb74d5419a0423dab04b7cc09b2cd6f8a15320ce3c73dbc80f36f3040527e609b7e28a4d8178376e823e00f7cf260115270af7985fe04127b2fa9aaf02706512bd244b81a1fc9c", + "created_at": "2025-04-11T13:31:52.280365Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80145fcb19b30e2a1b6c8a988fce57cd295acb8194a7c59b438e54c4d6309a762f1c6626f2f49bce02161c8da32b7ec3d3507857f69ca1c04a30499494400b11f166710c865b7cdc2d9cd5fd2613efbe", - "created_at": "2025-03-13T12:30:05.817314Z", + "id": "8038a5505bb005e035aa1d828db907b031c8b70c424e01cb7037eb4c29efe44524a4f555e2a42d79eb4b61f6a4979ea4672759854acb0be7a4161130f5d4c1fc6c79bb0ef9dceaaaac290a00b99a5555", + "created_at": "2025-04-11T10:51:02.893652Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8068d511901e2a868de612b11b5d67cdbca298a4362beff50cf7ff8a17e559af852f86d6df80061ce9eb9d1d1495fd0859607b8935f1b9e13bcef4c4934f2b1e8187392c11507057432c5742c5ab94d7", - "created_at": "2025-03-13T10:52:34.639454Z", + "id": "b919e95520aebf36da438b1cbafb93e6cbc165de1e40d714b26b493f3ff6411f", + "created_at": "2025-04-10T15:21:46.788239Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80415a8ca8f251ab6e9529270d5f2ac837a9f16f9f80ad52230d0c16bbc9491e8226b22c3035501fccb083cad8cb629403e2a204f66719878dfc947970add889c0ca92c161058106a0b9c25bebbaeab4", - "created_at": "2025-03-11T22:07:17.920547Z", + "id": "7d602801d15a89a03a1e9368796d824c86d8eef2c67f5294d6aa63313084fac3", + "created_at": "2025-04-10T13:55:30.732777Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "d97580a08acbd6dcae5c9f933a1e6fda90c8731774d4b59a3009d763137960d5", - "created_at": "2025-03-11T08:05:12.083551Z", + "id": "970992ef7218e0f764d5b7c2db4101656139af2bfe04e381ac2b8260bc59203e", + "created_at": "2025-04-09T21:06:46.262547Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "800ea64bdf895e7233e38e27f538476aae4280e56bc5c2c0277ddc477495632d54f987dc006d70eeebaf474db586e17fbdcc0f1dd25996a0aa0f8110bce78d8ee5e02faff15b4b07832422ca3d89f0c4", - "created_at": "2025-03-10T04:46:42.213717Z", + "id": "801e6888eb325be991f9a48e631756fa8369343b5589ec6357b374331a4d00afc204c6c370b368572cb174b629a313429eaf5bcdedde910fc9950463c671904bd73c8c16a962648b9ee4d18196f1527f", + "created_at": "2025-04-09T12:36:28.436132Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80a9f3afb592e51055344bc158d91ad74ddabf0adf44ad9f60fe3847fe790d7151c9d4001d37f7f0ed8c4aaebf86a5a475f67e70222c4da8e96cf2eaea2a00b7fd502bdf8d52eb3b9753f0be6efb38f5", - "created_at": "2025-03-07T06:27:13.076238Z", + "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", + "created_at": "2025-04-07T18:32:35.310698Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8024a6916f047a2e07ae92321491c2fdbebf6b39175da172561a12e0c5ec48a1129586f98e43ad9f12c7205367b3c37290cec7d51497b63789c8d9462a37433eefa776422627666cde71fa85f8616a56", - "created_at": "2025-03-06T06:04:30.710001Z", + "id": "80d83a56613f579bf887ed233f28dc2f8621cf45fd026d0ef81e0d2cae520bfcc6fc4701d9c900e12111729b869fa3a9ee57b1f0304708f262bebc77095aa18d745d6e83c168dfdf747faeb9cc15226d", + "created_at": "2025-04-07T13:52:04.797217Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809065933d06e42d27179dfe7f24ef7c34e74c0898c184cc1de0abd791f0f9d2a1342ad140129c3a26ba7a4f86b3534358475d9964024ff373bc2c705bc2d999cbbe0402af60077fb7af6c1f73295bd7", - "created_at": "2025-02-27T15:44:06.136153Z", + "id": "80583021bb9d509ae321caf868555b05a00b2a36005b90680e9ef8dc15fb9e828004adde872dadb27b93ae3eb85bbaa421c3786af0f500ef3d4953f166dfaf66a1f07a559f4f65cc0ab7f0062238224c", + "created_at": "2025-04-05T23:53:04.794049Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "34057215a44109103833fffd0233abd2f00178ada4a88c7134bd5216392a44a5", - "created_at": "2025-02-27T10:27:00.77165Z", + "id": "e132488ccab386465b48a388538655d1d66faef1db6b8971c9d8868ec794329c", + "created_at": "2025-04-02T15:43:20.717524Z", + "disabled": true, + "disabled_reason": "DeviceTokenNotForTopic", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8073fd3d547fdbb7e82fe9dceb476016339ca5ffc9ffa6c921178ba8212a5cbb2755639217a43fcfc78c32af4cf6fbda8de895aca2db7877548528b9b3823520198ee77066f268e5518bd47034e4510a", - "created_at": "2025-02-26T07:42:12.632215Z", + "id": "48477b04fca56eebcf2a42e22cf0dc72d11a16c7d804586ccdd9eaacc1d0c1b2", + "created_at": "2025-03-31T23:34:57.289343Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "806e4e741a0f3bbf5537b4e721254c9c779f7fe60072784adaf9388a5ec242efb3fa3bf92d1a156e523bf22406f157411626f5bdeed7a9a38778a993f2ebc27fd357f80fa55b6db5ccf8950189ad73c1", - "created_at": "2025-02-25T21:19:43.832593Z", + "id": "808ad38affdee51ad570f5aa4cb3ffe0d403d0545f5cd0d5afee12a1d04d3d43ade987d77ceb2d7cae6beb9cb3947c06950a20fcbbe429751f0da4b00e86781a866f8f460e7695d1ca9ac32ce467f340", + "created_at": "2025-03-31T11:13:11.18128Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "018dcb3e3abb7f114ff48c8578b22deda08f59b552b8b2223345f3a324ae33a1", - "created_at": "2025-02-24T19:01:55.143254Z", + "id": "8052781158ed62b8e318f7363b053d1c51585af60d58aa46d9b1715ffa5923ddbca2be39edd7af935971c6f7e1f325dc9c5c6f4f03409a70e99ceb9f8c68f6f5a6b699b1a44169462059868fbf117e89", + "created_at": "2025-03-30T09:20:28.822319Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80d8da89823d58917a0aa8e3960a8a58c4916ef019349a1329e328122dd0933581787e7db1b8de83188150d30ebf3bcc87773d152d7756ba0473ddfbcc912137e63b3edfe135768ba0cbe0a45e7fec9a", - "created_at": "2025-02-21T16:31:52.93218Z", + "id": "8000f93ac489af16292294e8f62ea3c20a645f260403a01b084a1fcc651a4bf999036f6c61f2f1e440ee2c19d01928315408999734a4a5ce89aeedf36cab083e592090d1a4405c3b05da3acb76264962", + "created_at": "2025-03-28T06:01:14.921573Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "78672cd7b3eaaa8dd0bfea4f7437565e1144a2473c1f8f4be8abe18078f30083", - "created_at": "2025-02-20T11:53:41.838222Z", + "id": "80e85d9d81a5b5e93a069573e8e0ae004b2b5486feec7678438aab851118e5b4707520a3670213c5559c9cb05fe847eb0fdc028293f8e346abefb5abf9ddf21ceba0453f3b65c6579631f2438b17ae75", + "created_at": "2025-03-26T10:09:31.794067Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80908716fdcadf1ef9b49b0c4cdacf324152c4780c4934719dbbc60fb136c4d75a0e5f71acd43c2ed55b394a727cffc9a226fef342b470ee4d738b5798b777f29b104c7e4cd5e8fd56f1b69cf2d33c03", - "created_at": "2025-02-17T13:18:44.245138Z", + "id": "80325337b7fc07c60b4d4fb151fbceac91387bf4816463423d331ef82a698335b3882590c57e55266ddf4f6105b429aa5c0f4f89e5fffac4a764857a3b9725cb70b5eddc836519ecacfef86265dae815", + "created_at": "2025-03-25T17:17:01.718907Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "80a09056e398cab73a0e1473d8f43d9cc2555deb42e64b13efa9ff7f3fce458b21638d51e49432ccea4375010f930216e9fc55d3925400b78e72dcfd11e8fc8a2ac1b05452c438739a91177abbe31fdb", - "created_at": "2025-02-16T09:25:53.105629Z", + "id": "5c16cf567432ef92870150148eb9459be0b2ddab8618c8c8913a6c6bf17f727f", + "created_at": "2025-03-25T16:35:41.420372Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "e2c6bed363247a93ea49699385e50de99efba5707808cbd7b2d3f4e46a7cbfb9", - "created_at": "2025-02-13T17:54:30.965611Z", + "id": "80c6bcf3cd2905f2caf65cf56fd150b868dc193f7e4a6ee36a02ec534cf49b9eb5945152bbdabafcc5251fdfa9342b57f056b80f4b6bbccc9577c933f5e75756b388ce957d163a2de94328716ac7c9ba", + "created_at": "2025-03-24T10:16:54.738886Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "8078596852ae3ecc7bb8d20eb1bde24d596115270e266be1e7164009c28c841c89120222e5594b8929bafb7b55ec47e5b1db2e1274b6e0c9a8f24ba1087832d4dc8acefc857be26848f2b074fdaa42fe", - "created_at": "2025-02-12T13:52:59.060649Z", + "id": "80f7c2fe7eba463f99fd62d7bc0e0333a58427598b4e26f1b55cd6f3c1cd32831778f4e869b5fef18cb4f9f0ccc7172de207a642e281aeab36a3565f5e57fca13c34b0df6955c2708c17206919a83734", + "created_at": "2025-03-22T19:01:18.93624Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "805fbd71d240360c14b785cd89f59846acf40e15514e3cf89efdbc30f360999873c4713b6fd6f192072c075c41243b82f8b89ea4880f7694f72815934477e7cf8d80c303d7bb25c8c0730e6268a1e3d2", - "created_at": "2025-02-12T10:55:34.960205Z", + "id": "803192da84414d63ee9ff14a2d6eb2094f5fb0aaae589db1fc031baeed386d2d7e682e56cff2417f16fe5468b91cf77cd3121a6c4758ad24e385b962125ffee6d4dd236d792177154e554b728740f0d8", + "created_at": "2025-03-19T14:17:02.821412Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "2716b6f605e691bf7dc7d88d1a45968dd6807ed91dbbf793777d152f796994b0", - "created_at": "2025-02-11T01:03:34.75674Z", + "id": "8030b214266e8b3f4213b7020b09ba1a3ddfc2183c8d0585bc219704d67e2e386e094f7f734e8a9d000198321f92d57acda674d02e10dda7590724869901dd7af4e948ff653b7b236af9aad922e49ae2", + "created_at": "2025-03-19T10:34:24.727232Z", "user_id": "luke_skywalker" }, { "push_provider": "apn", "push_provider_name": "APN-Configuration", - "id": "809975048776300710e9bf304eabc27813c3042266dc085420362ea254ebeccea39666720bc25ffc5a022b79062f1e5f1f1de6d1565850cc78ba3c9df1a810e7d4128b73c2f76210189febf4ee0df9b1", - "created_at": "2025-02-10T01:52:00.239203Z", + "id": "fbf3e2ca51e25ad7056dc49d0b5a6ace35e72e3fd3b276586e4b6d2151539dd5", + "created_at": "2025-03-18T07:01:39.975689Z", "user_id": "luke_skywalker" } ], "invisible": false, - "birthland": "Tatooine", "team": "test", "type": "team", - "pando": "{\"speciality\":\"ios engineer\"}" + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "attachments": [ @@ -231,9 +237,9 @@ }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:15:56.802706Z", - "updated_at": "2025-03-15T00:15:56.802706Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:26.330954Z", + "updated_at": "2025-04-15T00:16:26.330954Z", "shadowed": false, "mentioned_users": [ @@ -251,21 +257,19 @@ "id": "luke_skywalker", "name": "Luke Skywalker", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "language": "id", + "language": "zh", "role": "admin", "teams": [ ], "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", + "updated_at": "2025-04-09T08:51:24.319893Z", "banned": false, "online": true, - "last_active": "2025-03-15T00:15:52.376423417Z", + "last_active": "2025-04-15T00:16:21.951683176Z", "blocked_user_ids": [ ], - "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine", "privacy_settings": { "read_receipts": { "enabled": false @@ -275,10 +279,12 @@ } }, "team": "test", - "type": "team" + "type": "team", + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "watcher_count": 1, - "unread_count": 0, - "total_unread_count": 0, - "unread_channels": 0 + "unread_count": 5, + "total_unread_count": 5, + "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 3faa0149007..2c705a8efe4 100644 --- a/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_reaction.json +++ b/TestTools/StreamChatTestMockServer/Fixtures/JSONs/ws_reaction.json @@ -1,29 +1,30 @@ { "type": "reaction.new", - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "channel_id": "277d1327-0afd-4d76-87e8-fac1b3231ba7", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "channel_id": "3309bb37-ca72-4606-be98-5fc3a4c01d5a", "channel_type": "messaging", "message": { - "id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "text": "Test", "html": "

Test

\n", "type": "regular", "user": { "id": "luke_skywalker", "role": "admin", + "teams_role": null, "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", - "last_active": "2025-03-15T00:15:52.376423417Z", - "last_engaged_at": "2025-03-14T03:59:07.699103Z", + "updated_at": "2025-04-09T08:51:24.319893Z", + "last_active": "2025-04-15T00:16:21.951683176Z", + "last_engaged_at": "2025-04-14T00:27:28.9085Z", "banned": false, "online": true, - "language": "id", + "language": "zh", + "name": "Luke Skywalker", "team": "test", "type": "team", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine", - "name": "Luke Skywalker" + "birthland": "Tatooine" }, "restricted_visibility": [ @@ -33,18 +34,19 @@ ], "latest_reactions": [ { - "message_id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "message_id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", "role": "admin", + "teams_role": null, "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", - "last_active": "2025-03-15T00:15:52.376423417Z", - "last_engaged_at": "2025-03-14T03:59:07.699103Z", + "updated_at": "2025-04-09T08:51:24.319893Z", + "last_active": "2025-04-15T00:16:21.951683176Z", + "last_engaged_at": "2025-04-14T00:27:28.9085Z", "banned": false, "online": true, - "language": "id", + "language": "zh", "birthland": "Tatooine", "name": "Luke Skywalker", "team": "test", @@ -54,8 +56,8 @@ }, "type": "like", "score": 1, - "created_at": "2025-03-15T00:15:57.332808Z", - "updated_at": "2025-03-15T00:15:57.332808Z" + "created_at": "2025-04-15T00:16:26.873704Z", + "updated_at": "2025-04-15T00:16:26.873704Z" } ], "own_reactions": [ @@ -71,15 +73,15 @@ "like": { "count": 1, "sum_scores": 1, - "first_reaction_at": "2025-03-15T00:15:57.332808Z", - "last_reaction_at": "2025-03-15T00:15:57.332808Z" + "first_reaction_at": "2025-04-15T00:16:26.873704Z", + "last_reaction_at": "2025-04-15T00:16:26.873704Z" } }, "reply_count": 0, "deleted_reply_count": 0, - "cid": "messaging:277d1327-0afd-4d76-87e8-fac1b3231ba7", - "created_at": "2025-03-15T00:15:56.802706Z", - "updated_at": "2025-03-15T00:15:57.343296Z", + "cid": "messaging:3309bb37-ca72-4606-be98-5fc3a4c01d5a", + "created_at": "2025-04-15T00:16:26.330954Z", + "updated_at": "2025-04-15T00:16:26.883226Z", "shadowed": false, "mentioned_users": [ @@ -91,47 +93,49 @@ "pin_expires": null }, "reaction": { - "message_id": "264dfdcf-4cbf-4ba4-afd4-eb622e7b7a36", + "message_id": "91fbbac1-3d77-45e6-bfa6-a32fad9b5893", "user_id": "luke_skywalker", "user": { "id": "luke_skywalker", "role": "admin", + "teams_role": null, "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", - "last_active": "2025-03-15T00:15:52.376423417Z", - "last_engaged_at": "2025-03-14T03:59:07.699103Z", + "updated_at": "2025-04-09T08:51:24.319893Z", + "last_active": "2025-04-15T00:16:21.951683176Z", + "last_engaged_at": "2025-04-14T00:27:28.9085Z", "banned": false, "online": true, - "language": "id", - "birthland": "Tatooine", + "language": "zh", "name": "Luke Skywalker", "team": "test", "type": "team", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", - "pando": "{\"speciality\":\"ios engineer\"}" + "pando": "{\"speciality\":\"ios engineer\"}", + "birthland": "Tatooine" }, "type": "like", "score": 1, - "created_at": "2025-03-15T00:15:57.332808Z", - "updated_at": "2025-03-15T00:15:57.332808Z" + "created_at": "2025-04-15T00:16:26.873704Z", + "updated_at": "2025-04-15T00:16:26.873704Z" }, "user": { "id": "luke_skywalker", "role": "admin", + "teams_role": null, "created_at": "2024-04-04T09:26:11.805899Z", - "updated_at": "2025-03-04T17:42:53.930104Z", - "last_active": "2025-03-15T00:15:52.376423417Z", - "last_engaged_at": "2025-03-14T03:59:07.699103Z", + "updated_at": "2025-04-09T08:51:24.319893Z", + "last_active": "2025-04-15T00:16:21.951683176Z", + "last_engaged_at": "2025-04-14T00:27:28.9085Z", "banned": false, "online": true, - "language": "id", - "name": "Luke Skywalker", - "team": "test", - "type": "team", + "language": "zh", "image": "https://vignette.wikia.nocookie.net/starwars/images/2/20/LukeTLJ.jpg", "pando": "{\"speciality\":\"ios engineer\"}", - "birthland": "Tatooine" + "birthland": "Tatooine", + "name": "Luke Skywalker", + "team": "test", + "type": "team" }, - "channel_last_message_at": "2025-03-15T00:15:56.802706Z", - "created_at": "2025-03-15T00:15:57.35313543Z" + "channel_last_message_at": "2025-04-15T00:16:26.330954Z", + "created_at": "2025-04-15T00:16:26.891868316Z" } \ No newline at end of file diff --git a/TestTools/StreamChatTestTools/Mocks/StreamChat/Workers/CurrentUserUpdater_Mock.swift b/TestTools/StreamChatTestTools/Mocks/StreamChat/Workers/CurrentUserUpdater_Mock.swift index d0b7986d7be..9889c710bc3 100644 --- a/TestTools/StreamChatTestTools/Mocks/StreamChat/Workers/CurrentUserUpdater_Mock.swift +++ b/TestTools/StreamChatTestTools/Mocks/StreamChat/Workers/CurrentUserUpdater_Mock.swift @@ -13,6 +13,7 @@ final class CurrentUserUpdater_Mock: CurrentUserUpdater { @Atomic var updateUserData_userExtraData: [String: RawJSON]? @Atomic var updateUserData_privacySettings: UserPrivacySettings? @Atomic var updateUserData_unset: Set? + @Atomic var updateUserData_teamsRole: [TeamId: UserRole]? @Atomic var updateUserData_completion: ((Error?) -> Void)? @Atomic var addDevice_id: DeviceId? @@ -34,13 +35,15 @@ final class CurrentUserUpdater_Mock: CurrentUserUpdater { @Atomic var deleteAllLocalAttachmentDownloads_completion: ((Error?) -> Void)? @Atomic var deleteAllLocalAttachmentDownloads_completion_result: Result? + @Atomic var loadAllUnreads_completion: ((Result) -> Void)? + override func updateUserData( currentUserId: UserId, name: String?, imageURL: URL?, privacySettings: UserPrivacySettings?, role: UserRole?, - teamsRole: [String: String]?, + teamsRole: [TeamId: UserRole]?, userExtraData: [String: RawJSON]?, unset: Set, completion: ((Error?) -> Void)? = nil @@ -51,6 +54,7 @@ final class CurrentUserUpdater_Mock: CurrentUserUpdater { updateUserData_userExtraData = userExtraData updateUserData_privacySettings = privacySettings updateUserData_unset = unset + updateUserData_teamsRole = teamsRole updateUserData_completion = completion } @@ -88,6 +92,10 @@ final class CurrentUserUpdater_Mock: CurrentUserUpdater { deleteAllLocalAttachmentDownloads_completion_result?.invoke(with: completion) } + override func loadAllUnreads(completion: @escaping ((Result) -> Void)) { + loadAllUnreads_completion = completion + } + // Cleans up all recorded values func cleanUp() { updateUserData_currentUserId = nil @@ -114,6 +122,8 @@ final class CurrentUserUpdater_Mock: CurrentUserUpdater { deleteAllLocalAttachmentDownloads_completion = nil deleteAllLocalAttachmentDownloads_completion_result = nil + + loadAllUnreads_completion = nil } override func markAllRead(completion: ((Error?) -> Void)? = nil) { diff --git a/Tests/StreamChatTests/Controllers/ChannelListController/ChannelListController_Tests.swift b/Tests/StreamChatTests/Controllers/ChannelListController/ChannelListController_Tests.swift index 1b135976289..2c987e597e6 100644 --- a/Tests/StreamChatTests/Controllers/ChannelListController/ChannelListController_Tests.swift +++ b/Tests/StreamChatTests/Controllers/ChannelListController/ChannelListController_Tests.swift @@ -1088,14 +1088,14 @@ final class ChannelListController_Tests: XCTestCase { // When all the channel ids are in DB. try assertFilterPredicate( - .in(.id, values: expectedCids.map(\.rawValue)), + .in(.cid, values: expectedCids), channelsInDB: expectedChannels + unexpectedChannels, expectedResult: expectedCids ) // When not all the channel ids are in DB. try assertFilterPredicate( - .in(.id, values: expectedCids.map(\.rawValue)), + .in(.cid, values: expectedCids), channelsInDB: expectedChannels.dropLast() + unexpectedChannels, expectedResult: [cid1, cid2] ) @@ -1489,7 +1489,7 @@ final class ChannelListController_Tests: XCTestCase { ) } - func test_filterPredicate_inWithArrayOfIds_returnsExpectedResults() throws { + func test_filterPredicate_inWithArrayOfCids_returnsExpectedResults() throws { let chatIds: [String] = [ "suggestions-63986de56549624f314b75cb", "suggestions-6ukh3986de56549624f314b75cjkhagfdkjhab", @@ -1500,7 +1500,7 @@ final class ChannelListController_Tests: XCTestCase { let channelIds = chatIds.map { ChannelId(type: .custom("daisy-dashboard"), id: $0) } try assertFilterPredicate( - .in(.id, values: channelIds.map(\.rawValue)), + .in(.cid, values: channelIds), channelsInDB: [ .dummy(channel: .dummy(cid: channelIds[0])), .dummy(channel: .dummy(cid: channelIds[1])), @@ -1632,6 +1632,51 @@ final class ChannelListController_Tests: XCTestCase { ) } + func test_filterPredicate_sortedByHasUnread_returnsExpectedResults() throws { + let cid1 = ChannelId.unique + let cid2 = ChannelId.unique + let cid3 = ChannelId.unique + let cid4 = ChannelId.unique + let currentUserId = UserId.unique + let createdAt = Date() + + try assertFilterPredicate( + .in(.cid, values: [cid1, cid2, cid3, cid4]), + sort: [ + .init(key: .hasUnread, isAscending: false), + .init(key: .createdAt, isAscending: false) + ], + currentUserId: currentUserId, + channelsInDB: [ + .dummy( + channel: .dummy(cid: cid1, createdAt: createdAt.addingTimeInterval(100)), + channelReads: [ + .init( + user: .dummy(userId: currentUserId), + lastReadAt: .unique, + lastReadMessageId: nil, + unreadMessagesCount: 3 + ) + ] + ), + .dummy(channel: .dummy(cid: cid3, createdAt: createdAt.addingTimeInterval(200))), + .dummy(channel: .dummy(cid: cid4, createdAt: createdAt.addingTimeInterval(300))), + .dummy( + channel: .dummy(cid: cid2, createdAt: createdAt), + channelReads: [ + .init( + user: .dummy(userId: currentUserId), + lastReadAt: .unique, + lastReadMessageId: nil, + unreadMessagesCount: 20 + ) + ] + ) + ], + expectedResult: [cid2, cid1, cid3, cid4] + ) + } + func test_filterPredicate_muted_returnsExpectedResults() throws { let cid1 = ChannelId.unique let userId = memberId @@ -1703,6 +1748,23 @@ final class ChannelListController_Tests: XCTestCase { ) } + func test_filterPredicate_id_returnsExpectedResults() throws { + let cid1 = ChannelId(type: .commerce, id: "123") + let cid2 = ChannelId(type: .livestream, id: "123") + + try assertFilterPredicate( + .equal(.id, to: "123"), + channelsInDB: [ + .dummy(channel: .dummy(cid: cid1)), + .dummy(channel: .dummy(cid: .init(type: .commerce, id: "123123"))), + .dummy(channel: .dummy()), + .dummy(channel: .dummy()), + .dummy(channel: .dummy(cid: cid2)) + ], + expectedResult: [cid1, cid2] + ) + } + // MARK: - Private Helpers private func assertFilterPredicate( diff --git a/Tests/StreamChatTests/Controllers/CurrentUserController/CurrentUserController_Tests.swift b/Tests/StreamChatTests/Controllers/CurrentUserController/CurrentUserController_Tests.swift index 1bddeecf597..6c886bab301 100644 --- a/Tests/StreamChatTests/Controllers/CurrentUserController/CurrentUserController_Tests.swift +++ b/Tests/StreamChatTests/Controllers/CurrentUserController/CurrentUserController_Tests.swift @@ -299,7 +299,9 @@ final class CurrentUserController_Tests: XCTestCase { privacySettings: .init( typingIndicators: .init(enabled: true), readReceipts: .init(enabled: true) ), - userExtraData: [:] + teamsRole: ["teamId": "role"], + userExtraData: [:], + unsetProperties: ["image"] ) // Assert udpater is called with correct data @@ -307,6 +309,8 @@ final class CurrentUserController_Tests: XCTestCase { XCTAssertEqual(env.currentUserUpdater.updateUserData_imageURL, expectedImageUrl) XCTAssertEqual(env.currentUserUpdater.updateUserData_privacySettings?.typingIndicators?.enabled, true) XCTAssertEqual(env.currentUserUpdater.updateUserData_privacySettings?.readReceipts?.enabled, true) + XCTAssertEqual(env.currentUserUpdater.updateUserData_unset, ["image"]) + XCTAssertEqual(env.currentUserUpdater.updateUserData_teamsRole, ["teamId": "role"]) XCTAssertNotNil(env.currentUserUpdater.updateUserData_completion) } @@ -777,6 +781,98 @@ final class CurrentUserController_Tests: XCTestCase { env.currentUserUpdater.deleteAllLocalAttachmentDownloads_completion?(nil) wait(for: [expectation], timeout: defaultTimeout) } + + // MARK: - Load All Unreads + + func test_loadAllUnreads_callsUpdaterCorrectly() { + // Simulate having a current user + client.authenticationRepository.setMockToken() + + // Call loadAllUnreads + var receivedUnreads: CurrentUserUnreads? + let exp = expectation(description: "loadAllUnreads called") + controller.loadAllUnreads { result in + receivedUnreads = try? result.get() + exp.fulfill() + } + + // Simulate successful response + let expectedUnreads = CurrentUserUnreads( + totalUnreadMessagesCount: 10, + totalUnreadChannelsCount: 5, + totalUnreadThreadsCount: 3, + unreadChannels: [ + UnreadChannel( + channelId: .init(type: .messaging, id: "channel1"), + unreadMessagesCount: 5, + lastRead: Date() + ) + ], + unreadThreads: [ + UnreadThread( + parentMessageId: "thread1", + unreadRepliesCount: 3, + lastRead: Date(), + lastReadMessageId: "lastRead1" + ) + ], + unreadChannelsByType: [ + UnreadChannelByType( + channelType: .messaging, + unreadChannelCount: 5, + unreadMessagesCount: 10 + ) + ] + ) + + // Simulate completion with success + env.currentUserUpdater.loadAllUnreads_completion?(.success(expectedUnreads)) + + wait(for: [exp], timeout: defaultTimeout) + + // Assert the result is correct + XCTAssertEqual(receivedUnreads?.totalUnreadMessagesCount, expectedUnreads.totalUnreadMessagesCount) + } + + func test_loadAllUnreads_propagatesError() { + // Simulate having a current user + client.authenticationRepository.setMockToken() + + // Call loadAllUnreads + var receivedError: Error? + let exp = expectation(description: "loadAllUnreads called") + controller.loadAllUnreads { [callbackQueueID] result in + AssertTestQueue(withId: callbackQueueID) + receivedError = result.error + exp.fulfill() + } + + // Simulate error response + let expectedError = TestError() + env.currentUserUpdater.loadAllUnreads_completion?(.failure(expectedError)) + + wait(for: [exp], timeout: defaultTimeout) + + // Assert error is received correctly + XCTAssertEqual(receivedError as? TestError, expectedError) + } + + func test_loadAllUnreads_keepsControllerAlive() { + // Simulate having a current user + client.authenticationRepository.setMockToken() + + // Create weak reference to controller + weak var weakController = controller + + // Call loadAllUnreads + controller.loadAllUnreads { _ in } + + // Try to deallocate controller + controller = nil + + // Verify controller is still alive due to the async operation + AssertAsync.staysTrue(weakController != nil) + } } private class TestEnvironment { diff --git a/Tests/StreamChatTests/Query/ChannelListFilterScope_Tests.swift b/Tests/StreamChatTests/Query/ChannelListFilterScope_Tests.swift index a16a605c0cc..437ac8e6ee8 100644 --- a/Tests/StreamChatTests/Query/ChannelListFilterScope_Tests.swift +++ b/Tests/StreamChatTests/Query/ChannelListFilterScope_Tests.swift @@ -38,7 +38,7 @@ final class ChannelListFilterScope_Tests: XCTestCase { func test_filterKeys_haveExpectedKeyPathValueMapper() { XCTAssertEqual(Key.cid.keyPathString, "cid") - XCTAssertEqual(Key.id.keyPathString, "cid") + XCTAssertEqual(Key.id.keyPathString, "id") XCTAssertEqual(Key.name.keyPathString, "name") XCTAssertEqual(Key.imageURL.keyPathString, "imageURL") XCTAssertEqual(Key.type.keyPathString, "typeRawValue") diff --git a/Tests/StreamChatTests/Query/Sorting/ChannelListSortingKey_Tests.swift b/Tests/StreamChatTests/Query/Sorting/ChannelListSortingKey_Tests.swift index 5de14823660..fac4fd5a5a1 100644 --- a/Tests/StreamChatTests/Query/Sorting/ChannelListSortingKey_Tests.swift +++ b/Tests/StreamChatTests/Query/Sorting/ChannelListSortingKey_Tests.swift @@ -74,9 +74,10 @@ final class ChannelListSortingKey_Tests: XCTestCase { XCTAssertEqual(key.remoteKey, "cid") XCTAssertFalse(key.requiresRuntimeSorting) case .hasUnread: - XCTAssertNil(key.sortDescriptor(isAscending: true)) + XCTAssertNotNil(key.sortDescriptor(isAscending: false)) + XCTAssertEqual(key.localKey, "hasUnreadSorting") XCTAssertEqual(key.remoteKey, "has_unread") - XCTAssertTrue(key.requiresRuntimeSorting) + XCTAssertFalse(key.requiresRuntimeSorting) case .unreadCount: XCTAssertNotNil(key.sortDescriptor(isAscending: true)) XCTAssertEqual(key.remoteKey, "unread_count") diff --git a/Tests/StreamChatTests/Workers/CurrentUserUpdater_Tests.swift b/Tests/StreamChatTests/Workers/CurrentUserUpdater_Tests.swift index 4174adc3c87..7771b46b5d2 100644 --- a/Tests/StreamChatTests/Workers/CurrentUserUpdater_Tests.swift +++ b/Tests/StreamChatTests/Workers/CurrentUserUpdater_Tests.swift @@ -69,6 +69,7 @@ final class CurrentUserUpdater_Tests: XCTestCase { role: expectedRole, teamsRole: ["ios": "guest"], userExtraData: nil, + unset: ["image"], completion: { error in XCTAssertNil(error) } @@ -104,7 +105,7 @@ final class CurrentUserUpdater_Tests: XCTestCase { teamsRole: ["ios": "guest"], extraData: [:] ), - unset: [] + unset: ["image"] ) XCTAssertEqual(apiClient.request_endpoint, AnyEndpoint(expectedEndpoint)) } @@ -122,6 +123,7 @@ final class CurrentUserUpdater_Tests: XCTestCase { imageURL: nil, privacySettings: nil, role: nil, + teamsRole: nil, userExtraData: nil, unset: ["image"], completion: { _ in } @@ -167,7 +169,9 @@ final class CurrentUserUpdater_Tests: XCTestCase { readReceipts: .init(enabled: false) ), role: expectedRole, + teamsRole: nil, userExtraData: nil, + unset: [], completion: { _ in completionCalled = true } @@ -218,7 +222,9 @@ final class CurrentUserUpdater_Tests: XCTestCase { imageURL: nil, privacySettings: nil, role: nil, - userExtraData: [:], + teamsRole: nil, + userExtraData: nil, + unset: [], completion: { error in completionError = error } @@ -251,7 +257,9 @@ final class CurrentUserUpdater_Tests: XCTestCase { imageURL: nil, privacySettings: nil, role: nil, + teamsRole: nil, userExtraData: nil, + unset: [], completion: $0 ) } @@ -279,7 +287,9 @@ final class CurrentUserUpdater_Tests: XCTestCase { imageURL: nil, privacySettings: nil, role: nil, + teamsRole: nil, userExtraData: nil, + unset: [], completion: { error in completionError = error } @@ -712,6 +722,83 @@ final class CurrentUserUpdater_Tests: XCTestCase { } } + // MARK: - Load All Unreads + + func test_loadAllUnreads_makesCorrectAPICall() { + // Call loadAllUnreads + var receivedUnreads: CurrentUserUnreads? + currentUserUpdater.loadAllUnreads { result in + receivedUnreads = try? result.get() + } + + // Assert request is made to the correct endpoint + XCTAssertNotNil(apiClient.request_endpoint) + let endpoint = apiClient.request_endpoint + XCTAssertEqual(endpoint?.path.value, "unread") + XCTAssertEqual(endpoint?.method, .get) + + // Create test payload for the response + let payload = CurrentUserUnreadsPayload( + totalUnreadCount: 10, + totalUnreadThreadsCount: 3, + channels: [ + CurrentUserChannelUnreadPayload( + channelId: .init(type: .messaging, id: "channel1"), + unreadCount: 5, + lastRead: Date() + ), + CurrentUserChannelUnreadPayload( + channelId: .init(type: .messaging, id: "channel2"), + unreadCount: 5, + lastRead: Date() + ) + ], + channelType: [ + ChannelUnreadByTypePayload( + channelType: .messaging, + channelCount: 2, + unreadCount: 10 + ) + ], + threads: [ + CurrentUserThreadUnreadPayload( + parentMessageId: "thread1", + lastRead: Date(), + lastReadMessageId: "message1", + unreadCount: 3 + ) + ] + ) + + // Simulate API response + apiClient.test_simulateResponse(.success(payload)) + + // Verify the result is correctly transformed into the model + XCTAssertEqual(receivedUnreads?.totalUnreadMessagesCount, payload.totalUnreadCount) + XCTAssertEqual(receivedUnreads?.totalUnreadChannelsCount, payload.channels.count) + XCTAssertEqual(receivedUnreads?.totalUnreadThreadsCount, payload.totalUnreadThreadsCount) + XCTAssertEqual(receivedUnreads?.unreadChannels.count, payload.channels.count) + XCTAssertEqual(receivedUnreads?.unreadThreads.count, payload.threads.count) + XCTAssertEqual(receivedUnreads?.unreadChannelsByType.count, payload.channelType.count) + } + + func test_loadAllUnreads_propagatesNetworkError() { + // Call loadAllUnreads + var receivedError: Error? + currentUserUpdater.loadAllUnreads { result in + if case let .failure(error) = result { + receivedError = error + } + } + + // Simulate API error + let expectedError = TestError() + apiClient.test_simulateResponse(Result.failure(expectedError)) + + // Verify the error is propagated + XCTAssertEqual(receivedError as? TestError, expectedError) + } + // MARK: - private func setUpDownloadedAttachment(with payload: AnyAttachmentPayload, messageId: MessageId = .unique, cid: ChannelId = .unique) throws -> AttachmentId { diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/ChatMessageSearchVC_Tests.swift b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/ChatMessageSearchVC_Tests.swift index 1a7a5012f10..0a902e731e2 100644 --- a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/ChatMessageSearchVC_Tests.swift +++ b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/ChatMessageSearchVC_Tests.swift @@ -9,6 +9,15 @@ import StreamSwiftTestHelpers import XCTest final class ChatMessageSearchVC_Tests: XCTestCase { + /// Static setUp() is only run once. Which is what we want in this case to preload the images. + override class func setUp() { + /// Dummy snapshot to preload the TestImages.yoda.url image + /// This was the only workaround to make sure the image always appears in the snapshots. + let view = UIImageView(frame: .init(center: .zero, size: .init(width: 100, height: 100))) + Components.default.imageLoader.loadImage(into: view, from: TestImages.yoda.url) + AssertSnapshot(view, variants: [.defaultLight]) + } + var mockedClient: ChatClient_Mock! var vc: ChatMessageSearchVC! var mockedMessageSearchController: ChatMessageSearchController_Mock! @@ -62,17 +71,17 @@ final class ChatMessageSearchVC_Tests: XCTestCase { .mock( cid: channelId, text: "Some message 1", - author: .mock(id: .unique, name: "Yoda") + author: .mock(id: .unique, name: "Yoda", imageURL: TestImages.yoda.url) ), .mock( cid: channelId, text: "Some message 2", - author: .mock(id: .unique, name: "Vader") + author: .mock(id: .unique, name: "Vader", imageURL: TestImages.yoda.url) ), .mock( cid: channelId, text: "Some message 3", - author: .mock(id: .unique, name: "R2") + author: .mock(id: .unique, name: "R2", imageURL: TestImages.yoda.url) ) ] diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/setUp.default-light.png b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/setUp.default-light.png new file mode 100644 index 00000000000..8d79a3e2dc9 Binary files /dev/null and b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/setUp.default-light.png differ diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.default-light.png b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.default-light.png index 21d912564d0..a094c9f7d9b 100644 Binary files a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.default-light.png and b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.default-light.png differ diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.extraExtraExtraLarge-light.png b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.extraExtraExtraLarge-light.png index 3df8a084234..ffc8f725a5c 100644 Binary files a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.extraExtraExtraLarge-light.png and b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.extraExtraExtraLarge-light.png differ diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.rightToLeftLayout-default.png b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.rightToLeftLayout-default.png index 990cdb1c0d9..724f2953911 100644 Binary files a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.rightToLeftLayout-default.png and b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.rightToLeftLayout-default.png differ diff --git a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.small-dark.png b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.small-dark.png index 2388c6754f6..0c8cd0939ca 100644 Binary files a/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.small-dark.png and b/Tests/StreamChatUITests/SnapshotTests/ChatChannelList/Search/__Snapshots__/ChatMessageSearchVC_Tests/test_defaultAppearance.small-dark.png differ diff --git a/yeetd-normal.pkg.1 b/yeetd-normal.pkg.1 new file mode 100644 index 00000000000..e7fe6d35adc Binary files /dev/null and b/yeetd-normal.pkg.1 differ