@@ -2,6 +2,8 @@ import omit from 'lodash.omit';
22
33let apolloClient = null ;
44
5+ let defineReactive = function ( ) { } ;
6+
57class 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
193204module . exports = {
194205 install ( Vue , options ) {
195206
207+ defineReactive = Vue . util . defineReactive ;
208+
196209 apolloClient = options . apolloClient ;
197210
198211 Vue . mixin ( {
0 commit comments