From 29a89b951caab788b0206861db3d8bb478f9e0ff Mon Sep 17 00:00:00 2001 From: Balazs Toldi Date: Mon, 9 May 2022 12:14:50 +0200 Subject: [PATCH] Repository list sort by date --- lib/cubit/repo_cubit.dart | 4 ++-- lib/model/repository.dart | 4 ++-- lib/service/gitea_service.dart | 5 ++++- lib/widget/repo_list.dart | 2 +- 4 files changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/cubit/repo_cubit.dart b/lib/cubit/repo_cubit.dart index a5e759b..3e49464 100644 --- a/lib/cubit/repo_cubit.dart +++ b/lib/cubit/repo_cubit.dart @@ -21,7 +21,7 @@ class RepoBloc extends Bloc { if (state.hasReachedMax) return; try { if (state.status == RepoStatus.initial) { - final repos = await giteaService.getUserRepositories(); + final repos = await giteaService.getUserRepositories(1,100); return emit(state.copyWith( status: RepoStatus.success, repos: repos, @@ -30,7 +30,7 @@ class RepoBloc extends Bloc { error_message: null, )); } - final repos = await giteaService.getUserRepositories(state.loadedPages+1); + final repos = await giteaService.getUserRepositories(state.loadedPages+1,100); emit(repos.isEmpty ? state.copyWith(hasReachedMax: true) : state.copyWith( diff --git a/lib/model/repository.dart b/lib/model/repository.dart index 9d73cd7..869772e 100644 --- a/lib/model/repository.dart +++ b/lib/model/repository.dart @@ -29,7 +29,7 @@ class Repository extends Equatable { String? defaultBranch; bool? archived; String? createdAt; - String? updatedAt; + DateTime? updatedAt; Permissions? permissions; bool? hasIssues; InternalTracker? internalTracker; @@ -121,7 +121,7 @@ class Repository extends Equatable { defaultBranch = json['default_branch']; archived = json['archived']; createdAt = json['created_at']; - updatedAt = json['updated_at']; + updatedAt = DateTime.parse(json['updated_at']); permissions = json['permissions'] != null ? Permissions.fromJson(json['permissions']) : null; diff --git a/lib/service/gitea_service.dart b/lib/service/gitea_service.dart index 030a47f..e4ab4be 100644 --- a/lib/service/gitea_service.dart +++ b/lib/service/gitea_service.dart @@ -34,9 +34,12 @@ class GiteaService { ); if (response.statusCode == 200) { final body = json.decode(response.body) as List; - return body.map((dynamic json) { + var result = body.map((dynamic json) { return Repository.fromJson(json); }).toList(); + + result.sort((a,b) => -1*a.updatedAt!.compareTo(b.updatedAt!)); + return result; } throw Exception('error fetching posts'); } diff --git a/lib/widget/repo_list.dart b/lib/widget/repo_list.dart index 9d08f62..fac4d8f 100644 --- a/lib/widget/repo_list.dart +++ b/lib/widget/repo_list.dart @@ -92,7 +92,7 @@ class RepoListItem extends StatelessWidget { final textTheme = Theme.of(context).textTheme; return Material( child: ListTile( - leading: Text('${post.id}', style: textTheme.caption), + leading: Text('${post.updatedAt!.toString()}', style: textTheme.caption), title: Text(post.name), isThreeLine: true, subtitle: Text(post.owner.username!),