feat(gitea): add orgs in user screen

This commit is contained in:
Rongjian Zhang 2020-10-06 13:25:43 +08:00
parent aa62524c23
commit 99b2b795d1
5 changed files with 31 additions and 9 deletions

View File

@ -21,6 +21,8 @@ class GiteaOrg {
String fullName;
String avatarUrl;
String description;
String website;
String location;
GiteaOrg();
factory GiteaOrg.fromJson(Map<String, dynamic> json) =>
_$GiteaOrgFromJson(json);

View File

@ -31,7 +31,9 @@ GiteaOrg _$GiteaOrgFromJson(Map<String, dynamic> json) {
..username = json['username'] as String
..fullName = json['full_name'] as String
..avatarUrl = json['avatar_url'] as String
..description = json['description'] as String;
..description = json['description'] as String
..website = json['website'] as String
..location = json['location'] as String;
}
Map<String, dynamic> _$GiteaOrgToJson(GiteaOrg instance) => <String, dynamic>{
@ -40,6 +42,8 @@ Map<String, dynamic> _$GiteaOrgToJson(GiteaOrg instance) => <String, dynamic>{
'full_name': instance.fullName,
'avatar_url': instance.avatarUrl,
'description': instance.description,
'website': instance.website,
'location': instance.location,
};
GiteaRepository _$GiteaRepositoryFromJson(Map<String, dynamic> json) {

View File

@ -17,6 +17,7 @@ import 'package:git_touch/screens/gl_starrers.dart';
import 'package:git_touch/screens/gt_commits.dart';
import 'package:git_touch/screens/gt_issues.dart';
import 'package:git_touch/screens/gt_object.dart';
import 'package:git_touch/screens/gt_orgs.dart';
import 'package:git_touch/screens/gt_repo.dart';
import 'package:git_touch/screens/gt_repos.dart';
import 'package:git_touch/screens/gt_user.dart';
@ -289,6 +290,8 @@ class GiteaRouter {
return GtReposScreen(login);
case 'orgrepo':
return GtReposScreen.org(login);
case 'organizations':
return GtOrgsScreen.ofUser(login);
default:
return GtUserScreen(login);
}

View File

@ -7,27 +7,28 @@ import 'package:git_touch/widgets/user_item.dart';
import 'package:provider/provider.dart';
class GtOrgsScreen extends StatelessWidget {
final String api;
GtOrgsScreen() : api = '/orgs';
GtOrgsScreen.ofUser(String login) : api = '/users/$login/orgs';
@override
Widget build(BuildContext context) {
return ListStatefulScaffold<GiteaOrg, int>(
title: AppBarTitle('Organizations'),
onLoadMore: (page) async {
// final String branch; // TODO:
final res = await context
.read<AuthModel>()
.fetchGiteaWithPage('/orgs', page: page);
// TODO: https://github.com/go-gitea/gitea/issues/10199
final res =
await context.read<AuthModel>().fetchGiteaWithPage(api, page: page);
return ListPayload(
cursor: res.cursor,
hasMore: res.hasMore,
items: (res.data as List).map((v) => GiteaOrg.fromJson(v)).toList(),
items: [for (var v in res.data) GiteaOrg.fromJson(v)],
);
},
itemBuilder: (v) {
return UserItem(
avatarUrl: v.avatarUrl,
login: v.username,
bio: Text(v.description ?? ''),
bio: Text(v.description ?? v.website ?? v.location),
url: '/gitea/${v.username}?org=1',
);
},

View File

@ -8,6 +8,7 @@ import 'package:git_touch/widgets/action_entry.dart';
import 'package:git_touch/widgets/contribution.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_header.dart';
import 'package:provider/provider.dart';
import 'package:timeago/timeago.dart' as timeago;
@ -143,7 +144,18 @@ class GtUserScreen extends StatelessWidget {
avatarLink: '/gitea/${v.owner.login}',
)
],
)
),
CommonStyle.border,
TableView(
hasIcon: true,
items: [
TableViewItem(
leftIconData: Octicons.home,
text: Text('Organizations'),
url: '/gitea/$login?tab=organizations',
),
],
),
],
);
} else if (p.org != null) {