From eb41846bb91960234606add39cf60e95ddd5e3d3 Mon Sep 17 00:00:00 2001 From: Charlie Fish Date: Sun, 7 Jan 2024 13:16:09 -0700 Subject: [PATCH] search: prioritize friends when autocompleting Lightning-Address: fishcharlie@strike.me Closes: https://github.com/damus-io/damus/issues/1620 Signed-off-by: Charlie Fish Reviewed-by: William Casarin Signed-off-by: William Casarin Changelog-Changed: Prioritize friends when autocompleting --- damus/Views/Posting/UserSearch.swift | 14 ++++++++++++-- damus/Views/Profile/ProfileName.swift | 7 +++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/damus/Views/Posting/UserSearch.swift b/damus/Views/Posting/UserSearch.swift index a593902e..e783eff2 100644 --- a/damus/Views/Posting/UserSearch.swift +++ b/damus/Views/Posting/UserSearch.swift @@ -1,5 +1,5 @@ // -// UserAutocompletion.swift +// UserSearch.swift // damus // // Created by William Casarin on 2023-01-28. @@ -18,7 +18,17 @@ struct UserSearch: View { var users: [Pubkey] { let txn = NdbTxn(ndb: damus_state.ndb) - return search_profiles(profiles: damus_state.profiles, search: search, txn: txn) + return search_profiles(profiles: damus_state.profiles, search: search, txn: txn).sorted { a, b in + let aFriendTypePriority = get_friend_type(contacts: damus_state.contacts, pubkey: a)?.priority ?? 0 + let bFriendTypePriority = get_friend_type(contacts: damus_state.contacts, pubkey: b)?.priority ?? 0 + + if aFriendTypePriority > bFriendTypePriority { + // `a` should be sorted before `b` + return true + } else { + return false + } + } } func on_user_tapped(pk: Pubkey) { diff --git a/damus/Views/Profile/ProfileName.swift b/damus/Views/Profile/ProfileName.swift index a351e36e..b7911b01 100644 --- a/damus/Views/Profile/ProfileName.swift +++ b/damus/Views/Profile/ProfileName.swift @@ -10,6 +10,13 @@ import SwiftUI enum FriendType { case friend case fof + + var priority: Int { + switch self { + case .friend: return 2 + case .fof: return 1 + } + } } func get_friend_type(contacts: Contacts, pubkey: Pubkey) -> FriendType? {