From 2b6d45c457b24570dfa554fc16b9509b64e49f2b Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Sun, 6 Oct 2019 16:13:56 +0800 Subject: [PATCH] feat: gitlab login by token --- lib/screens/login.dart | 47 ++++++++++++++++++++++++++++++++--- lib/screens/login_gitlab.dart | 44 -------------------------------- 2 files changed, 43 insertions(+), 48 deletions(-) delete mode 100644 lib/screens/login_gitlab.dart diff --git a/lib/screens/login.dart b/lib/screens/login.dart index 6e5aba2..0774e34 100644 --- a/lib/screens/login.dart +++ b/lib/screens/login.dart @@ -132,11 +132,50 @@ class _LoginScreenState extends State { } } }, + ), + _buildAddItem( + text: 'GitLab Account by Token', + onTap: () async { + var result = + await Provider.of(context).showConfirm( + context, + Column( + children: [ + CupertinoTextField( + placeholder: 'Access token', + onChanged: (v) { + setState(() { + _token = v; + }); + }, + ), + SizedBox(height: 8), + Text( + 'GitTouch needs these permissions', + style: TextStyle( + fontSize: 14, fontWeight: FontWeight.w400), + ), + SizedBox(height: 8), + Text( + 'api, read_user, read_repository', + style: TextStyle( + fontSize: 16, color: PrimerColors.blue500), + ) + ], + ), + ); + if (result == true) { + try { + await auth.loginToGitlab( + 'https://gitlab.com', _token); + // TODO: Custom domain + } catch (err) { + Provider.of(context).showConfirm( + context, Text('Token invalid: $err')); + } + } + }, ) - // _buildAddItem( - // text: 'GitLab Account', - // screenBuilder: (_) => LoginGitlabScreen(), - // ) ], ), ), diff --git a/lib/screens/login_gitlab.dart b/lib/screens/login_gitlab.dart deleted file mode 100644 index 6e4e4f0..0000000 --- a/lib/screens/login_gitlab.dart +++ /dev/null @@ -1,44 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:git_touch/models/auth.dart'; -import 'package:git_touch/scaffolds/single.dart'; -import 'package:git_touch/widgets/app_bar_title.dart'; -import 'package:provider/provider.dart'; - -class LoginGitlabScreen extends StatefulWidget { - @override - _LoginGitlabScreenState createState() => _LoginGitlabScreenState(); -} - -class _LoginGitlabScreenState extends State { - String _token; - String _domain; - - @override - Widget build(BuildContext context) { - return SingleScaffold( - title: AppBarTitle('Login to GitLab'), - body: Column( - children: [ - TextField( - // decoration: InputDecoration(icon: Icon(Icons.more_vert)), - onChanged: (value) { - _domain = value; - }, - ), - TextField( - onChanged: (value) { - _token = value; - }, - ), - MaterialButton( - child: Text('Login'), - onPressed: () { - Provider.of(context).loginToGitlab(_domain, _token); - Navigator.of(context).pop(); - }, - ) - ], - ), - ); - } -}