From 2ea0757985233fd92d62586d9346c219592c18d9 Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Thu, 7 Jul 2022 17:18:25 +0200 Subject: [PATCH] Better error display --- wearos/src/main/AndroidManifest.xml | 2 +- .../wearos/habitica/MainApplication.kt | 10 ---- .../wearos/habitica/data/ApiClient.kt | 8 +--- .../habitica/ui/activities/BaseActivity.kt | 7 ++- .../ui/activities/ConfirmationActivity.kt | 35 ++++++++++++++ .../habitica/ui/activities/RYAActivity.kt | 44 +++++++++++++----- .../ConfirmactionActivityViewModel.kt | 22 +++++++++ .../main/res/drawable-mdpi/disconnected.png | Bin 0 -> 577 bytes wearos/src/main/res/drawable-mdpi/error.png | Bin 0 -> 693 bytes .../main/res/drawable-xhdpi/disconnected.png | Bin 0 -> 1084 bytes wearos/src/main/res/drawable-xhdpi/error.png | Bin 0 -> 1347 bytes .../main/res/drawable-xxhdpi/disconnected.png | Bin 0 -> 1494 bytes wearos/src/main/res/drawable-xxhdpi/error.png | Bin 0 -> 1938 bytes .../main/res/layout/activity_confirmation.xml | 18 +++++++ wearos/src/main/res/layout/activity_rya.xml | 11 +++++ wearos/src/main/res/values/strings.xml | 1 + 16 files changed, 126 insertions(+), 32 deletions(-) create mode 100644 wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/ConfirmationActivity.kt create mode 100644 wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/ConfirmactionActivityViewModel.kt create mode 100644 wearos/src/main/res/drawable-mdpi/disconnected.png create mode 100644 wearos/src/main/res/drawable-mdpi/error.png create mode 100644 wearos/src/main/res/drawable-xhdpi/disconnected.png create mode 100644 wearos/src/main/res/drawable-xhdpi/error.png create mode 100644 wearos/src/main/res/drawable-xxhdpi/disconnected.png create mode 100644 wearos/src/main/res/drawable-xxhdpi/error.png create mode 100644 wearos/src/main/res/layout/activity_confirmation.xml diff --git a/wearos/src/main/AndroidManifest.xml b/wearos/src/main/AndroidManifest.xml index 795289991..225c637e6 100644 --- a/wearos/src/main/AndroidManifest.xml +++ b/wearos/src/main/AndroidManifest.xml @@ -51,7 +51,7 @@ - + \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/MainApplication.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/MainApplication.kt index 0de723f56..9472780e5 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/MainApplication.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/MainApplication.kt @@ -8,7 +8,6 @@ import com.google.firebase.ktx.Firebase import com.habitrpg.android.habitica.BuildConfig import com.habitrpg.common.habitica.extensions.setupCoil import com.habitrpg.common.habitica.helpers.MarkdownParser -import com.habitrpg.common.habitica.models.tasks.TaskType import com.habitrpg.wearos.habitica.data.repositories.TaskRepository import com.habitrpg.wearos.habitica.data.repositories.UserRepository import com.habitrpg.wearos.habitica.ui.activities.BaseActivity @@ -18,8 +17,6 @@ import dagger.hilt.android.HiltAndroidApp import kotlinx.coroutines.CoroutineExceptionHandler import kotlinx.coroutines.MainScope import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.flow.first -import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.launch import javax.inject.Inject @@ -43,13 +40,6 @@ class MainApplication : Application() { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) startActivity(intent) } else if (it.needsCron && BaseActivity.currentActivityClassName != RYAActivity::class.java.name) { - val dueDailies = taskRepository.getTasks(TaskType.DAILY) - .map { it.filter { task -> task.isDisplayedActive } } - .first() - if (dueDailies.isEmpty()) { - userRepository.runCron() - return@onEach - } val intent = Intent(this@MainApplication, RYAActivity::class.java) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) startActivity(intent) diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/ApiClient.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/ApiClient.kt index 604c0acd3..6c3ae574d 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/ApiClient.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/ApiClient.kt @@ -157,12 +157,7 @@ class ApiClient @Inject constructor( } private suspend fun process(call: suspend () -> Response>): NetworkResult { - val response: Response> - try { - response = call.invoke() - } catch (t: Exception) { - return NetworkResult.Error(t, false) - } + val response: Response> = call.invoke() val wasCached = response.headers()["was-cached"] == "true" @@ -170,6 +165,7 @@ class ApiClient @Inject constructor( val errorBody = response.errorBody() @Suppress("BlockingMethodInNonBlockingContext") NetworkResult.Error(Exception((response.message() + errorBody?.string())), !wasCached) + throw(java.lang.Exception(response.message())) } else { val body = response.body() return if (body?.data != null) { diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/BaseActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/BaseActivity.kt index 109a2fe32..a38df5e3b 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/BaseActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/BaseActivity.kt @@ -8,11 +8,11 @@ import androidx.activity.ComponentActivity import androidx.core.view.children import androidx.lifecycle.lifecycleScope import androidx.viewbinding.ViewBinding -import androidx.wear.activity.ConfirmationActivity import com.google.android.gms.tasks.Tasks import com.google.android.gms.wearable.CapabilityClient import com.google.android.gms.wearable.MessageClient import com.google.android.gms.wearable.Wearable +import com.habitrpg.android.habitica.R import com.habitrpg.android.habitica.databinding.ActivityWrapperBinding import com.habitrpg.wearos.habitica.managers.LoadingManager import com.habitrpg.wearos.habitica.ui.viewmodels.BaseViewModel @@ -44,9 +44,8 @@ abstract class BaseActivity : ComponentActivi viewModel.errorValues.observe(this) { val intent = Intent(this, ConfirmationActivity::class.java).apply { - putExtra(ConfirmationActivity.EXTRA_ANIMATION_TYPE, ConfirmationActivity.FAILURE_ANIMATION) - putExtra(ConfirmationActivity.EXTRA_MESSAGE, it.title) - putExtra(ConfirmationActivity.EXTRA_ANIMATION_DURATION_MILLIS, 3000) + putExtra("text", it.title) + putExtra("icon", R.drawable.error) } startActivity(intent) } diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/ConfirmationActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/ConfirmationActivity.kt new file mode 100644 index 000000000..a09846b28 --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/ConfirmationActivity.kt @@ -0,0 +1,35 @@ +package com.habitrpg.wearos.habitica.ui.activities + +import android.os.Bundle +import androidx.activity.viewModels +import androidx.lifecycle.lifecycleScope +import com.habitrpg.android.habitica.databinding.ActivityConfirmationBinding +import com.habitrpg.wearos.habitica.ui.viewmodels.ConfirmactionActivityViewModel +import dagger.hilt.android.AndroidEntryPoint +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlin.time.DurationUnit +import kotlin.time.toDuration + +@AndroidEntryPoint +class ConfirmationActivity: + BaseActivity() { + override val viewModel: ConfirmactionActivityViewModel by viewModels() + + override fun onCreate(savedInstanceState: Bundle?) { + binding = ActivityConfirmationBinding.inflate(layoutInflater) + super.onCreate(savedInstanceState) + + binding.root.setOnClickListener { + finish() + } + + lifecycleScope.launch { + delay(4.toDuration(DurationUnit.SECONDS)) + finish() + } + + binding.textView.setCompoundDrawablesWithIntrinsicBounds(0, viewModel.icon, 0, 0) + binding.textView.text = viewModel.text + } +} \ No newline at end of file diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/RYAActivity.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/RYAActivity.kt index 8cf2b9868..c15619ab9 100644 --- a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/RYAActivity.kt +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/activities/RYAActivity.kt @@ -1,7 +1,7 @@ package com.habitrpg.wearos.habitica.ui.activities import android.os.Bundle -import android.widget.FrameLayout +import android.widget.LinearLayout import androidx.activity.viewModels import androidx.core.view.isVisible import com.habitrpg.android.habitica.R @@ -22,6 +22,10 @@ class RYAActivity : BaseActivity() { super.onCreate(savedInstanceState) viewModel.tasks.observe(this) { + if (it.isEmpty()) { + runCron() + return@observe + } createTaskListViews(it) } @@ -39,15 +43,33 @@ class RYAActivity : BaseActivity() { } binding.startDayButton.setOnClickListener { - startAnimatingProgress() - binding.startDayButton.isEnabled = false - viewModel.runCron { - stopAnimatingProgress() - if (it) { - finish() - } else { - binding.startDayButton.isEnabled = true - } + runCron() + } + } + + private fun runCron() { + startAnimatingProgress() + binding.startDayButton.isEnabled = false + binding.startingTextView.isVisible = true + binding.startDayButton.isVisible = false + binding.taskView.isVisible = false + binding.descriptionView.isVisible = false + binding.titleView.isVisible = false + binding.phoneDescriptionView.isVisible = false + binding.ryaButton.isVisible = false + binding.phoneButton.isVisible = false + viewModel.runCron { + stopAnimatingProgress() + if (it) { + finish() + } else { + binding.startDayButton.isEnabled = true + binding.startingTextView.isVisible = false + binding.startDayButton.isVisible = true + binding.taskView.isVisible = true + binding.descriptionView.isVisible = true + binding.titleView.isVisible = true + binding.phoneDescriptionView.isVisible = true } } } @@ -61,7 +83,7 @@ class RYAActivity : BaseActivity() { viewModel.tappedTask(task) } holder.onTaskScore = { viewModel.tappedTask(task) } - val layoutParams = taskBinding.chip.layoutParams as FrameLayout.LayoutParams + val layoutParams = taskBinding.chip.layoutParams as LinearLayout.LayoutParams layoutParams.marginStart = 0 layoutParams.marginEnd = 0 taskBinding.chip.layoutParams = layoutParams diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/ConfirmactionActivityViewModel.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/ConfirmactionActivityViewModel.kt new file mode 100644 index 000000000..992e2a0aa --- /dev/null +++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/ui/viewmodels/ConfirmactionActivityViewModel.kt @@ -0,0 +1,22 @@ +package com.habitrpg.wearos.habitica.ui.viewmodels + +import androidx.lifecycle.SavedStateHandle +import com.habitrpg.android.habitica.R +import com.habitrpg.wearos.habitica.data.repositories.TaskRepository +import com.habitrpg.wearos.habitica.data.repositories.UserRepository +import com.habitrpg.wearos.habitica.managers.LoadingManager +import com.habitrpg.wearos.habitica.util.ExceptionHandlerBuilder +import dagger.hilt.android.lifecycle.HiltViewModel +import javax.inject.Inject + +@HiltViewModel +class ConfirmactionActivityViewModel @Inject constructor( + savedStateHandle: SavedStateHandle, + userRepository: UserRepository, + taskRepository: TaskRepository, + exceptionBuilder: ExceptionHandlerBuilder, + loadingManager: LoadingManager +) : BaseViewModel(userRepository, taskRepository, exceptionBuilder, loadingManager) { + val icon: Int = savedStateHandle.get("icon") ?: R.drawable.error + val text: String? = savedStateHandle.get("text") +} diff --git a/wearos/src/main/res/drawable-mdpi/disconnected.png b/wearos/src/main/res/drawable-mdpi/disconnected.png new file mode 100644 index 0000000000000000000000000000000000000000..c882861888650362a25fffa0f4c0fb8ca7b860c8 GIT binary patch literal 577 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 literal 0 HcmV?d00001 diff --git a/wearos/src/main/res/drawable-xxhdpi/error.png b/wearos/src/main/res/drawable-xxhdpi/error.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4000989d1c19038dd9f291cba33757dfc5ffda GIT binary patch literal 1938 zcmV;D2W|L?P)qY$2}#>K`yupH*%D~9ntjzX-P6+pLIE6lf7ZZ(8W^Y{swe!&zc&EYXgdUG z8!#ON>=@8jprJ*-ZvF25+Jc-x$N|suDrM(k9l%)zW9Shokd6)_TpC}0>caPP*L6FP zF_{YS-aA=Qif>#sApOlx2B8VQewU@CWFiC$;3#}eroI9NLY=?#wb^^&u3th*QVHRC z$JMg4@P-C^9cBqxNZ0S}x$Z_AEU^~iaR2NTfWHfQ4uOOyg}WOsp6!7JiG^S*c%T-% zqKAPT)9UK$wWQXONQl4(=?t*A_h+H2)ReK@CA~4hK|u`CZiwJ;#{z5k8)VSr^L5EqgyZ)gUz2CqhKNT(G;cRwuJ3>ap=Gd# zt4i9_XRk(AtwWJzXblpAIl)$hql1rcs3W^D;+BoU?W6tE3$TDKgZo5JMSbG5LG7--sx5V8{2K%ue=nur(f zFX#02id=X?HeWAhM1g)?ueEDTL~V+H1nE-XmiHu@hZn8JnVfoej`I-msCO(>Ycg$P`l))SL28qD4-B3Pa* z+p&#!_bEeo8Ba-+pCTb}5Do|VfyVkSWC}|5WZES`BU*HdE|!S!TVI8op>sMeZ_ zq3jmK2ONk>5Om#7jKG??cuk3dCDf@mV`l}W?Uv)(a5kRW>G;SCur|o#%oCj12FapQ zL#w2~ztjTf5oU6lkRdE?2_6L0>L@G#r}WF}@xPqW z=70SB=-}iHWC&&6>Vjq+-X-s+>L~jZdr`_hXEi*^&STG*U~^~qGk9O);MBSnBMNU% z2s3ZN%DOLv(Bw<%(Ke(cNEA;g`Y`kw?|nc@}xQgHAt?}8D!o9A(EuOACOr?3P{W+acyW1viJu=fz9zkxgIcx--Pfowjq%a{j!>Q~Xk!uJ|o+zmNd z)IAquRJfSLX1?G}R|%S&8wyvA#9t zb7-vUcU|*U`eod}eOOQrFG0GmI%ex~OzBWiaKYsP!W-n;=WkZE5`)N+miat;w{5S% zA|QwthFnLn6e|Sthj+4#3X?>6Q%m>q!lne0CgPpvV~WYf2IAas>Nvhj(4lZwy%4w} zI4p*(O5ej1E^X5gSx)dlJY#!@2dB$v50Ok`a9GA9FG+4sa|TmOki$Ag zn-b(qPSr%=x!{M=kFQ1x(1eVg7otoRf(g%PTmaae)Io%E+tYc2(}HMJBh5h>)c#sr zMR2STOjt<8 literal 0 HcmV?d00001 diff --git a/wearos/src/main/res/layout/activity_confirmation.xml b/wearos/src/main/res/layout/activity_confirmation.xml new file mode 100644 index 000000000..5b4c7543a --- /dev/null +++ b/wearos/src/main/res/layout/activity_confirmation.xml @@ -0,0 +1,18 @@ + + + + \ No newline at end of file diff --git a/wearos/src/main/res/layout/activity_rya.xml b/wearos/src/main/res/layout/activity_rya.xml index ed3ca84d5..7dcefdfd2 100644 --- a/wearos/src/main/res/layout/activity_rya.xml +++ b/wearos/src/main/res/layout/activity_rya.xml @@ -57,6 +57,7 @@ android:layout_marginTop="2dp" android:visibility="gone"/> + \ No newline at end of file diff --git a/wearos/src/main/res/values/strings.xml b/wearos/src/main/res/values/strings.xml index 2d3bd641b..56cd1da5d 100644 --- a/wearos/src/main/res/values/strings.xml +++ b/wearos/src/main/res/values/strings.xml @@ -38,4 +38,5 @@ Continue on your phone You leveled up through all your hard work! All done today! + Starting your Day... \ No newline at end of file