refactor strings in a separate class, added alias and remote host sort types

This commit is contained in:
NicKoehler 2023-03-08 20:10:08 +01:00
parent bcfb649815
commit f042ed44bd
No known key found for this signature in database
GPG Key ID: BAE01394EB51AC58
2 changed files with 33 additions and 8 deletions

View File

@ -435,7 +435,6 @@ class PeerSortDropdown extends StatefulWidget {
}
class _PeerSortDropdownState extends State<PeerSortDropdown> {
final List<String> sort_names = ['Remote ID', 'Username', "Status"];
String _sortType = peerSort.value;
@override
@ -449,7 +448,9 @@ class _PeerSortDropdownState extends State<PeerSortDropdown> {
decoration: deco,
child: DropdownButtonHideUnderline(
child: DropdownButton2<String>(
value: sort_names.contains(_sortType) ? _sortType : sort_names[0],
value: PeerSortType.values.contains(_sortType)
? _sortType
: PeerSortType.remoteId,
onChanged: (v) async {
if (v != null) {
setState(() => _sortType = v);
@ -480,7 +481,7 @@ class _PeerSortDropdownState extends State<PeerSortDropdown> {
),
enabled: false,
),
...sort_names
...PeerSortType.values
.map<DropdownMenuItem<String>>(
(String value) => DropdownMenuItem<String>(
value: value,

View File

@ -16,6 +16,22 @@ import 'peer_card.dart';
typedef PeerFilter = bool Function(Peer peer);
typedef PeerCardBuilder = Widget Function(Peer peer);
class PeerSortType {
static const String remoteId = 'Remote ID';
static const String remoteHost = 'Remote Host';
static const String alias = 'Alias';
static const String username = 'Username';
static const String status = 'Status';
static List<String> values = [
PeerSortType.remoteId,
PeerSortType.remoteHost,
PeerSortType.alias,
PeerSortType.username,
PeerSortType.status
];
}
/// for peer search text, global obs value
final peerSearchText = "".obs;
@ -193,8 +209,8 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
}
// fallback to id sorting
if (sortedBy.isEmpty) {
sortedBy = 'id';
if (!PeerSortType.values.contains(sortedBy)) {
sortedBy = PeerSortType.remoteId;
bind.setLocalFlutterConfig(
k: "peer-sorting",
v: sortedBy,
@ -203,14 +219,22 @@ class _PeersViewState extends State<_PeersView> with WindowListener {
if (widget.peers.loadEvent != 'load_recent_peers') {
switch (sortedBy) {
case 'id':
case PeerSortType.remoteId:
peers.sort((p1, p2) => p1.id.compareTo(p2.id));
break;
case 'username':
case PeerSortType.remoteHost:
peers.sort((p1, p2) =>
p1.hostname.toLowerCase().compareTo(p2.hostname.toLowerCase()));
break;
case PeerSortType.alias:
peers.sort((p1, p2) =>
p1.alias.toLowerCase().compareTo(p2.alias.toLowerCase()));
break;
case PeerSortType.username:
peers.sort((p1, p2) =>
p1.username.toLowerCase().compareTo(p2.username.toLowerCase()));
break;
case 'status':
case PeerSortType.status:
peers.sort((p1, p2) => p1.online ? -1 : 1);
break;
}