Skip to content

Commit

Permalink
dm: Do not show DMs from muted users
Browse files Browse the repository at this point in the history
This commits causes DMs from muted users to be filtered out. It also fixes an issue where the DM list would appear completely blank in certain scenarios.

Testing
-------

CONDITIONAL PASS

Device: iPhone 14 Pro simulator
iOS: 17.0
Damus: This commit
Setup:
- Three test accounts (A, B, and C). "A" will be the account running on the device under test.
- Account "A" should start with no DMs

1. Send a direct message from "B" to "A", and reply from "A".
2. Go to DMs -> DMs tab. Conversation with "B" should appear. PASS
3. Mute user "B" (I did it via profiles page).
4. Go back to DMs view via back button. DMs from "B" should not appear. PASS
5. Since there are no DMs, the screen should display "Nothing to see here". PASS
5. Close Damus app via iOS app switcher and reopen Damus
6. Check DMs list. Should only show "Nothing to see here". PASS
7. Send a DM from account "C" to "A" and reply.
8. Go back to DMs -> DMs tab. Only the message from account "C" should appear.
9. Unmute user "B"
10. Go back to DMs. Messages from "B" and "C" should appear. PASS

Notes:
- There was one instance when the first DM from account "C" appeared in the "DMs" tab (Not "requests") momentarily. After a bit it went into requests as expected.
- When unmuting user "B", I had to refresh the DM list by switching tabs, meaning that the view did not immediately update.

Upon inspection, the two behaviors above are not caused by this change, so this is a conditional pass.

Closes: #1350
Changelog-Fixed: Do not show DMs from muted users
Signed-off-by: Daniel D’Aquino <[email protected]>
Reviewed-by: William Casarin <[email protected]>
Signed-off-by: William Casarin <[email protected]>
  • Loading branch information
danieldaquino authored and jb55 committed Oct 17, 2023
1 parent 3b76fcb commit 06eb9d4
Showing 1 changed file with 11 additions and 5 deletions.
16 changes: 11 additions & 5 deletions damus/Views/DirectMessagesView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,12 @@ struct DirectMessagesView: View {
func MainContent(requests: Bool) -> some View {
ScrollView {
LazyVStack(spacing: 0) {
if model.dms.isEmpty, !model.loading {
let dms = requests ? model.message_requests : model.friend_dms
let filtered_dms = filter_dms(dms: dms)
if filtered_dms.isEmpty, !model.loading {
EmptyTimelineView()
} else {
let dms = requests ? model.message_requests : model.friend_dms
ForEach(dms, id: \.pubkey) { dm in
ForEach(filtered_dms, id: \.pubkey) { dm in
MaybeEvent(dm)
.padding(.top, 10)
}
Expand All @@ -36,6 +37,12 @@ struct DirectMessagesView: View {
}
}

func filter_dms(dms: [DirectMessageModel]) -> [DirectMessageModel] {
return dms.filter({ dm in
return damus_state.settings.friend_filter.filter(contacts: damus_state.contacts, pubkey: dm.pubkey) && !damus_state.contacts.is_muted(dm.pubkey)
})
}

var options: EventViewOptions {
if self.damus_state.settings.translate_dms {
return [.truncate_content, .no_action_bar]
Expand All @@ -46,8 +53,7 @@ struct DirectMessagesView: View {

func MaybeEvent(_ model: DirectMessageModel) -> some View {
Group {
let ok = damus_state.settings.friend_filter.filter(contacts: damus_state.contacts, pubkey: model.pubkey)
if ok, let ev = model.events.last {
if let ev = model.events.last {
EventView(damus: damus_state, event: ev, pubkey: model.pubkey, options: options)
.onTapGesture {
self.model.set_active_dm_model(model)
Expand Down

0 comments on commit 06eb9d4

Please sign in to comment.