Skip to content

Commit

Permalink
feat(gitee): users screen
Browse files Browse the repository at this point in the history
  • Loading branch information
pd4d10 committed Oct 17, 2020
1 parent 2e1d869 commit a5d64fd
Show file tree
Hide file tree
Showing 5 changed files with 92 additions and 3 deletions.
11 changes: 11 additions & 0 deletions lib/models/gitee.dart
Expand Up @@ -21,6 +21,17 @@ class GiteeUser {
_$GiteeUserFromJson(json);
}

@JsonSerializable(fieldRename: FieldRename.snake)
class GiteeListUser {
String login;
String avatarUrl;
String name;
String htmlUrl;
GiteeListUser();
factory GiteeListUser.fromJson(Map<String, dynamic> json) =>
_$GiteeListUserFromJson(json);
}

@JsonSerializable(fieldRename: FieldRename.snake)
class GiteeRepo {
GiteeRepoOwner owner;
Expand Down
16 changes: 16 additions & 0 deletions lib/models/gitee.g.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 6 additions & 3 deletions lib/router.dart
Expand Up @@ -8,6 +8,7 @@ import 'package:git_touch/screens/bb_user.dart';
import 'package:git_touch/screens/code_theme.dart';
import 'package:git_touch/screens/ge_repos.dart';
import 'package:git_touch/screens/ge_user.dart';
import 'package:git_touch/screens/ge_users.dart';
import 'package:git_touch/screens/gh_commits.dart';
import 'package:git_touch/screens/gh_contributors.dart';
import 'package:git_touch/screens/gh_events.dart';
Expand Down Expand Up @@ -383,9 +384,11 @@ class GiteeRouter {
final login = p['login'].first;
final tab = p['tab']?.first;
switch (tab) {
case 'followers': //
case 'following': //
case 'people': //
case 'followers':
return GeUsersScreen.followers(login);
case 'following':
return GeUsersScreen.following(login);
// case 'people':
case 'stars':
return GeReposScreen.star(login);
case 'repositories':
Expand Down
52 changes: 52 additions & 0 deletions lib/screens/ge_users.dart
@@ -0,0 +1,52 @@
import 'package:flutter/material.dart';
import 'package:git_touch/models/gitee.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/auth.dart';
import 'package:provider/provider.dart';

class GeUsersScreen extends StatelessWidget {
final String api;
final String title;

GeUsersScreen.followers(String login)
: api = '/users/$login/followers',
title = 'Followers';
GeUsersScreen.following(String login)
: api = '/users/$login/following',
title = "Following";
// GeUsersScreen.member(String login)
// : api = '/orgs/$login/members',
// title = "Members";
GeUsersScreen.stargazers(String owner, String repo)
: api = '/repos/$owner/$repo/stargazers',
title = 'Stargazers';
GeUsersScreen.watchers(String owner, String repo)
: api = '/repos/$owner/$repo/subscribers',
title = 'Watchers';

@override
Widget build(BuildContext context) {
return ListStatefulScaffold<GiteeListUser, int>(
title: AppBarTitle(title),
fetch: (page) async {
final res =
await context.read<AuthModel>().fetchGiteeWithPage(api, page: page);
return ListPayload(
cursor: res.cursor,
hasMore: res.hasMore,
items: [for (var v in res.data) GiteeListUser.fromJson(v)],
);
},
itemBuilder: (p) {
return UserItem.gitee(
login: p.login,
name: p.name,
avatarUrl: p.avatarUrl,
bio: Text(p.htmlUrl),
);
},
);
}
}
7 changes: 7 additions & 0 deletions lib/widgets/user_item.dart
Expand Up @@ -49,6 +49,13 @@ class UserItem extends StatelessWidget {
@required this.bio,
}) : url = '/gitea/$login';

UserItem.gitee({
@required this.login,
@required this.name,
@required this.avatarUrl,
@required this.bio,
}) : url = '/gitee/$login';

UserItem.bitbucket({
@required this.login,
@required this.name,
Expand Down

0 comments on commit a5d64fd

Please sign in to comment.