Skip to content

Commit b4392b6

Browse files
committed
Fix simple queries & compatibility with apollo-client 0.5.0
1 parent 2ed5ede commit b4392b6

File tree

2 files changed

+28
-12
lines changed

2 files changed

+28
-12
lines changed

package.json

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
{
22
"name": "vue-apollo",
3-
"version": "1.0.0-rc.1",
3+
"version": "1.0.0-rc.2",
44
"description": "Vue apollo integration",
55
"main": "index.js",
66
"scripts": {
77
"compile": "babel --presets es2015 -d lib/ src/",
88
"prepublish": "npm run compile",
9-
"test": "echo \"Error: no test specified\" && exit 1"
9+
"watch": "npm-watch"
10+
},
11+
"watch": {
12+
"compile": "src/*.js"
1013
},
1114
"repository": {
1215
"type": "git",
@@ -24,7 +27,7 @@
2427
},
2528
"homepage": "https://github.com/Akryum/vue-apollo#readme",
2629
"peerDependencies": {
27-
"apollo-client": "^0.4.15"
30+
"apollo-client": "^0.5.0"
2831
},
2932
"dependencies": {
3033
"lodash.omit": "^4.5.0"

src/vue-plugin.js

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import omit from 'lodash.omit';
22

33
let apolloClient = null;
44

5+
let defineReactive = function() {};
6+
57
class DollarApollo {
68
constructor(vm) {
79
this.vm = vm;
@@ -50,6 +52,9 @@ class DollarApollo {
5052
// Simple query
5153
if (!options.query) {
5254
query = options;
55+
options = {
56+
query,
57+
};
5358
}
5459

5560
function generateApolloOptions(variables) {
@@ -74,6 +79,9 @@ class DollarApollo {
7479
observer.refetch(variables, {
7580
forceFetch: !!options.forceFetch
7681
});
82+
} else if(observer) {
83+
// Update variables
84+
observer.setVariables(variables);
7785
} else {
7886
if (sub) {
7987
sub.unsubscribe();
@@ -168,31 +176,36 @@ const prepare = function prepare() {
168176
return this._apollo;
169177
}
170178
});
171-
}
172179

173-
const launch = function launch() {
180+
// Prepare properties
174181
let apollo = this.$options.apollo;
175-
176182
if (apollo) {
177-
const queries = omit(apollo, [
183+
this._apolloQueries = omit(apollo, [
178184
'subscribe',
179185
]);
180186

181187
// watchQuery
182-
for (let key in queries) {
183-
this.$apollo.option(key, queries[key]);
188+
for (let key in this._apolloQueries) {
189+
// this.$data[key] = null;
190+
defineReactive(this, key, null);
184191
}
192+
}
193+
}
185194

186-
// subscribe
187-
if (apollo.subscribe) {
188-
// TODO
195+
const launch = function launch() {
196+
if (this._apolloQueries) {
197+
// watchQuery
198+
for (let key in this._apolloQueries) {
199+
this.$apollo.option(key, this._apolloQueries[key]);
189200
}
190201
}
191202
}
192203

193204
module.exports = {
194205
install(Vue, options) {
195206

207+
defineReactive = Vue.util.defineReactive;
208+
196209
apolloClient = options.apolloClient;
197210

198211
Vue.mixin({

0 commit comments

Comments
 (0)