2021-01-31 15:08:37 +01:00
|
|
|
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';
|
2021-01-31 15:08:37 +01:00
|
|
|
import 'package:git_touch/scaffolds/list_stateful.dart';
|
|
|
|
import 'package:git_touch/widgets/app_bar_title.dart';
|
|
|
|
import 'package:git_touch/widgets/release_item.dart';
|
2022-10-01 18:29:54 +02:00
|
|
|
import 'package:gql_github/releases.data.gql.dart';
|
|
|
|
import 'package:gql_github/releases.req.gql.dart';
|
2021-01-31 15:08:37 +01:00
|
|
|
import 'package:provider/provider.dart';
|
|
|
|
|
|
|
|
class GhReleasesScreen extends StatelessWidget {
|
2022-09-21 18:28:21 +02:00
|
|
|
const GhReleasesScreen(this.owner, this.name);
|
2021-01-31 15:08:37 +01:00
|
|
|
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-09-18 19:02:57 +02:00
|
|
|
title: const AppBarTitle('Releases'),
|
2021-01-31 15:08:37 +01:00
|
|
|
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;
|
2021-01-31 15:08:37 +01:00
|
|
|
return ListPayload(
|
|
|
|
cursor: releases.pageInfo.endCursor,
|
2021-06-13 19:23:16 +02:00
|
|
|
items: releases.nodes ?? [],
|
2021-01-31 15:08:37 +01:00
|
|
|
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,
|
2021-01-31 15:08:37 +01:00
|
|
|
name: v.name,
|
|
|
|
description: v.description,
|
|
|
|
releaseAssets: v.releaseAssets,
|
|
|
|
);
|
|
|
|
},
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|