From 011a4c809787936de31d2248dce17bd6f71ce45b Mon Sep 17 00:00:00 2001 From: Phillip Thelen Date: Wed, 17 May 2023 15:24:18 +0200 Subject: [PATCH] layout fixes --- .../ui/activities/NotificationsActivity.kt | 3 ++ .../habitica/ui/fragments/BaseMainFragment.kt | 8 +++-- .../social/party/NoPartyFragmentFragment.kt | 1 + .../fragments/social/party/PartyFragment.kt | 31 ++----------------- .../social/party/PartyInvitePagerFragment.kt | 22 +++++++++++-- 5 files changed, 31 insertions(+), 34 deletions(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt index e074fe090..d0f3f828f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/activities/NotificationsActivity.kt @@ -79,6 +79,9 @@ class NotificationsActivity : BaseActivity(), androidx.swiperefreshlayout.widget } binding.notificationsRefreshLayout.setOnRefreshListener(this) + lifecycleScope.launchCatching { + viewModel.refreshNotifications() + } } override fun onSupportNavigateUp(): Boolean { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.kt index a49759db3..f2da124f7 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/BaseMainFragment.kt @@ -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 : BaseFragment() { 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 : BaseFragment() { setHasOptionsMenu(true) + tabLayout?.removeAllTabs() updateTabLayoutVisibility() updateToolbarInteractivity() @@ -95,7 +98,6 @@ abstract class BaseMainFragment : BaseFragment() { private fun updateTabLayoutVisibility() { if (this.usesTabLayout) { - tabLayout?.removeAllTabs() tabLayout?.visibility = View.VISIBLE tabLayout?.tabMode = TabLayout.MODE_FIXED } else { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/NoPartyFragmentFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/NoPartyFragmentFragment.kt index 50dbf7d7e..0e38beb11 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/NoPartyFragmentFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/NoPartyFragmentFragment.kt @@ -60,6 +60,7 @@ class NoPartyFragmentFragment : BaseMainFragment() { super.onViewCreated(view, savedInstanceState) binding?.refreshLayout?.setOnRefreshListener { this.refresh() } + refresh() binding?.invitationsView?.acceptCall = { lifecycleScope.launch(ExceptionHandler.coroutine()) { diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.kt index 6cbc3e9d8..aec9d9f5b 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyFragment.kt @@ -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() { 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() { } } - private val sendInvitesResult = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { - if (it.resultCode == Activity.RESULT_OK) { - val inviteData = HashMap() - inviteData["inviter"] = viewModel.user.value?.profile?.name ?: "" - val emails = it.data?.getStringArrayExtra(GroupInviteActivity.EMAILS_KEY) - if (!emails.isNullOrEmpty()) { - val invites = ArrayList>() - emails.forEach { email -> - val invite = HashMap() - 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() - userIDs.forEach { invites.add(it) } - inviteData["usernames"] = invites - } - viewModel.inviteToGroup(inviteData) - } - } - private fun setViewPagerAdapter() { val fragmentManager = childFragmentManager diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInvitePagerFragment.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInvitePagerFragment.kt index d96437ea9..3fd30f269 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInvitePagerFragment.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/ui/fragments/social/party/PartyInvitePagerFragment.kt @@ -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() { 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() { 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() { 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() { } override fun getItemCount() : Int { - return 2 + return if (viewModel.isLeader) 2 else 1 } } tabLayout?.let {