Possible crash fix for attempted access to fragment before available, fix loader showing on no results

This commit is contained in:
Kelvin K
2025-11-25 11:29:47 -06:00
parent 5b40da109b
commit df4ec87613
4 changed files with 20 additions and 17 deletions
@@ -211,7 +211,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
//State //State
private val _queue: LinkedList<Pair<MainFragment, Any?>> = LinkedList(); private val _queue: LinkedList<Pair<MainFragment, Any?>> = LinkedList();
lateinit var fragCurrent: MainFragment private set; var fragCurrent: MainFragment? = null; private set;
private var _parameterCurrent: Any? = null; private var _parameterCurrent: Any? = null;
var fragBeforeOverlay: MainFragment? = null; private set; var fragBeforeOverlay: MainFragment? = null; private set;
@@ -566,7 +566,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
defaultTab.action(_fragBotBarMenu); defaultTab.action(_fragBotBarMenu);
StateSubscriptions.instance; StateSubscriptions.instance;
fragCurrent.onShown(null, false); fragCurrent?.onShown(null, false);
//Other stuff //Other stuff
rootView.progress = 0f; rootView.progress = 0f;
@@ -1153,7 +1153,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
if (_fragVideoDetail.state == VideoDetailFragment.State.MAXIMIZED && _fragVideoDetail.onBackPressed()) if (_fragVideoDetail.state == VideoDetailFragment.State.MAXIMIZED && _fragVideoDetail.onBackPressed())
return; return;
if (!fragCurrent.onBackPressed()) if (!(fragCurrent?.onBackPressed() ?: true))
closeSegment(); closeSegment();
} }
@@ -1231,27 +1231,27 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
return; return;
} }
fragCurrent.onHide(); fragCurrent?.onHide();
if (segment.isMainView) { if (segment.isMainView) {
var transaction = supportFragmentManager.beginTransaction(); var transaction = supportFragmentManager.beginTransaction();
if (segment.topBar != null) { if (segment.topBar != null) {
if (segment.topBar != fragCurrent.topBar) { if (segment.topBar != fragCurrent?.topBar) {
transaction = transaction transaction = transaction
.show(segment.topBar as Fragment) .show(segment.topBar as Fragment)
.replace(R.id.fragment_top_bar, segment.topBar as Fragment); .replace(R.id.fragment_top_bar, segment.topBar as Fragment);
fragCurrent.topBar?.onHide(); fragCurrent?.topBar?.onHide();
} }
} else if (fragCurrent.topBar != null) } else if (fragCurrent?.topBar != null)
transaction.hide(fragCurrent.topBar as Fragment); transaction.hide(fragCurrent?.topBar as Fragment);
transaction = transaction.replace(R.id.fragment_main, segment); transaction = transaction.replace(R.id.fragment_main, segment);
if (segment.hasBottomBar) { if (segment.hasBottomBar) {
if (!fragCurrent.hasBottomBar) if (!(fragCurrent?.hasBottomBar ?: false))
transaction = transaction.show(_fragBotBarMenu); transaction = transaction.show(_fragBotBarMenu);
} else { } else {
if (fragCurrent.hasBottomBar) if (fragCurrent?.hasBottomBar ?: false)
transaction = transaction.hide(_fragBotBarMenu); transaction = transaction.hide(_fragBotBarMenu);
} }
transaction.commitNow(); transaction.commitNow();
@@ -1264,10 +1264,10 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
} }
} }
if (fragCurrent.isHistory && withHistory && _queue.lastOrNull() != fragCurrent) if (fragCurrent?.isHistory ?: false && withHistory && _queue.lastOrNull() != fragCurrent)
_queue.add(Pair(fragCurrent, _parameterCurrent)); _queue.add(Pair(fragCurrent!!, _parameterCurrent));
if (segment.isOverlay && !fragCurrent.isOverlay && withHistory)// && fragCurrent.isHistory) if (segment.isOverlay && !(fragCurrent?.isOverlay ?: false) && withHistory)// && fragCurrent.isHistory)
fragBeforeOverlay = fragCurrent; fragBeforeOverlay = fragCurrent;
fragCurrent = segment; fragCurrent = segment;
@@ -1364,7 +1364,7 @@ class MainActivity : AppCompatActivity, IWithResultLauncher {
private fun updateSegmentPaddings() { private fun updateSegmentPaddings() {
var paddingBottom = 0f; var paddingBottom = 0f;
if (fragCurrent.hasBottomBar) if (fragCurrent?.hasBottomBar ?: false)
paddingBottom += HEIGHT_MENU_DP; paddingBottom += HEIGHT_MENU_DP;
_fragContainerOverlay.setPadding( _fragContainerOverlay.setPadding(
@@ -6,7 +6,7 @@ import com.futo.platformplayer.activities.MainActivity
import com.futo.platformplayer.fragment.mainactivity.main.MainFragment import com.futo.platformplayer.fragment.mainactivity.main.MainFragment
open class MainActivityFragment : Fragment() { open class MainActivityFragment : Fragment() {
protected val currentMain : MainFragment protected val currentMain : MainFragment?
get() { get() {
isValidMainActivity(); isValidMainActivity();
return (activity as MainActivity).fragCurrent; return (activity as MainActivity).fragCurrent;
@@ -484,7 +484,8 @@ abstract class FeedView<TFragment, TResult, TConverted, TPager, TViewHolder> : L
recyclerData.resultsUnfiltered.addAll(toAdd); recyclerData.resultsUnfiltered.addAll(toAdd);
recyclerData.adapter.notifyDataSetChanged(); recyclerData.adapter.notifyDataSetChanged();
recyclerData.loadedFeedStyle = feedStyle; recyclerData.loadedFeedStyle = feedStyle;
ensureEnoughContentVisible(filteredResults) if(pager.hasMorePages())
ensureEnoughContentVisible(filteredResults)
} }
private fun detachPagerEvents() { private fun detachPagerEvents() {
@@ -365,8 +365,10 @@ class HomeFragment : MainFragment() {
finishRefreshLayoutLoader(); finishRefreshLayoutLoader();
setLoading(false); setLoading(false);
setPager(pager); setPager(pager);
if(pager.getResults().isEmpty() && !pager.hasMorePages()) if(pager.getResults().isEmpty() && !pager.hasMorePages()) {
setLoading(false);
setEmptyPager(true); setEmptyPager(true);
}
} }
} }