Skip to content

Commit

Permalink
Address PR comments.
Browse files Browse the repository at this point in the history
Refactor KnockRequestType to JoinRequestType.
  • Loading branch information
pixlwave committed Feb 18, 2025
1 parent f9e561e commit 5a67d87
Show file tree
Hide file tree
Showing 7 changed files with 29 additions and 35 deletions.
18 changes: 9 additions & 9 deletions ElementX/Sources/Mocks/RoomSummaryProviderMock.swift
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ extension Array where Element == RoomSummary {
static let mockRooms: [Element] = [
RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "1",
knockRequestType: nil,
joinRequestType: nil,
name: "Foundation 🔭🪐🌌",
isDirect: false,
avatarURL: nil,
Expand All @@ -88,7 +88,7 @@ extension Array where Element == RoomSummary {
isFavourite: false),
RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "2",
knockRequestType: nil,
joinRequestType: nil,
name: "Foundation and Empire",
isDirect: false,
avatarURL: .mockMXCAvatar,
Expand All @@ -105,7 +105,7 @@ extension Array where Element == RoomSummary {
isFavourite: false),
RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "3",
knockRequestType: nil,
joinRequestType: nil,
name: "Second Foundation",
isDirect: false,
avatarURL: nil,
Expand All @@ -122,7 +122,7 @@ extension Array where Element == RoomSummary {
isFavourite: false),
RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "4",
knockRequestType: nil,
joinRequestType: nil,
name: "Foundation's Edge",
isDirect: false,
avatarURL: nil,
Expand All @@ -139,7 +139,7 @@ extension Array where Element == RoomSummary {
isFavourite: false),
RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "5",
knockRequestType: nil,
joinRequestType: nil,
name: "Foundation and Earth",
isDirect: true,
avatarURL: nil,
Expand All @@ -156,7 +156,7 @@ extension Array where Element == RoomSummary {
isFavourite: false),
RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "6",
knockRequestType: nil,
joinRequestType: nil,
name: "Prelude to Foundation",
isDirect: true,
avatarURL: nil,
Expand All @@ -173,7 +173,7 @@ extension Array where Element == RoomSummary {
isFavourite: false),
RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "0",
knockRequestType: nil,
joinRequestType: nil,
name: "Unknown",
isDirect: false,
avatarURL: nil,
Expand Down Expand Up @@ -223,7 +223,7 @@ extension Array where Element == RoomSummary {
static let mockInvites: [Element] = [
RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "someAwesomeRoomId1",
knockRequestType: .invite(inviter: RoomMemberProxyMock.mockCharlie),
joinRequestType: .invite(inviter: RoomMemberProxyMock.mockCharlie),
name: "First room",
isDirect: false,
avatarURL: .mockMXCAvatar,
Expand All @@ -240,7 +240,7 @@ extension Array where Element == RoomSummary {
isFavourite: false),
RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "someAwesomeRoomId2",
knockRequestType: .invite(inviter: RoomMemberProxyMock.mockCharlie),
joinRequestType: .invite(inviter: RoomMemberProxyMock.mockCharlie),
name: "Second room",
isDirect: true,
avatarURL: nil,
Expand Down
4 changes: 2 additions & 2 deletions ElementX/Sources/Screens/HomeScreen/HomeScreenModels.swift
Original file line number Diff line number Diff line change
Expand Up @@ -218,15 +218,15 @@ extension HomeScreenRoom {
let roomID = summary.id

let hasUnreadMessages = hideUnreadMessagesBadge ? false : summary.hasUnreadMessages
let isUnseenInvite = summary.knockRequestType?.isInvite == true && !seenInvites.contains(roomID)
let isUnseenInvite = summary.joinRequestType?.isInvite == true && !seenInvites.contains(roomID)

let isDotShown = hasUnreadMessages || summary.hasUnreadMentions || summary.hasUnreadNotifications || summary.isMarkedUnread || isUnseenInvite
let isMentionShown = summary.hasUnreadMentions && !summary.isMuted
let isMuteShown = summary.isMuted
let isCallShown = summary.hasOngoingCall
let isHighlighted = summary.isMarkedUnread || (!summary.isMuted && (summary.hasUnreadNotifications || summary.hasUnreadMentions)) || isUnseenInvite

let type: HomeScreenRoom.RoomType = switch summary.knockRequestType {
let type: HomeScreenRoom.RoomType = switch summary.joinRequestType {
case .invite(let inviter): .invite(inviterDetails: inviter.map(RoomInviterDetails.init))
case .knock: .knock
case .none: .room
Expand Down
10 changes: 3 additions & 7 deletions ElementX/Sources/Screens/HomeScreen/HomeScreenViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
private let appSettings: AppSettings
private let userIndicatorController: UserIndicatorControllerProtocol

private var previouslySeenInvites: Set<String>
private let roomSummaryProvider: RoomSummaryProviderProtocol?

private var actionsSubject: PassthroughSubject<HomeScreenViewModelAction, Never> = .init()
Expand All @@ -36,7 +35,6 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
self.appSettings = appSettings
self.userIndicatorController = userIndicatorController

previouslySeenInvites = appSettings.seenInvites
roomSummaryProvider = userSession.clientProxy.roomSummaryProvider

super.init(initialViewState: .init(userID: userSession.clientProxy.userID),
Expand Down Expand Up @@ -102,10 +100,8 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol

appSettings.$seenInvites
.removeDuplicates()
.sink { [weak self] seenInvites in
guard let self else { return }
previouslySeenInvites = seenInvites
updateRooms()
.sink { [weak self] _ in
self?.updateRooms()
}
.store(in: &cancellables)

Expand Down Expand Up @@ -310,7 +306,7 @@ class HomeScreenViewModel: HomeScreenViewModelType, HomeScreenViewModelProtocol
for summary in roomSummaryProvider.roomListPublisher.value {
let room = HomeScreenRoom(summary: summary,
hideUnreadMessagesBadge: appSettings.hideUnreadMessagesBadge,
seenInvites: previouslySeenInvites)
seenInvites: appSettings.seenInvites)
rooms.append(room)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ private extension HomeScreenRoom {

let summary = RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "@someone:somewhere.com",
knockRequestType: .invite(inviter: inviter),
joinRequestType: .invite(inviter: inviter),
name: "Some Guy",
isDirect: true,
avatarURL: nil,
Expand All @@ -208,7 +208,7 @@ private extension HomeScreenRoom {

let summary = RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "@someone:somewhere.com",
knockRequestType: .invite(inviter: inviter),
joinRequestType: .invite(inviter: inviter),
name: "Awesome Room",
isDirect: false,
avatarURL: avatarURL,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ private extension HomeScreenRoom {

let summary = RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "@someone:somewhere.com",
knockRequestType: .invite(inviter: inviter),
joinRequestType: .invite(inviter: inviter),
name: "Some Guy",
isDirect: true,
avatarURL: nil,
Expand All @@ -172,7 +172,7 @@ private extension HomeScreenRoom {

let summary = RoomSummary(roomListItem: RoomListItemSDKMock(),
id: "@someone:somewhere.com",
knockRequestType: .invite(inviter: inviter),
joinRequestType: .invite(inviter: inviter),
name: "Awesome Room",
isDirect: false,
avatarURL: avatarURL,
Expand Down
20 changes: 9 additions & 11 deletions ElementX/Sources/Services/Room/RoomSummary/RoomSummary.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,21 @@ import Foundation
import MatrixRustSDK

struct RoomSummary {
enum KnockRequestType {
enum JoinRequestType {
case invite(inviter: RoomMemberProxyProtocol?)
case knock

var isInvite: Bool {
if case .invite = self {
return true
} else {
return false
switch self {
case .invite: true
default: false
}
}

var isKnock: Bool {
if case .knock = self {
return true
} else {
return false
switch self {
case .knock: true
default: false
}
}
}
Expand All @@ -34,7 +32,7 @@ struct RoomSummary {

let id: String

let knockRequestType: KnockRequestType?
let joinRequestType: JoinRequestType?

let name: String
let isDirect: Bool
Expand Down Expand Up @@ -103,7 +101,7 @@ extension RoomSummary {
canonicalAlias = nil
hasOngoingCall = false

knockRequestType = nil
joinRequestType = nil
isMarkedUnread = false
isFavourite = false
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -255,15 +255,15 @@ class RoomSummaryProvider: RoomSummaryProviderProtocol {

let notificationMode = roomInfo.cachedUserDefinedNotificationMode.flatMap { RoomNotificationModeProxy.from(roomNotificationMode: $0) }

let knockRequestType: RoomSummary.KnockRequestType? = switch roomInfo.membership {
let joinRequestType: RoomSummary.JoinRequestType? = switch roomInfo.membership {
case .invited: .invite(inviter: inviterProxy)
case .knocked: .knock
default: nil
}

return RoomSummary(roomListItem: roomListItem,
id: roomInfo.id,
knockRequestType: knockRequestType,
joinRequestType: joinRequestType,
name: roomInfo.displayName ?? roomInfo.id,
isDirect: roomInfo.isDirect,
avatarURL: roomInfo.avatarUrl.flatMap(URL.init(string:)),
Expand Down

0 comments on commit 5a67d87

Please sign in to comment.