From aac6d05c13803d7939c3a16d2aa184f06931aed5 Mon Sep 17 00:00:00 2001 From: Zomatree Date: Sun, 26 Jan 2025 21:34:25 +0000 Subject: [PATCH] fix: calculate friends once --- Revolt/Pages/Home/CreateGroup.swift | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/Revolt/Pages/Home/CreateGroup.swift b/Revolt/Pages/Home/CreateGroup.swift index 3337b08..8266809 100644 --- a/Revolt/Pages/Home/CreateGroup.swift +++ b/Revolt/Pages/Home/CreateGroup.swift @@ -16,20 +16,7 @@ struct CreateGroup: View { @State var selectedUsers: Set = Set() @State var error: String? = nil - func getFriends() -> [User] { - var friends: [User] = [] - - for user in viewState.users.values { - switch user.relationship ?? .None { - case .Friend: - friends.append(user) - default: - () - } - } - - return friends - } + @State var allFriends: [User] = [] var body: some View { VStack(spacing: 4) { @@ -46,7 +33,7 @@ struct CreateGroup: View { .padding([.horizontal, .top], 16) List(selection: $selectedUsers) { - ForEach(getFriends().filter { user in searchText.isEmpty || (user.username.contains(searchText) || (user.display_name?.contains(searchText) ?? false))}) { user in + ForEach(allFriends.filter { user in searchText.isEmpty || (user.username.contains(searchText) || (user.display_name?.contains(searchText) ?? false))}) { user in let binding = Binding( get: { selectedUsers.contains(user) }, set: { v in @@ -79,6 +66,16 @@ struct CreateGroup: View { .environment(\.editMode, .constant(EditMode.active)) #endif } + .task { + allFriends = viewState.users.values.filter({ user in + switch user.relationship ?? .None { + case .Friend: + return true + default: + return false + } + }) + } .background(viewState.theme.background.color) .toolbarBackground(viewState.theme.topBar.color, for: .automatic) .toolbar {