feat(gitea): add orgs in user screen
This commit is contained in:
parent
aa62524c23
commit
99b2b795d1
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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',
|
||||
);
|
||||
},
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in New Issue