mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-20 00:24:43 +02:00
Add ViewActions and ViewModelActions for Coordinator
- also add Marks
This commit is contained in:
+24
-17
@@ -18,24 +18,17 @@ import Foundation
|
||||
import Combine
|
||||
|
||||
@available(iOS 14.0, *)
|
||||
class MXTemplateUserService: TemplateUserServiceType {
|
||||
class MXTemplateUserService: TemplateUserServiceProtocol {
|
||||
|
||||
let session: MXSession
|
||||
var listenerReference: Any!
|
||||
@Published var presence: TemplatePresence = .offline
|
||||
// MARK: - Properties
|
||||
|
||||
init(session: MXSession) {
|
||||
self.session = session
|
||||
|
||||
let listenerReference = session.myUser.listen { [weak self] event in
|
||||
guard let self = self,
|
||||
let event = event,
|
||||
case .presence = MXEventType(identifier: event.eventId)
|
||||
else { return }
|
||||
self.presence = TemplatePresence(mxPresence: self.session.myUser.presence)
|
||||
}
|
||||
self.listenerReference = listenerReference
|
||||
}
|
||||
// MARK: Private
|
||||
|
||||
private let session: MXSession
|
||||
private var listenerReference: Any!
|
||||
@Published private var presence: TemplatePresence = .offline
|
||||
|
||||
// MARK: Public
|
||||
|
||||
var userId: String {
|
||||
return session.myUser.userId
|
||||
@@ -53,6 +46,21 @@ class MXTemplateUserService: TemplateUserServiceType {
|
||||
$presence.eraseToAnyPublisher()
|
||||
}
|
||||
|
||||
// MARK: - Setup
|
||||
|
||||
init(session: MXSession) {
|
||||
self.session = session
|
||||
|
||||
let listenerReference = session.myUser.listen { [weak self] event in
|
||||
guard let self = self,
|
||||
let event = event,
|
||||
case .presence = MXEventType(identifier: event.eventId)
|
||||
else { return }
|
||||
self.presence = TemplatePresence(mxPresence: self.session.myUser.presence)
|
||||
}
|
||||
self.listenerReference = listenerReference
|
||||
}
|
||||
|
||||
deinit {
|
||||
session.myUser.removeListener(listenerReference)
|
||||
}
|
||||
@@ -61,7 +69,6 @@ class MXTemplateUserService: TemplateUserServiceType {
|
||||
fileprivate extension TemplatePresence {
|
||||
|
||||
init(mxPresence: MXPresence) {
|
||||
|
||||
switch mxPresence {
|
||||
case MXPresenceOnline:
|
||||
self = .online
|
||||
|
||||
+1
-1
@@ -18,7 +18,7 @@ import Foundation
|
||||
import Combine
|
||||
|
||||
@available(iOS 14.0, *)
|
||||
class MockTemplateUserService: TemplateUserServiceType, ObservableObject {
|
||||
class MockTemplateUserService: TemplateUserServiceProtocol, ObservableObject {
|
||||
|
||||
static let example = MockTemplateUserService()
|
||||
@Published var presence: TemplatePresence = .online
|
||||
|
||||
+2
-2
@@ -18,7 +18,7 @@ import Foundation
|
||||
import Combine
|
||||
|
||||
@available(iOS 14.0, *)
|
||||
protocol TemplateUserServiceType: Avatarable {
|
||||
protocol TemplateUserServiceProtocol: Avatarable {
|
||||
var userId: String { get }
|
||||
var displayName: String? { get }
|
||||
var avatarUrl: String? { get }
|
||||
@@ -26,7 +26,7 @@ protocol TemplateUserServiceType: Avatarable {
|
||||
}
|
||||
|
||||
@available(iOS 14.0, *)
|
||||
extension TemplateUserServiceType {
|
||||
extension TemplateUserServiceProtocol {
|
||||
var mxContentUri: String? {
|
||||
avatarUrl
|
||||
}
|
||||
Reference in New Issue
Block a user