Chat room listing

This commit is contained in:
2025-10-30 01:28:36 +08:00
parent b57caf56db
commit 44dbcfdc94
6 changed files with 680 additions and 4 deletions

View File

@@ -1,4 +1,3 @@
//
// Models.swift
// WatchRunner Watch App
//
@@ -88,7 +87,7 @@ enum DiscoveryItemData: Codable {
}
self = .unknown
}
func encode(to encoder: Encoder) throws {
// Not needed for decoding
}
@@ -246,3 +245,86 @@ struct SnAccountStatus: Codable {
let updatedAt: Date
let deletedAt: Date?
}
// MARK: - Chat Models
struct SnChatRoom: Codable, Identifiable {
let id: String
let name: String?
let description: String?
let type: Int
let isPublic: Bool
let isCommunity: Bool
let picture: SnCloudFile?
let background: SnCloudFile?
let realmId: String?
let realm: SnRealm?
let createdAt: Date
let updatedAt: Date
let deletedAt: Date?
let members: [SnChatMember]?
}
struct SnChatMessage: Codable, Identifiable {
let id: String
let type: String
let content: String?
let nonce: String?
let meta: [String: AnyCodable]
let membersMentioned: [String]
let editedAt: Date?
let attachments: [SnCloudFile]
let reactions: [SnChatReaction]
let repliedMessageId: String?
let forwardedMessageId: String?
let senderId: String
let sender: SnChatMember
let chatRoomId: String
let createdAt: Date
let updatedAt: Date
let deletedAt: Date?
}
struct SnChatReaction: Codable, Identifiable {
let id: String
let messageId: String
let senderId: String
let sender: SnChatMember
let symbol: String
let attitude: Int
let createdAt: Date
let updatedAt: Date
let deletedAt: Date?
}
struct SnChatMember: Codable, Identifiable {
let id: String
let chatRoomId: String
let chatRoom: SnChatRoom?
let accountId: String
let account: SnAccount
let nick: String?
let role: Int
let notify: Int
let joinedAt: Date?
let breakUntil: Date?
let timeoutUntil: Date?
let isBot: Bool
let status: SnAccountStatus?
let createdAt: Date
let updatedAt: Date
let deletedAt: Date?
}
struct SnChatSummary: Codable {
let unreadCount: Int
let lastMessage: SnChatMessage?
}
struct ChatRoomsResponse {
let rooms: [SnChatRoom]
}
struct ChatInvitesResponse {
let invites: [SnChatMember]
}