diff --git a/lib/graphql/github.graphql b/lib/graphql/github.graphql index e0267e2..adee777 100644 --- a/lib/graphql/github.graphql +++ b/lib/graphql/github.graphql @@ -1105,3 +1105,15 @@ query Releases($name: String!, $owner: String!, $cursor: String) { } } } + +# meta +query Meta { + meta { + gitHubServicesSha + gitIpAddresses + hookIpAddresses + importerIpAddresses + isPasswordAuthenticationVerifiable + pagesIpAddresses + } +} diff --git a/lib/router.dart b/lib/router.dart index d76b5d9..26601c4 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -36,6 +36,7 @@ import 'package:git_touch/screens/gh_gists_files.dart'; import 'package:git_touch/screens/gh_issue.dart'; import 'package:git_touch/screens/gh_issue_form.dart'; import 'package:git_touch/screens/gh_issues.dart'; +import 'package:git_touch/screens/gh_meta.dart'; import 'package:git_touch/screens/gh_object.dart'; import 'package:git_touch/screens/gh_pulls.dart'; import 'package:git_touch/screens/gh_releases.dart'; @@ -98,6 +99,12 @@ final router = GoRouter( GoRoute( path: 'settings', builder: (context, state) => SettingsScreen(), + routes: [ + GoRoute( + path: 'github-meta', + builder: (context, state) => const GhMetaScreen(), + ), + ], ), // github diff --git a/lib/screens/gh_meta.dart b/lib/screens/gh_meta.dart new file mode 100644 index 0000000..b7e066a --- /dev/null +++ b/lib/screens/gh_meta.dart @@ -0,0 +1,34 @@ +import 'package:flutter/widgets.dart'; +import 'package:git_touch/graphql/__generated__/github.data.gql.dart'; +import 'package:git_touch/graphql/__generated__/github.req.gql.dart'; +import 'package:git_touch/models/auth.dart'; +import 'package:git_touch/scaffolds/refresh_stateful.dart'; +import 'package:git_touch/widgets/table_view.dart'; +import 'package:provider/provider.dart'; + +class GhMetaScreen extends StatelessWidget { + const GhMetaScreen({super.key}); + + @override + Widget build(BuildContext context) { + return RefreshStatefulScaffold( + title: const Text('Meta'), + fetch: () async { + final req = GMetaReq(); + final res = + await context.read().gqlClient.request(req).first; + return res.data!.meta; + }, + bodyBuilder: (meta, _) { + return TableView( + items: [ + TableViewItem( + child: const Text('Service SHA'), + extra: Text(meta.gitHubServicesSha), + ), + ], + ); + }, + ); + } +} diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 0e11d10..b0bec7f 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -32,6 +32,10 @@ class SettingsScreen extends StatelessWidget { child: Text(AppLocalizations.of(context)!.githubStatus), url: 'https://www.githubstatus.com/', ), + const TableViewItem( + child: Text('Meta'), + url: '/settings/github-meta', + ), TableViewItem( child: Text(AppLocalizations.of(context)!.reviewPermissions), url: