refactor strings in a separate class, added alias and remote host sort types
This commit is contained in:
parent
bcfb649815
commit
f042ed44bd
@ -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,
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user