From ea9e26134a3084223caf6074f7f371da6350b284 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Mon, 6 Apr 2020 12:03:44 +0800 Subject: [PATCH] refactor(gh): create issue with rest api --- lib/screens/gh_issue_form.dart | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/lib/screens/gh_issue_form.dart b/lib/screens/gh_issue_form.dart index 9789489..4d3d0f8 100644 --- a/lib/screens/gh_issue_form.dart +++ b/lib/screens/gh_issue_form.dart @@ -1,10 +1,12 @@ +import 'dart:convert'; + import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; -import 'package:git_touch/graphql/gh.dart'; import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/scaffolds/common.dart'; import 'package:git_touch/utils/utils.dart'; +import 'package:github/github.dart'; import 'package:provider/provider.dart'; class GhIssueFormScreen extends StatefulWidget { @@ -57,20 +59,23 @@ class _GhIssueFormScreenState extends State { onPressed: () async { final auth = Provider.of(context); final theme = Provider.of(context); - final r0 = await auth.gqlClient.execute( - GhRepoIdQuery( - variables: - GhRepoIdArguments(owner: widget.owner, name: widget.name), - ), + + final slug = RepositorySlug(widget.owner, widget.name); + + // TODO: https://github.com/SpinlockLabs/github.dart/issues/211 + // final res = await auth.ghClient.issues + // .create(slug, IssueRequest(title: _title, body: _body)); + + final response = await auth.ghClient.request( + 'POST', + '/repos/${slug.fullName}/issues', + body: jsonEncode({'title': _title, 'body': _body}), ); - final res = await auth.gqlClient.execute(GhCreateIssueQuery( - variables: GhCreateIssueArguments( - repoId: r0.data.repository.id, title: _title, body: _body), - )); - final issue = res.data.createIssue.issue; + final res = Issue.fromJson( + jsonDecode(response.body) as Map); await theme.push( context, - '/${issue.repository.owner.login}/${issue.repository.name}/issues/${issue.number}', + '/${widget.owner}/${widget.name}/issues/${res.number}', replace: true, ); },