Skip to content

Commit 3541de1

Browse files
committed
no message
1 parent 047f46a commit 3541de1

1 file changed

Lines changed: 23 additions & 6 deletions

File tree

sdks/swift/Sources/DittoChatCore/DittoChat.swift

Lines changed: 23 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,26 +63,26 @@ public struct ChatConfig {
6363
public var retentionPolicy: ChatRetentionPolicy
6464
public var usersCollection: String
6565
public var userId: String?
66+
public var userEmail: String?
6667
public var acceptLargeImages: Bool
6768
public var primaryColor: String?
68-
public var hasAdminPrivileges: Bool
6969

7070
public init(
7171
ditto: Ditto,
7272
retentionPolicy: ChatRetentionPolicy = .init(days: 30),
7373
usersCollection: String = "users",
7474
userId: String? = nil,
75+
userEmail: String? = nil,
7576
acceptLargeImages: Bool = true,
76-
primaryColor: String? = nil,
77-
hasAdminPrivileges: Bool = false
77+
primaryColor: String? = nil
7878
) {
7979
self.ditto = ditto
8080
self.retentionPolicy = retentionPolicy
8181
self.usersCollection = usersCollection
8282
self.userId = userId
83+
self.userEmail = userEmail
8384
self.acceptLargeImages = acceptLargeImages
8485
self.primaryColor = primaryColor
85-
self.hasAdminPrivileges = hasAdminPrivileges
8686
}
8787
}
8888

@@ -101,7 +101,7 @@ public class DittoChat: DittoSwiftChat, ObservableObject {
101101
public var retentionPolicy: ChatRetentionPolicy = .init(days: 30)
102102
public var acceptLargeImages: Bool
103103
public var primaryColor: String?
104-
public var hasAdminPrivileges: Bool
104+
public var hasAdminPrivileges: Bool = false
105105

106106
private var localStore: LocalDataInterface
107107
internal var p2pStore: DittoDataInterface
@@ -110,14 +110,24 @@ public class DittoChat: DittoSwiftChat, ObservableObject {
110110
let localStore: LocalService = LocalService()
111111
self.acceptLargeImages = config.acceptLargeImages
112112
self.primaryColor = config.primaryColor
113-
self.hasAdminPrivileges = config.hasAdminPrivileges
114113
self.localStore = localStore
115114
self.p2pStore = DittoService(privateStore: localStore, ditto: config.ditto, usersCollection: config.usersCollection, chatRetentionPolicy: config.retentionPolicy)
116115
self.publicRoomsPublisher = p2pStore.publicRoomsPublisher.eraseToAnyPublisher()
117116
self.retentionPolicy = config.retentionPolicy
118117
if let userId = config.userId {
119118
self.setCurrentUser(withConfig: UserConfig(id: userId))
120119
}
120+
if let email = config.userEmail {
121+
Task {
122+
do {
123+
self.hasAdminPrivileges = try await getAdminAccess(
124+
email: email
125+
)
126+
} catch {
127+
// TODO: Handle errors
128+
}
129+
}
130+
}
121131
}
122132

123133
// MARK: Carry over from previous public things
@@ -134,6 +144,13 @@ public class DittoChat: DittoSwiftChat, ObservableObject {
134144
return room
135145
}
136146

147+
func getAdminAccess(email: String) async throws -> Bool {
148+
return try await p2pStore.ditto.store.execute(
149+
query: "SELECT * FROM `roles` WHERE email = :email",
150+
arguments: ["email": email]
151+
).items.count > 0
152+
}
153+
137154
public func allUsersPublisher() -> AnyPublisher<[ChatUser], Never> {
138155
p2pStore.allUsersPublisher()
139156
}

0 commit comments

Comments
 (0)