Skip to content
This repository has been archived by the owner on Apr 23, 2022. It is now read-only.

Commit

Permalink
feat: 改用 apollo
Browse files Browse the repository at this point in the history
  • Loading branch information
henry40408 committed May 15, 2018
1 parent 24f89e8 commit 05d6bd1
Show file tree
Hide file tree
Showing 3 changed files with 144 additions and 13 deletions.
26 changes: 14 additions & 12 deletions app/scripts/background/githubService.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import axios from 'axios/index'
import includes from 'lodash/includes'
import ApolloClient from 'apollo-boost'
import gql from 'graphql-tag'

import DIConstants from '../constants'

Expand Down Expand Up @@ -31,14 +33,16 @@ class GithubService {
let token = await this.accessToken.loadAsync()

if (!this.client || this.accessToken.changed) {
let headers = {}
let request = async () => {}
if (token) {
headers = { Authorization: `Bearer ${token}` }
request = async operation => operation.setContext({
headers: { Authorization: `Bearer ${token}` }
})
}

this.client = axios.create({
baseURL: 'https://api.github.com',
headers
this.client = new ApolloClient({
uri: 'https://api.github.com/graphql',
request
})
this.accessToken.changed = false
}
Expand Down Expand Up @@ -68,14 +72,14 @@ class GithubService {
let numberFormatter = new Intl.NumberFormat('en-US')
let percentFormatter = new Intl.NumberFormat('en-US', { style: 'percent' })

let query = `query {
let query = gql`query RateLimit {
rateLimit {
remaining
limit
}
}`
let response = await this.client.post('/graphql', { query })
let { data: { rateLimit: { remaining, limit } } } = response.data
let response = await this.client.query({ query })
let { rateLimit: { remaining, limit } } = response.data

this.log('🚦 rate limit:', { remaining, limit })

Expand Down Expand Up @@ -105,9 +109,7 @@ class GithubService {
let cues = GithubService.tuplesToCues(tuples)
let query = GithubService.cuesToGraphQLQuery(cues)

// unwrap response body from axios result first,
// then unwrap data payload from GraphQL result
let { data: { data } } = await this.client.post('/graphql', { query })
let { data } = await this.client.query({ query })

if (process.env.NODE_ENV === 'development') {
let entries = Object.entries(data).filter(tuple => !!tuple[1])
Expand All @@ -127,7 +129,7 @@ class GithubService {
}

static cuesToGraphQLQuery (cues) {
return `query Repositories {
return gql`query Repositories {
${cues.map(GithubService.cueToGraphQLQuery).join('\n')}
}`
}
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,12 +76,15 @@
"yargs": "9.x.x"
},
"dependencies": {
"apollo-boost": "^0.1.6",
"awilix": "~3.0.5",
"axios": "~0.18.0",
"bluebird": "~3.5.0",
"chomex": "~1.0.5",
"chrome-promise": "~3.0.0",
"date-fns": "~2.0.0-alpha.7",
"graphql": "^0.13.2",
"graphql-tag": "^2.9.2",
"lodash": "~4.17.4",
"lru-cache": "~4.0.2",
"parse-github-url": "~1.0.0",
Expand Down
128 changes: 127 additions & 1 deletion yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,14 @@
react-treebeard "^2.1.0"
redux "^3.7.2"

"@types/async@2.0.49":
version "2.0.49"
resolved "https://registry.yarnpkg.com/@types/async/-/async-2.0.49.tgz#92e33d13f74c895cb9a7f38ba97db8431ed14bc0"

"@types/graphql@0.12.6":
version "0.12.6"
resolved "http://registry.npmjs.org/@types/graphql/-/graphql-0.12.6.tgz#3d619198585fcabe5f4e1adfb5cf5f3388c66c13"

"@types/inline-style-prefixer@^3.0.0":
version "3.0.1"
resolved "https://registry.yarnpkg.com/@types/inline-style-prefixer/-/inline-style-prefixer-3.0.1.tgz#8541e636b029124b747952e9a28848286d2b5bf6"
Expand All @@ -220,6 +228,10 @@
version "16.0.36"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.0.36.tgz#ceb5639013bdb92a94147883052e69bb2c22c69b"

"@types/zen-observable@^0.5.3":
version "0.5.3"
resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.5.3.tgz#91b728599544efbb7386d8b6633693a3c2e7ade5"

abbrev@1:
version "1.1.0"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.0.tgz#d0554c2256636e2f56e7c2e5ad183f859428d81f"
Expand Down Expand Up @@ -448,6 +460,90 @@ anymatch@^1.3.0:
arrify "^1.0.0"
micromatch "^2.1.5"

apollo-boost@^0.1.6:
version "0.1.6"
resolved "https://registry.yarnpkg.com/apollo-boost/-/apollo-boost-0.1.6.tgz#922d423536e408abfff816904ad2753d50feb9bf"
dependencies:
apollo-cache-inmemory "^1.2.1"
apollo-client "^2.3.1"
apollo-link "^1.0.6"
apollo-link-error "^1.0.3"
apollo-link-http "^1.3.1"
apollo-link-state "^0.4.0"
graphql-tag "^2.4.2"

apollo-cache-inmemory@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/apollo-cache-inmemory/-/apollo-cache-inmemory-1.2.1.tgz#1f8222270aa7983eb9d2ac30057196378ab3bb01"
dependencies:
apollo-cache "^1.1.8"
apollo-utilities "^1.0.12"
graphql-anywhere "^4.1.10"

apollo-cache@^1.1.8:
version "1.1.8"
resolved "https://registry.yarnpkg.com/apollo-cache/-/apollo-cache-1.1.8.tgz#b078d33dec876d52b5a81a325d3c254d4e362d3c"
dependencies:
apollo-utilities "^1.0.12"

apollo-client@^2.3.1:
version "2.3.1"
resolved "https://registry.yarnpkg.com/apollo-client/-/apollo-client-2.3.1.tgz#64b204779b7e8b21f901529527a9a9c973eb7fd4"
dependencies:
"@types/zen-observable" "^0.5.3"
apollo-cache "^1.1.8"
apollo-link "^1.0.0"
apollo-link-dedup "^1.0.0"
apollo-utilities "^1.0.12"
symbol-observable "^1.0.2"
zen-observable "^0.8.0"
optionalDependencies:
"@types/async" "2.0.49"

apollo-link-dedup@^1.0.0:
version "1.0.9"
resolved "https://registry.yarnpkg.com/apollo-link-dedup/-/apollo-link-dedup-1.0.9.tgz#3c4e4af88ef027cbddfdb857c043fd0574051dad"
dependencies:
apollo-link "^1.2.2"

apollo-link-error@^1.0.3:
version "1.0.9"
resolved "https://registry.yarnpkg.com/apollo-link-error/-/apollo-link-error-1.0.9.tgz#83bbe019a3bca7c602c399889b313a7e5e22713f"
dependencies:
apollo-link "^1.2.2"

apollo-link-http-common@^0.2.4:
version "0.2.4"
resolved "https://registry.yarnpkg.com/apollo-link-http-common/-/apollo-link-http-common-0.2.4.tgz#877603f7904dc8f70242cac61808b1f8d034b2c3"
dependencies:
apollo-link "^1.2.2"

apollo-link-http@^1.3.1:
version "1.5.4"
resolved "https://registry.yarnpkg.com/apollo-link-http/-/apollo-link-http-1.5.4.tgz#b80b7b4b342c655b6a5614624b076a36be368f43"
dependencies:
apollo-link "^1.2.2"
apollo-link-http-common "^0.2.4"

apollo-link-state@^0.4.0:
version "0.4.1"
resolved "https://registry.yarnpkg.com/apollo-link-state/-/apollo-link-state-0.4.1.tgz#65e9e0e12c67936b8c4b12b8438434f393104579"
dependencies:
apollo-utilities "^1.0.8"
graphql-anywhere "^4.1.0-alpha.0"

apollo-link@^1.0.0, apollo-link@^1.0.6, apollo-link@^1.2.2:
version "1.2.2"
resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.2.tgz#54c84199b18ac1af8d63553a68ca389c05217a03"
dependencies:
"@types/graphql" "0.12.6"
apollo-utilities "^1.0.0"
zen-observable-ts "^0.8.9"

apollo-utilities@^1.0.0, apollo-utilities@^1.0.12, apollo-utilities@^1.0.8:
version "1.0.12"
resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.0.12.tgz#9e2b2a34cf89f3bf0d73a664effd8c1bb5d1b7f7"

aproba@^1.0.3:
version "1.1.2"
resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.1.2.tgz#45c6629094de4e96f693ef7eab74ae079c240fc1"
Expand Down Expand Up @@ -4795,6 +4891,22 @@ graceful-fs@~1.2.0:
version "1.0.1"
resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725"

graphql-anywhere@^4.1.0-alpha.0, graphql-anywhere@^4.1.10:
version "4.1.10"
resolved "https://registry.yarnpkg.com/graphql-anywhere/-/graphql-anywhere-4.1.10.tgz#247ada0c8d85b9d5d6b37180973442ac68ff15de"
dependencies:
apollo-utilities "^1.0.12"

graphql-tag@^2.4.2, graphql-tag@^2.9.2:
version "2.9.2"
resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.9.2.tgz#2f60a5a981375f430bf1e6e95992427dc18af686"

graphql@^0.13.2:
version "0.13.2"
resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.13.2.tgz#4c740ae3c222823e7004096f832e7b93b2108270"
dependencies:
iterall "^1.2.1"

gulp-bump@2.x.x:
version "2.7.0"
resolved "https://registry.yarnpkg.com/gulp-bump/-/gulp-bump-2.7.0.tgz#4c3750bce93c5d816fe9a154e6619dd509a852d8"
Expand Down Expand Up @@ -5871,6 +5983,10 @@ isstream@~0.1.2:
version "0.1.2"
resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"

iterall@^1.2.1:
version "1.2.2"
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7"

jpegtran-bin@^3.0.0:
version "3.2.0"
resolved "https://registry.yarnpkg.com/jpegtran-bin/-/jpegtran-bin-3.2.0.tgz#f60ecf4ae999c0bdad2e9fbcdf2b6f0981e7a29b"
Expand Down Expand Up @@ -9280,7 +9396,7 @@ svgo@^0.7.0:
sax "~1.2.1"
whet.extend "~0.9.9"

symbol-observable@^1.0.3:
symbol-observable@^1.0.2, symbol-observable@^1.0.3:
version "1.2.0"
resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804"

Expand Down Expand Up @@ -10309,3 +10425,13 @@ yazl@^2.1.0:
resolved "https://registry.yarnpkg.com/yazl/-/yazl-2.4.2.tgz#14cb19083e1e25a70092c1588aabe0f4e4dd4d88"
dependencies:
buffer-crc32 "~0.2.3"

zen-observable-ts@^0.8.9:
version "0.8.9"
resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.9.tgz#d3c97af08c0afdca37ebcadf7cc3ee96bda9bab1"
dependencies:
zen-observable "^0.8.0"

zen-observable@^0.8.0:
version "0.8.8"
resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.8.tgz#1ea93995bf098754a58215a1e0a7309e5749ec42"

0 comments on commit 05d6bd1

Please sign in to comment.