mirror of
https://github.com/Novaloop-AG/element-x-ios.git
synced 2026-11-04 10:33:45 +00:00
Room Member is now an interface SDK update (#711)
* migrated to the usage of a Protocol for the RoomMember * removed unused file * code improvement * sliding sync new states * sdk bump * fix for tests * fixing tests * package resolved rollback * rollback package.resolved * fixed a mistakenly removed dependency * Revert "fixed a mistakenly removed dependency" This reverts commit 096d9da6142d8117bc1dfa6d5bbbd797b43b31ad. * removing unnecessary Identifiable conformance * pr suggestions * pr comment
This commit is contained in:
@@ -62,7 +62,7 @@ final class RoomDetailsCoordinator: CoordinatorProtocol {
|
||||
AnyView(RoomDetailsScreen(context: viewModel.context))
|
||||
}
|
||||
|
||||
private func presentRoomMemberDetails(_ members: [RoomMemberProxy]) {
|
||||
private func presentRoomMemberDetails(_ members: [RoomMemberProxyProtocol]) {
|
||||
let params = RoomMemberDetailsCoordinatorParameters(mediaProvider: parameters.mediaProvider,
|
||||
members: members)
|
||||
let coordinator = RoomMemberDetailsCoordinator(parameters: params)
|
||||
|
||||
@@ -22,7 +22,7 @@ import UIKit
|
||||
// MARK: View model
|
||||
|
||||
enum RoomDetailsViewModelAction {
|
||||
case requestMemberDetailsPresentation([RoomMemberProxy])
|
||||
case requestMemberDetailsPresentation([RoomMemberProxyProtocol])
|
||||
case leftRoom
|
||||
case cancel
|
||||
}
|
||||
@@ -86,8 +86,8 @@ struct RoomDetailsMember: Identifiable, Equatable {
|
||||
let name: String?
|
||||
let avatarURL: URL?
|
||||
|
||||
init(withProxy proxy: RoomMemberProxy) {
|
||||
id = proxy.userId
|
||||
init(withProxy proxy: RoomMemberProxyProtocol) {
|
||||
id = proxy.userID
|
||||
name = proxy.displayName
|
||||
avatarURL = proxy.avatarURL
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ typealias RoomDetailsViewModelType = StateStoreViewModel<RoomDetailsViewState, R
|
||||
|
||||
class RoomDetailsViewModel: RoomDetailsViewModelType, RoomDetailsViewModelProtocol {
|
||||
private let roomProxy: RoomProxyProtocol
|
||||
private var members: [RoomMemberProxy] = [] {
|
||||
private var members: [RoomMemberProxyProtocol] = [] {
|
||||
didSet {
|
||||
state.members = members.map { RoomDetailsMember(withProxy: $0) }
|
||||
}
|
||||
|
||||
@@ -182,7 +182,7 @@ struct RoomDetailsScreen: View {
|
||||
|
||||
struct RoomDetails_Previews: PreviewProvider {
|
||||
static let viewModel = {
|
||||
let members: [RoomMemberProxy] = [
|
||||
let members: [RoomMemberProxyMock] = [
|
||||
.mockAlice,
|
||||
.mockBob,
|
||||
.mockCharlie
|
||||
|
||||
@@ -18,7 +18,7 @@ import SwiftUI
|
||||
|
||||
struct RoomMemberDetailsCoordinatorParameters {
|
||||
let mediaProvider: MediaProviderProtocol
|
||||
let members: [RoomMemberProxy]
|
||||
let members: [RoomMemberProxyProtocol]
|
||||
}
|
||||
|
||||
enum RoomMemberDetailsCoordinatorAction {
|
||||
|
||||
@@ -24,7 +24,7 @@ class RoomMemberDetailsViewModel: RoomMemberDetailsViewModelType, RoomMemberDeta
|
||||
var callback: ((RoomMemberDetailsViewModelAction) -> Void)?
|
||||
|
||||
init(mediaProvider: MediaProviderProtocol,
|
||||
members: [RoomMemberProxy]) {
|
||||
members: [RoomMemberProxyProtocol]) {
|
||||
self.mediaProvider = mediaProvider
|
||||
super.init(initialViewState: .init(members: members.map { RoomDetailsMember(withProxy: $0) },
|
||||
bindings: .init()),
|
||||
|
||||
@@ -48,7 +48,7 @@ struct RoomMemberDetailsMemberCell: View {
|
||||
|
||||
struct RoomMemberDetailsMemberCell_Previews: PreviewProvider {
|
||||
static var previews: some View {
|
||||
let members: [RoomMemberProxy] = [
|
||||
let members: [RoomMemberProxyMock] = [
|
||||
.mockAlice,
|
||||
.mockBob,
|
||||
.mockCharlie
|
||||
@@ -57,7 +57,7 @@ struct RoomMemberDetailsMemberCell_Previews: PreviewProvider {
|
||||
members: members)
|
||||
|
||||
return VStack {
|
||||
ForEach(members) { member in
|
||||
ForEach(members, id: \.userID) { member in
|
||||
RoomMemberDetailsMemberCell(member: .init(withProxy: member), context: viewModel.context)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ struct RoomMemberDetailsScreen: View {
|
||||
|
||||
struct RoomMemberDetails_Previews: PreviewProvider {
|
||||
static let viewModel = {
|
||||
let members: [RoomMemberProxy] = [
|
||||
let members: [RoomMemberProxyMock] = [
|
||||
.mockAlice,
|
||||
.mockBob,
|
||||
.mockCharlie
|
||||
|
||||
@@ -25,7 +25,7 @@ struct StartChatViewState: BindableState {
|
||||
var bindings = StartChatScreenViewStateBindings()
|
||||
|
||||
// TODO: bind with real service, and mock data only in preview
|
||||
var suggestedUsers: [RoomMemberProxy] = [.mockAlice, .mockBob, .mockCharlie]
|
||||
var suggestedUsers: [RoomMemberProxyMock] = [.mockAlice, .mockBob, .mockCharlie]
|
||||
}
|
||||
|
||||
struct StartChatScreenViewStateBindings {
|
||||
|
||||
@@ -60,7 +60,7 @@ struct StartChatScreen: View {
|
||||
|
||||
private var suggestionsSection: some View {
|
||||
Section {
|
||||
ForEach(context.viewState.suggestedUsers, id: \.userId) { user in
|
||||
ForEach(context.viewState.suggestedUsers, id: \.userID) { user in
|
||||
StartChatSuggestedUserCell(user: user, imageProvider: context.imageProvider)
|
||||
}
|
||||
} header: {
|
||||
|
||||
@@ -17,14 +17,14 @@
|
||||
import SwiftUI
|
||||
|
||||
struct StartChatSuggestedUserCell: View {
|
||||
let user: RoomMemberProxy
|
||||
let user: RoomMemberProxyProtocol
|
||||
let imageProvider: ImageProviderProtocol?
|
||||
|
||||
var body: some View {
|
||||
HStack(spacing: 13) {
|
||||
LoadableAvatarImage(url: user.avatarURL,
|
||||
name: user.displayName,
|
||||
contentID: user.userId,
|
||||
contentID: user.userID,
|
||||
avatarSize: .user(on: .home),
|
||||
imageProvider: imageProvider)
|
||||
.accessibilityHidden(true)
|
||||
@@ -32,11 +32,11 @@ struct StartChatSuggestedUserCell: View {
|
||||
VStack(alignment: .leading, spacing: 4) {
|
||||
// covers both nil and empty state
|
||||
let displayName = user.displayName ?? ""
|
||||
Text(displayName.isEmpty ? user.userId : displayName)
|
||||
Text(displayName.isEmpty ? user.userID : displayName)
|
||||
.font(.element.title3)
|
||||
.foregroundColor(.element.primaryContent)
|
||||
if !displayName.isEmpty {
|
||||
Text(user.userId)
|
||||
Text(user.userID)
|
||||
.font(.element.subheadline)
|
||||
.foregroundColor(.element.tertiaryContent)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user