add other notification methods
This commit is contained in:
parent
ab1965c27e
commit
246ccc7bde
|
@ -423,7 +423,7 @@ JSValueRef RealmWrite(JSContextRef ctx, JSObjectRef function, JSObjectRef thisOb
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
JSValueRef RealmAddNotification(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException) {
|
JSValueRef RealmAddListener(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException) {
|
||||||
try {
|
try {
|
||||||
RJSValidateArgumentCount(argumentCount, 1);
|
RJSValidateArgumentCount(argumentCount, 1);
|
||||||
|
|
||||||
|
@ -440,6 +440,40 @@ JSValueRef RealmAddNotification(JSContextRef ctx, JSObjectRef function, JSObject
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JSValueRef RealmRemoveListener(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException) {
|
||||||
|
try {
|
||||||
|
RJSValidateArgumentCount(argumentCount, 1);
|
||||||
|
|
||||||
|
JSObjectRef callback = RJSValidatedValueToFunction(ctx, arguments[0]);
|
||||||
|
SharedRealm realm = *RJSGetInternal<SharedRealm *>(thisObject);
|
||||||
|
static_cast<RJSRealmDelegate *>(realm->m_delegate.get())->remove_notification(callback);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
catch (std::exception &exp) {
|
||||||
|
if (jsException) {
|
||||||
|
*jsException = RJSMakeError(ctx, exp);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
JSValueRef RealmRemoveAllListeners(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException) {
|
||||||
|
try {
|
||||||
|
RJSValidateArgumentCount(argumentCount, 0);
|
||||||
|
SharedRealm realm = *RJSGetInternal<SharedRealm *>(thisObject);
|
||||||
|
static_cast<RJSRealmDelegate *>(realm->m_delegate.get())->remove_all_notifications();
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
catch (std::exception &exp) {
|
||||||
|
if (jsException) {
|
||||||
|
*jsException = RJSMakeError(ctx, exp);
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
JSValueRef RealmClose(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException) {
|
JSValueRef RealmClose(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* jsException) {
|
||||||
try {
|
try {
|
||||||
RJSValidateArgumentCount(argumentCount, 0);
|
RJSValidateArgumentCount(argumentCount, 0);
|
||||||
|
@ -462,7 +496,9 @@ static const JSStaticFunction RJSRealmFuncs[] = {
|
||||||
{"delete", RealmDelete, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
{"delete", RealmDelete, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
||||||
{"deleteAll", RealmDeleteAll, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
{"deleteAll", RealmDeleteAll, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
||||||
{"write", RealmWrite, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
{"write", RealmWrite, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
||||||
{"addNotification", RealmAddNotification, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
{"addListener", RealmAddListener, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
||||||
|
{"removeListener", RealmRemoveListener, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
||||||
|
{"removeAllListeners", RealmRemoveAllListeners, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
||||||
{"close", RealmClose, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
{"close", RealmClose, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontEnum | kJSPropertyAttributeDontDelete},
|
||||||
{NULL, NULL},
|
{NULL, NULL},
|
||||||
};
|
};
|
||||||
|
|
|
@ -282,7 +282,7 @@ module.exports = BaseTest.extend({
|
||||||
var notificationCount = 0;
|
var notificationCount = 0;
|
||||||
var notificationName;
|
var notificationName;
|
||||||
|
|
||||||
var notification = realm.addNotification(function(realm, name) {
|
realm.addListener(function(realm, name) {
|
||||||
notificationCount++;
|
notificationCount++;
|
||||||
notificationName = name;
|
notificationName = name;
|
||||||
});
|
});
|
||||||
|
@ -291,5 +291,25 @@ module.exports = BaseTest.extend({
|
||||||
realm.write(function() {});
|
realm.write(function() {});
|
||||||
TestCase.assertEqual(notificationCount, 1);
|
TestCase.assertEqual(notificationCount, 1);
|
||||||
TestCase.assertEqual(notificationName, 'DidChangeNotification');
|
TestCase.assertEqual(notificationName, 'DidChangeNotification');
|
||||||
|
|
||||||
|
var secondNotificationCount = 0;
|
||||||
|
function secondNotification(realm, name) {
|
||||||
|
secondNotificationCount++;
|
||||||
|
};
|
||||||
|
realm.addListener(secondNotification)
|
||||||
|
|
||||||
|
realm.write(function() {});
|
||||||
|
TestCase.assertEqual(notificationCount, 2);
|
||||||
|
TestCase.assertEqual(secondNotificationCount, 1);
|
||||||
|
|
||||||
|
realm.removeListener(secondNotification);
|
||||||
|
realm.write(function() {});
|
||||||
|
TestCase.assertEqual(notificationCount, 3);
|
||||||
|
TestCase.assertEqual(secondNotificationCount, 1);
|
||||||
|
|
||||||
|
realm.removeAllListeners();
|
||||||
|
realm.write(function() {});
|
||||||
|
TestCase.assertEqual(notificationCount, 3);
|
||||||
|
TestCase.assertEqual(secondNotificationCount, 1);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue