mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 13:38:02 +02:00
Fix android login infinite loading (case 18459)
This commit is contained in:
parent
be76c43aec
commit
78b4139039
2 changed files with 44 additions and 4 deletions
|
@ -255,6 +255,16 @@ JNIEXPORT jstring JNICALL Java_io_highfidelity_hifiinterface_fragment_HomeFragme
|
||||||
return env->NewStringUTF(lastLocation.toString().toLatin1().data());
|
return env->NewStringUTF(lastLocation.toString().toLatin1().data());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_io_highfidelity_hifiinterface_fragment_LoginFragment_nativeCancelLogin(JNIEnv *env, jobject instance) {
|
||||||
|
|
||||||
|
auto accountManager = DependencyManager::get<AccountManager>();
|
||||||
|
|
||||||
|
QObject::disconnect(accountManager.data(), &AccountManager::loginComplete, nullptr, nullptr);
|
||||||
|
QObject::disconnect(accountManager.data(), &AccountManager::loginFailed, nullptr, nullptr);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
JNIEXPORT void JNICALL
|
JNIEXPORT void JNICALL
|
||||||
Java_io_highfidelity_hifiinterface_fragment_LoginFragment_nativeLogin(JNIEnv *env, jobject instance,
|
Java_io_highfidelity_hifiinterface_fragment_LoginFragment_nativeLogin(JNIEnv *env, jobject instance,
|
||||||
jstring username_, jstring password_,
|
jstring username_, jstring password_,
|
||||||
|
@ -273,17 +283,23 @@ Java_io_highfidelity_hifiinterface_fragment_LoginFragment_nativeLogin(JNIEnv *en
|
||||||
|
|
||||||
QObject::connect(accountManager.data(), &AccountManager::loginComplete, [](const QUrl& authURL) {
|
QObject::connect(accountManager.data(), &AccountManager::loginComplete, [](const QUrl& authURL) {
|
||||||
jboolean jSuccess = (jboolean) true;
|
jboolean jSuccess = (jboolean) true;
|
||||||
|
if (__loginCompletedListener.isValid()) {
|
||||||
__loginCompletedListener.callMethod<void>("handleLoginCompleted", "(Z)V", jSuccess);
|
__loginCompletedListener.callMethod<void>("handleLoginCompleted", "(Z)V", jSuccess);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
QObject::connect(accountManager.data(), &AccountManager::loginFailed, []() {
|
QObject::connect(accountManager.data(), &AccountManager::loginFailed, []() {
|
||||||
jboolean jSuccess = (jboolean) false;
|
jboolean jSuccess = (jboolean) false;
|
||||||
|
if (__loginCompletedListener.isValid()) {
|
||||||
__loginCompletedListener.callMethod<void>("handleLoginCompleted", "(Z)V", jSuccess);
|
__loginCompletedListener.callMethod<void>("handleLoginCompleted", "(Z)V", jSuccess);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
QObject::connect(accountManager.data(), &AccountManager::usernameChanged, [](const QString& username) {
|
QObject::connect(accountManager.data(), &AccountManager::usernameChanged, [](const QString& username) {
|
||||||
QAndroidJniObject string = QAndroidJniObject::fromString(username);
|
QAndroidJniObject string = QAndroidJniObject::fromString(username);
|
||||||
|
if (__usernameChangedListener.isValid()) {
|
||||||
__usernameChangedListener.callMethod<void>("handleUsernameChanged", "(Ljava/lang/String;)V", string.object<jstring>());
|
__usernameChangedListener.callMethod<void>("handleUsernameChanged", "(Ljava/lang/String;)V", string.object<jstring>());
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
QMetaObject::invokeMethod(accountManager.data(), "requestAccessToken",
|
QMetaObject::invokeMethod(accountManager.data(), "requestAccessToken",
|
||||||
|
|
|
@ -4,6 +4,7 @@ import android.app.Activity;
|
||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
import android.app.ProgressDialog;
|
import android.app.ProgressDialog;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
|
@ -19,8 +20,13 @@ import android.widget.Button;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import org.qtproject.qt5.android.QtNative;
|
||||||
|
|
||||||
import io.highfidelity.hifiinterface.R;
|
import io.highfidelity.hifiinterface.R;
|
||||||
|
|
||||||
|
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationActive;
|
||||||
|
import static org.qtproject.qt5.android.QtActivityDelegate.ApplicationInactive;
|
||||||
|
|
||||||
public class LoginFragment extends Fragment {
|
public class LoginFragment extends Fragment {
|
||||||
|
|
||||||
private EditText mUsername;
|
private EditText mUsername;
|
||||||
|
@ -32,6 +38,7 @@ public class LoginFragment extends Fragment {
|
||||||
private ProgressDialog mDialog;
|
private ProgressDialog mDialog;
|
||||||
|
|
||||||
public native void nativeLogin(String username, String password, Activity usernameChangedListener);
|
public native void nativeLogin(String username, String password, Activity usernameChangedListener);
|
||||||
|
public native void nativeCancelLogin();
|
||||||
|
|
||||||
private LoginFragment.OnLoginInteractionListener mListener;
|
private LoginFragment.OnLoginInteractionListener mListener;
|
||||||
|
|
||||||
|
@ -125,10 +132,19 @@ public class LoginFragment extends Fragment {
|
||||||
mListener = null;
|
mListener = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onResume() {
|
||||||
|
super.onResume();
|
||||||
|
// This hack intends to keep Qt threads running even after the app comes from background
|
||||||
|
QtNative.setApplicationState(ApplicationActive);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStop() {
|
public void onStop() {
|
||||||
super.onStop();
|
super.onStop();
|
||||||
cancelActivityIndicator();
|
cancelActivityIndicator();
|
||||||
|
// Leave the Qt app paused
|
||||||
|
QtNative.setApplicationState(ApplicationInactive);
|
||||||
hideKeyboard();
|
hideKeyboard();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +180,15 @@ public class LoginFragment extends Fragment {
|
||||||
mDialog = new ProgressDialog(getContext());
|
mDialog = new ProgressDialog(getContext());
|
||||||
}
|
}
|
||||||
mDialog.setMessage(getString(R.string.logging_in));
|
mDialog.setMessage(getString(R.string.logging_in));
|
||||||
mDialog.setCancelable(false);
|
mDialog.setCancelable(true);
|
||||||
|
mDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
|
||||||
|
@Override
|
||||||
|
public void onCancel(DialogInterface dialogInterface) {
|
||||||
|
nativeCancelLogin();
|
||||||
|
cancelActivityIndicator();
|
||||||
|
mLoginButton.setEnabled(true);
|
||||||
|
}
|
||||||
|
});
|
||||||
mDialog.show();
|
mDialog.show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue