refactor: rename data query methods to fetch

This commit is contained in:
Rongjian Zhang 2020-10-06 20:52:40 +08:00
parent 3002c07367
commit 9ba2cf3208
52 changed files with 57 additions and 57 deletions

View File

@ -26,12 +26,12 @@ class ListStatefulScaffold<T, K> extends StatefulWidget {
final Widget title;
final Widget Function() actionBuilder;
final Widget Function(T payload) itemBuilder;
final Future<ListPayload<T, K>> Function(K cursor) onLoadMore;
final Future<ListPayload<T, K>> Function(K cursor) fetch;
ListStatefulScaffold({
@required this.title,
@required this.itemBuilder,
@required this.onLoadMore,
@required this.fetch,
this.actionBuilder,
});
@ -95,7 +95,7 @@ class _ListStatefulScaffoldState<T, K>
}
});
try {
var _payload = await widget.onLoadMore(null);
var _payload = await widget.fetch(null);
items = _payload.items;
cursor = _payload.cursor;
hasMore = _payload.hasMore;
@ -118,7 +118,7 @@ class _ListStatefulScaffoldState<T, K>
loadingMore = true;
});
try {
var _payload = await widget.onLoadMore(cursor);
var _payload = await widget.fetch(cursor);
items.addAll(_payload.items);
cursor = _payload.cursor;
hasMore = _payload.hasMore;

View File

@ -7,7 +7,7 @@ class RefreshStatefulScaffold<T> extends StatefulWidget {
final Widget title;
final Widget Function(T data, void Function(VoidCallback fn) setState)
bodyBuilder;
final Future<T> Function() fetchData;
final Future<T> Function() fetch;
final Widget Function(T data, void Function(VoidCallback fn) setState)
actionBuilder;
final Widget action;
@ -16,7 +16,7 @@ class RefreshStatefulScaffold<T> extends StatefulWidget {
RefreshStatefulScaffold({
@required this.title,
@required this.bodyBuilder,
@required this.fetchData,
@required this.fetch,
this.actionBuilder,
this.action,
this.canRefresh = true,
@ -46,7 +46,7 @@ class _RefreshStatefulScaffoldState<T>
_error = '';
_loading = true;
});
_data = await widget.fetchData();
_data = await widget.fetch();
} catch (err) {
_error = err.toString();
throw err;

View File

@ -17,7 +17,7 @@ class BbCommitsScreen extends StatelessWidget {
final auth = Provider.of<AuthModel>(context);
return ListStatefulScaffold<BbCommit, String>(
title: AppBarTitle('Commits'),
onLoadMore: (nextUrl) async {
fetch: (nextUrl) async {
final res = await context.read<AuthModel>().fetchBbWithPage(
nextUrl ?? '/repositories/$owner/$name/commits/$ref');
return ListPayload(

View File

@ -11,7 +11,7 @@ class BbExploreScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<BbRepo, String>(
title: AppBarTitle('Explore'),
onLoadMore: (nextUrl) async {
fetch: (nextUrl) async {
final res = await context.read<AuthModel>().fetchBbWithPage(
nextUrl ?? '/repositories?role=member&sort=-updated_on');
return ListPayload(

View File

@ -17,7 +17,7 @@ class BbIssuesScreen extends StatelessWidget {
final auth = Provider.of<AuthModel>(context);
return ListStatefulScaffold<BbIssues, String>(
title: AppBarTitle('Issues'),
onLoadMore: (nextUrl) async {
fetch: (nextUrl) async {
final res = await context
.read<AuthModel>()
.fetchBbWithPage(nextUrl ?? '/repositories/$owner/$name/issues');

View File

@ -24,7 +24,7 @@ class BbObjectScreen extends StatelessWidget {
final auth = Provider.of<AuthModel>(context);
return RefreshStatefulScaffold(
title: AppBarTitle(path ?? 'Files'),
fetchData: () async {
fetch: () async {
final res = await auth
.fetchBb('/repositories/$owner/$name/src/$ref/${path ?? ''}');
if (res.headers[HttpHeaders.contentTypeHeader] == 'text/plain') {

View File

@ -17,7 +17,7 @@ class BbPullsScreen extends StatelessWidget {
final auth = Provider.of<AuthModel>(context);
return ListStatefulScaffold<BbPulls, String>(
title: AppBarTitle('Pull requests'),
onLoadMore: (nextUrl) async {
fetch: (nextUrl) async {
final res = await context.read<AuthModel>().fetchBbWithPage(
nextUrl ?? '/repositories/$owner/$name/pullrequests');
return ListPayload(

View File

@ -23,7 +23,7 @@ class BbRepoScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold<Tuple2<BbRepo, String>>(
title: AppBarTitle('Repository'),
fetchData: () async {
fetch: () async {
final auth = context.read<AuthModel>();
final r = await auth.fetchBbJson('/repositories/$owner/$name');
final repo = BbRepo.fromJson(r);

View File

@ -12,7 +12,7 @@ class BbTeamsScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<BbUser, String>(
title: AppBarTitle('Teams'),
onLoadMore: (nextUrl) async {
fetch: (nextUrl) async {
final res = await context
.read<AuthModel>()
.fetchBbWithPage(nextUrl ?? '/teams?role=member');

View File

@ -27,7 +27,7 @@ class BbUserScreen extends StatelessWidget {
: isTeam
? 'Team'
: 'User'),
fetchData: () async {
fetch: () async {
final res = await Future.wait([
auth.fetchBbJson('/${isTeam ? 'teams' : 'users'}/$_accountId'),
auth.fetchBbWithPage('/repositories/$_login'),

View File

@ -29,7 +29,7 @@ class GhCommitsScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GhCommitsCommit, String>(
title: AppBarTitle('Commits'),
onLoadMore: (cursor) async {
fetch: (cursor) async {
final res = await context.read<AuthModel>().gqlClient.execute(
GhCommitsQuery(
variables: GhCommitsArguments(

View File

@ -18,7 +18,7 @@ class GhComparisonScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold(
title: AppBarTitle('Files'),
fetchData: () async {
fetch: () async {
final res = await context.read<AuthModel>().ghClient.getJSON(
'/repos/$owner/$name/compare/$before...$head',
convert: (vs) => GithubComparisonItem.fromJson(vs));

View File

@ -15,7 +15,7 @@ class GhContributorsScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GithubContributorItem, int>(
title: AppBarTitle('Contributors'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final res = await context
.read<AuthModel>()

View File

@ -17,7 +17,7 @@ class GhEventsScreen extends StatelessWidget {
return ListStatefulScaffold<GithubEvent, int>(
title: AppBarTitle('Events'),
itemBuilder: (payload) => EventItem(payload),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final events = await context.read<AuthModel>().ghClient.getJSON(
'/users/$login/events?page=$page&per_page=$pageSize',

View File

@ -26,7 +26,7 @@ class GhFilesScreen extends StatelessWidget {
],
);
},
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final res = await context
.read<AuthModel>()

View File

@ -15,7 +15,7 @@ class GhGistsScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GithubGistsItem, int>(
title: AppBarTitle('Gists'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final res = await context
.read<AuthModel>()

View File

@ -16,7 +16,7 @@ class GhGistsFilesScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold<GithubGistsItem>(
title: AppBarTitle('Files'),
fetchData: () async {
fetch: () async {
final data = await context.read<AuthModel>().ghClient.getJSON(
'/gists/$id',
convert: (vs) => GithubGistsItem.fromJson(vs));

View File

@ -22,7 +22,7 @@ class GhIssuesScreen extends StatelessWidget {
iconData: Octicons.plus,
url: '/github/$owner/$name/issues/new',
),
onLoadMore: (cursor) async {
fetch: (cursor) async {
final res =
await context.read<AuthModel>().gqlClient.execute(GhIssuesQuery(
variables: GhIssuesArguments(

View File

@ -37,7 +37,7 @@ class GhNewsScreenState extends State<GhNewsScreen> {
return ListStatefulScaffold<GithubEvent, int>(
title: AppBarTitle('News'),
itemBuilder: (payload) => EventItem(payload),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final auth = context.read<AuthModel>();
final login = auth.activeAccount.login;

View File

@ -23,7 +23,7 @@ class GhObjectScreen extends StatelessWidget {
return RefreshStatefulScaffold<RepositoryContents>(
// canRefresh: !_isImage, // TODO:
title: AppBarTitle(path == null ? 'Files' : path),
fetchData: () async {
fetch: () async {
// Do not request again for images
if (path != null &&
raw != null &&

View File

@ -20,7 +20,7 @@ class GhOrgReposScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<Repository, int>(
title: AppBarTitle('Repositories'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final rs = await context
.read<AuthModel>()

View File

@ -14,7 +14,7 @@ class GhUserOrganizationScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GithubUserOrganizationItem, int>(
title: AppBarTitle('Organizations'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final res = await context
.read<AuthModel>()

View File

@ -16,7 +16,7 @@ class GhPullsScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GhPullsPullRequest, String>(
title: AppBarTitle('Pull requests'),
onLoadMore: (cursor) async {
fetch: (cursor) async {
final res =
await context.read<AuthModel>().gqlClient.execute(GhPullsQuery(
variables: GhPullsArguments(

View File

@ -43,7 +43,7 @@ class GhRepoScreen extends StatelessWidget {
final theme = Provider.of<ThemeModel>(context);
return RefreshStatefulScaffold<GhRepoRepository>(
title: AppBarTitle('Repository'),
fetchData: () async {
fetch: () async {
var res = await context.read<AuthModel>().gqlClient.execute(GhRepoQuery(
variables: GhRepoArguments(
owner: owner,

View File

@ -23,7 +23,7 @@ class GhReposScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GhReposRepository, String>(
title: AppBarTitle(title),
onLoadMore: (cursor) async {
fetch: (cursor) async {
final auth = context.read<AuthModel>();
final res = await auth.gqlClient.execute(GhReposQuery(
variables:

View File

@ -292,7 +292,7 @@ class GhUserScreen extends StatelessWidget {
Widget build(BuildContext context) {
final auth = Provider.of<AuthModel>(context);
return RefreshStatefulScaffold<GhUserRepositoryOwner>(
fetchData: () async {
fetch: () async {
final data = await auth.gqlClient.execute(GhUserQuery(
variables:
GhUserArguments(login: login ?? '', isViewer: isViewer)));

View File

@ -88,7 +88,7 @@ class GhUsersScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GhUsersUser, String>(
title: AppBarTitle(_title),
onLoadMore: (cursor) async {
fetch: (cursor) async {
final auth = context.read<AuthModel>();
final res = await auth.gqlClient.execute(GhUsersQuery(
variables: GhUsersArguments(

View File

@ -18,7 +18,7 @@ class GlBlobScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold<GitlabBlob>(
title: AppBarTitle(path ?? ''),
fetchData: () async {
fetch: () async {
final auth = context.read<AuthModel>();
final res = await auth.fetchGitlab(
'/projects/$id/repository/files/${path.urlencode}?ref=$ref');

View File

@ -30,7 +30,7 @@ class GlCommitScreen extends StatelessWidget {
return RefreshStatefulScaffold<List<GitlabDiff>>(
title: AppBarTitle('Commits'),
fetchData: () => _query(context),
fetch: () => _query(context),
bodyBuilder: (items, _) {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,

View File

@ -16,7 +16,7 @@ class GlCommitsScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GitlabCommit, int>(
title: AppBarTitle('Commits'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final auth = context.read<AuthModel>();
final res = await auth

View File

@ -12,7 +12,7 @@ class GlExploreScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GitlabProject, int>(
title: AppBarTitle('Explore'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final auth = context.read<AuthModel>();
final res = await auth.fetchGitlabWithPage(

View File

@ -19,7 +19,7 @@ class GlGroupScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold<Tuple2<GitlabGroup, int>>(
title: Text('Group'),
fetchData: () async {
fetch: () async {
final auth = context.read<AuthModel>();
final res = await Future.wait([
auth.fetchGitlab('/groups/$id'),

View File

@ -11,7 +11,7 @@ class GlGroupsScreenn extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GitlabGroup, int>(
title: AppBarTitle('Groups'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final auth = context.read<AuthModel>();
final res = await auth.fetchGitlabWithPage('/groups?page=$page');

View File

@ -20,7 +20,7 @@ class GlIssueScreen extends StatelessWidget {
return RefreshStatefulScaffold<
Tuple3<GitlabTodoTarget, Iterable<GitlabIssueNote>, List>>(
title: Text('Issue #$iid'),
fetchData: () async {
fetch: () async {
final type = isMr ? 'merge_requests' : 'issues';
final auth = context.read<AuthModel>();
final items = await Future.wait([

View File

@ -17,7 +17,7 @@ class GlIssuesScreen extends StatelessWidget {
return ListStatefulScaffold<GitlabIssue, int>(
title: AppBarTitle('Issues'),
// TODO: create issue
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final auth = context.read<AuthModel>();
final res = await auth.fetchGitlabWithPage(

View File

@ -24,7 +24,7 @@ class GlMembersScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GitlabUser, int>(
title: AppBarTitle('Members'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final auth = context.read<AuthModel>();
final res =

View File

@ -16,7 +16,7 @@ class GlMergeRequestsScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GitlabIssue, int>(
title: AppBarTitle('Merge Requests'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final res = await context.read<AuthModel>().fetchGitlabWithPage(
'/projects/$id/merge_requests?state=opened&page=$page');

View File

@ -27,7 +27,7 @@ class GlProjectScreen extends StatelessWidget {
Tuple5<GitlabProject, Map<String, double>, List<GitlabProjectBadge>,
int, String>>(
title: AppBarTitle('Project'),
fetchData: () async {
fetch: () async {
final auth = context.read<AuthModel>();
final res = await Future.wait([
auth.fetchGitlab('/projects/$id?statistics=1'),

View File

@ -18,7 +18,7 @@ class GlProjectActivityScreen extends StatelessWidget {
final theme = Provider.of<ThemeModel>(context);
return ListStatefulScaffold<GitlabEvent, int>(
title: AppBarTitle('Activity'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final auth = context.read<AuthModel>();
final vs = await auth.fetchGitlab('/projects/$id/events');

View File

@ -15,7 +15,7 @@ class GlStarrersScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GitlabStarrer, int>(
title: AppBarTitle('Members'),
onLoadMore: (page) async {
fetch: (page) async {
page = page ?? 1;
final res = await context
.read<AuthModel>()

View File

@ -63,7 +63,7 @@ class GlTodosScreen extends StatelessWidget {
return RefreshStatefulScaffold<Iterable<GitlabTodo>>(
title: Text('Todos'),
fetchData: () async {
fetch: () async {
final vs = await context.read<AuthModel>().fetchGitlab('/todos');
return (vs as List).map((v) => GitlabTodo.fromJson(v));
},

View File

@ -19,7 +19,7 @@ class GlTreeScreen extends StatelessWidget {
final auth = Provider.of<AuthModel>(context);
return RefreshStatefulScaffold<Iterable<GitlabTreeItem>>(
title: AppBarTitle(path ?? 'Files'),
fetchData: () async {
fetch: () async {
final uri = Uri(
path: '/projects/$id/repository/tree',
queryParameters: {

View File

@ -20,7 +20,7 @@ class GlUserScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold<Tuple2<GitlabUser, Iterable<GitlabProject>>>(
title: Text(isViewer ? 'Me' : 'User'),
fetchData: () async {
fetch: () async {
final auth = context.read<AuthModel>();
final _id = id ?? auth.activeAccount.gitlabId;
final res = await Future.wait([

View File

@ -16,7 +16,7 @@ class GtCommitsScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GiteaCommit, int>(
title: AppBarTitle('Commits'),
onLoadMore: (page) async {
fetch: (page) async {
final res = await context
.read<AuthModel>()
.fetchGiteaWithPage('/repos/$owner/$name/commits', page: page);

View File

@ -17,7 +17,7 @@ class GtIssuesScreen extends StatelessWidget {
return ListStatefulScaffold<GiteaIssue, int>(
title: AppBarTitle(isPr ? 'Pull Requests' : 'Issues'),
// TODO: create issue
onLoadMore: (page) async {
fetch: (page) async {
final type = isPr ? 'pulls' : 'issues';
final res = await context.read<AuthModel>().fetchGiteaWithPage(
'/repos/$owner/$name/issues?state=open&type=$type',

View File

@ -19,7 +19,7 @@ class GtObjectScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold(
title: AppBarTitle(path ?? 'Files'),
fetchData: () async {
fetch: () async {
final suffix = path == null ? '' : '/$path';
final res = await context
.read<AuthModel>()

View File

@ -15,7 +15,7 @@ class GtOrgsScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GiteaOrg, int>(
title: AppBarTitle('Organizations'),
onLoadMore: (page) async {
fetch: (page) async {
final res =
await context.read<AuthModel>().fetchGiteaWithPage(api, page: page);
return ListPayload(

View File

@ -22,7 +22,7 @@ class GtRepoScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold<Tuple2<GiteaRepository, String>>(
title: AppBarTitle('Repository'),
fetchData: () async {
fetch: () async {
final auth = context.read<AuthModel>();
final res = await Future.wait([
auth.fetchGitea('/repos/$owner/$name'),

View File

@ -28,7 +28,7 @@ class GtReposScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GiteaRepository, int>(
title: AppBarTitle(title),
onLoadMore: (page) async {
fetch: (page) async {
final res =
await context.read<AuthModel>().fetchGiteaWithPage(api, page: page);
return ListPayload(

View File

@ -11,7 +11,7 @@ class GtStatusScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold<String>(
title: Text('Gitea status'),
fetchData: () async {
fetch: () async {
final auth = context.read<AuthModel>();
final res = await Future.wait([
auth.fetchGitea('/version'),

View File

@ -55,7 +55,7 @@ class GtUserScreen extends StatelessWidget {
Widget build(BuildContext context) {
return RefreshStatefulScaffold<GtUserScreenPayload>(
title: Text(isViewer ? 'Me' : login),
fetchData: () async {
fetch: () async {
final auth = context.read<AuthModel>();
final res = await Future.wait([
auth.fetchGitea('/orgs/$login'),

View File

@ -31,7 +31,7 @@ class GtUsersScreen extends StatelessWidget {
Widget build(BuildContext context) {
return ListStatefulScaffold<GiteaUser, int>(
title: AppBarTitle(title),
onLoadMore: (page) async {
fetch: (page) async {
final res =
await context.read<AuthModel>().fetchGiteaWithPage(api, page: page);
return ListPayload(