mirror of
https://github.com/git-touch/git-touch
synced 2025-02-21 22:07:51 +01:00
fix(gitea): pagination has more and cursor
This commit is contained in:
parent
40a5445dd6
commit
d47ea5a092
@ -233,15 +233,22 @@ class AuthModel with ChangeNotifier {
|
|||||||
return info;
|
return info;
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<DataWithPage> fetchGiteaWithPage(String p) async {
|
Future<DataWithPage> fetchGiteaWithPage(String path,
|
||||||
final res = await http.get('${activeAccount.domain}/api/v1$p',
|
{int page, int limit}) async {
|
||||||
headers: {'Authorization': 'token $token'});
|
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));
|
final info = json.decode(utf8.decode(res.bodyBytes));
|
||||||
|
|
||||||
return DataWithPage(
|
return DataWithPage(
|
||||||
data: info,
|
data: info,
|
||||||
cursor: int.tryParse(res.headers["x-page"] ?? ''),
|
cursor: page + 1,
|
||||||
hasMore: res.headers['x-hasmore'] == 'true',
|
hasMore: info is List && info.length > 0,
|
||||||
total: int.tryParse(res.headers['x-total'] ?? ''),
|
total: int.tryParse(res.headers['x-total-count'] ?? ''),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,9 +17,9 @@ class GtCommitsScreen extends StatelessWidget {
|
|||||||
return ListStatefulScaffold<GiteaCommit, int>(
|
return ListStatefulScaffold<GiteaCommit, int>(
|
||||||
title: AppBarTitle('Commits'),
|
title: AppBarTitle('Commits'),
|
||||||
onLoadMore: (page) async {
|
onLoadMore: (page) async {
|
||||||
page = page ?? 1;
|
final res = await context
|
||||||
final res = await context.read<AuthModel>().fetchGiteaWithPage(
|
.read<AuthModel>()
|
||||||
'/repos/$owner/$name/commits?page=$page&limit=20');
|
.fetchGiteaWithPage('/repos/$owner/$name/commits', page: page);
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: res.cursor,
|
cursor: res.cursor,
|
||||||
hasMore: res.hasMore,
|
hasMore: res.hasMore,
|
||||||
|
@ -18,10 +18,10 @@ class GtIssuesScreen extends StatelessWidget {
|
|||||||
title: AppBarTitle(isPr ? 'Pull Requests' : 'Issues'),
|
title: AppBarTitle(isPr ? 'Pull Requests' : 'Issues'),
|
||||||
// TODO: create issue
|
// TODO: create issue
|
||||||
onLoadMore: (page) async {
|
onLoadMore: (page) async {
|
||||||
page = page ?? 1;
|
|
||||||
final type = isPr ? 'pulls' : 'issues';
|
final type = isPr ? 'pulls' : 'issues';
|
||||||
final res = await context.read<AuthModel>().fetchGiteaWithPage(
|
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(
|
return ListPayload(
|
||||||
cursor: res.cursor,
|
cursor: res.cursor,
|
||||||
hasMore: res.hasMore,
|
hasMore: res.hasMore,
|
||||||
|
@ -13,14 +13,13 @@ class GtOrgsScreen extends StatelessWidget {
|
|||||||
title: AppBarTitle('Organizations'),
|
title: AppBarTitle('Organizations'),
|
||||||
onLoadMore: (page) async {
|
onLoadMore: (page) async {
|
||||||
// final String branch; // TODO:
|
// final String branch; // TODO:
|
||||||
page = page ?? 1;
|
|
||||||
final res = await context
|
final res = await context
|
||||||
.read<AuthModel>()
|
.read<AuthModel>()
|
||||||
.fetchGiteaWithPage('/orgs?limit=20&page=$page');
|
.fetchGiteaWithPage('/orgs', page: page);
|
||||||
// TODO: https://github.com/go-gitea/gitea/issues/10199
|
// TODO: https://github.com/go-gitea/gitea/issues/10199
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: page + 1,
|
cursor: res.cursor,
|
||||||
hasMore: (res.data as List).length == 20,
|
hasMore: res.hasMore,
|
||||||
items: (res.data as List).map((v) => GiteaOrg.fromJson(v)).toList(),
|
items: (res.data as List).map((v) => GiteaOrg.fromJson(v)).toList(),
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -29,12 +29,10 @@ class GtReposScreen extends StatelessWidget {
|
|||||||
return ListStatefulScaffold<GiteaRepository, int>(
|
return ListStatefulScaffold<GiteaRepository, int>(
|
||||||
title: AppBarTitle(title),
|
title: AppBarTitle(title),
|
||||||
onLoadMore: (page) async {
|
onLoadMore: (page) async {
|
||||||
page = page ?? 1;
|
final res =
|
||||||
final res = await context
|
await context.read<AuthModel>().fetchGiteaWithPage(api, page: page);
|
||||||
.read<AuthModel>()
|
|
||||||
.fetchGiteaWithPage('$api?page=$page');
|
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: page + 1,
|
cursor: res.cursor,
|
||||||
hasMore: res.hasMore,
|
hasMore: res.hasMore,
|
||||||
items: [for (var v in res.data) GiteaRepository.fromJson(v)],
|
items: [for (var v in res.data) GiteaRepository.fromJson(v)],
|
||||||
);
|
);
|
||||||
|
@ -32,10 +32,8 @@ class GtUsersScreen extends StatelessWidget {
|
|||||||
return ListStatefulScaffold<GiteaUser, int>(
|
return ListStatefulScaffold<GiteaUser, int>(
|
||||||
title: AppBarTitle(title),
|
title: AppBarTitle(title),
|
||||||
onLoadMore: (page) async {
|
onLoadMore: (page) async {
|
||||||
page = page ?? 1;
|
final res =
|
||||||
final res = await context
|
await context.read<AuthModel>().fetchGiteaWithPage(api, page: page);
|
||||||
.read<AuthModel>()
|
|
||||||
.fetchGiteaWithPage('$api?page=$page');
|
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: res.cursor,
|
cursor: res.cursor,
|
||||||
hasMore: res.hasMore,
|
hasMore: res.hasMore,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user