Teams support fixes

This commit is contained in:
Phillip Thelen 2022-05-02 15:12:17 +02:00
parent dbf92e030e
commit f32bac7ec6
13 changed files with 68 additions and 13 deletions

View file

@ -166,7 +166,7 @@ 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'
versionCode 3320
versionCode 3321
versionName "3.6"
targetSdkVersion 32

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/window_background" />
<corners android:radius="20dp" />
<stroke android:color="?colorAccent" android:width="2dp" />
</shape>

View file

@ -57,7 +57,9 @@
style="@style/Toolbar.Modern"
android:background="?attr/headerBackgroundColor"
app:layout_collapseMode="pin"
app:popupTheme="@style/Theme.AppCompat.DayNight">
app:popupTheme="@style/Theme.AppCompat.DayNight"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp">
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
@ -71,10 +73,13 @@
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
android:layout_toStartOf="@id/toolbar_accessory_container"
android:layout_alignParentStart="true"
style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
tools:text="Habitica" />
tools:text="Habitica"
android:background="@drawable/teams_title_bg"
android:paddingHorizontal="@dimen/spacing_large"
android:paddingVertical="1dp"
/>
<FrameLayout
android:id="@+id/toolbar_accessory_container"

View file

@ -32,6 +32,7 @@
android:src="@drawable/bottom_navigation_inset"
android:layout_gravity="top"/>
<View
android:id="@+id/cutout_fill"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="?barColor" />

View file

@ -219,7 +219,9 @@ open class MainActivity : BaseActivity(), SnackbarActivity {
}
private fun updateToolbarTitle(destination: NavDestination, arguments: Bundle?) {
viewModel.getToolbarTitle(destination.id, destination.label, arguments?.getString("type")) { title = it }
viewModel.getToolbarTitle(destination.id, destination.label, arguments?.getString("type")) {
title = it
}
drawerFragment?.setSelection(destination.id, null, false)
}

View file

@ -37,8 +37,8 @@ import com.habitrpg.android.habitica.ui.viewHolders.tasks.TodoViewHolder
import com.habitrpg.android.habitica.ui.viewmodels.MainUserViewModel
import com.habitrpg.android.habitica.ui.views.HabiticaIconsHelper
import com.habitrpg.android.habitica.ui.views.dialogs.HabiticaAlertDialog
import javax.inject.Inject
import retrofit2.HttpException
import javax.inject.Inject
class ChallengeDetailFragment : BaseMainFragment<FragmentChallengeDetailBinding>() {
@ -168,6 +168,7 @@ class ChallengeDetailFragment : BaseMainFragment<FragmentChallengeDetailBinding>
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.menu_challenge_details, menu)
val editMenuItem = menu.findItem(R.id.action_edit)
editMenuItem?.isVisible = isCreator

View file

@ -71,6 +71,7 @@ class ChallengesOverviewFragment : BaseMainFragment<FragmentViewpagerBinding>()
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.menu_list_challenges, menu)
@Suppress("Deprecation")

View file

@ -59,6 +59,7 @@ class GuildOverviewFragment : BaseMainFragment<FragmentViewpagerBinding>(), Sear
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
inflater.inflate(R.menu.menu_public_guild, menu)
val searchItem = menu.findItem(R.id.action_search)

View file

@ -99,6 +99,7 @@ class PartyFragment : BaseMainFragment<FragmentViewpagerBinding>() {
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
val group = viewModel.getGroupData().value
if (viewModel.isLeader) {
inflater.inflate(R.menu.menu_party_admin, menu)

View file

@ -138,6 +138,7 @@ open class TaskRecyclerViewFragment : BaseFragment<FragmentRefreshRecyclerviewBi
viewModel?.ownerID?.observe(viewLifecycleOwner) {
canEditTasks = viewModel?.isPersonalBoard ?: true
canScoreTaks = viewModel?.isPersonalBoard ?: true
recyclerAdapter?.canScoreTasks = canScoreTaks
updateTaskSubscription(it)
}
}

View file

@ -79,8 +79,10 @@ class TasksFragment : BaseMainFragment<FragmentViewpagerBinding>(), SearchView.O
val args = TasksFragmentArgs.fromBundle(it)
val taskTypeValue = args.taskType
if (args.ownerID?.isNotBlank() == true) {
viewModel.canSwitchOwners.value = false
viewModel.ownerID.value = args.ownerID ?: viewModel.userID
} else {
viewModel.canSwitchOwners.value = viewModel.appConfigManager.enableTeamBoards()
viewModel.ownerID.value = viewModel.userID
}
if (taskTypeValue?.isNotBlank() == true) {
@ -99,6 +101,10 @@ class TasksFragment : BaseMainFragment<FragmentViewpagerBinding>(), SearchView.O
viewModel.ownerID.observe(viewLifecycleOwner) {
updateBoardDisplay()
}
viewModel.canSwitchOwners.observe(viewLifecycleOwner) {
isTitleInteractive = it ?: false
updateToolbarInteractivity()
}
}
override fun onResume() {
@ -131,6 +137,7 @@ class TasksFragment : BaseMainFragment<FragmentViewpagerBinding>(), SearchView.O
}
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
super.onCreateOptionsMenu(menu, inflater)
if (viewModel.isPersonalBoard) {
inflater.inflate(R.menu.menu_main_activity, menu)
} else {

View file

@ -46,7 +46,7 @@ class TasksViewModel: BaseViewModel() {
lateinit var sharedPreferences: SharedPreferences
private var owners: List<Pair<String, CharSequence>> = listOf()
var canSwitchOwners = MutableLiveData<Boolean?>()
val ownerID: MutableLiveData<String?> by lazy {
MutableLiveData()
}
@ -63,7 +63,15 @@ class TasksViewModel: BaseViewModel() {
init {
compositeSubscription.add(userRepository.getTeamPlans()
.subscribe({
owners = listOf(Pair(userID ?: "", userViewModel.displayName)) + it.map { Pair(it.id, it.summary) }
owners = listOf(Pair(userID ?: "", userViewModel.displayName)) + it.map {
Pair(
it.id,
it.summary
)
}
if (owners.size > 1 && canSwitchOwners.value != false) {
canSwitchOwners.value = owners.size > 1
}
}, RxErrorHandler.handleEmptyError()))
compositeSubscription.add(userRepository.retrieveTeamPlans().subscribe({}, RxErrorHandler.handleEmptyError()))
}

View file

@ -64,16 +64,37 @@ class HabiticaBottomNavigationView @JvmOverloads constructor(
var canAddTasks = true
set(value) {
if (field == value) return
field = value
val animator = ObjectAnimator.ofFloat(0f, 1.0f)
if (field) {
binding.cutoutWrapper.visibility = View.VISIBLE
val params = binding.cutoutFill.layoutParams
params.height = binding.cutoutBackground.height
binding.cutoutFill.layoutParams = params
animator.addUpdateListener {
val reversed = 1.0f - it.animatedFraction
binding.cutoutFill.translationY = -(reversed) * binding.cutoutBackground.height
}
binding.cutoutSpace.visibility = View.VISIBLE
binding.addButtonBackground.visibility = View.VISIBLE
binding.addButtonBackground.animate()
.translationY(0f)
.alpha(1f)
.setDuration(200)
} else {
binding.cutoutWrapper.visibility = View.GONE
binding.cutoutSpace.visibility = View.GONE
binding.addButtonBackground.visibility = View.GONE
val params = binding.cutoutFill.layoutParams
params.height = binding.cutoutBackground.height
binding.cutoutFill.layoutParams = params
animator.addUpdateListener {
binding.cutoutFill.translationY = -it.animatedFraction * (binding.cutoutBackground.height)
}
binding.cutoutSpace.visibility = View.INVISIBLE
binding.addButtonBackground.animate()
.translationY(-binding.addButtonBackground.height.toFloat()/2)
.alpha(0.0f)
.setDuration(200)
}
animator.duration = 200
animator.start()
}
val barHeight: Int