feat(gitlab): add gql client

This commit is contained in:
Rongjian Zhang 2022-10-02 01:26:34 +08:00
parent 3474d931ac
commit 048d35112b
13 changed files with 38 additions and 27 deletions

View File

@ -664,7 +664,8 @@ class AuthModel with ChangeNotifier {
StorageKeys.getDefaultStartTabKey(activeAccount!.platform)) ??
0;
_ghClient = null;
_gqlClient = null;
_ghGqlClient = null;
_glGqlClient = null;
notifyListeners();
// TODO: strategy
@ -689,20 +690,30 @@ class AuthModel with ChangeNotifier {
return _ghClient!;
}
Client? _gqlClient;
Client get gqlClient {
_gqlClient ??= Client(
Client? _ghGqlClient;
Client get ghGqlClient {
return _ghGqlClient ??= Client(
link: HttpLink(
'$_apiPrefix/graphql',
defaultHeaders: {HttpHeaders.authorizationHeader: 'token $token'},
),
// https://ferrygraphql.com/docs/fetch-policies#default-fetchpolicies
defaultFetchPolicies: {
OperationType.query: FetchPolicy.NetworkOnly,
},
defaultFetchPolicies: {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 {

View File

@ -41,7 +41,7 @@ class GhCommits extends StatelessWidget {
b.vars.after = cursor;
});
final res =
await context.read<AuthModel>().gqlClient.request(req).first;
await context.read<AuthModel>().ghGqlClient.request(req).first;
final ref = res.data!.repository!.defaultBranchRef ??
res.data!.repository!.ref!;
final history = (ref.target as GCommitsRefCommit).history;

View File

@ -22,7 +22,7 @@ class GhGistsScreen extends StatelessWidget {
..vars.login = login
..vars.after = page);
final res =
await context.read<AuthModel>().gqlClient.request(req).first;
await context.read<AuthModel>().ghGqlClient.request(req).first;
final gists = res.data!.user!.gists;
return ListPayload(
cursor: gists.pageInfo.endCursor,

View File

@ -24,7 +24,7 @@ class GhGistsFilesScreen extends StatelessWidget {
..vars.login = login
..vars.name = id);
final res =
await context.read<AuthModel>().gqlClient.request(req).first;
await context.read<AuthModel>().ghGqlClient.request(req).first;
final gist = res.data!.user!.gist;
return gist;
},

View File

@ -93,7 +93,7 @@ class GhIssueScreen extends StatelessWidget {
b.vars.number = number;
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!;
}

View File

@ -30,7 +30,7 @@ class GhIssuesScreen extends StatelessWidget {
b.vars.cursor = cursor;
});
final res =
await context.read<AuthModel>().gqlClient.request(req).first;
await context.read<AuthModel>().ghGqlClient.request(req).first;
final issues = res.data!.repository!.issues;
return ListPayload(
cursor: issues.pageInfo.endCursor,

View File

@ -16,7 +16,7 @@ class GhMetaScreen extends StatelessWidget {
fetch: () async {
final req = GMetaReq();
final res =
await context.read<AuthModel>().gqlClient.request(req).first;
await context.read<AuthModel>().ghGqlClient.request(req).first;
return res.data!.meta;
},
bodyBuilder: (meta, _) {

View File

@ -26,7 +26,7 @@ class GhPullsScreen extends StatelessWidget {
b.vars.cursor = cursor;
});
final res =
await context.read<AuthModel>().gqlClient.request(req).first;
await context.read<AuthModel>().ghGqlClient.request(req).first;
final pulls = res.data!.repository!.pullRequests;
return ListPayload(
cursor: pulls.pageInfo.endCursor,

View File

@ -24,7 +24,7 @@ class GhReleasesScreen extends StatelessWidget {
..vars.name = name
..vars.cursor = page);
final res =
await context.read<AuthModel>().gqlClient.request(req).first;
await context.read<AuthModel>().ghGqlClient.request(req).first;
final releases = res.data!.repository!.releases;
return ListPayload(
cursor: releases.pageInfo.endCursor,

View File

@ -56,7 +56,7 @@ class GhRepoScreen extends StatelessWidget {
..vars.branchSpecified = branch != null
..vars.branch = branch ?? '');
final res =
await context.read<AuthModel>().gqlClient.request(req).first;
await context.read<AuthModel>().ghGqlClient.request(req).first;
final repo = res.data!.repository;
final ghClient = context.read<AuthModel>().ghClient;

View File

@ -22,7 +22,7 @@ class GhRepos extends StatelessWidget {
b.vars.login = login;
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;
return ListPayload(
cursor: p.pageInfo.endCursor,
@ -52,7 +52,7 @@ class GhStars extends StatelessWidget {
b.vars.login = login;
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;
return ListPayload(
cursor: p.pageInfo.endCursor,

View File

@ -217,7 +217,7 @@ class GhViewerScreen extends StatelessWidget {
return RefreshStatefulScaffold<GUserParts?>(
fetch: () async {
final req = GViewerReq();
final res = await auth.gqlClient.request(req).first;
final res = await auth.ghGqlClient.request(req).first;
return res.data?.viewer;
},
title: AppBarTitle(AppLocalizations.of(context)!.me),
@ -243,7 +243,7 @@ class GhUserScreen extends StatelessWidget {
return RefreshStatefulScaffold<GUserData?>(
fetch: () async {
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;
},
title: AppBarTitle(login),

View File

@ -21,7 +21,7 @@ class GhFollowers extends StatelessWidget {
b.vars.login = login;
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;
return ListPayload(
cursor: p.pageInfo.endCursor,
@ -50,7 +50,7 @@ class GhFollowing extends StatelessWidget {
b.vars.login = login;
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;
return ListPayload(
cursor: p.pageInfo.endCursor,
@ -79,7 +79,7 @@ class GhOrgs extends StatelessWidget {
b.vars.login = login;
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;
return ListPayload(
cursor: p.pageInfo.endCursor,
@ -108,7 +108,7 @@ class GhMembers extends StatelessWidget {
b.vars.login = login;
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;
return ListPayload(
cursor: p.pageInfo.endCursor,
@ -139,7 +139,7 @@ class GhWachers extends StatelessWidget {
b.vars.name = name;
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;
return ListPayload(
cursor: p.pageInfo.endCursor,
@ -170,7 +170,7 @@ class GhStargazers extends StatelessWidget {
b.vars.name = name;
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;
return ListPayload(
cursor: p.pageInfo.endCursor,