summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt11
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/LoginDialog.kt20
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt4
3 files changed, 28 insertions, 7 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt
index 1625c98fb0..1ea53ddbec 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/AchievementModel.kt
@@ -2,12 +2,21 @@
package org.dolphinemu.dolphinemu.features.settings.model
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.withContext
+
object AchievementModel {
@JvmStatic
external fun init()
+ suspend fun asyncLogin(password: String): Boolean {
+ return withContext(Dispatchers.IO) {
+ login(password)
+ }
+ }
+
@JvmStatic
- external fun login(password: String)
+ private external fun login(password: String): Boolean
@JvmStatic
external fun logout()
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/LoginDialog.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/LoginDialog.kt
index f49c9ff922..9f1d3efd5f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/LoginDialog.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/LoginDialog.kt
@@ -7,12 +7,15 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
+import androidx.lifecycle.lifecycleScope
+import kotlinx.coroutines.launch
import org.dolphinemu.dolphinemu.databinding.DialogLoginBinding
-import org.dolphinemu.dolphinemu.features.settings.model.AchievementModel.login
+import org.dolphinemu.dolphinemu.dialogs.AlertMessage
+import org.dolphinemu.dolphinemu.features.settings.model.AchievementModel.asyncLogin
import org.dolphinemu.dolphinemu.features.settings.model.NativeConfig
import org.dolphinemu.dolphinemu.features.settings.model.StringSetting
-class LoginDialog : DialogFragment() {
+class LoginDialog(val parent: SettingsFragmentPresenter) : DialogFragment() {
private var _binding: DialogLoginBinding? = null
private val binding get() = _binding!!
@@ -43,9 +46,18 @@ class LoginDialog : DialogFragment() {
}
private fun onLoginClicked() {
+ binding.loginFailed.visibility = View.GONE
+ binding.loginInProgress.visibility = View.VISIBLE
StringSetting.ACHIEVEMENTS_USERNAME.setString(NativeConfig.LAYER_BASE_OR_CURRENT,
binding.usernameInput.text.toString())
- login(binding.passwordInput.text.toString())
- dismiss()
+ lifecycleScope.launch {
+ if (asyncLogin(binding.passwordInput.text.toString())) {
+ parent.loadSettingsList()
+ dismiss()
+ } else {
+ binding.loginInProgress.visibility = View.GONE
+ binding.loginFailed.visibility = View.VISIBLE
+ }
+ }
}
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt
index 1594771128..e918178527 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.kt
@@ -101,7 +101,7 @@ class SettingsFragmentPresenter(
}
}
- private fun loadSettingsList() {
+ fun loadSettingsList() {
val sl = ArrayList<SettingsItem>()
when (menuTag) {
MenuTag.SETTINGS -> addTopLevelSettings(sl)
@@ -964,7 +964,7 @@ class SettingsFragmentPresenter(
0,
false
) {
- fragmentView.showDialogFragment(LoginDialog())
+ fragmentView.showDialogFragment(LoginDialog(this))
loadSettingsList()
})
} else {