Skip to content

Commit

Permalink
fix(gitea): pagination has more and cursor
Browse files Browse the repository at this point in the history
  • Loading branch information
pd4d10 committed Oct 6, 2020
1 parent 40a5445 commit d47ea5a
Show file tree
Hide file tree
Showing 6 changed files with 26 additions and 24 deletions.
19 changes: 13 additions & 6 deletions lib/models/auth.dart
Expand Up @@ -233,15 +233,22 @@ class AuthModel with ChangeNotifier {
return info;
}

Future<DataWithPage> fetchGiteaWithPage(String p) async {
final res = await http.get('${activeAccount.domain}/api/v1$p',
headers: {'Authorization': 'token $token'});
Future<DataWithPage> fetchGiteaWithPage(String path,
{int page, int limit}) async {
page = page ?? 1;
limit = limit ?? pageSize;

final uri = Uri.parse('${activeAccount.domain}/api/v1$path').replace(
queryParameters: {'page': page.toString(), 'limit': limit.toString()},
);
final res = await http.get(uri, headers: {'Authorization': 'token $token'});
final info = json.decode(utf8.decode(res.bodyBytes));

return DataWithPage(
data: info,
cursor: int.tryParse(res.headers["x-page"] ?? ''),
hasMore: res.headers['x-hasmore'] == 'true',
total: int.tryParse(res.headers['x-total'] ?? ''),
cursor: page + 1,
hasMore: info is List && info.length > 0,
total: int.tryParse(res.headers['x-total-count'] ?? ''),
);
}

Expand Down
6 changes: 3 additions & 3 deletions lib/screens/gt_commits.dart
Expand Up @@ -17,9 +17,9 @@ class GtCommitsScreen extends StatelessWidget {
return ListStatefulScaffold<GiteaCommit, int>(
title: AppBarTitle('Commits'),
onLoadMore: (page) async {
page = page ?? 1;
final res = await context.read<AuthModel>().fetchGiteaWithPage(
'/repos/$owner/$name/commits?page=$page&limit=20');
final res = await context
.read<AuthModel>()
.fetchGiteaWithPage('/repos/$owner/$name/commits', page: page);
return ListPayload(
cursor: res.cursor,
hasMore: res.hasMore,
Expand Down
4 changes: 2 additions & 2 deletions lib/screens/gt_issues.dart
Expand Up @@ -18,10 +18,10 @@ class GtIssuesScreen extends StatelessWidget {
title: AppBarTitle(isPr ? 'Pull Requests' : 'Issues'),
// TODO: create issue
onLoadMore: (page) async {
page = page ?? 1;
final type = isPr ? 'pulls' : 'issues';
final res = await context.read<AuthModel>().fetchGiteaWithPage(
'/repos/$owner/$name/issues?state=open&page=$page&limit=20&type=$type');
'/repos/$owner/$name/issues?state=open&type=$type',
page: page);
return ListPayload(
cursor: res.cursor,
hasMore: res.hasMore,
Expand Down
7 changes: 3 additions & 4 deletions lib/screens/gt_orgs.dart
Expand Up @@ -13,14 +13,13 @@ class GtOrgsScreen extends StatelessWidget {
title: AppBarTitle('Organizations'),
onLoadMore: (page) async {
// final String branch; // TODO:
page = page ?? 1;
final res = await context
.read<AuthModel>()
.fetchGiteaWithPage('/orgs?limit=20&page=$page');
.fetchGiteaWithPage('/orgs', page: page);
// TODO: https://github.com/go-gitea/gitea/issues/10199
return ListPayload(
cursor: page + 1,
hasMore: (res.data as List).length == 20,
cursor: res.cursor,
hasMore: res.hasMore,
items: (res.data as List).map((v) => GiteaOrg.fromJson(v)).toList(),
);
},
Expand Down
8 changes: 3 additions & 5 deletions lib/screens/gt_repos.dart
Expand Up @@ -29,12 +29,10 @@ class GtReposScreen extends StatelessWidget {
return ListStatefulScaffold<GiteaRepository, int>(
title: AppBarTitle(title),
onLoadMore: (page) async {
page = page ?? 1;
final res = await context
.read<AuthModel>()
.fetchGiteaWithPage('$api?page=$page');
final res =
await context.read<AuthModel>().fetchGiteaWithPage(api, page: page);
return ListPayload(
cursor: page + 1,
cursor: res.cursor,
hasMore: res.hasMore,
items: [for (var v in res.data) GiteaRepository.fromJson(v)],
);
Expand Down
6 changes: 2 additions & 4 deletions lib/screens/gt_users.dart
Expand Up @@ -32,10 +32,8 @@ class GtUsersScreen extends StatelessWidget {
return ListStatefulScaffold<GiteaUser, int>(
title: AppBarTitle(title),
onLoadMore: (page) async {
page = page ?? 1;
final res = await context
.read<AuthModel>()
.fetchGiteaWithPage('$api?page=$page');
final res =
await context.read<AuthModel>().fetchGiteaWithPage(api, page: page);
return ListPayload(
cursor: res.cursor,
hasMore: res.hasMore,
Expand Down

0 comments on commit d47ea5a

Please sign in to comment.