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 000000000..c88286188
Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/disconnected.png differ
diff --git a/wearos/src/main/res/drawable-mdpi/error.png b/wearos/src/main/res/drawable-mdpi/error.png
new file mode 100644
index 000000000..949ad831e
Binary files /dev/null and b/wearos/src/main/res/drawable-mdpi/error.png differ
diff --git a/wearos/src/main/res/drawable-xhdpi/disconnected.png b/wearos/src/main/res/drawable-xhdpi/disconnected.png
new file mode 100644
index 000000000..c9cea6e0c
Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/disconnected.png differ
diff --git a/wearos/src/main/res/drawable-xhdpi/error.png b/wearos/src/main/res/drawable-xhdpi/error.png
new file mode 100644
index 000000000..a335b288a
Binary files /dev/null and b/wearos/src/main/res/drawable-xhdpi/error.png differ
diff --git a/wearos/src/main/res/drawable-xxhdpi/disconnected.png b/wearos/src/main/res/drawable-xxhdpi/disconnected.png
new file mode 100644
index 000000000..e4a65c77b
Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/disconnected.png differ
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 000000000..cf4000989
Binary files /dev/null and b/wearos/src/main/res/drawable-xxhdpi/error.png differ
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