refactor: repository full name

This commit is contained in:
Rongjian Zhang 2019-09-23 18:28:33 +08:00
parent ac4fe0b2ed
commit 88509f9872
11 changed files with 42 additions and 36 deletions

View File

@ -4,7 +4,8 @@ import 'package:git_touch/models/code.dart';
import 'package:git_touch/models/settings.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/screens/issues.dart';
import 'package:git_touch/screens/repo.dart';
import 'package:git_touch/screens/repository.dart';
import 'package:git_touch/screens/repositories.dart';
import 'package:git_touch/screens/user.dart';
import 'package:primer/primer.dart';
import 'package:provider/provider.dart';
@ -14,7 +15,6 @@ import 'screens/notifications.dart';
import 'screens/search.dart';
import 'screens/login.dart';
import 'screens/issue.dart';
import 'screens/repos.dart';
import 'screens/organization.dart';
import 'screens/trending.dart';
import 'utils/utils.dart';

View File

@ -1,9 +1,10 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_touch/screens/repos.dart';
import 'package:git_touch/screens/repositories.dart';
import 'package:git_touch/screens/users.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/entry_item.dart';
import 'package:git_touch/widgets/repository_item.dart';
import 'package:git_touch/widgets/table_view.dart';
import 'package:git_touch/widgets/user_item.dart';
import 'package:url_launcher/url_launcher.dart';
@ -11,7 +12,6 @@ import 'package:share/share.dart';
import 'package:git_touch/models/settings.dart';
import 'package:provider/provider.dart';
import '../scaffolds/refresh.dart';
import '../widgets/repo_item.dart';
import '../widgets/action.dart';
import '../utils/utils.dart';
@ -46,7 +46,7 @@ class OrganizationScreen extends StatelessWidget {
...join(
borderView,
items.map((item) {
return RepoItem(item);
return RepositoryItem(item);
}).toList(),
)
];
@ -122,7 +122,8 @@ class OrganizationScreen extends StatelessWidget {
EntryItem(
count: payload['pinnableItems']['totalCount'],
text: 'Repositories',
screenBuilder: (context) => ReposScreen(login, org: true),
screenBuilder: (context) =>
RepositoriesScreen(login, org: true),
),
EntryItem(
count: payload['membersWithRole']['totalCount'],

View File

@ -4,15 +4,15 @@ import '../scaffolds/list.dart';
import 'package:git_touch/models/settings.dart';
import 'package:provider/provider.dart';
import '../utils/utils.dart';
import '../widgets/repo_item.dart';
import 'package:git_touch/widgets/repository_item.dart';
// TODO: refactor
class ReposScreen extends StatelessWidget {
class RepositoriesScreen extends StatelessWidget {
final String login;
final bool star;
final bool org;
ReposScreen(this.login, {this.star = false, this.org = false});
RepositoriesScreen(this.login, {this.star = false, this.org = false});
String get scope => org ? 'organization' : 'user';
String get resource =>
@ -63,7 +63,7 @@ class ReposScreen extends StatelessWidget {
title: AppBarTitle(star ? 'Stars' : 'Repositories'),
onRefresh: () => _queryRepos(context),
onLoadMore: (cursor) => _queryRepos(context, cursor),
itemBuilder: (payload) => RepoItem(payload),
itemBuilder: (payload) => RepositoryItem(payload),
);
}
}

View File

@ -14,22 +14,22 @@ import 'package:git_touch/screens/object.dart';
import 'package:share/share.dart';
import 'package:url_launcher/url_launcher.dart';
import '../scaffolds/refresh.dart';
import '../widgets/repo_item.dart';
import 'package:git_touch/widgets/repository_item.dart';
import '../widgets/entry_item.dart';
import '../screens/issues.dart';
import '../screens/user.dart';
import '../screens/organization.dart';
import '../widgets/action.dart';
class RepoScreen extends StatelessWidget {
class RepositoryScreen extends StatelessWidget {
final String owner;
final String name;
final String branch;
static const _languageBarPadding = 10.0;
RepoScreen(this.owner, this.name, {this.branch});
RepoScreen.fromFullName(String fullName, {this.branch})
RepositoryScreen(this.owner, this.name, {this.branch});
RepositoryScreen.fromFullName(String fullName, {this.branch})
: owner = fullName.split('/')[0],
name = fullName.split('/')[1];
@ -180,7 +180,7 @@ class RepoScreen extends StatelessWidget {
return Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
children: <Widget>[
RepoItem(payload, inRepoScreen: true),
RepositoryItem(payload, inRepoScreen: true),
borderView,
Row(
children: <Widget>[
@ -296,7 +296,8 @@ class RepoScreen extends StatelessWidget {
if (result != null) {
Provider.of<ThemeModel>(context).pushReplacementRoute(
context,
(_) => RepoScreen(owner, name, branch: result));
(_) =>
RepositoryScreen(owner, name, branch: result));
}
},
),

View File

@ -6,7 +6,7 @@ import 'package:provider/provider.dart';
import 'package:git_touch/models/settings.dart';
import '../scaffolds/simple.dart';
import '../utils/utils.dart';
import '../widgets/repo_item.dart';
import 'package:git_touch/widgets/repository_item.dart';
import '../widgets/loading.dart';
class SearchScreen extends StatefulWidget {
@ -69,7 +69,8 @@ class _SearchScreenState extends State<SearchScreen> {
loading
? Loading()
: Column(
children: repos.map((repo) => RepoItem(repo)).toList(),
children:
repos.map((repo) => RepositoryItem(repo)).toList(),
)
],
);

View File

@ -2,13 +2,13 @@ import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:git_touch/models/theme.dart';
import 'package:git_touch/screens/object.dart';
import 'package:git_touch/screens/repository.dart';
import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:provider/provider.dart';
import 'package:launch_review/launch_review.dart';
import '../scaffolds/simple.dart';
import '../widgets/table_view.dart';
import '../screens/repo.dart';
import '../screens/login.dart';
class SettingsScreen extends StatelessWidget {
@ -62,7 +62,7 @@ class SettingsScreen extends StatelessWidget {
TableView(headerText: 'ABOUT', items: [
TableViewItem(
text: Text('Source Code'),
screenBuilder: (_) => RepoScreen('pd4d10', 'git-touch'),
screenBuilder: (_) => RepositoryScreen('pd4d10', 'git-touch'),
),
TableViewItem(
text: Text('License'),

View File

@ -4,7 +4,7 @@ import 'package:git_touch/utils/utils.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:http/http.dart' as http;
import '../scaffolds/refresh.dart';
import '../widgets/repo_item.dart';
import 'package:git_touch/widgets/repository_item.dart';
class TrendingScreen extends StatefulWidget {
@override
@ -49,7 +49,7 @@ class _TrendingScreenState extends State<TrendingScreen> {
crossAxisAlignment: CrossAxisAlignment.stretch,
children: join(
borderView,
payload.map<Widget>((item) => RepoItem(item)).toList(),
payload.map<Widget>((item) => RepositoryItem(item)).toList(),
),
);
},

View File

@ -1,5 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_touch/screens/repositories.dart';
import 'package:git_touch/widgets/app_bar_title.dart';
import 'package:git_touch/widgets/table_view.dart';
import 'package:git_touch/widgets/user_item.dart';
@ -10,10 +11,9 @@ import 'package:git_touch/models/settings.dart';
import 'package:provider/provider.dart';
import '../scaffolds/refresh.dart';
import '../widgets/entry_item.dart';
import '../widgets/repo_item.dart';
import 'package:git_touch/widgets/repository_item.dart';
import '../widgets/link.dart';
import '../widgets/action.dart';
import '../screens/repos.dart';
import '../screens/users.dart';
import '../screens/settings.dart';
import '../utils/utils.dart';
@ -92,7 +92,7 @@ class UserScreen extends StatelessWidget {
...join(
borderView,
items.map((item) {
return RepoItem(item);
return RepositoryItem(item);
}).toList(),
)
];
@ -204,12 +204,13 @@ class UserScreen extends StatelessWidget {
EntryItem(
count: payload['repositories']['totalCount'],
text: 'Repositories',
screenBuilder: (context) => ReposScreen(login),
screenBuilder: (context) => RepositoriesScreen(login),
),
EntryItem(
count: payload['starredRepositories']['totalCount'],
text: 'Stars',
screenBuilder: (context) => ReposScreen(login, star: true),
screenBuilder: (context) =>
RepositoriesScreen(login, star: true),
),
EntryItem(
count: payload['followers']['totalCount'],

View File

@ -3,10 +3,10 @@ import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/gestures.dart';
import 'package:git_touch/screens/repository.dart';
import 'package:git_touch/screens/user.dart';
import 'package:intl/intl.dart';
import 'package:primer/primer.dart';
import '../screens/repo.dart';
export 'package:flutter_vector_icons/flutter_vector_icons.dart';
final monospaceFont = Platform.isIOS ? 'Menlo' : 'monospace'; // FIXME:
@ -70,7 +70,8 @@ TextSpan createUserSpan(BuildContext context, String login) {
}
TextSpan createRepoLinkSpan(BuildContext context, String owner, String name) {
return createLinkSpan(context, '$owner/$name', () => RepoScreen(owner, name));
return createLinkSpan(
context, '$owner/$name', () => RepositoryScreen(owner, name));
}
class Palette {

View File

@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_touch/screens/repo.dart';
import 'package:git_touch/screens/repository.dart';
import 'package:timeago/timeago.dart' as timeago;
import 'package:primer/primer.dart';
import '../screens/issue.dart';
@ -175,7 +175,7 @@ class EventItem extends StatelessWidget {
_buildRepo(context),
],
iconData: Octicons.repo_forked,
screenBuilder: (_) => RepoScreen(
screenBuilder: (_) => RepositoryScreen(
event.payload['forkee']['owner']['login'],
event.payload['forkee']['name']),
);
@ -352,7 +352,8 @@ class EventItem extends StatelessWidget {
context: context,
spans: [TextSpan(text: ' starred '), _buildRepo(context)],
iconData: Octicons.star,
screenBuilder: (_) => RepoScreen.fromFullName(event.repoFullName),
screenBuilder: (_) =>
RepositoryScreen.fromFullName(event.repoFullName),
);
default:
return defaultItem;

View File

@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:git_touch/screens/repository.dart';
import 'package:git_touch/widgets/avatar.dart';
import 'package:primer/primer.dart';
import '../utils/utils.dart';
import '../screens/repo.dart';
import 'link.dart';
const repoChunk = '''
@ -27,11 +27,11 @@ primaryLanguage {
}
''';
class RepoItem extends StatelessWidget {
class RepositoryItem extends StatelessWidget {
final Map<String, dynamic> payload;
final bool inRepoScreen;
RepoItem(this.payload, {this.inRepoScreen = false});
RepositoryItem(this.payload, {this.inRepoScreen = false});
IconData _buildIconData() {
if (payload['isPrivate']) {
@ -150,7 +150,7 @@ class RepoItem extends StatelessWidget {
// TODO: text style
return Link(
screenBuilder: (_) =>
RepoScreen(payload['owner']['login'], payload['name']),
RepositoryScreen(payload['owner']['login'], payload['name']),
child: widget,
);
}