From 259d25d376b43fc17fc52375be99eadf0397c1bd Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Mon, 30 Dec 2019 20:50:31 +0800 Subject: [PATCH] improvement: save gitlab id --- lib/models/account.dart | 3 +++ lib/models/account.g.dart | 2 ++ lib/models/auth.dart | 8 +++++--- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/models/account.dart b/lib/models/account.dart index 6c921fa..ab04772 100644 --- a/lib/models/account.dart +++ b/lib/models/account.dart @@ -10,6 +10,7 @@ class Account { String token; String login; String avatarUrl; + int gitlabId; equals(Account a) { final uri = Uri.parse(domain); @@ -18,6 +19,7 @@ class Account { // Treat domains as the same if they have the same hosts and ports return a.platform == platform && a.login == login && + a.gitlabId == gitlabId && uri.host == uriA.host && uri.port == uriA.port; } @@ -28,6 +30,7 @@ class Account { @required this.token, @required this.login, @required this.avatarUrl, + this.gitlabId, }); factory Account.fromJson(Map json) => diff --git a/lib/models/account.g.dart b/lib/models/account.g.dart index a4ea5fa..2bed3ee 100644 --- a/lib/models/account.g.dart +++ b/lib/models/account.g.dart @@ -13,6 +13,7 @@ Account _$AccountFromJson(Map json) { token: json['token'] as String, login: json['login'] as String, avatarUrl: json['avatarUrl'] as String, + gitlabId: json['gitlabId'] as int, ); } @@ -22,4 +23,5 @@ Map _$AccountToJson(Account instance) => { 'token': instance.token, 'login': instance.login, 'avatarUrl': instance.avatarUrl, + 'gitlabId': instance.gitlabId, }; diff --git a/lib/models/auth.dart b/lib/models/auth.dart index 912d18e..5ff56eb 100644 --- a/lib/models/auth.dart +++ b/lib/models/auth.dart @@ -15,6 +15,7 @@ import 'package:shared_preferences/shared_preferences.dart'; import '../utils/constants.dart'; import '../utils/utils.dart'; import 'account.dart'; +import 'gitlab.dart'; class PlatformType { static const github = 'github'; @@ -111,17 +112,18 @@ class AuthModel with ChangeNotifier { final res = await http .get('$domain/api/v4/user', headers: {'Private-Token': token}); final info = json.decode(res.body); - if (info['message'] != null) { throw info['message']; } + final user = GitlabUser.fromJson(info); await _addAccount(Account( platform: PlatformType.gitlab, domain: domain, token: token, - login: info['username'] as String, - avatarUrl: info['avatar_url'] as String, + login: user.username, + avatarUrl: user.avatarUrl, + gitlabId: user.id, )); } catch (err) { Fimber.e('loginToGitlab failed', ex: err);