diff --git a/Habitica/build.gradle b/Habitica/build.gradle index a4fb03b4a..03707291e 100644 --- a/Habitica/build.gradle +++ b/Habitica/build.gradle @@ -155,7 +155,7 @@ android { multiDexEnabled true resConfigs "en", "bg", "de", "en-rGB", "es", "fr", "hr-rHR", "in", "it", "iw", "ja", "ko", "lt", "nl", "pl", "pt-rBR", "pt-rPT", "ru", "tr", "zh", "zh-rTW" - versionCode 2384 + versionCode 2386 versionName "2.5" } diff --git a/Habitica/res/layout/dialog_choose_message_recipient.xml b/Habitica/res/layout/dialog_choose_message_recipient.xml index 36f4e7712..5408a9872 100644 --- a/Habitica/res/layout/dialog_choose_message_recipient.xml +++ b/Habitica/res/layout/dialog_choose_message_recipient.xml @@ -1,10 +1,12 @@ + android:paddingRight="20dp" + android:gravity="center_horizontal"> + + + + \ No newline at end of file diff --git a/Habitica/res/menu/inbox.xml b/Habitica/res/menu/inbox.xml new file mode 100644 index 000000000..a2c69decb --- /dev/null +++ b/Habitica/res/menu/inbox.xml @@ -0,0 +1,10 @@ + + + + diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml index 1e0792821..204c34edb 100644 --- a/Habitica/res/values/strings.xml +++ b/Habitica/res/values/strings.xml @@ -998,4 +998,5 @@ Support Wacky Habitica Questions + Could not find user diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt index 204e61d1d..21ba46114 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/InboxOverviewFragment.kt @@ -2,15 +2,12 @@ package com.habitrpg.android.habitica.ui.fragments.social import android.content.Context import android.os.Bundle -import android.view.LayoutInflater -import android.view.MenuItem -import android.view.View -import android.view.ViewGroup -import android.widget.EditText +import android.view.* import android.widget.TextView import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.components.UserComponent import com.habitrpg.android.habitica.data.SocialRepository +import com.habitrpg.android.habitica.databinding.DialogChooseMessageRecipientBinding import com.habitrpg.android.habitica.extensions.getAgoString import com.habitrpg.android.habitica.helpers.AppConfigManager import com.habitrpg.android.habitica.helpers.MainNavigationController @@ -37,8 +34,6 @@ class InboxOverviewFragment : BaseMainFragment(), androidx.swiperefreshlayout.wi @Inject lateinit var configManager: AppConfigManager - private var chooseRecipientDialogView: View? = null - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { this.hidesToolbar = true @@ -69,6 +64,11 @@ class InboxOverviewFragment : BaseMainFragment(), androidx.swiperefreshlayout.wi super.onDestroy() } + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + this.activity?.menuInflater?.inflate(R.menu.inbox, menu) + super.onCreateOptionsMenu(menu, inflater) + } + override fun onOptionsItemSelected(item: MenuItem): Boolean { when (item.itemId) { R.id.send_message -> { @@ -81,19 +81,34 @@ class InboxOverviewFragment : BaseMainFragment(), androidx.swiperefreshlayout.wi private fun openNewMessageDialog() { assert(this.activity != null) - this.chooseRecipientDialogView = this.activity?.layoutInflater?.inflate(R.layout.dialog_choose_message_recipient, null) + val binding = DialogChooseMessageRecipientBinding.inflate(layoutInflater) this.activity?.let { thisActivity -> val alert = HabiticaAlertDialog(thisActivity) alert.setTitle(getString(R.string.choose_recipient_title)) - alert.addButton(getString(R.string.action_continue), true) { _, _ -> - val uuidEditText = chooseRecipientDialogView?.findViewById(R.id.uuidEditText) as? EditText - openInboxMessages(uuidEditText?.text?.toString() ?: "", "") - } + alert.addButton( + getString(R.string.action_continue), + true, + false, + false + ) { _, _ -> + binding.errorTextView.visibility = View.GONE + binding.progressCircular.visibility = View.VISIBLE + val username = binding.uuidEditText.text?.toString() ?: "" + socialRepository.getMemberWithUsername(username) + .subscribe({ + alert.dismiss() + openInboxMessages("", username) + binding.progressCircular.visibility = View.GONE + }, { + binding.errorTextView.visibility = View.VISIBLE + binding.progressCircular.visibility = View.GONE + }) + } alert.addButton(getString(R.string.action_cancel), false) { dialog, _ -> - thisActivity.dismissKeyboard() - } - alert.setAdditionalContentView(chooseRecipientDialogView) + thisActivity.dismissKeyboard() + } + alert.setAdditionalContentView(binding.root) alert.show() } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt index 4aaf10598..3d099bff8 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/views/dialogs/HabiticaAlertDialog.kt @@ -149,10 +149,10 @@ open class HabiticaAlertDialog(context: Context) : AlertDialog(context, R.style. fun getContentView(): View? = additionalContentView fun addButton(stringRes: Int, isPrimary: Boolean, isDestructive: Boolean = false, function: ((HabiticaAlertDialog, Int) -> Unit)? = null): Button { - return addButton(context.getString(stringRes), isPrimary, isDestructive, function) + return addButton(context.getString(stringRes), isPrimary, isDestructive, true, function) } - fun addButton(string: String, isPrimary: Boolean, isDestructive: Boolean = false, function: ((HabiticaAlertDialog, Int) -> Unit)? = null): Button { + fun addButton(string: String, isPrimary: Boolean, isDestructive: Boolean = false, autoDismiss: Boolean = true, function: ((HabiticaAlertDialog, Int) -> Unit)? = null): Button { val button: Button = if (isPrimary) { if (isDestructive) { buttonsWrapper.inflate(R.layout.dialog_habitica_primary_destructive_button) as? Button @@ -169,7 +169,7 @@ open class HabiticaAlertDialog(context: Context) : AlertDialog(context, R.style. button.text = string button.minWidth = 147.dpToPx(context) button.setScaledPadding(context, 20, 0, 20, 0) - return addButton(button, true, function) as Button + return addButton(button, autoDismiss, function) as Button }