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

54 lines
1.7 KiB
Dart
Raw Normal View History

2021-05-16 09:16:35 +02:00
import 'package:ferry/ferry.dart';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_touch/graphql/github.data.gql.dart';
import 'package:git_touch/graphql/github.req.gql.dart';
2021-05-16 09:16:35 +02:00
import 'package:git_touch/graphql/github.var.gql.dart';
import 'package:git_touch/scaffolds/refresh_stateful.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/object_tree.dart';
import 'package:provider/provider.dart';
import 'package:git_touch/models/auth.dart';
import 'package:flutter_gen/gen_l10n/S.dart';
class GhGistsFilesScreen extends StatelessWidget {
final String id;
final String login;
GhGistsFilesScreen(this.login, this.id);
@override
Widget build(BuildContext context) {
2021-05-16 09:16:35 +02:00
return RefreshStatefulScaffold<GGistData_user_gist?>(
title: AppBarTitle(AppLocalizations.of(context)!.files),
fetch: () async {
final req = GGistReq((b) => b
..vars.login = login
..vars.name = id);
2021-05-16 09:16:35 +02:00
final OperationResponse<GGistData, GGistVars?> res =
await context.read<AuthModel>().gqlClient!.request(req).first;
final gist = res.data!.user!.gist;
return gist;
},
bodyBuilder: (payload, _) {
return ObjectTree(
2021-05-16 09:16:35 +02:00
items: payload!.files!.map((v) {
final uri = Uri(
path: '/github/$login/gists/$id/${v.name}',
queryParameters: {
'content': v.text,
},
).toString();
return ObjectTreeItem(
url: uri,
type: 'file',
name: v.name,
downloadUrl: null,
size: v.size,
);
}),
);
},
);
}
}