git-touch-android-ios-app/lib/screens/gh_releases.dart

48 lines
1.5 KiB
Dart
Raw Normal View History

import 'package:flutter/cupertino.dart';
2022-09-17 14:35:45 +02:00
import 'package:flutter/widgets.dart';
import 'package:git_touch/models/auth.dart';
import 'package:git_touch/scaffolds/list_stateful.dart';
import 'package:git_touch/widgets/release_item.dart';
import 'package:gql_github/releases.data.gql.dart';
import 'package:gql_github/releases.req.gql.dart';
import 'package:provider/provider.dart';
class GhReleasesScreen extends StatelessWidget {
2022-09-21 18:28:21 +02:00
const GhReleasesScreen(this.owner, this.name);
final String owner;
final String name;
@override
Widget build(BuildContext context) {
return ListStatefulScaffold<GReleasesData_repository_releases_nodes,
2021-05-16 09:16:35 +02:00
String?>(
2022-10-07 19:06:03 +02:00
title: const Text('Releases'),
fetch: (page) async {
final req = GReleasesReq((b) => b
..vars.owner = owner
..vars.name = name
..vars.cursor = page);
2022-09-30 21:49:56 +02:00
final res =
2022-10-01 19:26:34 +02:00
await context.read<AuthModel>().ghGqlClient.request(req).first;
2021-05-16 09:16:35 +02:00
final releases = res.data!.repository!.releases;
return ListPayload(
cursor: releases.pageInfo.endCursor,
2021-06-13 19:23:16 +02:00
items: releases.nodes ?? [],
hasMore: releases.pageInfo.hasNextPage,
);
},
itemBuilder: (v) {
return ReleaseItem(
tagName: v.tagName,
publishedAt: v.publishedAt,
2021-05-16 09:16:35 +02:00
avatarUrl: v.author!.avatarUrl,
login: v.author!.name,
name: v.name,
description: v.description,
releaseAssets: v.releaseAssets,
);
},
);
}
}