feat(gitlab): add gql client
This commit is contained in:
parent
3474d931ac
commit
048d35112b
|
@ -664,7 +664,8 @@ class AuthModel with ChangeNotifier {
|
||||||
StorageKeys.getDefaultStartTabKey(activeAccount!.platform)) ??
|
StorageKeys.getDefaultStartTabKey(activeAccount!.platform)) ??
|
||||||
0;
|
0;
|
||||||
_ghClient = null;
|
_ghClient = null;
|
||||||
_gqlClient = null;
|
_ghGqlClient = null;
|
||||||
|
_glGqlClient = null;
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
|
|
||||||
// TODO: strategy
|
// TODO: strategy
|
||||||
|
@ -689,20 +690,30 @@ class AuthModel with ChangeNotifier {
|
||||||
return _ghClient!;
|
return _ghClient!;
|
||||||
}
|
}
|
||||||
|
|
||||||
Client? _gqlClient;
|
Client? _ghGqlClient;
|
||||||
Client get gqlClient {
|
Client get ghGqlClient {
|
||||||
_gqlClient ??= Client(
|
return _ghGqlClient ??= Client(
|
||||||
link: HttpLink(
|
link: HttpLink(
|
||||||
'$_apiPrefix/graphql',
|
'$_apiPrefix/graphql',
|
||||||
defaultHeaders: {HttpHeaders.authorizationHeader: 'token $token'},
|
defaultHeaders: {HttpHeaders.authorizationHeader: 'token $token'},
|
||||||
),
|
),
|
||||||
// https://ferrygraphql.com/docs/fetch-policies#default-fetchpolicies
|
// https://ferrygraphql.com/docs/fetch-policies#default-fetchpolicies
|
||||||
defaultFetchPolicies: {
|
defaultFetchPolicies: {OperationType.query: FetchPolicy.NetworkOnly},
|
||||||
OperationType.query: FetchPolicy.NetworkOnly,
|
|
||||||
},
|
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return _gqlClient!;
|
Client? _glGqlClient;
|
||||||
|
Client get glGqlClient {
|
||||||
|
return _glGqlClient ??= Client(
|
||||||
|
link: HttpLink(
|
||||||
|
Uri.parse(activeAccount!.domain)
|
||||||
|
.replace(path: '/api/graphql')
|
||||||
|
.toString(),
|
||||||
|
defaultHeaders: {'Private-Token': token},
|
||||||
|
),
|
||||||
|
// https://ferrygraphql.com/docs/fetch-policies#default-fetchpolicies
|
||||||
|
defaultFetchPolicies: {OperationType.query: FetchPolicy.NetworkOnly},
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<dynamic> query(String query, [String? token]) async {
|
Future<dynamic> query(String query, [String? token]) async {
|
||||||
|
|
|
@ -41,7 +41,7 @@ class GhCommits extends StatelessWidget {
|
||||||
b.vars.after = cursor;
|
b.vars.after = cursor;
|
||||||
});
|
});
|
||||||
final res =
|
final res =
|
||||||
await context.read<AuthModel>().gqlClient.request(req).first;
|
await context.read<AuthModel>().ghGqlClient.request(req).first;
|
||||||
final ref = res.data!.repository!.defaultBranchRef ??
|
final ref = res.data!.repository!.defaultBranchRef ??
|
||||||
res.data!.repository!.ref!;
|
res.data!.repository!.ref!;
|
||||||
final history = (ref.target as GCommitsRefCommit).history;
|
final history = (ref.target as GCommitsRefCommit).history;
|
||||||
|
|
|
@ -22,7 +22,7 @@ class GhGistsScreen extends StatelessWidget {
|
||||||
..vars.login = login
|
..vars.login = login
|
||||||
..vars.after = page);
|
..vars.after = page);
|
||||||
final res =
|
final res =
|
||||||
await context.read<AuthModel>().gqlClient.request(req).first;
|
await context.read<AuthModel>().ghGqlClient.request(req).first;
|
||||||
final gists = res.data!.user!.gists;
|
final gists = res.data!.user!.gists;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: gists.pageInfo.endCursor,
|
cursor: gists.pageInfo.endCursor,
|
||||||
|
|
|
@ -24,7 +24,7 @@ class GhGistsFilesScreen extends StatelessWidget {
|
||||||
..vars.login = login
|
..vars.login = login
|
||||||
..vars.name = id);
|
..vars.name = id);
|
||||||
final res =
|
final res =
|
||||||
await context.read<AuthModel>().gqlClient.request(req).first;
|
await context.read<AuthModel>().ghGqlClient.request(req).first;
|
||||||
final gist = res.data!.user!.gist;
|
final gist = res.data!.user!.gist;
|
||||||
return gist;
|
return gist;
|
||||||
},
|
},
|
||||||
|
|
|
@ -93,7 +93,7 @@ class GhIssueScreen extends StatelessWidget {
|
||||||
b.vars.number = number;
|
b.vars.number = number;
|
||||||
b.vars.cursor = cursor;
|
b.vars.cursor = cursor;
|
||||||
});
|
});
|
||||||
final res = await context.read<AuthModel>().gqlClient.request(req).first;
|
final res = await context.read<AuthModel>().ghGqlClient.request(req).first;
|
||||||
return res.data!.repository!;
|
return res.data!.repository!;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@ class GhIssuesScreen extends StatelessWidget {
|
||||||
b.vars.cursor = cursor;
|
b.vars.cursor = cursor;
|
||||||
});
|
});
|
||||||
final res =
|
final res =
|
||||||
await context.read<AuthModel>().gqlClient.request(req).first;
|
await context.read<AuthModel>().ghGqlClient.request(req).first;
|
||||||
final issues = res.data!.repository!.issues;
|
final issues = res.data!.repository!.issues;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: issues.pageInfo.endCursor,
|
cursor: issues.pageInfo.endCursor,
|
||||||
|
|
|
@ -16,7 +16,7 @@ class GhMetaScreen extends StatelessWidget {
|
||||||
fetch: () async {
|
fetch: () async {
|
||||||
final req = GMetaReq();
|
final req = GMetaReq();
|
||||||
final res =
|
final res =
|
||||||
await context.read<AuthModel>().gqlClient.request(req).first;
|
await context.read<AuthModel>().ghGqlClient.request(req).first;
|
||||||
return res.data!.meta;
|
return res.data!.meta;
|
||||||
},
|
},
|
||||||
bodyBuilder: (meta, _) {
|
bodyBuilder: (meta, _) {
|
||||||
|
|
|
@ -26,7 +26,7 @@ class GhPullsScreen extends StatelessWidget {
|
||||||
b.vars.cursor = cursor;
|
b.vars.cursor = cursor;
|
||||||
});
|
});
|
||||||
final res =
|
final res =
|
||||||
await context.read<AuthModel>().gqlClient.request(req).first;
|
await context.read<AuthModel>().ghGqlClient.request(req).first;
|
||||||
final pulls = res.data!.repository!.pullRequests;
|
final pulls = res.data!.repository!.pullRequests;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: pulls.pageInfo.endCursor,
|
cursor: pulls.pageInfo.endCursor,
|
||||||
|
|
|
@ -24,7 +24,7 @@ class GhReleasesScreen extends StatelessWidget {
|
||||||
..vars.name = name
|
..vars.name = name
|
||||||
..vars.cursor = page);
|
..vars.cursor = page);
|
||||||
final res =
|
final res =
|
||||||
await context.read<AuthModel>().gqlClient.request(req).first;
|
await context.read<AuthModel>().ghGqlClient.request(req).first;
|
||||||
final releases = res.data!.repository!.releases;
|
final releases = res.data!.repository!.releases;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: releases.pageInfo.endCursor,
|
cursor: releases.pageInfo.endCursor,
|
||||||
|
|
|
@ -56,7 +56,7 @@ class GhRepoScreen extends StatelessWidget {
|
||||||
..vars.branchSpecified = branch != null
|
..vars.branchSpecified = branch != null
|
||||||
..vars.branch = branch ?? '');
|
..vars.branch = branch ?? '');
|
||||||
final res =
|
final res =
|
||||||
await context.read<AuthModel>().gqlClient.request(req).first;
|
await context.read<AuthModel>().ghGqlClient.request(req).first;
|
||||||
final repo = res.data!.repository;
|
final repo = res.data!.repository;
|
||||||
|
|
||||||
final ghClient = context.read<AuthModel>().ghClient;
|
final ghClient = context.read<AuthModel>().ghClient;
|
||||||
|
|
|
@ -22,7 +22,7 @@ class GhRepos extends StatelessWidget {
|
||||||
b.vars.login = login;
|
b.vars.login = login;
|
||||||
b.vars.after = cursor;
|
b.vars.after = cursor;
|
||||||
});
|
});
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
final p = res.data!.repositoryOwner!.repositories;
|
final p = res.data!.repositoryOwner!.repositories;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: p.pageInfo.endCursor,
|
cursor: p.pageInfo.endCursor,
|
||||||
|
@ -52,7 +52,7 @@ class GhStars extends StatelessWidget {
|
||||||
b.vars.login = login;
|
b.vars.login = login;
|
||||||
b.vars.after = cursor;
|
b.vars.after = cursor;
|
||||||
});
|
});
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
final p = res.data!.user!.starredRepositories;
|
final p = res.data!.user!.starredRepositories;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: p.pageInfo.endCursor,
|
cursor: p.pageInfo.endCursor,
|
||||||
|
|
|
@ -217,7 +217,7 @@ class GhViewerScreen extends StatelessWidget {
|
||||||
return RefreshStatefulScaffold<GUserParts?>(
|
return RefreshStatefulScaffold<GUserParts?>(
|
||||||
fetch: () async {
|
fetch: () async {
|
||||||
final req = GViewerReq();
|
final req = GViewerReq();
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
return res.data?.viewer;
|
return res.data?.viewer;
|
||||||
},
|
},
|
||||||
title: AppBarTitle(AppLocalizations.of(context)!.me),
|
title: AppBarTitle(AppLocalizations.of(context)!.me),
|
||||||
|
@ -243,7 +243,7 @@ class GhUserScreen extends StatelessWidget {
|
||||||
return RefreshStatefulScaffold<GUserData?>(
|
return RefreshStatefulScaffold<GUserData?>(
|
||||||
fetch: () async {
|
fetch: () async {
|
||||||
final req = GUserReq((b) => b..vars.login = login);
|
final req = GUserReq((b) => b..vars.login = login);
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
return res.data;
|
return res.data;
|
||||||
},
|
},
|
||||||
title: AppBarTitle(login),
|
title: AppBarTitle(login),
|
||||||
|
|
|
@ -21,7 +21,7 @@ class GhFollowers extends StatelessWidget {
|
||||||
b.vars.login = login;
|
b.vars.login = login;
|
||||||
b.vars.after = cursor;
|
b.vars.after = cursor;
|
||||||
});
|
});
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
final p = res.data!.user!.followers;
|
final p = res.data!.user!.followers;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: p.pageInfo.endCursor,
|
cursor: p.pageInfo.endCursor,
|
||||||
|
@ -50,7 +50,7 @@ class GhFollowing extends StatelessWidget {
|
||||||
b.vars.login = login;
|
b.vars.login = login;
|
||||||
b.vars.after = cursor;
|
b.vars.after = cursor;
|
||||||
});
|
});
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
final p = res.data!.user!.following;
|
final p = res.data!.user!.following;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: p.pageInfo.endCursor,
|
cursor: p.pageInfo.endCursor,
|
||||||
|
@ -79,7 +79,7 @@ class GhOrgs extends StatelessWidget {
|
||||||
b.vars.login = login;
|
b.vars.login = login;
|
||||||
b.vars.after = cursor;
|
b.vars.after = cursor;
|
||||||
});
|
});
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
final p = res.data!.user!.organizations;
|
final p = res.data!.user!.organizations;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: p.pageInfo.endCursor,
|
cursor: p.pageInfo.endCursor,
|
||||||
|
@ -108,7 +108,7 @@ class GhMembers extends StatelessWidget {
|
||||||
b.vars.login = login;
|
b.vars.login = login;
|
||||||
b.vars.after = cursor;
|
b.vars.after = cursor;
|
||||||
});
|
});
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
final p = res.data!.organization!.membersWithRole;
|
final p = res.data!.organization!.membersWithRole;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: p.pageInfo.endCursor,
|
cursor: p.pageInfo.endCursor,
|
||||||
|
@ -139,7 +139,7 @@ class GhWachers extends StatelessWidget {
|
||||||
b.vars.name = name;
|
b.vars.name = name;
|
||||||
b.vars.after = cursor;
|
b.vars.after = cursor;
|
||||||
});
|
});
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
final p = res.data!.repository!.watchers;
|
final p = res.data!.repository!.watchers;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: p.pageInfo.endCursor,
|
cursor: p.pageInfo.endCursor,
|
||||||
|
@ -170,7 +170,7 @@ class GhStargazers extends StatelessWidget {
|
||||||
b.vars.name = name;
|
b.vars.name = name;
|
||||||
b.vars.after = cursor;
|
b.vars.after = cursor;
|
||||||
});
|
});
|
||||||
final res = await auth.gqlClient.request(req).first;
|
final res = await auth.ghGqlClient.request(req).first;
|
||||||
final p = res.data!.repository!.stargazers;
|
final p = res.data!.repository!.stargazers;
|
||||||
return ListPayload(
|
return ListPayload(
|
||||||
cursor: p.pageInfo.endCursor,
|
cursor: p.pageInfo.endCursor,
|
||||||
|
|
Loading…
Reference in New Issue