Handle tap on user mentions (#1850)

* user mention routing implemented

* more tests

* better naming

* fixed a test
This commit is contained in:
Mauro
2023-10-03 10:11:05 +02:00
committed by GitHub
parent 7124f24d7c
commit 355535cd75
8 changed files with 169 additions and 37 deletions
@@ -158,6 +158,8 @@ class AppCoordinator: AppCoordinatorProtocol, AuthenticationCoordinatorDelegate,
} else {
navigationRootCoordinator.setSheetCoordinator(GenericCallLinkCoordinator(parameters: .init(url: url)))
}
case .roomMemberDetails:
userSessionFlowCoordinator?.handleAppRoute(route, animated: true)
default:
break
}
@@ -21,6 +21,7 @@ enum AppRoute: Equatable {
case roomList
case room(roomID: String)
case roomDetails(roomID: String)
case roomMemberDetails(userID: String)
case invites
case genericCallLink(url: URL)
}
@@ -30,6 +31,7 @@ struct AppRouteURLParser {
init(appSettings: AppSettings) {
urlParsers = [
MatrixPermalinkParser(appSettings: appSettings),
OIDCCallbackURLParser(appSettings: appSettings),
ElementCallURLParser()
]
@@ -105,3 +107,17 @@ struct ElementCallURLParser: URLParser {
return .genericCallLink(url: url)
}
}
struct MatrixPermalinkParser: URLParser {
let appSettings: AppSettings
func route(from url: URL) -> AppRoute? {
switch PermalinkBuilder.detectPermalink(in: url, baseURL: appSettings.permalinkBaseURL) {
case .userIdentifier(let userID):
return .roomMemberDetails(userID: userID)
// Other cases will be handled in the future
default:
return nil
}
}
}