diff --git a/Habitica/res/drawable/bottom_sheet_title.xml b/Habitica/res/drawable/bottom_sheet_title.xml
new file mode 100644
index 000000000..d33c4bc4c
--- /dev/null
+++ b/Habitica/res/drawable/bottom_sheet_title.xml
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/Habitica/res/layout/menu_bottom_sheet.xml b/Habitica/res/layout/menu_bottom_sheet.xml
index b3e3657c7..cb38f8992 100644
--- a/Habitica/res/layout/menu_bottom_sheet.xml
+++ b/Habitica/res/layout/menu_bottom_sheet.xml
@@ -5,7 +5,8 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/BottomMenu"
- android:clickable="false">
+ android:clickable="false"
+ android:background="@drawable/rounded_avatar_bg">
loadJsonFile(s: String, type: Type): T {
- val userStream = javaClass.classLoader?.getResourceAsStream("${s}.json")
+ val userStream = javaClass.classLoader?.getResourceAsStream("$s.json")
return gson.fromJson(gson.newJsonReader(InputStreamReader(userStream)), type)
}
diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/Kakao-Helpers.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/Kakao-Helpers.kt
index 4fe2cb5a0..bae43c7c2 100644
--- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/Kakao-Helpers.kt
+++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/Kakao-Helpers.kt
@@ -15,7 +15,6 @@ import io.reactivex.rxjava3.core.Flowable
import org.hamcrest.Description
import org.hamcrest.TypeSafeMatcher
-
class Capture(val klass: Class) : TypeSafeMatcher(View::class.java) {
companion object {
@@ -105,7 +104,6 @@ class Capture(val klass: Class) : TypeSafeMatcher(View::class
var view: T? = null
override fun describeTo(desc: Description) {
-
}
override fun matchesSafely(v: View): Boolean {
@@ -115,4 +113,4 @@ class Capture(val klass: Class) : TypeSafeMatcher(View::class
this.view = v as T
return true
}
-}
\ No newline at end of file
+}
diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/ActivityTestCase.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/ActivityTestCase.kt
index 529603293..4ed703277 100644
--- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/ActivityTestCase.kt
+++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/ActivityTestCase.kt
@@ -2,5 +2,4 @@ package com.habitrpg.android.habitica.ui.activities
import com.habitrpg.android.habitica.HabiticaTestCase
-open class ActivityTestCase: HabiticaTestCase() {
-}
+open class ActivityTestCase : HabiticaTestCase()
diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/MainActivityTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/MainActivityTest.kt
index 13f8f6d84..75dd45850 100644
--- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/MainActivityTest.kt
+++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/MainActivityTest.kt
@@ -66,12 +66,12 @@ class MainActivityTest : ActivityTestCase() {
screen.pressBack()
screen.pressBack()
KButton { withText("Discard") }.click()
- KView { withId(R.id.dailies_tab)}.click()
+ KView { withId(R.id.dailies_tab) }.click()
KView { withId(R.id.add_button) }.click()
KView { withText("Create Daily") }.isVisible()
screen.pressBack()
screen.pressBack()
- KView { withId(R.id.todos_tab)}.click()
+ KView { withId(R.id.todos_tab) }.click()
KView { withId(R.id.add_button) }.click()
KView { withText("Create To Do") }.isVisible()
}
@@ -85,7 +85,7 @@ class MainActivityTest : ActivityTestCase() {
KView { withId(R.id.action_filter) }.click()
KView { withText(R.string.filters) }.isVisible()
screen.pressBack()
- KView { withText(R.string.filters)}.doesNotExist()
+ KView { withText(R.string.filters) }.doesNotExist()
}
}
}
diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivityTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivityTest.kt
index d08a9f717..bf0797f05 100644
--- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivityTest.kt
+++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/activities/TaskFormActivityTest.kt
@@ -38,11 +38,10 @@ import org.junit.runner.RunWith
import java.util.Date
import java.util.UUID
-
class TaskFormScreen : Screen() {
val toolbar = KToolbar { withId(R.id.toolbar) }
- val textEditText = KEditText { withId(R.id.text_edit_text)}
- val notesEditText = KEditText { withId(R.id.notes_edit_text)}
+ val textEditText = KEditText { withId(R.id.text_edit_text) }
+ val notesEditText = KEditText { withId(R.id.notes_edit_text) }
val taskDifficultyButtons = KView { withId(R.id.task_difficulty_buttons) }
val tagsWrapper = KView { withId(R.id.tags_wrapper) }
}
@@ -162,7 +161,7 @@ class TaskFormActivityTest : ActivityTestCase() {
screen {
device.activities.isCurrent(TaskFormActivity::class.java)
textEditText.typeText("New Habit")
- KButton { withId(R.id.action_save)}.click()
+ KButton { withId(R.id.action_save) }.click()
verify(exactly = 1) { taskRepository.createTaskInBackground(any()) }
}
}
@@ -208,8 +207,8 @@ class TaskFormActivityTest : ActivityTestCase() {
scenario = launchActivity(intent)
screen {
device.activities.isCurrent(TaskFormActivity::class.java)
- KButton { withId(R.id.action_delete)}.click()
- KButton { withText(R.string.delete_task) }.click()
+ KButton { withId(R.id.action_delete) }.click()
+ KButton { withText(R.string.delete_task) }.click()
verify(exactly = 1) { taskRepository.deleteTask(task.id!!) }
}
}
@@ -295,8 +294,8 @@ class TaskFormActivityTest : ActivityTestCase() {
intent.putExtras(bundle)
scenario = launchActivity(intent)
screen {
- KView { withId(R.id.start_date_wrapper)}.click()
- KDatePickerDialog() perform {
+ KView { withId(R.id.start_date_wrapper) }.click()
+ KDatePickerDialog() perform {
datePicker.setDate(2021, 10, 2)
okButton.click()
}
diff --git a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/NavigationDrawerFragmentTest.kt b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/NavigationDrawerFragmentTest.kt
index ea8201199..ef797c5d7 100644
--- a/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/NavigationDrawerFragmentTest.kt
+++ b/Habitica/src/androidTest/java/com/habitrpg/android/habitica/ui/fragments/NavigationDrawerFragmentTest.kt
@@ -25,9 +25,9 @@ class NavigationDrawerScreen : Screen() {
val recycler: KRecyclerView = KRecyclerView({
withId(R.id.recyclerView)
}, itemTypeBuilder = {
- itemType(::SectionHeaderItem)
- itemType(::MainItem)
- })
+ itemType(::SectionHeaderItem)
+ itemType(::MainItem)
+ })
}
@LargeTest
@@ -60,4 +60,4 @@ internal class NavigationDrawerFragmentTest : FragmentTestCase {
- return isA(TextView::class.java)
- }
+ (
+ this.view.perform(object : ViewAction {
+ override fun getConstraints(): Matcher {
+ return isA(TextView::class.java)
+ }
- override fun getDescription(): String {
- return "getting text from a TextView";
- }
+ override fun getDescription(): String {
+ return "getting text from a TextView"
+ }
- override fun perform(uiController: UiController?, view: View?) {
- val tv = view as TextView
- string = tv.text
- }
-
- }))
+ override fun perform(uiController: UiController?, view: View?) {
+ val tv = view as TextView
+ string = tv.text
+ }
+ })
+ )
return string
}
@@ -51,8 +52,8 @@ class ItemScreen : Screen() {
val recycler: KRecyclerView = KRecyclerView({
withId(R.id.recyclerView)
}, itemTypeBuilder = {
- itemType(::ItemItem)
- })
+ itemType(::ItemItem)
+ })
}
internal class ItemRecyclerFragmentTest : FragmentTestCase(false) {
@@ -91,7 +92,7 @@ internal class ItemRecyclerFragmentTest : FragmentTestCase 0 }
+ var items = user.items?.food!!.filter { it.numberOwned > 0 }
items = (items + items).sortedBy { it.key }
Flowable.just(items)
}
@@ -110,4 +111,4 @@ internal class ItemRecyclerFragmentTest : FragmentTestCase() {
val recycler: KRecyclerView = KRecyclerView({
withId(R.id.recyclerView)
}, itemTypeBuilder = {
- itemType(::SectionItem)
- itemType(::PetItem)
- })
+ itemType(::SectionItem)
+ itemType(::PetItem)
+ })
}
internal class PetDetailRecyclerFragmentTest : FragmentTestCase(false) {
@@ -34,4 +34,4 @@ internal class PetDetailRecyclerFragmentTest : FragmentTestCase() {
val recycler: KRecyclerView = KRecyclerView({
withId(R.id.recyclerView)
}, itemTypeBuilder = {
- itemType(::SectionItem)
- itemType(::PetItem)
- })
+ itemType(::SectionItem)
+ itemType(::PetItem)
+ })
}
internal class StableRecyclerFragmentTest : FragmentTestCase(false) {
@@ -145,4 +145,4 @@ internal class StableRecyclerFragmentTest : FragmentTestCase) : KRecyclerItem(parent) {
val title = KTextView(parent) { withId(R.id.checkedTextView) }
val notes = KTextView(parent) { withId(R.id.notesTextView) }
@@ -31,8 +30,8 @@ class TaskListScreen : Screen() {
val recycler: KRecyclerView = KRecyclerView({
withId(R.id.recyclerView)
}, itemTypeBuilder = {
- itemType(::TaskItem)
- })
+ itemType(::TaskItem)
+ })
}
internal class TaskRecyclerViewFragmentTest : FragmentTestCase(false) {
@@ -219,7 +218,6 @@ internal class TaskRecyclerViewFragmentTest : FragmentTestCase 86400000)
+ return !this.wasCompleted && (
+ this.displayedOn == null || Date().time - (
+ displayedOn?.time
+ ?: 0
+ ) > 86400000
+ )
}
override val realmClass: Class
get() = TutorialStep::class.java
@@ -35,5 +39,5 @@ open class TutorialStep : RealmObject(), BaseMainObject {
get() = "key"
val flagPath: String
- get() = "flags.tutorial.$tutorialGroup.$identifier"
+ get() = "flags.tutorial.$tutorialGroup.$identifier"
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.kt
index ba926b04b..43d1cbe6b 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/AvatarWithBarsViewModel.kt
@@ -73,7 +73,7 @@ class AvatarWithBarsViewModel(private val context: Context, private val binding:
if (!stats.isBuffed) {
binding.buffImageView.visibility = View.GONE
}
-
+
if (user is User) {
binding.currencyView.gold = stats.gp ?: 0.0
binding.currencyView.hourglasses = user.hourglassCount.toDouble()
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ItemRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ItemRecyclerAdapter.kt
index b4f2e7755..e4bea172f 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ItemRecyclerAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/ItemRecyclerAdapter.kt
@@ -2,7 +2,6 @@ package com.habitrpg.android.habitica.ui.adapter.inventory
import android.content.Context
import android.content.res.Resources
-import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
@@ -168,7 +167,7 @@ class ItemRecyclerAdapter(val context: Context, val user: User?) : BaseRecyclerV
menu.addMenuItem(BottomSheetMenuItem(resources.getString(R.string.hatch_egg)))
} else if (item is QuestContent) {
menu.addMenuItem(BottomSheetMenuItem(resources.getString(R.string.details)))
- if (user?.hasParty == true){
+ if (user?.hasParty == true) {
menu.addMenuItem(BottomSheetMenuItem(resources.getString(R.string.invite_party)))
} else {
menu.addMenuItem(BottomSheetMenuItem(resources.getString(R.string.create_new_party)))
@@ -201,7 +200,6 @@ class ItemRecyclerAdapter(val context: Context, val user: User?) : BaseRecyclerV
} else {
createNewPartySubject.onNext(true)
}
-
}
}
is SpecialItem ->
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt
index 5587b8a62..307e4040c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/adapter/inventory/StableRecyclerAdapter.kt
@@ -233,7 +233,6 @@ class StableRecyclerAdapter : RecyclerView.Adapter() {
this.ownedTextView.setTextColor(ContextCompat.getColor(context, R.color.white))
}
-
itemView.contentDescription = "${titleView.text} ${ownedTextView.text}"
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseDialogFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseDialogFragment.kt
index 269648cfb..50c62af5c 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseDialogFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseDialogFragment.kt
@@ -71,7 +71,7 @@ abstract class BaseDialogFragment : DialogFragment() {
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
Consumer { step ->
- if (step.isValid && step.isManaged && step.shouldDisplay()) {
+ if (step.isValid && step.isManaged && step.shouldDisplay) {
val mainActivity = activity as? MainActivity ?: return@Consumer
mainActivity.displayTutorialStep(step, tutorialTexts, tutorialCanBeDeferred)
}
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.kt
index 5291f2921..144d0eee5 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseFragment.kt
@@ -73,7 +73,8 @@ abstract class BaseFragment : Fragment() {
.firstElement()
.delay(1, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
- .subscribe({ step ->
+ .subscribe(
+ { step ->
if (step.isValid && step.isManaged && step.shouldDisplay) {
val mainActivity = activity as? MainActivity ?: return@subscribe
mainActivity.displayTutorialStep(step, tutorialTexts, tutorialCanBeDeferred)
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt
index 80830905c..9fa4dbc72 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/inventory/items/ItemRecyclerFragment.kt
@@ -247,7 +247,6 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL
},
RxErrorHandler.handleEmptyError()
)
-
}
alert?.addButton(R.string.close, false) { _, _ ->
alert.dismiss()
@@ -290,7 +289,6 @@ class ItemRecyclerFragment : BaseFragment(), SwipeRefreshL
)
)
}
-
compositeSubscription.add(inventoryRepository.getPets().subscribe({ adapter?.setExistingPets(it) }, RxErrorHandler.handleEmptyError()))
compositeSubscription.add(
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt
index 2101f0e82..6203dc01b 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TasksFragment.kt
@@ -317,7 +317,7 @@ class TasksFragment : BaseMainFragment(), SearchView.O
else -> TaskType.HABIT
}
val tab = bottomNavigation?.tabWithId(id)
- if (step.shouldDisplay()) {
+ if (step.shouldDisplay) {
tab?.badgeCount = 1
activeTutorialFragments.add(taskType)
} else {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TeamBoardFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TeamBoardFragment.kt
index b356f15cc..bb90a113d 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TeamBoardFragment.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/tasks/TeamBoardFragment.kt
@@ -290,49 +290,6 @@ class TeamBoardFragment : BaseMainFragment(), SearchVi
}
}
}
-
- private fun updateBottomBarBadges() {
- if (bottomNavigation == null) {
- return
- }
- compositeSubscription.add(
- tutorialRepository.getTutorialSteps(listOf("habits", "dailies", "todos", "rewards")).subscribe(
- { tutorialSteps ->
- val activeTutorialFragments = ArrayList()
- for (step in tutorialSteps) {
- var id = -1
- val taskType = when (step.identifier) {
- "habits" -> {
- id = R.id.habits_tab
- TaskType.HABIT
- }
- "dailies" -> {
- id = R.id.dailies_tab
- TaskType.DAILY
- }
- "todos" -> {
- id = R.id.todos_tab
- TaskType.TODO
- }
- "rewards" -> {
- id = R.id.rewards_tab
- TaskType.REWARD
- }
- else -> TaskType.HABIT
- }
- val tab = bottomNavigation?.tabWithId(id)
- if (step.shouldDisplay()) {
- tab?.badgeCount = 1
- activeTutorialFragments.add(taskType)
- } else {
- tab?.badgeCount = 0
- }
- }
- },
- RxErrorHandler.handleEmptyError()
- )
- )
- }
// endregion
private fun openNewTaskActivity(type: TaskType) {
@@ -390,7 +347,6 @@ class TeamBoardFragment : BaseMainFragment(), SearchVi
val index = indexForTaskType(taskType)
if (binding?.viewPager != null && index != -1) {
binding?.viewPager?.currentItem = index
- updateBottomBarBadges()
}
}
@@ -424,7 +380,6 @@ class TeamBoardFragment : BaseMainFragment(), SearchVi
else -> 0
}
binding?.viewPager?.setCurrentItem(newItem, smooth)
- updateBottomBarBadges()
}
override fun onAdd(taskType: TaskType) {
diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ChatRecyclerViewHolder.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ChatRecyclerViewHolder.kt
index 001b5e195..a8a815a19 100644
--- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ChatRecyclerViewHolder.kt
+++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/viewHolders/ChatRecyclerViewHolder.kt
@@ -177,7 +177,6 @@ class ChatRecyclerMessageViewHolder(itemView: View, private var userId: String,
itemView.setPadding(16.dpToPx(context), itemView.paddingTop, itemView.paddingRight, itemView.paddingBottom)
}
-
binding.messageText.setParsedMarkdown(chatMessage?.parsedText)
if (msg.parsedText == null) {
binding.messageText.text = chatMessage?.text