diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/FeedView.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/FeedView.kt index d6c2c1bf..1f061d14 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/FeedView.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/FeedView.kt @@ -39,6 +39,7 @@ abstract class FeedView : L private val _spinnerSortBy: Spinner; private val _containerSortBy: LinearLayout; private val _tagsView: TagsView; + private val _textCentered: TextView; protected val _toolbarContentView: LinearLayout; @@ -68,6 +69,7 @@ abstract class FeedView : L this.fragment = fragment; inflater.inflate(R.layout.fragment_feed, this); + _textCentered = findViewById(R.id.text_centered); _progress_bar = findViewById(R.id.progress_bar); _progress_bar.inactiveColor = Color.TRANSPARENT; @@ -169,6 +171,10 @@ abstract class FeedView : L _recyclerResults.addOnScrollListener(_scrollListener); } + protected fun setTextCentered(text: String?) { + _textCentered.text = text; + } + fun onResume() { //Reload the pager if the plugin was killed val pager = recyclerData.pager; diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ImportSubscriptionsFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ImportSubscriptionsFragment.kt index 18729fbe..4a6912ec 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ImportSubscriptionsFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/ImportSubscriptionsFragment.kt @@ -69,6 +69,8 @@ class ImportSubscriptionsFragment : MainFragment() { private var _currentLoadIndex = 0; private var _taskLoadChannel: TaskHandler; + private var _counter: Int = 0; + private var _limitToastShown = false; constructor(fragment: ImportSubscriptionsFragment, inflater: LayoutInflater) : super(inflater.context) { _fragment = fragment; @@ -104,6 +106,7 @@ class ImportSubscriptionsFragment : MainFragment() { setLoading(false); _taskLoadChannel = TaskHandler({_fragment.lifecycleScope}, { link -> + _counter++; val channel: IPlatformChannel = StatePlatform.instance.getChannelLive(link, false); return@TaskHandler channel; }).success { @@ -124,6 +127,8 @@ class ImportSubscriptionsFragment : MainFragment() { } fun onShown(parameter: Any ?, isBack: Boolean) { + _counter = 0; + _limitToastShown = false; updateSelected(); val itemsRemoved = _items.size; @@ -157,6 +162,15 @@ class ImportSubscriptionsFragment : MainFragment() { private fun load() { setLoading(true); + if (_counter >= MAXIMUM_BATCH_SIZE) { + if (!_limitToastShown) { + _limitToastShown = true; + UIDialogs.toast(context, "Stopped after $MAXIMUM_BATCH_SIZE to avoid rate limit, re-enter to import rest"); + } + + setLoading(false); + return; + } _taskLoadChannel.run(_links[_currentLoadIndex]); } @@ -196,6 +210,7 @@ class ImportSubscriptionsFragment : MainFragment() { companion object { val TAG = "ImportSubscriptionsFragment"; + private const val MAXIMUM_BATCH_SIZE = 75; fun newInstance() = ImportSubscriptionsFragment().apply {} } } \ No newline at end of file diff --git a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt index 061e42e8..5cd2c3fb 100644 --- a/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt +++ b/app/src/main/java/com/futo/platformplayer/fragment/mainactivity/main/SubscriptionsFeedFragment.kt @@ -13,6 +13,7 @@ import com.futo.platformplayer.api.media.models.contents.ContentType import com.futo.platformplayer.api.media.models.contents.IPlatformContent import com.futo.platformplayer.api.media.models.video.IPlatformVideo import com.futo.platformplayer.api.media.platforms.js.JSClient +import com.futo.platformplayer.api.media.structures.EmptyPager import com.futo.platformplayer.api.media.structures.IPager import com.futo.platformplayer.cache.ChannelContentCache import com.futo.platformplayer.constructs.TaskHandler @@ -280,8 +281,12 @@ class SubscriptionsFeedFragment : MainFragment() { Logger.i(TAG, "Subscriptions load"); if(recyclerData.results.size == 0) { val cachePager = ChannelContentCache.instance.getSubscriptionCachePager(); - Logger.i(TAG, "Subscription show cache (${cachePager.getResults().size})"); + val results = cachePager.getResults(); + Logger.i(TAG, "Subscription show cache (${results.size})"); + setTextCentered(if (results.isEmpty()) "No results found\nSwipe down to refresh" else null); setPager(cachePager); + } else { + setTextCentered(null); } _taskGetPager.run(withRefetch); } @@ -294,6 +299,7 @@ class SubscriptionsFeedFragment : MainFragment() { finishRefreshLayoutLoader(); setLoading(false); setPager(pager); + setTextCentered(if (pager.getResults().isEmpty()) "No results found\nSwipe down to refresh" else null); } catch (e: Throwable) { Logger.e(TAG, "Failed to finish loading", e) } diff --git a/app/src/main/java/com/futo/platformplayer/images/PolycentricModelLoader.java b/app/src/main/java/com/futo/platformplayer/images/PolycentricModelLoader.java index 1b8a3e76..a521a2fb 100644 --- a/app/src/main/java/com/futo/platformplayer/images/PolycentricModelLoader.java +++ b/app/src/main/java/com/futo/platformplayer/images/PolycentricModelLoader.java @@ -61,9 +61,21 @@ public class PolycentricModelLoader implements ModelLoader { _deferred.invokeOnCompletion(throwable -> { if (throwable != null) { callback.onLoadFailed(new Exception(throwable)); + return Unit.INSTANCE; + } + + Deferred deferred = _deferred; + if (deferred == null) { + callback.onLoadFailed(new Exception("Deferred is null")); + return Unit.INSTANCE; + } + + ByteBuffer completed = deferred.getCompleted(); + if (completed != null) { + callback.onDataReady(completed); + } else { + callback.onLoadFailed(new Exception("Completed is null")); } - final ByteBuffer completed = _deferred.getCompleted(); - callback.onDataReady(completed); return Unit.INSTANCE; }); } diff --git a/app/src/main/res/layout/fragment_feed.xml b/app/src/main/res/layout/fragment_feed.xml index 006c53fb..6325134c 100644 --- a/app/src/main/res/layout/fragment_feed.xml +++ b/app/src/main/res/layout/fragment_feed.xml @@ -76,22 +76,37 @@ android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior"> - - + + android:layout_height="wrap_content"> + - - + + + +