Skip to content
Snippets Groups Projects
Select Git revision
  • 362a4bc9928dd8edadd66da6cd48bda5763a0be0
  • release default protected
  • 11-22-implement-kv-interface-defined-in-collectiveversionedkvgo
  • hotfix/TestHostPool_UpdateNdf_AddFilter
  • XX-4719/announcementChannels
  • xx-4717/logLevel
  • jonah/noob-channel
  • master protected
  • XX-4707/tagDiskJson
  • xx-4698/notification-retry
  • hotfix/notifylockup
  • syncNodes
  • hotfix/localCB
  • XX-4677/NewChanManagerMobile
  • XX-4689/DmSync
  • duplicatePrefix
  • XX-4601/HavenInvites
  • finalizedUICallbacks
  • XX-4673/AdminKeySync
  • debugNotifID
  • anne/test
  • v4.7.5
  • v4.7.4
  • v4.7.3
  • v4.7.2
  • v4.7.1
  • v4.6.3
  • v4.6.1
  • v4.5.0
  • v4.4.4
  • v4.3.11
  • v4.3.8
  • v4.3.7
  • v4.3.6
  • v4.3.5
  • v4.2.0
  • v4.3.0
  • v4.3.4
  • v4.3.3
  • v4.3.2
  • v4.3.1
41 results

messagePart_test.go

Blame
  • ContactChatInfo.swift 3.24 KiB
    /// Represents chat with a contact
    public struct ContactChatInfo: Identifiable, Equatable, Hashable, Codable {
      /// Unique identifier of contact chat
      public typealias ID = Contact.ID
    
      /// Instantiate contact chat representation
      ///
      /// - Parameters:
      ///   - contact: Contact
      ///   - lastMessage: Last message sent to or received from the contact
      ///   - unreadCount: Number of unread messages in the chat
      public init(
        contact: Contact,
        lastMessage: Message,
        unreadCount: Int
      ) {
        self.contact = contact
        self.lastMessage = lastMessage
        self.unreadCount = unreadCount
      }
    
      /// Unique identifier of contact chat
      ///
      /// Matches contact's ID
      public var id: ID { contact.id }
    
      /// Contact
      public var contact: Contact
    
      /// Last message sent to or received from the contact
      public var lastMessage: Message
    
      /// Number of unread messages in the chat
      public var unreadCount: Int
    }
    
    extension ContactChatInfo {
      /// Fetch contact chat infos operation
      public typealias Fetch = XXModels.Fetch<ContactChatInfo, Query>
    
      /// Fetch contact chat infos operation publisher
      public typealias FetchPublisher = XXModels.FetchPublisher<ContactChatInfo, Query>
    
      /// Query used for fetching chat infos
      public struct Query: Equatable {
        /// Instantiate query
        ///
        /// - Parameters:
        ///   - userId: Current user's contact ID.
        ///   - authStatus: Filter by other contact auth status.
        ///     If set, only chats with contacts that have any of the provided
        ///     auth statuses will be included.
        ///     If `nil` (default), the filter is not used.
        ///   - isBlocked: Filter by other contact's `isBlocked` status.
        ///     If `true`, only chats with blocked contacts are included.
        ///     If `false`, only chats with non-blocked contacts are included.
        ///     If `nil` (default), the filter is not used.
        ///   - isBanned: Filter by other contact's `isBanned` status
        ///     If `true`, only chats with banned contacts are included.
        ///     If `false`, only chats with non-banned contacts are included.
        ///     If `nil` (default), the filter is not used.
        public init(
          userId: Contact.ID,
          authStatus: Set<Contact.AuthStatus>? = nil,
          isBlocked: Bool? = nil,
          isBanned: Bool? = nil
        ) {
          self.userId = userId
          self.authStatus = authStatus
          self.isBlocked = isBlocked
          self.isBanned = isBanned
        }
    
        /// Current user's contact ID
        public var userId: Contact.ID
    
        /// Filter by other contact auth status
        ///
        /// If set, only chats with contacts that have any of the provided
        /// auth statuses will be included.
        /// If `nil`, the filter is not used.
        public var authStatus: Set<Contact.AuthStatus>?
    
        /// Filter by other contact's `isBlocked` status
        ///
        /// If `true`, only chats with blocked contacts are included.
        /// If `false`, only chats with non-blocked contacts are included.
        /// If `nil`, the filter is not used.
        public var isBlocked: Bool?
    
        /// Filter by other contact's `isBanned` status
        ///
        /// If `true`, only chats with banned contacts are included.
        /// If `false`, only chats with non-banned contacts are included.
        /// If `nil`, the filter is not used.
        public var isBanned: Bool?
      }
    }