improvement(gitlab): repo avatar link
This commit is contained in:
parent
0a83206071
commit
ef1be2faea
|
@ -2,23 +2,6 @@ import 'package:json_annotation/json_annotation.dart';
|
||||||
|
|
||||||
part 'gitlab.g.dart';
|
part 'gitlab.g.dart';
|
||||||
|
|
||||||
@JsonSerializable(fieldRename: FieldRename.snake)
|
|
||||||
class GitlabUserProject {
|
|
||||||
int id;
|
|
||||||
GitlabUser owner;
|
|
||||||
String name;
|
|
||||||
String description;
|
|
||||||
int starCount;
|
|
||||||
int forksCount;
|
|
||||||
String visibility;
|
|
||||||
DateTime createdAt;
|
|
||||||
|
|
||||||
GitlabUserProject();
|
|
||||||
|
|
||||||
factory GitlabUserProject.fromJson(Map<String, dynamic> json) =>
|
|
||||||
_$GitlabUserProjectFromJson(json);
|
|
||||||
}
|
|
||||||
|
|
||||||
@JsonSerializable(fieldRename: FieldRename.snake)
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
||||||
class GitlabUser {
|
class GitlabUser {
|
||||||
int id;
|
int id;
|
||||||
|
@ -35,9 +18,7 @@ class GitlabUser {
|
||||||
@JsonSerializable(fieldRename: FieldRename.snake)
|
@JsonSerializable(fieldRename: FieldRename.snake)
|
||||||
class GitlabTodoProject {
|
class GitlabTodoProject {
|
||||||
String pathWithNamespace;
|
String pathWithNamespace;
|
||||||
|
|
||||||
GitlabTodoProject();
|
GitlabTodoProject();
|
||||||
|
|
||||||
factory GitlabTodoProject.fromJson(Map<String, dynamic> json) =>
|
factory GitlabTodoProject.fromJson(Map<String, dynamic> json) =>
|
||||||
_$GitlabTodoProjectFromJson(json);
|
_$GitlabTodoProjectFromJson(json);
|
||||||
}
|
}
|
||||||
|
@ -49,9 +30,7 @@ class GitlabTodo {
|
||||||
String actionName;
|
String actionName;
|
||||||
String targetType;
|
String targetType;
|
||||||
GitlabTodoTarget target;
|
GitlabTodoTarget target;
|
||||||
|
|
||||||
GitlabTodo();
|
GitlabTodo();
|
||||||
|
|
||||||
factory GitlabTodo.fromJson(Map<String, dynamic> json) =>
|
factory GitlabTodo.fromJson(Map<String, dynamic> json) =>
|
||||||
_$GitlabTodoFromJson(json);
|
_$GitlabTodoFromJson(json);
|
||||||
}
|
}
|
||||||
|
@ -64,9 +43,7 @@ class GitlabTodoTarget {
|
||||||
GitlabUser author;
|
GitlabUser author;
|
||||||
String description;
|
String description;
|
||||||
DateTime createdAt;
|
DateTime createdAt;
|
||||||
|
|
||||||
GitlabTodoTarget();
|
GitlabTodoTarget();
|
||||||
|
|
||||||
factory GitlabTodoTarget.fromJson(Map<String, dynamic> json) =>
|
factory GitlabTodoTarget.fromJson(Map<String, dynamic> json) =>
|
||||||
_$GitlabTodoTargetFromJson(json);
|
_$GitlabTodoTargetFromJson(json);
|
||||||
}
|
}
|
||||||
|
@ -94,11 +71,13 @@ class GitlabProject {
|
||||||
String readmeUrl;
|
String readmeUrl;
|
||||||
String webUrl;
|
String webUrl;
|
||||||
GitlabProjectNamespace namespace;
|
GitlabProjectNamespace namespace;
|
||||||
|
GitlabUser owner;
|
||||||
bool issuesEnabled;
|
bool issuesEnabled;
|
||||||
int openIssuesCount;
|
int openIssuesCount;
|
||||||
bool mergeRequestsEnabled;
|
bool mergeRequestsEnabled;
|
||||||
GitlabProjectStatistics statistics;
|
GitlabProjectStatistics statistics;
|
||||||
DateTime lastActivityAt;
|
DateTime lastActivityAt;
|
||||||
|
DateTime createdAt;
|
||||||
GitlabProject();
|
GitlabProject();
|
||||||
factory GitlabProject.fromJson(Map<String, dynamic> json) =>
|
factory GitlabProject.fromJson(Map<String, dynamic> json) =>
|
||||||
_$GitlabProjectFromJson(json);
|
_$GitlabProjectFromJson(json);
|
||||||
|
@ -126,8 +105,8 @@ class GitlabProjectNamespace {
|
||||||
int id;
|
int id;
|
||||||
String name;
|
String name;
|
||||||
String path;
|
String path;
|
||||||
|
String kind;
|
||||||
GitlabProjectNamespace();
|
GitlabProjectNamespace();
|
||||||
|
|
||||||
factory GitlabProjectNamespace.fromJson(Map<String, dynamic> json) =>
|
factory GitlabProjectNamespace.fromJson(Map<String, dynamic> json) =>
|
||||||
_$GitlabProjectNamespaceFromJson(json);
|
_$GitlabProjectNamespaceFromJson(json);
|
||||||
}
|
}
|
||||||
|
@ -156,9 +135,7 @@ class GitlabEvent {
|
||||||
String actionName;
|
String actionName;
|
||||||
String targetType;
|
String targetType;
|
||||||
GitlabEventNote note;
|
GitlabEventNote note;
|
||||||
|
|
||||||
GitlabEvent();
|
GitlabEvent();
|
||||||
|
|
||||||
factory GitlabEvent.fromJson(Map<String, dynamic> json) =>
|
factory GitlabEvent.fromJson(Map<String, dynamic> json) =>
|
||||||
_$GitlabEventFromJson(json);
|
_$GitlabEventFromJson(json);
|
||||||
}
|
}
|
||||||
|
@ -168,9 +145,7 @@ class GitlabEventNote {
|
||||||
String body;
|
String body;
|
||||||
String noteableType;
|
String noteableType;
|
||||||
int noteableIid;
|
int noteableIid;
|
||||||
|
|
||||||
GitlabEventNote();
|
GitlabEventNote();
|
||||||
|
|
||||||
factory GitlabEventNote.fromJson(Map<String, dynamic> json) =>
|
factory GitlabEventNote.fromJson(Map<String, dynamic> json) =>
|
||||||
_$GitlabEventNoteFromJson(json);
|
_$GitlabEventNoteFromJson(json);
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,34 +6,6 @@ part of 'gitlab.dart';
|
||||||
// JsonSerializableGenerator
|
// JsonSerializableGenerator
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
|
||||||
GitlabUserProject _$GitlabUserProjectFromJson(Map<String, dynamic> json) {
|
|
||||||
return GitlabUserProject()
|
|
||||||
..id = json['id'] as int
|
|
||||||
..owner = json['owner'] == null
|
|
||||||
? null
|
|
||||||
: GitlabUser.fromJson(json['owner'] as Map<String, dynamic>)
|
|
||||||
..name = json['name'] as String
|
|
||||||
..description = json['description'] as String
|
|
||||||
..starCount = json['star_count'] as int
|
|
||||||
..forksCount = json['forks_count'] as int
|
|
||||||
..visibility = json['visibility'] as String
|
|
||||||
..createdAt = json['created_at'] == null
|
|
||||||
? null
|
|
||||||
: DateTime.parse(json['created_at'] as String);
|
|
||||||
}
|
|
||||||
|
|
||||||
Map<String, dynamic> _$GitlabUserProjectToJson(GitlabUserProject instance) =>
|
|
||||||
<String, dynamic>{
|
|
||||||
'id': instance.id,
|
|
||||||
'owner': instance.owner,
|
|
||||||
'name': instance.name,
|
|
||||||
'description': instance.description,
|
|
||||||
'star_count': instance.starCount,
|
|
||||||
'forks_count': instance.forksCount,
|
|
||||||
'visibility': instance.visibility,
|
|
||||||
'created_at': instance.createdAt?.toIso8601String(),
|
|
||||||
};
|
|
||||||
|
|
||||||
GitlabUser _$GitlabUserFromJson(Map<String, dynamic> json) {
|
GitlabUser _$GitlabUserFromJson(Map<String, dynamic> json) {
|
||||||
return GitlabUser()
|
return GitlabUser()
|
||||||
..id = json['id'] as int
|
..id = json['id'] as int
|
||||||
|
@ -149,6 +121,9 @@ GitlabProject _$GitlabProjectFromJson(Map<String, dynamic> json) {
|
||||||
? null
|
? null
|
||||||
: GitlabProjectNamespace.fromJson(
|
: GitlabProjectNamespace.fromJson(
|
||||||
json['namespace'] as Map<String, dynamic>)
|
json['namespace'] as Map<String, dynamic>)
|
||||||
|
..owner = json['owner'] == null
|
||||||
|
? null
|
||||||
|
: GitlabUser.fromJson(json['owner'] as Map<String, dynamic>)
|
||||||
..issuesEnabled = json['issues_enabled'] as bool
|
..issuesEnabled = json['issues_enabled'] as bool
|
||||||
..openIssuesCount = json['open_issues_count'] as int
|
..openIssuesCount = json['open_issues_count'] as int
|
||||||
..mergeRequestsEnabled = json['merge_requests_enabled'] as bool
|
..mergeRequestsEnabled = json['merge_requests_enabled'] as bool
|
||||||
|
@ -158,7 +133,10 @@ GitlabProject _$GitlabProjectFromJson(Map<String, dynamic> json) {
|
||||||
json['statistics'] as Map<String, dynamic>)
|
json['statistics'] as Map<String, dynamic>)
|
||||||
..lastActivityAt = json['last_activity_at'] == null
|
..lastActivityAt = json['last_activity_at'] == null
|
||||||
? null
|
? null
|
||||||
: DateTime.parse(json['last_activity_at'] as String);
|
: DateTime.parse(json['last_activity_at'] as String)
|
||||||
|
..createdAt = json['created_at'] == null
|
||||||
|
? null
|
||||||
|
: DateTime.parse(json['created_at'] as String);
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, dynamic> _$GitlabProjectToJson(GitlabProject instance) =>
|
Map<String, dynamic> _$GitlabProjectToJson(GitlabProject instance) =>
|
||||||
|
@ -173,11 +151,13 @@ Map<String, dynamic> _$GitlabProjectToJson(GitlabProject instance) =>
|
||||||
'readme_url': instance.readmeUrl,
|
'readme_url': instance.readmeUrl,
|
||||||
'web_url': instance.webUrl,
|
'web_url': instance.webUrl,
|
||||||
'namespace': instance.namespace,
|
'namespace': instance.namespace,
|
||||||
|
'owner': instance.owner,
|
||||||
'issues_enabled': instance.issuesEnabled,
|
'issues_enabled': instance.issuesEnabled,
|
||||||
'open_issues_count': instance.openIssuesCount,
|
'open_issues_count': instance.openIssuesCount,
|
||||||
'merge_requests_enabled': instance.mergeRequestsEnabled,
|
'merge_requests_enabled': instance.mergeRequestsEnabled,
|
||||||
'statistics': instance.statistics,
|
'statistics': instance.statistics,
|
||||||
'last_activity_at': instance.lastActivityAt?.toIso8601String(),
|
'last_activity_at': instance.lastActivityAt?.toIso8601String(),
|
||||||
|
'created_at': instance.createdAt?.toIso8601String(),
|
||||||
};
|
};
|
||||||
|
|
||||||
GitlabProjectBadge _$GitlabProjectBadgeFromJson(Map<String, dynamic> json) {
|
GitlabProjectBadge _$GitlabProjectBadgeFromJson(Map<String, dynamic> json) {
|
||||||
|
@ -209,7 +189,8 @@ GitlabProjectNamespace _$GitlabProjectNamespaceFromJson(
|
||||||
return GitlabProjectNamespace()
|
return GitlabProjectNamespace()
|
||||||
..id = json['id'] as int
|
..id = json['id'] as int
|
||||||
..name = json['name'] as String
|
..name = json['name'] as String
|
||||||
..path = json['path'] as String;
|
..path = json['path'] as String
|
||||||
|
..kind = json['kind'] as String;
|
||||||
}
|
}
|
||||||
|
|
||||||
Map<String, dynamic> _$GitlabProjectNamespaceToJson(
|
Map<String, dynamic> _$GitlabProjectNamespaceToJson(
|
||||||
|
@ -218,6 +199,7 @@ Map<String, dynamic> _$GitlabProjectNamespaceToJson(
|
||||||
'id': instance.id,
|
'id': instance.id,
|
||||||
'name': instance.name,
|
'name': instance.name,
|
||||||
'path': instance.path,
|
'path': instance.path,
|
||||||
|
'kind': instance.kind,
|
||||||
};
|
};
|
||||||
|
|
||||||
GitlabTreeItem _$GitlabTreeItemFromJson(Map<String, dynamic> json) {
|
GitlabTreeItem _$GitlabTreeItemFromJson(Map<String, dynamic> json) {
|
||||||
|
|
|
@ -30,15 +30,8 @@ class GitlabExplore extends StatelessWidget {
|
||||||
onLoadMore: (page) => _query(context, page),
|
onLoadMore: (page) => _query(context, page),
|
||||||
itemBuilder: (v) {
|
itemBuilder: (v) {
|
||||||
return RepositoryItem.gl(
|
return RepositoryItem.gl(
|
||||||
id: v.id,
|
payload: v,
|
||||||
owner: v.namespace.path,
|
|
||||||
avatarUrl: v.avatarUrl,
|
|
||||||
name: v.name,
|
|
||||||
description: v.description,
|
|
||||||
starCount: v.starCount,
|
|
||||||
forkCount: v.forksCount,
|
|
||||||
note: 'Updated ${timeago.format(v.lastActivityAt)}',
|
note: 'Updated ${timeago.format(v.lastActivityAt)}',
|
||||||
visibility: v.visibility,
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
@ -23,8 +23,7 @@ class GitlabUserScreen extends StatelessWidget {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return RefreshStatefulScaffold<
|
return RefreshStatefulScaffold<Tuple2<GitlabUser, Iterable<GitlabProject>>>(
|
||||||
Tuple2<GitlabUser, Iterable<GitlabUserProject>>>(
|
|
||||||
title: Text(isViewer ? 'Me' : 'User'),
|
title: Text(isViewer ? 'Me' : 'User'),
|
||||||
fetchData: () async {
|
fetchData: () async {
|
||||||
final auth = Provider.of<AuthModel>(context);
|
final auth = Provider.of<AuthModel>(context);
|
||||||
|
@ -35,7 +34,7 @@ class GitlabUserScreen extends StatelessWidget {
|
||||||
]);
|
]);
|
||||||
return Tuple2(
|
return Tuple2(
|
||||||
GitlabUser.fromJson(res[0]),
|
GitlabUser.fromJson(res[0]),
|
||||||
[for (var v in res[1]) GitlabUserProject.fromJson(v)],
|
[for (var v in res[1]) GitlabProject.fromJson(v)],
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
action: isViewer
|
action: isViewer
|
||||||
|
@ -62,15 +61,8 @@ class GitlabUserScreen extends StatelessWidget {
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
for (var v in projects)
|
for (var v in projects)
|
||||||
RepositoryItem.gl(
|
RepositoryItem.gl(
|
||||||
id: v.id,
|
payload: v,
|
||||||
owner: v.owner.username,
|
|
||||||
avatarUrl: v.owner.avatarUrl,
|
|
||||||
name: v.name,
|
|
||||||
description: v.description,
|
|
||||||
starCount: v.starCount,
|
|
||||||
forkCount: v.forksCount,
|
|
||||||
note: 'Created ${timeago.format(v.createdAt)}',
|
note: 'Created ${timeago.format(v.createdAt)}',
|
||||||
visibility: v.visibility,
|
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/cupertino.dart';
|
import 'package:flutter/cupertino.dart';
|
||||||
|
import 'package:git_touch/models/gitlab.dart';
|
||||||
import 'package:git_touch/models/theme.dart';
|
import 'package:git_touch/models/theme.dart';
|
||||||
import 'package:git_touch/widgets/avatar.dart';
|
import 'package:git_touch/widgets/avatar.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -36,20 +37,21 @@ class RepositoryItem extends StatelessWidget {
|
||||||
});
|
});
|
||||||
|
|
||||||
RepositoryItem.gl({
|
RepositoryItem.gl({
|
||||||
@required id,
|
@required GitlabProject payload,
|
||||||
@required this.owner,
|
|
||||||
@required this.avatarUrl,
|
|
||||||
@required this.name,
|
|
||||||
@required this.description,
|
|
||||||
@required this.starCount,
|
|
||||||
@required this.forkCount,
|
|
||||||
@required visibility,
|
|
||||||
this.primaryLanguageName,
|
this.primaryLanguageName,
|
||||||
this.primaryLanguageColor,
|
this.primaryLanguageColor,
|
||||||
this.note,
|
this.note,
|
||||||
}) : url = '/gitlab/projects/$id',
|
}) : owner = payload.namespace.path,
|
||||||
avatarLink = '/gitlab/user/$id',
|
avatarUrl = payload.owner?.avatarUrl,
|
||||||
iconData = _buildGlIconData(visibility);
|
name = payload.name,
|
||||||
|
description = payload.description,
|
||||||
|
starCount = payload.starCount,
|
||||||
|
forkCount = payload.forksCount,
|
||||||
|
url = '/gitlab/projects/${payload.id}',
|
||||||
|
avatarLink = payload.namespace.kind == 'group'
|
||||||
|
? '/gitlab/group/${payload.namespace.id}'
|
||||||
|
: '/gitlab/user/${payload.owner.id}',
|
||||||
|
iconData = _buildGlIconData(payload.visibility);
|
||||||
|
|
||||||
RepositoryItem.gh({
|
RepositoryItem.gh({
|
||||||
@required this.owner,
|
@required this.owner,
|
||||||
|
|
Loading…
Reference in New Issue