[android] Made autorization listener shared_ptr

This commit is contained in:
Александр Зацепин 2018-02-16 19:46:58 +03:00 committed by Arsentiy Milchakov
parent 9edf4b4bd7
commit 4345bbcbec
2 changed files with 11 additions and 7 deletions

View file

@ -1546,18 +1546,22 @@ JNIEXPORT void JNICALL
Java_com_mapswithme_maps_Framework_nativeAuthenticateUser(JNIEnv * env, jclass, jstring socialToken,
jint socialTokenType, jobject listener)
{
jobject gListener = env->NewGlobalRef(listener);
std::shared_ptr<_jobject> gListener(env->NewGlobalRef(listener), [](jobject l)
{
jni::GetEnv()->DeleteGlobalRef(l);
});
auto const tokenStr = jni::ToNativeString(env, socialToken);
auto & user = frm()->GetUser();
auto s = make_unique<User::Subscriber>();
s->m_postCallAction = User::Subscriber::Action::RemoveSubscriber;
s->m_onAuthenticate = [env, gListener](bool success)
s->m_onAuthenticate = [gListener](bool success)
{
GetPlatform().RunTask(Platform::Thread::Gui, [env, gListener, success]()
GetPlatform().RunTask(Platform::Thread::Gui, [gListener, success]
{
static jmethodID const callback = jni::GetMethodID(env, gListener, "onAuthorized", "(Z)V");
env->CallVoidMethod(gListener, callback, success);
env->DeleteGlobalRef(gListener);
auto e = jni::GetEnv();
static jmethodID const callback = jni::GetMethodID(e, gListener.get(), "onAuthorized", "(Z)V");
e->CallVoidMethod(gListener.get(), callback, success);
});
};
user.AddSubscriber(std::move(s));

View file

@ -104,7 +104,7 @@ public class BookmarkBackupController implements Authorizer.Callback
mAuthorizer.detach();
}
public void onActivityResult(int requestCode, int resultCode, Intent data)
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data)
{
if (mAuthorizer != null)
mAuthorizer.onActivityResult(requestCode, resultCode, data);