feat(github): refine user screen organizations
This commit is contained in:
parent
633b58d36f
commit
a1182ed6a5
|
@ -8,6 +8,7 @@ import 'package:git_touch/utils/utils.dart';
|
||||||
import 'package:git_touch/widgets/action_button.dart';
|
import 'package:git_touch/widgets/action_button.dart';
|
||||||
import 'package:git_touch/widgets/action_entry.dart';
|
import 'package:git_touch/widgets/action_entry.dart';
|
||||||
import 'package:git_touch/widgets/app_bar_title.dart';
|
import 'package:git_touch/widgets/app_bar_title.dart';
|
||||||
|
import 'package:git_touch/widgets/avatar.dart';
|
||||||
import 'package:git_touch/widgets/contribution.dart';
|
import 'package:git_touch/widgets/contribution.dart';
|
||||||
import 'package:git_touch/widgets/entry_item.dart';
|
import 'package:git_touch/widgets/entry_item.dart';
|
||||||
import 'package:git_touch/widgets/mutation_button.dart';
|
import 'package:git_touch/widgets/mutation_button.dart';
|
||||||
|
@ -155,16 +156,34 @@ class _User extends StatelessWidget {
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
CommonStyle.verticalGap,
|
CommonStyle.verticalGap,
|
||||||
AntList(
|
if (p.organizations.totalCount > 0)
|
||||||
children: [
|
AntList(
|
||||||
AntListItem(
|
header: Text(
|
||||||
prefix: const Icon(Octicons.organization),
|
'${AppLocalizations.of(context)!.organizations} (${p.organizations.totalCount})',
|
||||||
extra: Text(p.organizations.totalCount.toString()),
|
|
||||||
onClick: () {
|
|
||||||
context.push('/github/${p.login}?tab=organizations');
|
|
||||||
},
|
|
||||||
child: Text(AppLocalizations.of(context)!.organizations),
|
|
||||||
),
|
),
|
||||||
|
children: [
|
||||||
|
AntListItem(
|
||||||
|
child: SingleChildScrollView(
|
||||||
|
scrollDirection: Axis.horizontal,
|
||||||
|
child: Wrap(
|
||||||
|
spacing: 8,
|
||||||
|
children: [
|
||||||
|
for (final org in p.organizations.nodes!)
|
||||||
|
Avatar(
|
||||||
|
isOrg: true,
|
||||||
|
url: org.avatarUrl,
|
||||||
|
linkUrl: '/github/${org.login}',
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
CommonStyle.verticalGap,
|
||||||
|
AntList(
|
||||||
|
header: const Text('Overview'),
|
||||||
|
children: [
|
||||||
AntListItem(
|
AntListItem(
|
||||||
prefix: const Icon(Octicons.repo),
|
prefix: const Icon(Octicons.repo),
|
||||||
extra: Text(p.repositories.totalCount.toString()),
|
extra: Text(p.repositories.totalCount.toString()),
|
||||||
|
|
|
@ -18,12 +18,12 @@ class Avatar extends StatelessWidget {
|
||||||
required this.url,
|
required this.url,
|
||||||
this.size = AvatarSize.medium,
|
this.size = AvatarSize.medium,
|
||||||
this.linkUrl,
|
this.linkUrl,
|
||||||
this.borderRadius,
|
this.isOrg = false,
|
||||||
});
|
});
|
||||||
final String? url;
|
final String? url;
|
||||||
final double size;
|
final double size;
|
||||||
final String? linkUrl;
|
final String? linkUrl;
|
||||||
final BorderRadius? borderRadius;
|
final bool isOrg;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
@ -35,7 +35,7 @@ class Avatar extends StatelessWidget {
|
||||||
final fallbackWidget = Image.asset(fallback, width: size, height: size);
|
final fallbackWidget = Image.asset(fallback, width: size, height: size);
|
||||||
|
|
||||||
final widget = ClipRRect(
|
final widget = ClipRRect(
|
||||||
borderRadius: borderRadius ?? BorderRadius.circular(size / 2),
|
borderRadius: BorderRadius.circular(isOrg ? 6 : size),
|
||||||
child: url == null
|
child: url == null
|
||||||
? fallbackWidget
|
? fallbackWidget
|
||||||
: FadeInImage.assetNetwork(
|
: FadeInImage.assetNetwork(
|
||||||
|
|
|
@ -43,6 +43,7 @@ class EntryItem extends StatelessWidget {
|
||||||
fontSize: 14,
|
fontSize: 14,
|
||||||
color: theme.colorTextSecondary,
|
color: theme.colorTextSecondary,
|
||||||
fontWeight: FontWeight.w500,
|
fontWeight: FontWeight.w500,
|
||||||
|
// overflow: TextOverflow.ellipsis,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
|
|
|
@ -51,8 +51,12 @@ fragment UserParts on User {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
organizations {
|
organizations(first: 10) {
|
||||||
totalCount
|
totalCount
|
||||||
|
nodes {
|
||||||
|
login
|
||||||
|
avatarUrl
|
||||||
|
}
|
||||||
}
|
}
|
||||||
repositories(
|
repositories(
|
||||||
first: 6
|
first: 6
|
||||||
|
|
Loading…
Reference in New Issue