Skip to content

Commit da91731

Browse files
committed
Rename "walk" method to "makeReactive" for clarity
1 parent 6a06bc9 commit da91731

File tree

8 files changed

+70
-43
lines changed

8 files changed

+70
-43
lines changed

src/main/java/com/axellience/vuegwt/client/observer/VueGWTObserverManager.java

Lines changed: 44 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.axellience.vuegwt.client.observer;
22

33
import com.axellience.vuegwt.client.jsnative.jstypes.JsArray;
4-
import com.axellience.vuegwt.client.jsnative.jstypes.JsObject;
54
import com.axellience.vuegwt.client.observer.vuegwtobservers.CollectionObserver;
65
import com.axellience.vuegwt.client.observer.vuegwtobservers.MapObserver;
6+
import com.axellience.vuegwt.client.tools.JsTools;
77
import com.google.gwt.core.client.JavaScriptObject;
88
import jsinterop.annotations.JsMethod;
99

@@ -39,29 +39,6 @@ public static void registerVueGWTObserver(VueGWTObserver observer)
3939
observers.add(0, observer);
4040
}
4141

42-
/**
43-
* Return the Vue Observer for the given object.
44-
* The object must be reactive (visible in a Vue Component) otherwise this method
45-
* will return null.
46-
* @param object The object we want to get the Vue Observer from
47-
* @return The Vue Observer for this Object
48-
*/
49-
public static VueObserver getVueObserver(Object object)
50-
{
51-
return (VueObserver) ((JsObject) object).get("__ob__");
52-
}
53-
54-
public static void observe(Object object)
55-
{
56-
observeArray(JsArray.array(object));
57-
}
58-
59-
@JsMethod(namespace = "VueGWT.observerManager")
60-
public static native void observeArray(JsArray objects);
61-
62-
@JsMethod(namespace = "VueGWT.observerManager")
63-
public static native void walk(Object object);
64-
6542
/**
6643
* Will be called from JS by the Vue observer.
6744
* This is called before Vue "walk" the properties of the Object to make them reactive.
@@ -92,6 +69,49 @@ private static boolean observeJavaObject(Object object)
9269
return false;
9370
}
9471

72+
/**
73+
* Return the Vue Observer for the given object.
74+
* The object must be reactive (visible in a Vue Component) otherwise this method
75+
* will return null.
76+
* @param object The object we want to get the Vue Observer from
77+
* @return The Vue Observer for this Object
78+
*/
79+
public static VueObserver getVueObserver(Object object)
80+
{
81+
return (VueObserver) JsTools.get(object, "__ob__");
82+
}
83+
84+
/**
85+
* Observe the given Object using Vue.js observer.
86+
* Will call {@link VueGWTObserverManager#observeJavaObject} to check if we have to make
87+
* properties reactive.
88+
* @param object The object to observe
89+
*/
90+
public static void observe(Object object)
91+
{
92+
observeArray(JsArray.array(object));
93+
}
94+
95+
/**
96+
* Observe all the given objects. It won't automatically observe objects added/removed from the
97+
* array.
98+
* Will call {@link VueGWTObserverManager#observeJavaObject} on each object to check
99+
* if we have to make its properties reactive.
100+
* @param objects The list of object to observe
101+
*/
102+
@JsMethod(namespace = "VueGWT.observerManager")
103+
public static native void observeArray(JsArray objects);
104+
105+
/**
106+
* Make all properties of the object reactive. It won't call
107+
* {@link VueGWTObserverManager#observeJavaObject} and will call Vue.js native walk instead.
108+
* You should only use this method if you are not propagating Vue.js observation but still
109+
* want to make some objects reactive.
110+
* @param object The object to make reactive
111+
*/
112+
@JsMethod(namespace = "VueGWT.observerManager")
113+
public static native void makeReactive(Object object);
114+
95115
/**
96116
* Due to GWT optimizations, properties on java object defined like this are not observable in
97117
* Vue.js when not running in dev mode:

src/main/java/com/axellience/vuegwt/client/observer/VueObserver.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ public class VueObserver
1616
@JsProperty
1717
private Dep dep;
1818

19-
public native void walk(Object o);
2019
public native void observeArray(JsArray array);
2120
public native void observeArray(Object[] array);
2221

src/main/resources/com/axellience/vuegwt/client/resources/js-tools.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@
7474
jsTools.debugger = function () {
7575
debugger;
7676
};
77+
jsTools.delete = function (object, property) {
78+
return object[property];
79+
};
7780
jsTools.isUndefined = function (value) {
7881
return value === undefined;
7982
};

src/main/resources/com/axellience/vuegwt/client/resources/js-tools.min.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/resources/com/axellience/vuegwt/client/resources/sources/JsTools.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,9 @@
7474
jsTools.debugger = function () {
7575
debugger;
7676
};
77+
jsTools.delete = function (object, property) {
78+
return object[property];
79+
};
7780
jsTools.isUndefined = function (value) {
7881
return value === undefined;
7982
};

src/main/resources/com/axellience/vuegwt/client/resources/sources/VueGWTObserverManager.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,16 @@
1616
observerManager.customizeVueObserver = function (ob) {
1717
const obProto = Object.getPrototypeOf(ob);
1818
const vueWalk = obProto.walk;
19-
observerManager.observeArray = obProto.observeArray;
20-
observerManager.walk = obProto.walk;
21-
obProto.walk = function () {
22-
const obj = arguments[0];
23-
if (observerManager.observeJavaObject(obj))
19+
obProto.walk = function (obj) {
20+
if (observerManager.observeJavaObject(obj)) {
2421
return;
22+
}
2523

26-
return vueWalk.apply(this, arguments);
24+
vueWalk(obj);
2725
};
26+
27+
observerManager.observeArray = obProto.observeArray;
28+
observerManager.makeReactive = vueWalk;
2829
};
2930

3031
/**

src/main/resources/com/axellience/vuegwt/client/resources/vue-gwt.js

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,16 @@
8181
observerManager.customizeVueObserver = function (ob) {
8282
const obProto = Object.getPrototypeOf(ob);
8383
const vueWalk = obProto.walk;
84-
observerManager.observeArray = obProto.observeArray;
85-
observerManager.walk = obProto.walk;
86-
obProto.walk = function () {
87-
const obj = arguments[0];
88-
if (observerManager.observeJavaObject(obj))
84+
obProto.walk = function (obj) {
85+
if (observerManager.observeJavaObject(obj)) {
8986
return;
87+
}
9088

91-
return vueWalk.apply(this, arguments);
89+
vueWalk(obj);
9290
};
91+
92+
observerManager.observeArray = obProto.observeArray;
93+
observerManager.makeReactive = vueWalk;
9394
};
9495

9596
/**

src/main/resources/com/axellience/vuegwt/client/resources/vue-gwt.min.js

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)