diff --git a/lib/screens/contacts_screen.dart b/lib/screens/contacts_screen.dart index 394970f9..97e0d513 100644 --- a/lib/screens/contacts_screen.dart +++ b/lib/screens/contacts_screen.dart @@ -48,7 +48,7 @@ class _ContactsScreenState extends State String _searchQuery = ''; ContactSortOption _sortOption = ContactSortOption.lastSeen; bool _showUnreadOnly = false; - bool _prioritizePeople = true; + bool _prioritizeUsers = true; ContactTypeFilter _typeFilter = ContactTypeFilter.all; final ContactGroupStore _groupStore = ContactGroupStore(); List _groups = []; @@ -353,7 +353,7 @@ class _ContactsScreenState extends State sortOption: _sortOption, typeFilter: _typeFilter, showUnreadOnly: _showUnreadOnly, - prioritizePeople: _prioritizePeople, + prioritizeUsers: _prioritizeUsers, onSortChanged: (value) { setState(() { _sortOption = value; @@ -369,9 +369,9 @@ class _ContactsScreenState extends State _showUnreadOnly = value; }); }, - onPrioritizePeopleChanged: (value) { + onPrioritizeUsersChanged: (value) { setState(() { - _prioritizePeople = value; + _prioritizeUsers = value; }); }, onNewGroup: () => _showGroupEditor(context, connector.contacts), @@ -554,18 +554,19 @@ class _ContactsScreenState extends State }).toList(); } - // Apply sorting within groups if prioritizing people - if (_prioritizePeople) { - // Separate people (advTypeChat) from others - final people = filtered.where((c) => c.type == advTypeChat).toList(); + // Apply "users first" partitioning: separate users from other node types, + // sort each partition, then combine with users on top + if (_prioritizeUsers) { + // Separate users (advTypeChat) from others + final users = filtered.where((c) => c.type == advTypeChat).toList(); final others = filtered.where((c) => c.type != advTypeChat).toList(); // Sort each group separately - _applySorting(people, connector); + _applySorting(users, connector); _applySorting(others, connector); - // Combine: people first, then others - filtered = [...people, ...others]; + // Combine: users first, then others + filtered = [...users, ...others]; } else { _applySorting(filtered, connector); } diff --git a/lib/widgets/list_filter_widget.dart b/lib/widgets/list_filter_widget.dart index 6075fecb..4b233708 100644 --- a/lib/widgets/list_filter_widget.dart +++ b/lib/widgets/list_filter_widget.dart @@ -99,17 +99,17 @@ const int _actionFilterRepeaters = 6; const int _actionFilterRooms = 7; const int _actionToggleUnreadOnly = 8; const int _actionNewGroup = 9; -const int _actionTogglePrioritizePeople = 10; +const int _actionTogglePrioritizeUsers = 10; class ContactsFilterMenu extends StatelessWidget { final ContactSortOption sortOption; final ContactTypeFilter typeFilter; final bool showUnreadOnly; - final bool prioritizePeople; + final bool prioritizeUsers; final ValueChanged onSortChanged; final ValueChanged onTypeFilterChanged; final ValueChanged onUnreadOnlyChanged; - final ValueChanged onPrioritizePeopleChanged; + final ValueChanged onPrioritizeUsersChanged; final VoidCallback onNewGroup; const ContactsFilterMenu({ @@ -117,11 +117,11 @@ class ContactsFilterMenu extends StatelessWidget { required this.sortOption, required this.typeFilter, required this.showUnreadOnly, - required this.prioritizePeople, + required this.prioritizeUsers, required this.onSortChanged, required this.onTypeFilterChanged, required this.onUnreadOnlyChanged, - required this.onPrioritizePeopleChanged, + required this.onPrioritizeUsersChanged, required this.onNewGroup, }); @@ -150,9 +150,9 @@ class ContactsFilterMenu extends StatelessWidget { checked: sortOption == ContactSortOption.name, ), SortFilterMenuOption( - value: _actionTogglePrioritizePeople, + value: _actionTogglePrioritizeUsers, label: l10n.listFilter_usersFirst, - checked: prioritizePeople, + checked: prioritizeUsers, ), ], ), @@ -202,8 +202,8 @@ class ContactsFilterMenu extends StatelessWidget { case _actionSortLastSeen: onSortChanged(ContactSortOption.lastSeen); break; - case _actionTogglePrioritizePeople: - onPrioritizePeopleChanged(!prioritizePeople); + case _actionTogglePrioritizeUsers: + onPrioritizeUsersChanged(!prioritizeUsers); break; case _actionFilterAll: onTypeFilterChanged(ContactTypeFilter.all);