layout fixes

This commit is contained in:
Phillip Thelen 2023-05-17 15:24:18 +02:00
parent 775310ccde
commit 011a4c8097
5 changed files with 31 additions and 34 deletions

View file

@ -79,6 +79,9 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget
}
binding.notificationsRefreshLayout.setOnRefreshListener(this)
lifecycleScope.launchCatching {
viewModel.refreshNotifications()
}
}
override fun onSupportNavigateUp(): Boolean {

View file

@ -9,14 +9,12 @@ import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
import androidx.core.os.bundleOf
import androidx.core.view.setPadding
import androidx.viewbinding.ViewBinding
import com.google.android.material.appbar.AppBarLayout
import com.google.android.material.tabs.TabLayout
import com.google.firebase.analytics.FirebaseAnalytics
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.data.UserRepository
import com.habitrpg.android.habitica.extensions.setScaledPadding
import com.habitrpg.android.habitica.helpers.SoundManager
import com.habitrpg.android.habitica.ui.activities.MainActivity
import com.habitrpg.android.habitica.ui.helpers.ToolbarColorHelper
@ -37,6 +35,10 @@ abstract class BaseMainFragment<VB : ViewBinding> : BaseFragment<VB>() {
val toolbarAccessoryContainer get() = mainActivity?.binding?.content?.toolbarAccessoryContainer
val bottomNavigation get() = mainActivity?.binding?.content?.bottomNavigation
var usesTabLayout: Boolean = false
set(value) {
field = value
updateTabLayoutVisibility()
}
var hidesToolbar: Boolean = false
var usesBottomNavigation = false
@ -53,6 +55,7 @@ abstract class BaseMainFragment<VB : ViewBinding> : BaseFragment<VB>() {
setHasOptionsMenu(true)
tabLayout?.removeAllTabs()
updateTabLayoutVisibility()
updateToolbarInteractivity()
@ -95,7 +98,6 @@ abstract class BaseMainFragment<VB : ViewBinding> : BaseFragment<VB>() {
private fun updateTabLayoutVisibility() {
if (this.usesTabLayout) {
tabLayout?.removeAllTabs()
tabLayout?.visibility = View.VISIBLE
tabLayout?.tabMode = TabLayout.MODE_FIXED
} else {

View file

@ -60,6 +60,7 @@ class NoPartyFragmentFragment : BaseMainFragment<FragmentNoPartyBinding>() {
super.onViewCreated(view, savedInstanceState)
binding?.refreshLayout?.setOnRefreshListener { this.refresh() }
refresh()
binding?.invitationsView?.acceptCall = {
lifecycleScope.launch(ExceptionHandler.coroutine()) {

View file

@ -16,9 +16,9 @@ import androidx.viewpager2.adapter.FragmentStateAdapter
import com.google.android.material.tabs.TabLayoutMediator
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.databinding.FragmentViewpagerBinding
import com.habitrpg.android.habitica.helpers.MainNavigationController
import com.habitrpg.android.habitica.models.social.Group
import com.habitrpg.android.habitica.ui.activities.GroupFormActivity
import com.habitrpg.android.habitica.ui.activities.GroupInviteActivity
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
import com.habitrpg.android.habitica.ui.fragments.social.PartyChatFragment
import com.habitrpg.android.habitica.ui.viewmodels.GroupViewType
@ -108,9 +108,7 @@ class PartyFragment : BaseMainFragment<FragmentViewpagerBinding>() {
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.menu_invite_item -> {
val intent = Intent(mainActivity, GroupInviteActivity::class.java)
intent.putExtra("groupType", "party")
sendInvitesResult.launch(intent)
MainNavigationController.navigate(R.id.partyInvitationFragment)
return true
}
R.id.menu_guild_edit -> {
@ -153,31 +151,6 @@ class PartyFragment : BaseMainFragment<FragmentViewpagerBinding>() {
}
}
private val sendInvitesResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
if (it.resultCode == Activity.RESULT_OK) {
val inviteData = HashMap<String, Any>()
inviteData["inviter"] = viewModel.user.value?.profile?.name ?: ""
val emails = it.data?.getStringArrayExtra(GroupInviteActivity.EMAILS_KEY)
if (!emails.isNullOrEmpty()) {
val invites = ArrayList<HashMap<String, String>>()
emails.forEach { email ->
val invite = HashMap<String, String>()
invite["name"] = ""
invite["email"] = email
invites.add(invite)
}
inviteData["emails"] = invites
}
val userIDs = it.data?.getStringArrayExtra(GroupInviteActivity.USER_IDS_KEY)
if (!userIDs.isNullOrEmpty()) {
val invites = ArrayList<String>()
userIDs.forEach { invites.add(it) }
inviteData["usernames"] = invites
}
viewModel.inviteToGroup(inviteData)
}
}
private fun setViewPagerAdapter() {
val fragmentManager = childFragmentManager

View file

@ -5,11 +5,14 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.distinctUntilChanged
import androidx.viewpager2.adapter.FragmentStateAdapter
import com.google.android.material.tabs.TabLayoutMediator
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.databinding.FragmentViewpagerBinding
import com.habitrpg.android.habitica.ui.fragments.BaseMainFragment
import com.habitrpg.android.habitica.ui.viewmodels.PartyViewModel
import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
@ -17,6 +20,8 @@ class PartyInvitePagerFragment : BaseMainFragment<FragmentViewpagerBinding>() {
override var binding : FragmentViewpagerBinding? = null
internal val viewModel: PartyViewModel by viewModels()
override fun createBinding(
inflater : LayoutInflater,
container : ViewGroup?
@ -32,6 +37,15 @@ class PartyInvitePagerFragment : BaseMainFragment<FragmentViewpagerBinding>() {
this.usesTabLayout = true
this.hidesToolbar = true
showsBackButton = true
viewModel.loadPartyID()
viewModel.getGroupData()
.distinctUntilChanged()
.observe(viewLifecycleOwner) {
binding?.viewPager?.adapter?.notifyDataSetChanged()
usesTabLayout = viewModel.isLeader
}
return super.onCreateView(inflater, container, savedInstanceState)
}
@ -48,7 +62,11 @@ class PartyInvitePagerFragment : BaseMainFragment<FragmentViewpagerBinding>() {
override fun createFragment(position : Int) : Fragment {
return when (position) {
0 -> {
PartySeekingFragment()
if (viewModel.isLeader) {
PartySeekingFragment()
} else {
PartyInviteFragment()
}
}
1 -> {
@ -60,7 +78,7 @@ class PartyInvitePagerFragment : BaseMainFragment<FragmentViewpagerBinding>() {
}
override fun getItemCount() : Int {
return 2
return if (viewModel.isLeader) 2 else 1
}
}
tabLayout?.let {