mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-05 20:09:04 +00:00
element-hq/element-x-ios/issues/2670 - Show invites as part of the room list
This commit is contained in:
committed by
Stefan Ceriu
parent
d34ec30ca6
commit
064626fbbe
@@ -64,9 +64,7 @@ class AuthenticationServiceProxy: AuthenticationServiceProxyProtocol {
|
||||
do {
|
||||
var homeserver = LoginHomeserver(address: homeserverAddress, loginMode: .unknown)
|
||||
|
||||
try await Task.dispatch(on: .global()) {
|
||||
try self.authenticationService.configureHomeserver(serverNameOrHomeserverUrl: homeserverAddress)
|
||||
}
|
||||
try await authenticationService.configureHomeserver(serverNameOrHomeserverUrl: homeserverAddress)
|
||||
|
||||
if let details = authenticationService.homeserverDetails() {
|
||||
if details.supportsOidcLogin() {
|
||||
@@ -94,9 +92,7 @@ class AuthenticationServiceProxy: AuthenticationServiceProxyProtocol {
|
||||
|
||||
func urlForOIDCLogin() async -> Result<OIDCAuthenticationDataProxy, AuthenticationServiceError> {
|
||||
do {
|
||||
let oidcData = try await Task.dispatch(on: .global()) {
|
||||
try self.authenticationService.urlForOidcLogin()
|
||||
}
|
||||
let oidcData = try await authenticationService.urlForOidcLogin()
|
||||
return .success(OIDCAuthenticationDataProxy(underlyingData: oidcData))
|
||||
} catch {
|
||||
MXLog.error("Failed to get URL for OIDC login: \(error)")
|
||||
@@ -106,9 +102,7 @@ class AuthenticationServiceProxy: AuthenticationServiceProxyProtocol {
|
||||
|
||||
func loginWithOIDCCallback(_ callbackURL: URL, data: OIDCAuthenticationDataProxy) async -> Result<UserSessionProtocol, AuthenticationServiceError> {
|
||||
do {
|
||||
let client = try await Task.dispatch(on: .global()) {
|
||||
try self.authenticationService.loginWithOidcCallback(authenticationData: data.underlyingData, callbackUrl: callbackURL.absoluteString)
|
||||
}
|
||||
let client = try await authenticationService.loginWithOidcCallback(authenticationData: data.underlyingData, callbackUrl: callbackURL.absoluteString)
|
||||
return await userSession(for: client)
|
||||
} catch AuthenticationError.OidcCancelled {
|
||||
return .failure(.oidcError(.userCancellation))
|
||||
@@ -120,12 +114,10 @@ class AuthenticationServiceProxy: AuthenticationServiceProxyProtocol {
|
||||
|
||||
func login(username: String, password: String, initialDeviceName: String?, deviceID: String?) async -> Result<UserSessionProtocol, AuthenticationServiceError> {
|
||||
do {
|
||||
let client = try await Task.dispatch(on: .global()) {
|
||||
try self.authenticationService.login(username: username,
|
||||
password: password,
|
||||
initialDeviceName: initialDeviceName,
|
||||
deviceId: deviceID)
|
||||
}
|
||||
let client = try await authenticationService.login(username: username,
|
||||
password: password,
|
||||
initialDeviceName: initialDeviceName,
|
||||
deviceId: deviceID)
|
||||
|
||||
let refreshToken = try? await Task.dispatch(on: .global()) {
|
||||
try client.session().refreshToken
|
||||
|
||||
@@ -676,6 +676,7 @@ class ClientProxy: ClientProxyProtocol {
|
||||
.syncService()
|
||||
.withCrossProcessLock(appIdentifier: "MainApp")
|
||||
.withUtdHook(delegate: ClientDecryptionErrorDelegate(actionsSubject: actionsSubject))
|
||||
.withUnifiedInvitesInRoomList(withUnifiedInvites: appSettings.roomListInvitesEnabled)
|
||||
.finish()
|
||||
let roomListService = syncService.roomListService()
|
||||
|
||||
|
||||
@@ -19,6 +19,10 @@ import MatrixRustSDK
|
||||
|
||||
struct RoomSummaryDetails {
|
||||
let id: String
|
||||
|
||||
let isInvite: Bool
|
||||
let inviter: RoomMemberProxyProtocol?
|
||||
|
||||
let name: String
|
||||
let isDirect: Bool
|
||||
let avatarURL: URL?
|
||||
@@ -29,7 +33,7 @@ struct RoomSummaryDetails {
|
||||
let unreadNotificationsCount: UInt
|
||||
let notificationMode: RoomNotificationModeProxy?
|
||||
let canonicalAlias: String?
|
||||
let inviter: RoomMemberProxyProtocol?
|
||||
|
||||
let hasOngoingCall: Bool
|
||||
|
||||
let isMarkedUnread: Bool
|
||||
@@ -70,6 +74,7 @@ extension RoomSummaryDetails {
|
||||
inviter = nil
|
||||
hasOngoingCall = false
|
||||
|
||||
isInvite = false
|
||||
isMarkedUnread = false
|
||||
isFavourite = false
|
||||
}
|
||||
|
||||
@@ -240,6 +240,8 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol {
|
||||
let notificationMode = roomInfo.userDefinedNotificationMode.flatMap { RoomNotificationModeProxy.from(roomNotificationMode: $0) }
|
||||
|
||||
let details = RoomSummaryDetails(id: roomInfo.id,
|
||||
isInvite: roomInfo.membership == .invited,
|
||||
inviter: inviterProxy,
|
||||
name: roomInfo.name ?? roomInfo.id,
|
||||
isDirect: roomInfo.isDirect,
|
||||
avatarURL: roomInfo.avatarUrl.flatMap(URL.init(string:)),
|
||||
@@ -250,7 +252,6 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol {
|
||||
unreadNotificationsCount: UInt(roomInfo.numUnreadNotifications),
|
||||
notificationMode: notificationMode,
|
||||
canonicalAlias: roomInfo.canonicalAlias,
|
||||
inviter: inviterProxy,
|
||||
hasOngoingCall: roomInfo.hasRoomCall,
|
||||
isMarkedUnread: roomInfo.isMarkedUnread,
|
||||
isFavourite: roomInfo.isFavourite)
|
||||
|
||||
@@ -135,11 +135,12 @@ class UserSessionStore: UserSessionStoreProtocol {
|
||||
let completeBuilder = builder
|
||||
|
||||
do {
|
||||
let client: Client = try await Task.dispatch(on: .global()) {
|
||||
let client = try completeBuilder.build()
|
||||
let client = try await completeBuilder.build()
|
||||
|
||||
try await Task.dispatch(on: .global()) {
|
||||
try client.restoreSession(session: credentials.restorationToken.session)
|
||||
return client
|
||||
}
|
||||
|
||||
return await .success(setupProxyForClient(client))
|
||||
} catch {
|
||||
MXLog.error("Failed restoring login with error: \(error)")
|
||||
|
||||
Reference in New Issue
Block a user