diff --git a/Habitica/build.gradle b/Habitica/build.gradle
index d5035923b..9886eeef7 100644
--- a/Habitica/build.gradle
+++ b/Habitica/build.gradle
@@ -78,7 +78,7 @@ dependencies {
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation 'androidx.test:runner:1.4.0'
androidTestImplementation 'androidx.test:rules:1.4.0'
- debugImplementation 'androidx.fragment:fragment-testing:1.4.1'
+ debugImplementation 'androidx.fragment:fragment-testing:1.5.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test:core-ktx:1.4.0'
androidTestImplementation 'androidx.test.ext:junit-ktx:1.1.3'
@@ -108,15 +108,13 @@ dependencies {
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
- implementation 'androidx.navigation:navigation-fragment-ktx:2.4.2'
- implementation 'androidx.navigation:navigation-ui-ktx:2.4.2'
- implementation "androidx.fragment:fragment-ktx:1.4.1"
+ implementation 'androidx.navigation:navigation-fragment-ktx:2.5.0'
+ implementation 'androidx.navigation:navigation-ui-ktx:2.5.0'
+ implementation "androidx.fragment:fragment-ktx:1.5.0"
implementation "androidx.paging:paging-runtime-ktx:3.1.1"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
- coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.6'
-
implementation 'com.willowtreeapps:signinwithapplebutton:0.3'
implementation project(':shared')
@@ -149,9 +147,6 @@ android {
buildConfigField "String", "TESTING_LEVEL", "\"production\""
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'
- println app_version_code
- println app_version_name
-
versionCode app_version_code
versionName app_version_name
@@ -159,6 +154,9 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArguments clearPackageData: 'true'
+
+ def formattedDate = new Date().format('yyMMdd')
+ archivesBaseName = "Habitica-${formattedDate}${versionCode}"
}
buildFeatures {
@@ -266,9 +264,6 @@ android {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
-
- // Flag to enable support for the new language APIs
- coreLibraryDesugaringEnabled true
}
kotlinOptions {
diff --git a/Habitica/res/layout/dialog_hatch_pet_button.xml b/Habitica/res/layout/dialog_hatch_pet_button.xml
index 895be21a2..1fa18d8aa 100644
--- a/Habitica/res/layout/dialog_hatch_pet_button.xml
+++ b/Habitica/res/layout/dialog_hatch_pet_button.xml
@@ -1,10 +1,12 @@
+ android:gravity="center"
+ android:padding="6dp">
+ android:layout_height="wrap_content"
+ app:fontFamily="sans-serif-medium"/>
\ No newline at end of file
diff --git a/Habitica/res/layout/dialog_pet_suggest_hatch.xml b/Habitica/res/layout/dialog_pet_suggest_hatch.xml
index e07ce4887..d64694e68 100644
--- a/Habitica/res/layout/dialog_pet_suggest_hatch.xml
+++ b/Habitica/res/layout/dialog_pet_suggest_hatch.xml
@@ -52,12 +52,14 @@
android:id="@+id/shimmer_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- app:shimmer_repeat_delay="8000">
+ app:shimmer_repeat_delay="8000"
+ app:shimmer_base_color="@color/text_dimmed"
+ app:shimmer_highlight_color="@color/content_background"
+ app:shimmer_highlight_alpha="0.8">
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/UserModule.java b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/UserModule.java
index e6e231245..3de77ecbe 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/modules/UserModule.java
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/modules/UserModule.java
@@ -3,6 +3,7 @@ package com.habitrpg.android.habitica.modules;
import android.content.Context;
import android.content.SharedPreferences;
+import com.habitrpg.android.habitica.BuildConfig;
import com.habitrpg.android.habitica.data.TaskRepository;
import com.habitrpg.android.habitica.data.UserRepository;
import com.habitrpg.android.habitica.helpers.TaskAlarmManager;
@@ -28,7 +29,11 @@ public class UserModule {
@Named(NAMED_USER_ID)
@UserScope
public String providesUserID(SharedPreferences sharedPreferences) {
- return sharedPreferences.getString("UserID", "");
+ if (BuildConfig.DEBUG && !BuildConfig.TEST_USER_ID.isEmpty()) {
+ return BuildConfig.TEST_USER_ID;
+ } else {
+ return sharedPreferences.getString("UserID", "");
+ }
}
@Provides
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt
index b32719226..981c9e5e0 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/BaseTasksRecyclerViewAdapter.kt
@@ -8,11 +8,11 @@ import com.habitrpg.android.habitica.HabiticaBaseApplication
import com.habitrpg.android.habitica.components.UserComponent
import com.habitrpg.android.habitica.data.TaskRepository
import com.habitrpg.android.habitica.models.tasks.Task
-import com.habitrpg.common.habitica.models.tasks.TaskType
import com.habitrpg.android.habitica.proxy.AnalyticsManager
import com.habitrpg.android.habitica.ui.adapter.BaseRecyclerViewAdapter
import com.habitrpg.android.habitica.ui.viewHolders.BindableViewHolder
import com.habitrpg.android.habitica.ui.viewmodels.TasksViewModel
+import com.habitrpg.common.habitica.models.tasks.TaskType
import javax.inject.Inject
abstract class BaseTasksRecyclerViewAdapter>(
@@ -60,13 +60,13 @@ abstract class BaseTasksRecyclerViewAdapter>(
if (taskType != task.type)
return
var i = 0
- while (i < this.content?.size ?: 0) {
+ while (i < (this.content?.size ?: 0)) {
if (content?.get(i)?.id == task.id) {
break
}
++i
}
- if (i < content?.size ?: 0) {
+ if (i < (content?.size ?: 0)) {
content?.set(i, task)
}
filter()
diff --git a/common/src/main/java/com/habitrpg/common/habitica/api/HostConfig.kt b/common/src/main/java/com/habitrpg/common/habitica/api/HostConfig.kt
index 6fe0952bf..246f86e58 100644
--- a/common/src/main/java/com/habitrpg/common/habitica/api/HostConfig.kt
+++ b/common/src/main/java/com/habitrpg/common/habitica/api/HostConfig.kt
@@ -7,12 +7,6 @@ import androidx.core.content.edit
import com.habitrpg.common.habitica.BuildConfig
import com.habitrpg.common.habitica.helpers.KeyHelper
-/**
- * The configuration of the host
- * Currently, the Port isn't used at all.
- *
- * @author MagicMicky
- */
class HostConfig {
var address: String
var port: String
@@ -30,6 +24,11 @@ class HostConfig {
this.port = BuildConfig.PORT
if (BuildConfig.DEBUG) {
this.address = BuildConfig.BASE_URL
+ if (BuildConfig.TEST_USER_ID.isNotBlank()) {
+ userID = BuildConfig.TEST_USER_ID
+ apiKey = BuildConfig.TEST_USER_KEY
+ return
+ }
} else {
val address = sharedPreferences.getString("server_url", null)
if (address != null && address.isNotEmpty()) {
@@ -39,7 +38,6 @@ class HostConfig {
}
}
this.userID = sharedPreferences.getString(context.getString(com.habitrpg.common.habitica.R.string.SP_userID), null) ?: ""
-
this.apiKey = loadAPIKey(sharedPreferences, keyHelper)
}
diff --git a/version.properties b/version.properties
index 2c9269b28..3ba3383af 100644
--- a/version.properties
+++ b/version.properties
@@ -1,2 +1,2 @@
NAME=4.0
-CODE=4180
\ No newline at end of file
+CODE=4190
\ No newline at end of file
diff --git a/wearos/build.gradle b/wearos/build.gradle
index cfce73bd7..af5452bc0 100644
--- a/wearos/build.gradle
+++ b/wearos/build.gradle
@@ -18,6 +18,9 @@ android {
versionCode app_version_code + 1
versionName app_version_name
buildConfigField "String", "TESTING_LEVEL", "\"production\""
+
+ def formattedDate = new Date().format('yyMMdd')
+ archivesBaseName = "Habitica-WearOS-${formattedDate}${versionCode}"
}
signingConfigs {
diff --git a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserLocalRepository.kt b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserLocalRepository.kt
index b353c9173..20c2dd4a5 100644
--- a/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserLocalRepository.kt
+++ b/wearos/src/main/java/com/habitrpg/wearos/habitica/data/repositories/UserLocalRepository.kt
@@ -3,13 +3,14 @@ package com.habitrpg.wearos.habitica.data.repositories
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.asFlow
import com.habitrpg.wearos.habitica.models.user.User
+import kotlinx.coroutines.flow.filterNotNull
import javax.inject.Inject
import javax.inject.Singleton
@Singleton
class UserLocalRepository @Inject constructor() {
private val user = MutableLiveData()
- fun getUser() = user.asFlow()
+ fun getUser() = user.asFlow().filterNotNull()
fun saveUser(user: User) {
this.user.value = user