From 048d35112b8c3d3cfe304df284c51eea9bc5bdbe Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Sun, 2 Oct 2022 01:26:34 +0800 Subject: [PATCH] feat(gitlab): add gql client --- lib/models/auth.dart | 27 +++++++++++++++++++-------- lib/screens/gh_commits.dart | 2 +- lib/screens/gh_gists.dart | 2 +- lib/screens/gh_gists_files.dart | 2 +- lib/screens/gh_issue.dart | 2 +- lib/screens/gh_issues.dart | 2 +- lib/screens/gh_meta.dart | 2 +- lib/screens/gh_pulls.dart | 2 +- lib/screens/gh_releases.dart | 2 +- lib/screens/gh_repo.dart | 2 +- lib/screens/gh_repos.dart | 4 ++-- lib/screens/gh_user.dart | 4 ++-- lib/screens/gh_users.dart | 12 ++++++------ 13 files changed, 38 insertions(+), 27 deletions(-) diff --git a/lib/models/auth.dart b/lib/models/auth.dart index 4e3990a..c3753ac 100644 --- a/lib/models/auth.dart +++ b/lib/models/auth.dart @@ -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 query(String query, [String? token]) async { diff --git a/lib/screens/gh_commits.dart b/lib/screens/gh_commits.dart index bb64b30..b1f1bba 100644 --- a/lib/screens/gh_commits.dart +++ b/lib/screens/gh_commits.dart @@ -41,7 +41,7 @@ class GhCommits extends StatelessWidget { b.vars.after = cursor; }); final res = - await context.read().gqlClient.request(req).first; + await context.read().ghGqlClient.request(req).first; final ref = res.data!.repository!.defaultBranchRef ?? res.data!.repository!.ref!; final history = (ref.target as GCommitsRefCommit).history; diff --git a/lib/screens/gh_gists.dart b/lib/screens/gh_gists.dart index a2869d6..2faa660 100644 --- a/lib/screens/gh_gists.dart +++ b/lib/screens/gh_gists.dart @@ -22,7 +22,7 @@ class GhGistsScreen extends StatelessWidget { ..vars.login = login ..vars.after = page); final res = - await context.read().gqlClient.request(req).first; + await context.read().ghGqlClient.request(req).first; final gists = res.data!.user!.gists; return ListPayload( cursor: gists.pageInfo.endCursor, diff --git a/lib/screens/gh_gists_files.dart b/lib/screens/gh_gists_files.dart index 82290c2..343d5fd 100644 --- a/lib/screens/gh_gists_files.dart +++ b/lib/screens/gh_gists_files.dart @@ -24,7 +24,7 @@ class GhGistsFilesScreen extends StatelessWidget { ..vars.login = login ..vars.name = id); final res = - await context.read().gqlClient.request(req).first; + await context.read().ghGqlClient.request(req).first; final gist = res.data!.user!.gist; return gist; }, diff --git a/lib/screens/gh_issue.dart b/lib/screens/gh_issue.dart index 1626a89..55ed6e9 100644 --- a/lib/screens/gh_issue.dart +++ b/lib/screens/gh_issue.dart @@ -93,7 +93,7 @@ class GhIssueScreen extends StatelessWidget { b.vars.number = number; b.vars.cursor = cursor; }); - final res = await context.read().gqlClient.request(req).first; + final res = await context.read().ghGqlClient.request(req).first; return res.data!.repository!; } diff --git a/lib/screens/gh_issues.dart b/lib/screens/gh_issues.dart index 68944d4..f6a7aa4 100644 --- a/lib/screens/gh_issues.dart +++ b/lib/screens/gh_issues.dart @@ -30,7 +30,7 @@ class GhIssuesScreen extends StatelessWidget { b.vars.cursor = cursor; }); final res = - await context.read().gqlClient.request(req).first; + await context.read().ghGqlClient.request(req).first; final issues = res.data!.repository!.issues; return ListPayload( cursor: issues.pageInfo.endCursor, diff --git a/lib/screens/gh_meta.dart b/lib/screens/gh_meta.dart index 20d8f71..4d543aa 100644 --- a/lib/screens/gh_meta.dart +++ b/lib/screens/gh_meta.dart @@ -16,7 +16,7 @@ class GhMetaScreen extends StatelessWidget { fetch: () async { final req = GMetaReq(); final res = - await context.read().gqlClient.request(req).first; + await context.read().ghGqlClient.request(req).first; return res.data!.meta; }, bodyBuilder: (meta, _) { diff --git a/lib/screens/gh_pulls.dart b/lib/screens/gh_pulls.dart index 033f44e..a149474 100644 --- a/lib/screens/gh_pulls.dart +++ b/lib/screens/gh_pulls.dart @@ -26,7 +26,7 @@ class GhPullsScreen extends StatelessWidget { b.vars.cursor = cursor; }); final res = - await context.read().gqlClient.request(req).first; + await context.read().ghGqlClient.request(req).first; final pulls = res.data!.repository!.pullRequests; return ListPayload( cursor: pulls.pageInfo.endCursor, diff --git a/lib/screens/gh_releases.dart b/lib/screens/gh_releases.dart index 1acb2db..96e45bd 100644 --- a/lib/screens/gh_releases.dart +++ b/lib/screens/gh_releases.dart @@ -24,7 +24,7 @@ class GhReleasesScreen extends StatelessWidget { ..vars.name = name ..vars.cursor = page); final res = - await context.read().gqlClient.request(req).first; + await context.read().ghGqlClient.request(req).first; final releases = res.data!.repository!.releases; return ListPayload( cursor: releases.pageInfo.endCursor, diff --git a/lib/screens/gh_repo.dart b/lib/screens/gh_repo.dart index 42d4087..7d48716 100644 --- a/lib/screens/gh_repo.dart +++ b/lib/screens/gh_repo.dart @@ -56,7 +56,7 @@ class GhRepoScreen extends StatelessWidget { ..vars.branchSpecified = branch != null ..vars.branch = branch ?? ''); final res = - await context.read().gqlClient.request(req).first; + await context.read().ghGqlClient.request(req).first; final repo = res.data!.repository; final ghClient = context.read().ghClient; diff --git a/lib/screens/gh_repos.dart b/lib/screens/gh_repos.dart index ee9c21a..d0771b2 100644 --- a/lib/screens/gh_repos.dart +++ b/lib/screens/gh_repos.dart @@ -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, diff --git a/lib/screens/gh_user.dart b/lib/screens/gh_user.dart index ddd6c88..782fdb8 100644 --- a/lib/screens/gh_user.dart +++ b/lib/screens/gh_user.dart @@ -217,7 +217,7 @@ class GhViewerScreen extends StatelessWidget { return RefreshStatefulScaffold( 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( 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), diff --git a/lib/screens/gh_users.dart b/lib/screens/gh_users.dart index 9968eea..d73343c 100644 --- a/lib/screens/gh_users.dart +++ b/lib/screens/gh_users.dart @@ -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,