diff --git a/package-lock.json b/package-lock.json
index bcf4259..9435f48 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -12,8 +12,7 @@
"@types/graphql": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/@types/graphql/-/graphql-0.9.3.tgz",
- "integrity": "sha512-+NlcRhAXQUWXnmKomiNR/5ELupOQ3N1Oz7EcUTO8P3nWDo8b2szwvaqelzE97h5N3MU27zrNLGDomJh85OlYnQ==",
- "optional": true
+ "integrity": "sha512-+NlcRhAXQUWXnmKomiNR/5ELupOQ3N1Oz7EcUTO8P3nWDo8b2szwvaqelzE97h5N3MU27zrNLGDomJh85OlYnQ=="
},
"@types/isomorphic-fetch": {
"version": "0.0.34",
@@ -691,6 +690,11 @@
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz",
"integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw=="
},
+ "backo2": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz",
+ "integrity": "sha1-MasayLEpNjRj41s+u2n038+6eUc="
+ },
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
@@ -2664,6 +2668,11 @@
"resolved": "https://registry.npmjs.org/graphql-anywhere/-/graphql-anywhere-3.1.0.tgz",
"integrity": "sha1-PqDY6GRrXO5oA1AWqadVfBXCHpY="
},
+ "graphql-subscriptions": {
+ "version": "0.4.4",
+ "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-0.4.4.tgz",
+ "integrity": "sha512-hqfUsZv39qmK4SEoKMnTO05U4EVvIeAD4ai5ztE9gCl4hEdeaF2Q5gvF80ONQQAnkys4odzxWYd2tBLS/cWl8g=="
+ },
"graphql-tag": {
"version": "2.4.2",
"resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.4.2.tgz",
@@ -3593,6 +3602,11 @@
"resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz",
"integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0="
},
+ "lodash.assign": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz",
+ "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc="
+ },
"lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
@@ -3623,6 +3637,11 @@
"resolved": "https://registry.npmjs.org/lodash.isobject/-/lodash.isobject-3.0.2.tgz",
"integrity": "sha1-PI+41bW/S/kK4G4U8qUwpO2TXh0="
},
+ "lodash.isstring": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz",
+ "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE="
+ },
"lodash.memoize": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
@@ -5718,6 +5737,18 @@
"resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.18.2.tgz",
"integrity": "sha512-WPpJPZGUxWYHWIUMNNOYqql7zh85zGmr84FdTVWq52WTIkqlW9xSxD3QYWi/T31cqn9UNSsietVEgGn2aaSCzw=="
},
+ "subscriptions-transport-ws": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.8.1.tgz",
+ "integrity": "sha512-RRRrxZCn0Gxj8etaeliqZtjKRpE3J6PY+/rocUR8RpPe7Y3M+tG2bu1/aNe7p1DsC2fnco9QU9oH49BGrg8i7g==",
+ "dependencies": {
+ "eventemitter3": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
+ "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo="
+ }
+ }
+ },
"supports-color": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-4.1.0.tgz",
@@ -5917,6 +5948,11 @@
"integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=",
"optional": true
},
+ "ultron": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.0.tgz",
+ "integrity": "sha1-sHoualQagV/Go0zNRTO67DB8qGQ="
+ },
"uniq": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
@@ -6363,6 +6399,18 @@
"resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-1.3.4.tgz",
"integrity": "sha1-+Aek8LHZ6ROuekgRLmzDrxmRtF8="
},
+ "ws": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-3.0.0.tgz",
+ "integrity": "sha1-mN2wAFbIOQy3Ued4h4hJf5kQO2w=",
+ "dependencies": {
+ "safe-buffer": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.0.1.tgz",
+ "integrity": "sha1-0mPKVGls2KMGtcplUekt5XkY++c="
+ }
+ }
+ },
"xdg-basedir": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-2.0.0.tgz",
diff --git a/package.json b/package.json
index 3447cf6..29a432e 100644
--- a/package.json
+++ b/package.json
@@ -9,7 +9,8 @@
"react-dom": "^15.6.1",
"react-router": "^4.1.1",
"react-scripts": "1.0.10",
- "react-tap-event-plugin": "^2.0.1"
+ "react-tap-event-plugin": "^2.0.1",
+ "subscriptions-transport-ws": "^0.8.1"
},
"scripts": {
"start": "react-scripts start",
diff --git a/src/components/AchievementList.js b/src/components/AchievementList.js
index b624cb1..56080d1 100644
--- a/src/components/AchievementList.js
+++ b/src/components/AchievementList.js
@@ -8,7 +8,7 @@ export default ({achievements, id, completed}) => {
return
Loading...
}
- const list = achievements.sort((a, b) => {
+ const list = [...achievements].sort((a, b) => {
if (a.number === b.number)
return a.letter > b.letter;
return a.number > b.number;
diff --git a/src/components/AdventureList.js b/src/components/AdventureList.js
index 6bb626e..76439f8 100644
--- a/src/components/AdventureList.js
+++ b/src/components/AdventureList.js
@@ -10,7 +10,7 @@ export default ({
return Loading...
}
- const sortedAdventures = allAdventures.sort((a,b) => (a.number > b.number));
+ const sortedAdventures = [...allAdventures].sort((a,b) => (a.number > b.number));
const [
requiredAdventures,
diff --git a/src/containers/GetAchievementsForAdventure.js b/src/containers/GetAchievementsForAdventure.js
index f007ce6..2df18ea 100644
--- a/src/containers/GetAchievementsForAdventure.js
+++ b/src/containers/GetAchievementsForAdventure.js
@@ -1,20 +1,17 @@
import { gql, graphql } from 'react-apollo';
-import { stripEdges } from '../utils.js';
export default graphql(gql`
query GetAchievementsForAdventure($adventureID:ID!){
- getAdventure(id:$adventureID) {
- achievements {
- edges {
- node {
- id,
- number,
- letter,
- description,
- additionalText
- }
- }
+ allAchievements(filter: {
+ adventure: {
+ id: $adventureID
}
+ }) {
+ id,
+ number,
+ letter,
+ description,
+ additionalText
}
}
`,{
@@ -26,8 +23,8 @@ export default graphql(gql`
};
},
props: ({ownProps, data}) => {
- return data.getAdventure ? {
- achievements: stripEdges(data.getAdventure.achievements),
+ return data.allAchievements ? {
+ achievements: data.allAchievements,
...ownProps
} : {...ownProps}
diff --git a/src/containers/GetAllAdventures.js b/src/containers/GetAllAdventures.js
index ce93871..504de45 100644
--- a/src/containers/GetAllAdventures.js
+++ b/src/containers/GetAllAdventures.js
@@ -1,26 +1,18 @@
import { gql, graphql } from 'react-apollo';
-import { stripEdges } from '../utils.js';
-
export default graphql(gql`
- query GetAllAdventuresForRank{
- viewer {
- allAdventures {
- edges {
- node {
- name,
- number,
- required,
- id
- }
- }
- }
+ query GetAllAdventures{
+ allAdventures {
+ name,
+ number,
+ required,
+ id
}
}
`,{
props: ({ownProps, data}) => (
- data.viewer ? {
- allAdventures: stripEdges(data.viewer.allAdventures),
+ data.allAdventures ? {
+ allAdventures: data.allAdventures,
...ownProps
} : {...ownProps})
});
diff --git a/src/containers/GetScoutData.js b/src/containers/GetScoutData.js
index cf4d2ee..8f71292 100644
--- a/src/containers/GetScoutData.js
+++ b/src/containers/GetScoutData.js
@@ -1,36 +1,31 @@
import { gql, graphql } from 'react-apollo';
export default graphql(gql`
- query GetScoutData($scoutID:ID!){
- getScout(id: $scoutID){
- displayName,
- advancementDeadline,
- adventures {
- edges {
- node {
- name
- }
- }
- },
- achievements {
- edges {
- node {
- number,
- letter
- }
- }
+ query getScoutData($scoutID:ID!){
+ Scout(id: $scoutID) {
+ displayName
+ advancementDeadline
+ completedAdventures {
+ id
+ name
+ }
+ completedAchievements {
+ id
+ number
+ letter
}
}
}
+
`,{
options : ({scoutID}) => ({variables: {scoutID}}),
props: ({ ownProps, data }) => (
- data.getScout ? {
+ data.Scout ? {
scoutID: ownProps.scoutID,
- displayName: data.getScout.displayName,
- completedAdventures: data.getScout.adventures,
- completedAchievements: data.getScout.achievements,
- advancementDeadline: data.getScout.advancementDeadline
+ displayName: data.Scout.displayName,
+ advancementDeadline: data.Scout.advancementDeadline,
+ completedAdventures: data.Scout.completedAdventures,
+ completedAchievements: data.Scout.completedAchievements
} : {
scoutID: ownProps.scoutID
}
diff --git a/src/index.js b/src/index.js
index 7308082..819e1c5 100644
--- a/src/index.js
+++ b/src/index.js
@@ -1,12 +1,19 @@
import React from 'react';
import ReactDOM from 'react-dom';
+
import {
ApolloClient,
createNetworkInterface,
ApolloProvider
} from 'react-apollo';
+import {
+ SubscriptionClient,
+ addGraphQLSubscriptions
+} from 'subscriptions-transport-ws';
+
import injectTapEventPlugin from 'react-tap-event-plugin';
import MuiThemeProvider from 'material-ui/styles/MuiThemeProvider';
+
//import registerServiceWorker from './registerServiceWorker';
import './index.css';
import App from './App';
@@ -15,23 +22,27 @@ import App from './App';
// http://stackoverflow.com/a/34015469/988941
injectTapEventPlugin();
-const client = new ApolloClient({
- networkInterface: createNetworkInterface({
- uri: 'https://us-west-2.api.scaphold.io/graphql/scout'
- })
+const httpInterface = createNetworkInterface({
+ uri: "https://api.graph.cool/simple/v1/cj53el7vnpphz01759pf8l7ou"
});
-const loc = window.location;
+const wsClient = new SubscriptionClient("wss://subscriptions.us-west-2.graph.cool/v1/cj53el7vnpphz01759pf8l7ou", {
+ reconnect: true
+});
-console.log("location: ", loc);
+const networkInterface = addGraphQLSubscriptions(httpInterface, wsClient);
+
+const client = new ApolloClient({ networkInterface });
+
+const location = window.location;
ReactDOM.render(
-
+
,
document.getElementById('root')
);
-//registerServiceWorker();
+//registerServiceWorker(); //See import above