diff --git a/Habitica/build.gradle b/Habitica/build.gradle
index 9f73511ad..df5f08341 100644
--- a/Habitica/build.gradle
+++ b/Habitica/build.gradle
@@ -64,7 +64,7 @@ dependencies {
compileOnly 'com.github.pengrad:jdk9-deps:1.0'
//App Compatibility and Material Design
implementation 'androidx.appcompat:appcompat:1.1.0'
- implementation 'com.google.android.material:material:1.1.0'
+ implementation 'com.google.android.material:material:1.0.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'androidx.legacy:legacy-preference-v14:1.0.0'
// Emojis
@@ -162,8 +162,8 @@ 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 2408
- versionName "2.6"
+ versionCode 2412
+ versionName "2.6.1"
}
viewBinding {
@@ -213,6 +213,12 @@ android {
dimension "buildType"
}
+ staff {
+ dimension "buildType"
+ buildConfigField "String", "TESTING_LEVEL", "\"staff\""
+ resValue "string", "app_name", "Habitica Staff"
+ }
+
alpha {
dimension "buildType"
buildConfigField "String", "TESTING_LEVEL", "\"alpha\""
diff --git a/Habitica/res/values/strings.xml b/Habitica/res/values/strings.xml
index d04de354c..7d067f293 100644
--- a/Habitica/res/values/strings.xml
+++ b/Habitica/res/values/strings.xml
@@ -1014,5 +1014,5 @@
Read More
You are unable to buy that amount.
Still have a question?
- Delete Checklist entry
+ Task list display
diff --git a/Habitica/res/values/values.xml b/Habitica/res/values/values.xml
index b6510e863..3eec99b73 100644
--- a/Habitica/res/values/values.xml
+++ b/Habitica/res/values/values.xml
@@ -33,6 +33,18 @@
- @string/avatar_size_broad
+
+ - Standard
+ - Compact
+ - Minimal
+
+
+
+ - standard
+ - compact
+ - minimal
+
+
- English
- Български
diff --git a/Habitica/res/xml/preferences_fragment.xml b/Habitica/res/xml/preferences_fragment.xml
index f88a0744a..853d672b3 100644
--- a/Habitica/res/xml/preferences_fragment.xml
+++ b/Habitica/res/xml/preferences_fragment.xml
@@ -112,6 +112,13 @@
android:shouldDisableView="false"
android:summary="@string/SP_APIToken_summary"
android:layout="@layout/preference_child_summary"/>
+
-
raiseShops
false
+
+ enableTaskDisplayMode
+ true
+
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt
index b8d1d85af..446874b68 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/helpers/AppConfigManager.kt
@@ -1,5 +1,7 @@
package com.habitrpg.android.habitica.helpers
+import android.content.Context
+import androidx.preference.PreferenceManager
import com.google.firebase.remoteconfig.FirebaseRemoteConfig
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
@@ -82,4 +84,13 @@ class AppConfigManager {
fun raiseShops(): Boolean {
return remoteConfig.getBoolean("raiseShops")
}
+
+ fun taskDisplayMode(context: Context): String {
+ return if (remoteConfig.getBoolean("enableTaskDisplayMode")) {
+ val preferences = PreferenceManager.getDefaultSharedPreferences(context)
+ preferences.getString("task_display", "standard") ?: "standard"
+ } else {
+ "standard"
+ }
+ }
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt
index 538e5ce7e..288c93de2 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SetupActivity.kt
@@ -6,6 +6,7 @@ import android.graphics.drawable.Drawable
import android.os.Build
import android.os.Bundle
import android.view.View
+import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import androidx.appcompat.content.res.AppCompatResources
@@ -61,6 +62,7 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener {
internal var taskSetupFragment: TaskSetupFragment? = null
internal var user: User? = null
private var completedSetup = false
+ private var createdTasks = false
private val isLastPage: Boolean
get() = this.pager.adapter == null || this.pager.currentItem == (this.pager.adapter?.count ?: 0) - 1
@@ -127,8 +129,13 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener {
if (this.taskSetupFragment == null) {
return
}
+ if (createdTasks) {
+ onUserReceived(user)
+ return
+ }
val newTasks = this.taskSetupFragment?.createSampleTasks()
this.completedSetup = true
+ createdTasks = true
newTasks?.let {
this.taskRepository.createTasks(it).subscribe(Consumer { onUserReceived(user) }, RxErrorHandler.handleEmptyError())
}
@@ -194,14 +201,14 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener {
private fun onUserReceived(user: User?) {
if (completedSetup) {
- if (!compositeSubscription.isDisposed) {
- compositeSubscription.dispose()
- }
val additionalData = HashMap()
additionalData["status"] = "completed"
AmplitudeManager.sendEvent("setup", AmplitudeManager.EVENT_CATEGORY_BEHAVIOUR, AmplitudeManager.EVENT_HITTYPE_EVENT, additionalData)
compositeSubscription.add(userRepository.updateUser(user, "flags.welcomed", true).subscribe(Consumer {
+ if (!compositeSubscription.isDisposed) {
+ compositeSubscription.dispose()
+ }
startMainActivity()
}, RxErrorHandler.handleEmptyError()))
return
@@ -256,6 +263,29 @@ class SetupActivity : BaseActivity(), ViewPager.OnPageChangeListener {
}
}
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val item = super.instantiateItem(container, position)
+ when (item) {
+ is AvatarSetupFragment -> {
+ avatarSetupFragment = item
+ item.activity = this@SetupActivity
+ item.setUser(user)
+ item.width = pager.width
+ }
+ is TaskSetupFragment -> {
+ taskSetupFragment = item
+ item.setUser(user)
+ }
+ is WelcomeFragment -> {
+ welcomeFragment = item
+ item.nameValidEvents.toFlowable(BackpressureStrategy.DROP)?.subscribe {
+ setNextButtonEnabled(it)
+ }
+ }
+ }
+ return item
+ }
+
override fun getCount(): Int {
return 3
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillTasksActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillTasksActivity.kt
index 795c005d8..50b1f405c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillTasksActivity.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/SkillTasksActivity.kt
@@ -5,6 +5,7 @@ import android.content.Intent
import android.os.Bundle
import android.util.SparseArray
import android.view.MenuItem
+import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentPagerAdapter
import androidx.viewpager.widget.ViewPager
@@ -67,6 +68,21 @@ class SkillTasksActivity : BaseActivity() {
return fragment
}
+ override fun instantiateItem(container: ViewGroup, position: Int): Any {
+ val item = super.instantiateItem(container, position)
+ if (item is SkillTasksRecyclerViewFragment) {
+ item.taskType = when (position) {
+ 0 -> Task.TYPE_HABIT
+ 1 -> Task.TYPE_DAILY
+ else -> Task.TYPE_TODO
+ }
+
+ compositeSubscription.add(item.getTaskSelectionEvents().subscribe(Consumer { task -> taskSelected(task) }, RxErrorHandler.handleEmptyError()))
+ viewFragmentsDictionary.put(position, item)
+ }
+ return item
+ }
+
override fun getCount(): Int {
return 3
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt
index b9cf62730..d1f32b9e3 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/social/challenges/ChallengeTasksRecyclerViewAdapter.kt
@@ -116,7 +116,7 @@ class ChallengeTasksRecyclerViewAdapter(taskFilterHelper: TaskFilterHelper?, lay
addBtn.setOnClickListener { newTask?.let { callback.onNext(it) } }
}
- override fun bind(data: Task, position: Int) {
+ override fun bind(data: Task, position: Int, displayMode: String) {
this.newTask = data
addBtn.text = data.text
}
@@ -126,7 +126,7 @@ class ChallengeTasksRecyclerViewAdapter(taskFilterHelper: TaskFilterHelper?, lay
private val dividerName: TextView = itemView.findViewById(R.id.divider_name)
- override fun bind(data: Task, position: Int) {
+ override fun bind(data: Task, position: Int, displayMode: String) {
dividerName.text = data.text
}
}
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 1ddbbbfd6..e471cfe80 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
@@ -46,7 +46,7 @@ abstract class BaseTasksRecyclerViewAdapter>(var t
override fun onBindViewHolder(holder: VH, position: Int) {
val item = filteredContent?.get(position)
if (item != null) {
- holder.bind(item, position)
+ holder.bind(item, position, "normal")
}
/*if (this.displayedChecklist != null && ChecklistedViewHolder.class.isAssignableFrom(holder.getClass())) {
ChecklistedViewHolder checklistedHolder = (ChecklistedViewHolder) holder;
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt
index 661b72ce5..40e18dc74 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RealmBaseTasksRecyclerViewAdapter.kt
@@ -24,6 +24,14 @@ abstract class RealmBaseTasksRecyclerViewAdapter(
private var updateOnModification: Boolean = false
override var ignoreUpdates: Boolean = false
+ override var taskDisplayMode: String = "standard"
+ set(value) {
+ if (field != value) {
+ field = value
+ notifyDataSetChanged()
+ }
+ }
+
private val resultsListener: OrderedRealmCollectionChangeListener> by lazy {
OrderedRealmCollectionChangeListener> { _, changeSet ->
buildChangeSet(changeSet)
@@ -128,7 +136,7 @@ abstract class RealmBaseTasksRecyclerViewAdapter(
override fun onBindViewHolder(holder: VH, position: Int) {
val item = getItem(position)
if (item != null) {
- holder.bind(item, position)
+ holder.bind(item, position, taskDisplayMode)
holder.errorButtonClicked = Action {
errorButtonEventsSubject.onNext("")
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt
index 89ab638fa..deda9fe5e 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/RewardsRecyclerViewAdapter.kt
@@ -33,6 +33,15 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti
private var purchaseCardSubject = PublishSubject.create()
val purchaseCardEvents: Flowable = purchaseCardSubject.toFlowable(BackpressureStrategy.LATEST)
+
+ override var taskDisplayMode: String = "standard"
+ set(value) {
+ if (field != value) {
+ field = value
+ notifyDataSetChanged()
+ }
+ }
+
private val inAppRewardCount: Int
get() {
if (inAppRewards?.isValid != true) return 0
@@ -71,7 +80,7 @@ class RewardsRecyclerViewAdapter(private var customRewards: OrderedRealmCollecti
if (customRewards != null && position < customRewardCount) {
val reward = customRewards?.get(position) ?: return
val gold = user?.stats?.gp ?: 0.0
- (holder as? RewardViewHolder)?.bind(reward, position, reward.value < gold)
+ (holder as? RewardViewHolder)?.bind(reward, position, reward.value < gold, taskDisplayMode)
} else if (inAppRewards != null) {
val item = inAppRewards?.get(position - customRewardCount) ?: return
if (holder is ShopItemViewHolder) {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt
index 0fc57f5f3..7f9a4b5db 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/tasks/TaskRecyclerViewAdapter.kt
@@ -11,6 +11,8 @@ interface TaskRecyclerViewAdapter {
val errorButtonEvents: Flowable
+ var taskDisplayMode: String
+
fun updateData(tasks: OrderedRealmCollection?)
fun filter()
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt
index 37a0ca815..30576af98 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/preferences/PreferencesFragment.kt
@@ -78,6 +78,10 @@ class PreferencesFragment : BasePreferencesFragment(), SharedPreferences.OnShare
val themePreference = findPreference("theme_name") as? ListPreference
themePreference?.isVisible = configManager.testingLevel() == AppTestingLevel.ALPHA || BuildConfig.DEBUG
themePreference?.summary = themePreference?.entry
+
+
+ val taskDisplayPreference = findPreference("task_display") as? ListPreference
+ taskDisplayPreference?.summary = taskDisplayPreference?.entry
}
override fun onResume() {
@@ -224,6 +228,10 @@ class PreferencesFragment : BasePreferencesFragment(), SharedPreferences.OnShare
apiClient.updateServerUrl(sharedPreferences.getString(key, ""))
findPreference(key).summary = sharedPreferences.getString(key, "")
}
+ "task_display" -> {
+ val preference = findPreference(key) as ListPreference
+ preference.summary = preference.entry
+ }
}
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt
index ef6f1a1a3..7308bd439 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TaskRecyclerViewFragment.kt
@@ -102,6 +102,8 @@ open class TaskRecyclerViewFragment : BaseFragment(), androidx.swiperefreshlayou
this.recyclerAdapter?.filter()
}, RxErrorHandler.handleEmptyError()))
}
+
+ context?.let { recyclerAdapter?.taskDisplayMode = configManager.taskDisplayMode(it) }
}
private fun handleTaskResult(result: TaskScoringResult, value: Int) {
@@ -359,6 +361,11 @@ open class TaskRecyclerViewFragment : BaseFragment(), androidx.swiperefreshlayou
}.subscribe(Consumer { }, RxErrorHandler.handleEmptyError()))
}
+ override fun onResume() {
+ super.onResume()
+ context?.let { recyclerAdapter?.taskDisplayMode = configManager.taskDisplayMode(it) }
+ }
+
fun setActiveFilter(activeFilter: String) {
taskFilterHelper.setActiveFilter(classType ?: "", activeFilter)
recyclerAdapter?.filter()
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/BindableViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/BindableViewHolder.kt
index a7e011a44..a4fec802e 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/BindableViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/BindableViewHolder.kt
@@ -5,5 +5,5 @@ import androidx.recyclerview.widget.RecyclerView
abstract class BindableViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
- abstract fun bind(data: T, position: Int)
+ abstract fun bind(data: T, position: Int, displayMode: String)
}
\ No newline at end of file
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt
index 0913d78ec..06a94adc6 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/BaseTaskViewHolder.kt
@@ -104,7 +104,7 @@ abstract class BaseTaskViewHolder constructor(itemView: View, var scoreTaskFunc:
}
}
- override fun bind(data: Task, position: Int) {
+ override fun bind(data: Task, position: Int, displayMode: String) {
task = data
itemView.setBackgroundResource(R.color.white)
@@ -134,40 +134,53 @@ abstract class BaseTaskViewHolder constructor(itemView: View, var scoreTaskFunc:
titleTextView.setParsedMarkdown(parsedText)
}, RxErrorHandler.handleEmptyError())
}
- if (data.parsedNotes != null) {
- notesTextView?.setParsedMarkdown(data.parsedText)
- } else {
- notesTextView?.text = data.notes
- notesTextView?.setSpannableFactory(NoCopySpannableFactory.getInstance());
- data.notes?.let {notes ->
- if (notes.isEmpty()) {
- return@let
+ if (displayMode != "minimal") {
+ if (data.parsedNotes != null) {
+ notesTextView?.setParsedMarkdown(data.parsedText)
+ } else {
+ notesTextView?.text = data.notes
+ notesTextView?.setSpannableFactory(NoCopySpannableFactory.getInstance());
+ data.notes?.let {notes ->
+ if (notes.isEmpty()) {
+ return@let
+ }
+ Single.just(notes)
+ .map { MarkdownParser.parseMarkdown(it) }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(Consumer { parsedNotes ->
+ notesTextView?.text = parsedNotes
+ notesTextView?.setParsedMarkdown(parsedNotes)
+ }, RxErrorHandler.handleEmptyError())
+ }
}
- Single.just(notes)
- .map { MarkdownParser.parseMarkdown(it) }
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(Consumer { parsedNotes ->
- notesTextView?.text = parsedNotes
- notesTextView?.setParsedMarkdown(parsedNotes)
- }, RxErrorHandler.handleEmptyError())
+ } else {
+ notesTextView?.visibility = View.GONE
}
}
- }
} else {
titleTextView.text = data.text
- notesTextView?.text = data.notes
+ if (displayMode != "minimal") {
+ notesTextView?.text = data.notes
+ } else {
+ notesTextView?.visibility = View.GONE
+ }
}
rightBorderView?.setBackgroundResource(data.lightTaskColor)
- iconViewReminder?.visibility = if (data.reminders?.size ?: 0 > 0) View.VISIBLE else View.GONE
- iconViewTag?.visibility = if (data.tags?.size ?: 0 > 0) View.VISIBLE else View.GONE
+ if (displayMode == "standard") {
+ iconViewReminder?.visibility = if (data.reminders?.size ?: 0 > 0) View.VISIBLE else View.GONE
+ iconViewTag?.visibility = if (data.tags?.size ?: 0 > 0) View.VISIBLE else View.GONE
- iconViewChallenge?.visibility = if (task?.challengeID != null) View.VISIBLE else View.GONE
+ iconViewChallenge?.visibility = if (task?.challengeID != null) View.VISIBLE else View.GONE
- configureSpecialTaskTextView(data)
+ configureSpecialTaskTextView(data)
+
+ taskIconWrapper?.visibility = if (taskIconWrapperIsVisible) View.VISIBLE else View.GONE
+ } else {
+ taskIconWrapper?.visibility = View.GONE
+ }
- taskIconWrapper?.visibility = if (taskIconWrapperIsVisible) View.VISIBLE else View.GONE
if (data.isPendingApproval) {
approvalRequiredTextView?.visibility = View.VISIBLE
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt
index b31afd28d..36b582773 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/ChecklistedViewHolder.kt
@@ -42,7 +42,7 @@ abstract class ChecklistedViewHolder(itemView: View, scoreTaskFunc: ((Task, Task
expandCheckboxTouchArea(checkboxHolder, checkbox)
}
- override fun bind(newTask: Task, position: Int) {
+ override fun bind(newTask: Task, position: Int, displayMode: String) {
var completed = newTask.completed
if (newTask.isPendingApproval) {
completed = false
@@ -66,7 +66,7 @@ abstract class ChecklistedViewHolder(itemView: View, scoreTaskFunc: ((Task, Task
} else {
this.rightBorderView?.setBackgroundColor(this.taskGray)
}
- super.bind(newTask, position)
+ super.bind(newTask, position, displayMode)
}
abstract fun shouldDisplayAsActive(newTask: Task): Boolean
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt
index 7ed396bc8..366ec5d80 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/DailyViewHolder.kt
@@ -25,7 +25,7 @@ class DailyViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U
return isVisible
}
- override fun bind(newTask: Task, position: Int) {
+ override fun bind(newTask: Task, position: Int, displayMode: String) {
this.task = newTask
if (newTask.isChecklistDisplayActive) {
this.checklistIndicatorWrapper.setBackgroundResource(newTask.lightTaskColor)
@@ -55,7 +55,7 @@ class DailyViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U
reminderTextView.text = reminderString
}
- super.bind(newTask, position)
+ super.bind(newTask, position, displayMode)
}
override fun shouldDisplayAsActive(newTask: Task): Boolean {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt
index 0b18e4923..3346c61fb 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/HabitViewHolder.kt
@@ -34,7 +34,7 @@ class HabitViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U
btnMinus.setOnClickListener { onMinusButtonClicked() }
}
- override fun bind(data: Task, position: Int) {
+ override fun bind(data: Task, position: Int, displayMode: String) {
this.task = data
if (data.up == true) {
this.btnPlusWrapper.setBackgroundResource(data.lightTaskColor)
@@ -82,7 +82,7 @@ class HabitViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> U
} else {
streakTextView.visibility = View.GONE
}
- super.bind(data, position)
+ super.bind(data, position, displayMode)
}
private fun onPlusButtonClicked() {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.kt
index 22a2216e1..9bc563cda 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/RewardViewHolder.kt
@@ -63,9 +63,9 @@ class RewardViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) ->
this.buyButton.isEnabled = !taskActionsDisabled
}
- fun bind(reward: Task, position: Int, canBuy: Boolean) {
+ fun bind(reward: Task, position: Int, canBuy: Boolean, displayMode: String) {
this.task = reward
- super.bind(reward, position)
+ super.bind(reward, position, displayMode)
this.priceLabel.text = NumberAbbreviator.abbreviate(itemView.context, this.task?.value ?: 0.0)
if (canBuy) {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.kt
index fdd116f56..d7a2fe5f6 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/tasks/TodoViewHolder.kt
@@ -12,14 +12,14 @@ class TodoViewHolder(itemView: View, scoreTaskFunc: ((Task, TaskDirection) -> Un
private val dateFormatter: DateFormat = android.text.format.DateFormat.getDateFormat(context)
- override fun bind(newTask: Task, position: Int) {
+ override fun bind(newTask: Task, position: Int, displayMode: String) {
this.task = newTask
if (newTask.completed) {
checklistIndicatorWrapper.setBackgroundColor(taskGray)
} else {
checklistIndicatorWrapper.setBackgroundColor(newTask.lightTaskColor)
}
- super.bind(newTask, position)
+ super.bind(newTask, position, displayMode)
}
override fun configureSpecialTaskTextView(task: Task) {
diff --git a/fastlane/README.md b/fastlane/README.md
index 1a4e9073b..33ba19649 100644
--- a/fastlane/README.md
+++ b/fastlane/README.md
@@ -21,6 +21,11 @@ or alternatively using `brew cask install fastlane`
fastlane android test
```
Runs all the tests
+### android staff
+```
+fastlane android staff
+```
+Submit a new Staff Build to Google Play
### android alpha
```
fastlane android alpha