From 62c53e543db009d596e31c8722ef58502f3b2633 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Fri, 27 Sep 2019 20:52:38 +0800 Subject: [PATCH] refactor: rename to auth --- lib/main.dart | 10 +++---- lib/models/account.dart | 12 ++++----- lib/models/account.g.dart | 7 +++-- lib/models/{settings.dart => auth.dart} | 36 +++++++------------------ lib/screens/commits.dart | 4 +-- lib/screens/issue.dart | 6 ++--- lib/screens/issues.dart | 4 +-- lib/screens/login.dart | 6 ++--- lib/screens/login_gitlab.dart | 5 ++-- lib/screens/news.dart | 6 ++--- lib/screens/notifications.dart | 8 +++--- lib/screens/object.dart | 4 +-- lib/screens/organization.dart | 4 +-- lib/screens/repositories.dart | 4 +-- lib/screens/repository.dart | 17 ++++++------ lib/screens/search.dart | 4 +-- lib/screens/user.dart | 8 +++--- lib/screens/users.dart | 4 +-- lib/widgets/notification_item.dart | 4 +-- 19 files changed, 66 insertions(+), 87 deletions(-) rename lib/models/{settings.dart => auth.dart} (87%) diff --git a/lib/main.dart b/lib/main.dart index 298c7de..277f34f 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; import 'package:git_touch/models/code.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:git_touch/models/theme.dart'; import 'package:git_touch/screens/issues.dart'; import 'package:git_touch/screens/repository.dart'; @@ -34,7 +34,7 @@ class _HomeState extends State { nextTick(() { // FIXME: Provider.of(context).init(); - Provider.of(context).init(); + Provider.of(context).init(); Provider.of(context).init(); }); } @@ -107,7 +107,7 @@ class _HomeState extends State { return SearchScreen(); case 4: return UserScreen( - Provider.of(context).activeAccount.login, + Provider.of(context).activeAccount.login, isMe: true, ); } @@ -115,7 +115,7 @@ class _HomeState extends State { @override Widget build(BuildContext context) { - var settings = Provider.of(context); + var settings = Provider.of(context); var themData = ThemeData( // primaryColor: HSLColor.fromColor(Palette.primary) // .withLightness(0.3) @@ -182,7 +182,7 @@ class App extends StatelessWidget { providers: [ ChangeNotifierProvider(builder: (context) => NotificationModel()), ChangeNotifierProvider(builder: (context) => ThemeModel()), - ChangeNotifierProvider(builder: (context) => SettingsModel()), + ChangeNotifierProvider(builder: (context) => AuthModel()), ChangeNotifierProvider(builder: (context) => CodeModel()), ], child: Home(), diff --git a/lib/models/account.dart b/lib/models/account.dart index 0aafd6d..6c921fa 100644 --- a/lib/models/account.dart +++ b/lib/models/account.dart @@ -4,14 +4,14 @@ import 'package:meta/meta.dart'; part 'account.g.dart'; @JsonSerializable() -class AccountModel { +class Account { String platform; String domain; String token; String login; String avatarUrl; - equals(AccountModel a) { + equals(Account a) { final uri = Uri.parse(domain); final uriA = Uri.parse(a.domain); @@ -22,7 +22,7 @@ class AccountModel { uri.port == uriA.port; } - AccountModel({ + Account({ @required this.platform, @required this.domain, @required this.token, @@ -30,8 +30,8 @@ class AccountModel { @required this.avatarUrl, }); - factory AccountModel.fromJson(Map json) => - _$AccountModelFromJson(json); + factory Account.fromJson(Map json) => + _$AccountFromJson(json); - Map toJson() => _$AccountModelToJson(this); + Map toJson() => _$AccountToJson(this); } diff --git a/lib/models/account.g.dart b/lib/models/account.g.dart index e5b608a..a4ea5fa 100644 --- a/lib/models/account.g.dart +++ b/lib/models/account.g.dart @@ -6,8 +6,8 @@ part of 'account.dart'; // JsonSerializableGenerator // ************************************************************************** -AccountModel _$AccountModelFromJson(Map json) { - return AccountModel( +Account _$AccountFromJson(Map json) { + return Account( platform: json['platform'] as String, domain: json['domain'] as String, token: json['token'] as String, @@ -16,8 +16,7 @@ AccountModel _$AccountModelFromJson(Map json) { ); } -Map _$AccountModelToJson(AccountModel instance) => - { +Map _$AccountToJson(Account instance) => { 'platform': instance.platform, 'domain': instance.domain, 'token': instance.token, diff --git a/lib/models/settings.dart b/lib/models/auth.dart similarity index 87% rename from lib/models/settings.dart rename to lib/models/auth.dart index 8f52141..7a55c9f 100644 --- a/lib/models/settings.dart +++ b/lib/models/auth.dart @@ -19,44 +19,26 @@ class PlatformType { static const gitlab = 'gitlab'; } -// abstract class Model { -// Future query(BuildContext context) { -// var settings = Provider.of(context); - -// switch (settings.platformType) { -// case PlatformType.github: -// return queryGithub(settings); -// case PlatformType.gitlab: -// return queryGitlab(settings); -// default: -// return null; -// } -// } - -// Future queryGithub(SettingsProviderState settings); -// Future queryGitlab(SettingsProviderState settings); -// } - -class SettingsModel with ChangeNotifier { +class AuthModel with ChangeNotifier { static const _apiPrefix = 'https://api.github.com'; - List _accounts; + List _accounts; int activeAccountIndex; StreamSubscription _sub; bool loading = false; - List get accounts => _accounts; + List get accounts => _accounts; bool get ready => _accounts != null; - AccountModel get activeAccount { + Account get activeAccount { if (activeAccountIndex == null || _accounts == null) return null; return _accounts[activeAccountIndex]; } String get token => activeAccount.token; - _setAccounts(AccountModel account) async { + _addAccount(Account account) async { // Remove previous if duplicated - List newAccounts = []; + List newAccounts = []; for (var a in _accounts) { if (!account.equals(a)) { newAccounts.add(a); @@ -107,7 +89,7 @@ class SettingsModel with ChangeNotifier { } ''', token); - await _setAccounts(AccountModel( + await _addAccount(Account( platform: PlatformType.github, domain: 'https://github.com', token: token, @@ -132,7 +114,7 @@ class SettingsModel with ChangeNotifier { throw info['message']; } - await _setAccounts(AccountModel( + await _addAccount(Account( platform: PlatformType.gitlab, domain: domain, token: token, @@ -161,7 +143,7 @@ class SettingsModel with ChangeNotifier { String str = prefs.getString(StorageKeys.accounts); print('read accounts: $str'); _accounts = (json.decode(str ?? '[]') as List) - .map((item) => AccountModel.fromJson(item)) + .map((item) => Account.fromJson(item)) .toList(); } catch (err) { print(err); diff --git a/lib/screens/commits.dart b/lib/screens/commits.dart index a61d4ef..2564906 100644 --- a/lib/screens/commits.dart +++ b/lib/screens/commits.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; @@ -22,7 +22,7 @@ class CommitsScreen extends StatelessWidget { params += ', after: "$cursor"'; } var key = getBranchQueryKey(branch, withParams: true); - var data = await Provider.of(context).query(''' + var data = await Provider.of(context).query(''' { repository(owner: "$owner", name: "$name") { $key { diff --git a/lib/screens/issue.dart b/lib/screens/issue.dart index d2604c3..b6861aa 100644 --- a/lib/screens/issue.dart +++ b/lib/screens/issue.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:primer/primer.dart'; import 'package:provider/provider.dart'; import 'package:share/share.dart'; @@ -273,7 +273,7 @@ __typename } } - var data = await Provider.of(context).query(''' + var data = await Provider.of(context).query(''' { repository(owner: "$owner", name: "$name") { $resource(number: $number) { @@ -323,7 +323,7 @@ __typename var id = payload['id'] as String; var operation = isRemove ? 'remove' : 'add'; - await Provider.of(context).query(''' + await Provider.of(context).query(''' mutation { ${operation}Reaction(input: {subjectId: "$id", content: $emojiKey}) { clientMutationId diff --git a/lib/screens/issues.dart b/lib/screens/issues.dart index 4f791db..623df84 100644 --- a/lib/screens/issues.dart +++ b/lib/screens/issues.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/issue_item.dart'; @@ -21,7 +21,7 @@ class IssuesScreen extends StatelessWidget { var cursorChunk = cursor == null ? '' : ', after: "$cursor"'; var resource = isPullRequest ? 'pullRequests' : 'issues'; - var data = await Provider.of(context).query(''' + var data = await Provider.of(context).query(''' { repository(owner: "$owner", name: "$name") { $resource(states: OPEN, orderBy: {field: CREATED_AT, direction: DESC}, first: $pageSize$cursorChunk) { diff --git a/lib/screens/login.dart b/lib/screens/login.dart index 4172b24..1d6435b 100644 --- a/lib/screens/login.dart +++ b/lib/screens/login.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:git_touch/models/settings.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'; @@ -15,7 +15,7 @@ class LoginScreen extends StatefulWidget { class _LoginScreenState extends State { Widget _buildAccountItem(int index) { - final settings = Provider.of(context); + final settings = Provider.of(context); final account = settings.accounts[index]; return Link( @@ -72,7 +72,7 @@ class _LoginScreenState extends State { @override Widget build(BuildContext context) { - final settings = Provider.of(context); + final settings = Provider.of(context); return SingleScaffold( title: AppBarTitle('Select account'), diff --git a/lib/screens/login_gitlab.dart b/lib/screens/login_gitlab.dart index 7e496c5..6e4e4f0 100644 --- a/lib/screens/login_gitlab.dart +++ b/lib/screens/login_gitlab.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:git_touch/models/settings.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'; @@ -33,8 +33,7 @@ class _LoginGitlabScreenState extends State { MaterialButton( child: Text('Login'), onPressed: () { - Provider.of(context) - .loginToGitlab(_domain, _token); + Provider.of(context).loginToGitlab(_domain, _token); Navigator.of(context).pop(); }, ) diff --git a/lib/screens/news.dart b/lib/screens/news.dart index 9b7f5fb..cb1f005 100644 --- a/lib/screens/news.dart +++ b/lib/screens/news.dart @@ -6,7 +6,7 @@ import 'package:git_touch/utils/utils.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:provider/provider.dart'; import '../widgets/event_item.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; class NewsFilter { static const all = 'all'; @@ -32,7 +32,7 @@ class NewsScreenState extends State { nextTick(() async { // Check if there are unread notification items. // 1 item is enough since count is not displayed for now. - var items = await Provider.of(context) + var items = await Provider.of(context) .getWithCredentials('/notifications?per_page=1'); if (items is List && items.isNotEmpty) { @@ -49,7 +49,7 @@ class NewsScreenState extends State { } Future> fetchEvents([int page = 1]) async { - final settings = Provider.of(context); + final settings = Provider.of(context); final login = settings.activeAccount.login; List data = await settings.getWithCredentials( '/users/$login/received_events?page=$page&per_page=$pageSize'); diff --git a/lib/screens/notifications.dart b/lib/screens/notifications.dart index 945cfee..7c0181b 100644 --- a/lib/screens/notifications.dart +++ b/lib/screens/notifications.dart @@ -4,7 +4,7 @@ import 'package:git_touch/scaffolds/tab_stateful.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:provider/provider.dart'; import 'package:git_touch/models/notification.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import '../widgets/notification_item.dart'; import '../widgets/list_group.dart'; import '../widgets/link.dart'; @@ -18,7 +18,7 @@ class NotificationScreen extends StatefulWidget { class NotificationScreenState extends State { Future> fetchNotifications(int index) async { - List items = await Provider.of(context).getWithCredentials( + List items = await Provider.of(context).getWithCredentials( '/notifications?all=${index == 2}&participating=${index == 1}'); var ns = items.map((item) => NotificationPayload.fromJson(item)).toList(); @@ -77,7 +77,7 @@ $key: pullRequest(number: ${item.number}) { schema += '}'; // print(schema); - var data = await Provider.of(context).query(schema); + var data = await Provider.of(context).query(schema); _groupMap.forEach((repo, group) { group.items.forEach((item) { var groupData = data[group.key]; @@ -112,7 +112,7 @@ $key: pullRequest(number: ${item.number}) { Link( material: false, onTap: () async { - await Provider.of(context) + await Provider.of(context) .putWithCredentials('/repos/$repo/notifications'); // await _onSwitchTab(); // TODO: }, diff --git a/lib/screens/object.dart b/lib/screens/object.dart index 3595960..a082d4c 100644 --- a/lib/screens/object.dart +++ b/lib/screens/object.dart @@ -11,7 +11,7 @@ import 'package:git_touch/widgets/table_view.dart'; import 'package:path/path.dart' as path; import 'package:flutter/material.dart'; import 'package:flutter_highlight/flutter_highlight.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart'; import 'package:git_touch/utils/utils.dart'; import 'package:primer/primer.dart'; @@ -146,7 +146,7 @@ class ObjectScreen extends StatelessWidget { return RefreshStatefulScaffold( title: AppBarTitle(paths.join('/')), onRefresh: () async { - var data = await Provider.of(context).query('''{ + var data = await Provider.of(context).query('''{ repository(owner: "$owner", name: "$name") { object(expression: "$_expression") { $_subQuery diff --git a/lib/screens/organization.dart b/lib/screens/organization.dart index 971ceba..bba765f 100644 --- a/lib/screens/organization.dart +++ b/lib/screens/organization.dart @@ -10,7 +10,7 @@ import 'package:git_touch/widgets/table_view.dart'; import 'package:git_touch/widgets/user_item.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:share/share.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart'; import '../widgets/action.dart'; import '../utils/utils.dart'; @@ -57,7 +57,7 @@ class OrganizationScreen extends StatelessWidget { return RefreshStatefulScaffold( onRefresh: () async { // Use pinnableItems instead of organization here due to token permission - var data = await Provider.of(context).query(''' + var data = await Provider.of(context).query(''' { organization(login: "$login") { name diff --git a/lib/screens/repositories.dart b/lib/screens/repositories.dart index 730a0a7..210db67 100644 --- a/lib/screens/repositories.dart +++ b/lib/screens/repositories.dart @@ -1,7 +1,7 @@ import 'package:flutter/material.dart'; import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart'; import '../utils/utils.dart'; import 'package:git_touch/widgets/repository_item.dart'; @@ -39,7 +39,7 @@ class RepositoriesScreen extends StatelessWidget { Future _queryRepos(BuildContext context, [String cursor]) async { var cursorChunk = cursor == null ? '' : ', after: "$cursor"'; - var data = await Provider.of(context).query(''' + var data = await Provider.of(context).query(''' { $scope(login: "$login") { $resource(first: $pageSize$cursorChunk, $extra0) { diff --git a/lib/screens/repository.dart b/lib/screens/repository.dart index 9624157..6509fd7 100644 --- a/lib/screens/repository.dart +++ b/lib/screens/repository.dart @@ -2,7 +2,7 @@ import 'dart:convert'; import 'package:filesize/filesize.dart'; import 'package:flutter/material.dart'; import 'package:flutter/cupertino.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:git_touch/scaffolds/refresh_stateful.dart'; import 'package:git_touch/screens/users.dart'; import 'package:git_touch/utils/utils.dart'; @@ -38,7 +38,7 @@ class RepositoryScreen extends StatelessWidget { Future queryRepo(BuildContext context) async { var branchKey = getBranchQueryKey(branch, withParams: true); - var data = await Provider.of(context).query(''' + var data = await Provider.of(context).query(''' { repository(owner: "$owner", name: "$name") { id @@ -127,7 +127,7 @@ class RepositoryScreen extends StatelessWidget { } Future fetchReadme(BuildContext context) async { - var data = await Provider.of(context) + var data = await Provider.of(context) .getWithCredentials('/repos/$owner/$name/readme'); if (data['content'] == null) { @@ -174,11 +174,11 @@ class RepositoryScreen extends StatelessWidget { text: data[0]['viewerHasStarred'] ? 'Unstar' : 'Star', onPress: () async { if (data[0]['viewerHasStarred']) { - await Provider.of(context) + await Provider.of(context) .deleteWithCredentials('/user/starred/$owner/$name'); data[0]['viewerHasStarred'] = false; } else { - Provider.of(context) + Provider.of(context) .putWithCredentials('/user/starred/$owner/$name'); data[0]['viewerHasStarred'] = true; } @@ -190,12 +190,11 @@ class RepositoryScreen extends StatelessWidget { : 'Watch', onPress: () async { if (data[0]['viewerSubscription'] == 'SUBSCRIBED') { - await Provider.of(context) - .deleteWithCredentials( - '/repos/$owner/$name/subscription'); + await Provider.of(context).deleteWithCredentials( + '/repos/$owner/$name/subscription'); data[0]['viewerSubscription'] = 'UNSUBSCRIBED'; } else { - Provider.of(context) + Provider.of(context) .putWithCredentials('/repos/$owner/$name/subscription'); data[0]['viewerSubscription'] = 'SUBSCRIBED'; } diff --git a/lib/screens/search.dart b/lib/screens/search.dart index 101edcf..c39329c 100644 --- a/lib/screens/search.dart +++ b/lib/screens/search.dart @@ -6,7 +6,7 @@ import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/issue_item.dart'; import 'package:git_touch/widgets/user_item.dart'; import 'package:provider/provider.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import '../utils/utils.dart'; import 'package:git_touch/widgets/repository_item.dart'; @@ -44,7 +44,7 @@ class _SearchScreenState extends State { _loading = true; }); try { - var data = await Provider.of(context).query(''' + var data = await Provider.of(context).query(''' { repository: search(first: $pageSize, type: REPOSITORY, query: "$keyword") { nodes { diff --git a/lib/screens/user.dart b/lib/screens/user.dart index 506902d..797167a 100644 --- a/lib/screens/user.dart +++ b/lib/screens/user.dart @@ -10,7 +10,7 @@ import 'package:primer/primer.dart'; import 'package:url_launcher/url_launcher.dart'; import 'package:share/share.dart'; import 'package:github_contributions/github_contributions.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart'; import '../widgets/entry_item.dart'; import 'package:git_touch/widgets/repository_item.dart'; @@ -27,7 +27,7 @@ class UserScreen extends StatelessWidget { UserScreen(this.login, {this.isMe = false}); Future query(BuildContext context) async { - var data = await Provider.of(context).query(''' + var data = await Provider.of(context).query(''' { user(login: "$login") { name @@ -164,11 +164,11 @@ class UserScreen extends StatelessWidget { text: data[0]['viewerIsFollowing'] ? 'Unfollow' : 'Follow', onPress: () async { if (data[0]['viewerIsFollowing']) { - await Provider.of(context) + await Provider.of(context) .deleteWithCredentials('/user/following/$login'); data[0]['viewerIsFollowing'] = false; } else { - Provider.of(context) + Provider.of(context) .putWithCredentials('/user/following/$login'); data[0]['viewerIsFollowing'] = true; } diff --git a/lib/screens/users.dart b/lib/screens/users.dart index 08eab49..e34a719 100644 --- a/lib/screens/users.dart +++ b/lib/screens/users.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:git_touch/scaffolds/list_stateful.dart'; import 'package:git_touch/widgets/app_bar_title.dart'; import 'package:git_touch/widgets/user_item.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart'; import '../utils/utils.dart'; @@ -40,7 +40,7 @@ class UsersScreen extends StatelessWidget { Future _queryUsers(BuildContext context, [String cursor]) async { var cursorChunk = cursor == null ? '' : ', after: "$cursor"'; - var data = await Provider.of(context).query(''' + var data = await Provider.of(context).query(''' { $scope($params) { $resource(first: $pageSize$cursorChunk) { diff --git a/lib/widgets/notification_item.dart b/lib/widgets/notification_item.dart index 7380dc7..fcd95db 100644 --- a/lib/widgets/notification_item.dart +++ b/lib/widgets/notification_item.dart @@ -7,7 +7,7 @@ import 'package:url_launcher/url_launcher.dart'; import '../utils/utils.dart'; import '../screens/issue.dart'; // import '../screens/not_found.dart'; -import 'package:git_touch/models/settings.dart'; +import 'package:git_touch/models/auth.dart'; import 'package:provider/provider.dart'; import 'link.dart'; @@ -82,7 +82,7 @@ class _NotificationItemState extends State { loading = true; }); try { - await Provider.of(context) + await Provider.of(context) .patchWithCredentials('/notifications/threads/' + payload.id); widget.markAsRead(); } finally {