mirror of
https://github.com/git-touch/git-touch
synced 2025-02-20 13:30:38 +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;
|
||||
}
|
||||
|
||||
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'] ?? ''),
|
||||
);
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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,
|
||||
|
@ -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(),
|
||||
);
|
||||
},
|
||||
|
@ -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)],
|
||||
);
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user