1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-22 01:34:21 +00:00

PushNotifications: handle properly null fields in Bundle when decoding notification data.

This commit is contained in:
Lukasz Kozakiewicz 2018-02-20 12:16:13 +01:00
parent 8ddbcc1f10
commit 2b2d808310

View file

@ -1322,15 +1322,22 @@ struct PushNotifications::Pimpl
auto key = LocalRef<jstring> ((jstring) env->CallObjectMethod (iterator, JavaIterator.next));
auto object = LocalRef<jobject> (env->CallObjectMethod (bundle, JavaBundle.get, key.get()));
auto objectAsString = LocalRef<jstring> ((jstring) env->CallObjectMethod (object, JavaObject.toString));
auto objectClass = LocalRef<jobject> (env->CallObjectMethod (object, JavaObject.getClass));
auto classAsString = LocalRef<jstring> ((jstring) env->CallObjectMethod (objectClass, JavaClass.getName));
// Note: seems that Firebase delivers values as strings always, so this check is rather unnecessary,
// at least till they change the behaviour.
const var value = juceString (classAsString) == "java.lang.Bundle" ? bundleToVar (object) : var (juceString (objectAsString.get()));
if (object.get() != nullptr)
{
auto objectAsString = LocalRef<jstring> ((jstring) env->CallObjectMethod (object, JavaObject.toString));
auto objectClass = LocalRef<jobject> (env->CallObjectMethod (object, JavaObject.getClass));
auto classAsString = LocalRef<jstring> ((jstring) env->CallObjectMethod (objectClass, JavaClass.getName));
dynamicObject->setProperty (juceString (key.get()), value);
// Note: seems that Firebase delivers values as strings always, so this check is rather unnecessary,
// at least till they change the behaviour.
var value = juceString (classAsString) == "java.lang.Bundle" ? bundleToVar (object) : var (juceString (objectAsString.get()));
dynamicObject->setProperty (juceString (key.get()), value);
}
else
{
dynamicObject->setProperty (juceString (key.get()), {});
}
}
return var (dynamicObject);