mirror of
https://github.com/git-touch/git-touch
synced 2025-03-07 20:57:44 +01:00
improvement: sort tree items
This commit is contained in:
parent
71bd29e041
commit
146f731c95
@ -50,17 +50,19 @@ class GiteaObjectScreen extends StatelessWidget {
|
|||||||
},
|
},
|
||||||
bodyBuilder: (p, _) {
|
bodyBuilder: (p, _) {
|
||||||
if (p is List) {
|
if (p is List) {
|
||||||
return ObjectTree(
|
final items = p.map((t) => GiteaTree.fromJson(t)).toList();
|
||||||
items: p.map((t) {
|
items.sort((a, b) {
|
||||||
final v = GiteaTree.fromJson(t);
|
return sortByKey('dir', a.type, b.type);
|
||||||
return ObjectTreeItem(
|
});
|
||||||
|
return ObjectTree(items: [
|
||||||
|
for (var v in items)
|
||||||
|
ObjectTreeItem(
|
||||||
name: v.name,
|
name: v.name,
|
||||||
type: v.type,
|
type: v.type,
|
||||||
size: v.type == 'file' ? v.size : null,
|
size: v.type == 'file' ? v.size : null,
|
||||||
url: '/gitea/$owner/$name/blob?path=${v.path.urlencode}',
|
url: '/gitea/$owner/$name/blob?path=${v.path.urlencode}',
|
||||||
);
|
),
|
||||||
}),
|
]);
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
final v = GiteaBlob.fromJson(p);
|
final v = GiteaBlob.fromJson(p);
|
||||||
return BlobView(v.name, base64Text: v.content);
|
return BlobView(v.name, base64Text: v.content);
|
||||||
|
@ -57,19 +57,11 @@ class ObjectScreen extends StatelessWidget {
|
|||||||
),
|
),
|
||||||
));
|
));
|
||||||
final data = res.data.repository.object;
|
final data = res.data.repository.object;
|
||||||
|
|
||||||
if (data.resolveType == 'Tree') {
|
if (data.resolveType == 'Tree') {
|
||||||
(data as GhObjectTree).entries.sort((a, b) {
|
(data as GhObjectTree).entries.sort((a, b) {
|
||||||
if (a.type == 'tree' && b.type == 'blob') {
|
return sortByKey('tree', a.type, b.type);
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (a.type == 'blob' && b.type == 'tree') {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
actionBuilder: (data, _) {
|
actionBuilder: (data, _) {
|
||||||
|
@ -194,3 +194,9 @@ String convertBase64ToString(String input) {
|
|||||||
final bits = base64.decode(input.replaceAll('\n', ''));
|
final bits = base64.decode(input.replaceAll('\n', ''));
|
||||||
return utf8.decode(bits);
|
return utf8.decode(bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int sortByKey<T>(T key, T a, T b) {
|
||||||
|
if (a == key && b != key) return -1;
|
||||||
|
if (a != key && b == key) return 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user