diff --git a/lib/models/gitea.dart b/lib/models/gitea.dart index 28615613..56399a06 100644 --- a/lib/models/gitea.dart +++ b/lib/models/gitea.dart @@ -21,6 +21,8 @@ class GiteaOrg { String fullName; String avatarUrl; String description; + String website; + String location; GiteaOrg(); factory GiteaOrg.fromJson(Map json) => _$GiteaOrgFromJson(json); diff --git a/lib/models/gitea.g.dart b/lib/models/gitea.g.dart index 862cd5c8..a92f16bc 100644 --- a/lib/models/gitea.g.dart +++ b/lib/models/gitea.g.dart @@ -31,7 +31,9 @@ GiteaOrg _$GiteaOrgFromJson(Map 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 _$GiteaOrgToJson(GiteaOrg instance) => { @@ -40,6 +42,8 @@ Map _$GiteaOrgToJson(GiteaOrg instance) => { 'full_name': instance.fullName, 'avatar_url': instance.avatarUrl, 'description': instance.description, + 'website': instance.website, + 'location': instance.location, }; GiteaRepository _$GiteaRepositoryFromJson(Map json) { diff --git a/lib/router.dart b/lib/router.dart index a0451fa6..dbe56a0f 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -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); } diff --git a/lib/screens/gt_orgs.dart b/lib/screens/gt_orgs.dart index 0e5be286..20548e51 100644 --- a/lib/screens/gt_orgs.dart +++ b/lib/screens/gt_orgs.dart @@ -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( title: AppBarTitle('Organizations'), onLoadMore: (page) async { - // final String branch; // TODO: - final res = await context - .read() - .fetchGiteaWithPage('/orgs', page: page); - // TODO: https://github.com/go-gitea/gitea/issues/10199 + final res = + await context.read().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', ); }, diff --git a/lib/screens/gt_user.dart b/lib/screens/gt_user.dart index 3d9a3bae..5e87504d 100644 --- a/lib/screens/gt_user.dart +++ b/lib/screens/gt_user.dart @@ -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) {