Skip to content

Commit

Permalink
feat(gitee): commits screen
Browse files Browse the repository at this point in the history
  • Loading branch information
pd4d10 committed Oct 17, 2020
1 parent 66ab665 commit d9ca01b
Show file tree
Hide file tree
Showing 6 changed files with 139 additions and 5 deletions.
7 changes: 5 additions & 2 deletions lib/models/auth.dart
Original file line number Diff line number Diff line change
Expand Up @@ -282,11 +282,14 @@ class AuthModel with ChangeNotifier {
final res = await http.get(uri, headers: {'Authorization': 'token $token'});
final info = json.decode(utf8.decode(res.bodyBytes));

final totalPage = int.tryParse(res.headers['total_page'] ?? '');
final totalCount = int.tryParse(res.headers['total_count'] ?? '');

return DataWithPage(
data: info,
cursor: page + 1,
hasMore: int.tryParse(res.headers['total_page']) > page,
total: int.tryParse(res.headers['total_count'] ?? ''),
hasMore: totalPage == null ? info.length > limit : totalPage > page,
total: totalCount,
);
}

Expand Down
31 changes: 31 additions & 0 deletions lib/models/gitee.dart
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,34 @@ class GiteeRepoNamespace {
factory GiteeRepoNamespace.fromJson(Map<String, dynamic> json) =>
_$GiteeRepoNamespaceFromJson(json);
}

@JsonSerializable(fieldRename: FieldRename.snake)
class GiteeCommit {
GiteeUser author;
GiteeCommitDetail commit;
String sha;
String htmlUrl;
GiteeCommit();
factory GiteeCommit.fromJson(Map<String, dynamic> json) =>
_$GiteeCommitFromJson(json);
}

@JsonSerializable(fieldRename: FieldRename.snake)
class GiteeCommitDetail {
String message;
GiteeCommitAuthor author;
GiteeCommitAuthor committer;
GiteeCommitDetail();
factory GiteeCommitDetail.fromJson(Map<String, dynamic> json) =>
_$GiteeCommitDetailFromJson(json);
}

@JsonSerializable(fieldRename: FieldRename.snake)
class GiteeCommitAuthor {
String name;
String email;
DateTime date;
GiteeCommitAuthor();
factory GiteeCommitAuthor.fromJson(Map<String, dynamic> json) =>
_$GiteeCommitAuthorFromJson(json);
}
53 changes: 53 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.

6 changes: 6 additions & 0 deletions lib/router.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:git_touch/screens/bb_issues.dart';
import 'package:git_touch/screens/bb_pulls.dart';
import 'package:git_touch/screens/bb_user.dart';
import 'package:git_touch/screens/code_theme.dart';
import 'package:git_touch/screens/ge_commits.dart';
import 'package:git_touch/screens/ge_repo.dart';
import 'package:git_touch/screens/ge_repos.dart';
import 'package:git_touch/screens/ge_user.dart';
Expand Down Expand Up @@ -384,6 +385,7 @@ class GiteeRouter {
GiteeRouter.stargazers,
GiteeRouter.watchers,
GiteeRouter.forks,
GiteeRouter.commits,
];
static final user = RouterScreen('/:login', (context, p) {
final login = p['login'].first;
Expand Down Expand Up @@ -416,4 +418,8 @@ class GiteeRouter {
static final forks = RouterScreen('/:owner/:name/forks', (_, p) {
return GeReposScreen.forks(p['owner'].first, p['name'].first);
});
static final commits = RouterScreen(
'/:owner/:name/commits',
(_, p) => GeCommitsScreen(p['owner'].first, p['name'].first),
);
}
41 changes: 41 additions & 0 deletions lib/screens/ge_commits.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import 'package:flutter/material.dart';
import 'package:git_touch/models/auth.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/commit_item.dart';
import 'package:provider/provider.dart';

class GeCommitsScreen extends StatelessWidget {
final String owner;
final String name;
// final String branch; // TODO:
GeCommitsScreen(this.owner, this.name);

@override
Widget build(BuildContext context) {
return ListStatefulScaffold<GiteeCommit, int>(
title: AppBarTitle('Commits'),
fetch: (page) async {
final res = await context
.read<AuthModel>()
.fetchGiteeWithPage('/repos/$owner/$name/commits', page: page);
return ListPayload(
cursor: res.cursor,
hasMore: res.hasMore,
items: [for (var v in res.data) GiteeCommit.fromJson(v)],
);
},
itemBuilder: (c) {
return CommitItem(
author: c.commit.author.name,
avatarUrl: c.author.avatarUrl,
avatarLink: '/gitee/${c.author.login}',
createdAt: c.commit.author.date,
message: c.commit.message,
url: c.htmlUrl,
);
},
);
}
}
6 changes: 3 additions & 3 deletions lib/screens/ge_repos.dart
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,15 @@ class GeReposScreen extends StatelessWidget {
},
itemBuilder: (v) {
return RepositoryItem(
owner: v.owner.login,
owner: v.namespace.path,
avatarUrl: v.owner.avatarUrl,
name: v.path,
description: v.description,
starCount: v.stargazersCount,
forkCount: v.forksCount,
note: 'Updated ${timeago.format(v.updatedAt)}',
url: '/gitea/${v.owner.login}/${v.path}',
avatarLink: '/gitea/${v.owner.login}',
url: '/gitea/${v.namespace.path}/${v.path}',
avatarLink: '/gitea/${v.namespace.path}',
);
},
);
Expand Down

0 comments on commit d9ca01b

Please sign in to comment.