Skip to content

Commit

Permalink
handle ContentNotSupportedException for Channel Fragment (when an use…
Browse files Browse the repository at this point in the history
…r has no video tab)
  • Loading branch information
B0pol committed Apr 9, 2020
1 parent c392804 commit 769ebe2
Show file tree
Hide file tree
Showing 3 changed files with 51 additions and 5 deletions.
2 changes: 1 addition & 1 deletion app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ dependencies {
exclude module: 'support-annotations'
})

implementation 'com.github.B0pol:NewPipeExtractor:9a7c6b7ab00c0f5b8337232fc66d3d9b538c229f'
implementation 'com.github.TeamNewPipe:NewPipeExtractor:a5155fb'
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.23.0'

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
Expand All @@ -30,6 +31,7 @@
import org.schabi.newpipe.extractor.ListExtractor;
import org.schabi.newpipe.extractor.NewPipe;
import org.schabi.newpipe.extractor.channel.ChannelInfo;
import org.schabi.newpipe.extractor.exceptions.ContentNotSupportedException;
import org.schabi.newpipe.extractor.exceptions.ExtractionException;
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
import org.schabi.newpipe.fragments.list.BaseListInfoFragment;
Expand All @@ -45,6 +47,7 @@
import org.schabi.newpipe.util.ShareUtils;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.concurrent.TimeUnit;

Expand Down Expand Up @@ -83,6 +86,9 @@ public class ChannelFragment extends BaseListInfoFragment<ChannelInfo> {
private LinearLayout headerPopupButton;
private LinearLayout headerBackgroundButton;
private MenuItem menuRssButton;
private TextView contentNotSupportedTextView;
private TextView kaomojiTextView;
private TextView noVideosTextView;

public static ChannelFragment getInstance(final int serviceId, final String url,
final String name) {
Expand Down Expand Up @@ -118,6 +124,14 @@ public View onCreateView(@NonNull final LayoutInflater inflater,
return inflater.inflate(R.layout.fragment_channel, container, false);
}

@Override
public void onViewCreated(final View rootView, final Bundle savedInstanceState) {
super.onViewCreated(rootView, savedInstanceState);
contentNotSupportedTextView = rootView.findViewById(R.id.error_content_not_supported);
kaomojiTextView = rootView.findViewById(R.id.channel_kaomoji);
noVideosTextView = rootView.findViewById(R.id.channel_no_videos);
}

@Override
public void onDestroy() {
super.onDestroy();
Expand Down Expand Up @@ -234,7 +248,7 @@ private void monitorSubscription(final ChannelInfo info) {
.debounce(100, TimeUnit.MILLISECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe((List<SubscriptionEntity> subscriptionEntities) ->
updateSubscribeButton(!subscriptionEntities.isEmpty()), onError));
updateSubscribeButton(!subscriptionEntities.isEmpty()), onError));

}

Expand Down Expand Up @@ -417,9 +431,23 @@ public void handleResult(@NonNull final ChannelInfo result) {

playlistCtrl.setVisibility(View.VISIBLE);

if (!result.getErrors().isEmpty()) {
showSnackBarError(result.getErrors(), UserAction.REQUESTED_CHANNEL,
NewPipe.getNameOfService(result.getServiceId()), result.getUrl(), 0);
List<Throwable> errors = new ArrayList<>(result.getErrors());
if (!errors.isEmpty()) {

// handling ContentNotSupportedException not to show the error but an appropriate string
// so that crashes won't be sent uselessly and the user will understand what happened
for (Iterator<Throwable> it = errors.iterator(); it.hasNext(); ) {
Throwable throwable = it.next();
if (throwable instanceof ContentNotSupportedException) {
showContentNotSupported();
it.remove();
}
}

if (!errors.isEmpty()) {
showSnackBarError(errors, UserAction.REQUESTED_CHANNEL,
NewPipe.getNameOfService(result.getServiceId()), result.getUrl(), 0);
}
}

if (disposables != null) {
Expand All @@ -439,6 +467,13 @@ public void handleResult(@NonNull final ChannelInfo result) {
.playOnBackgroundPlayer(activity, getPlayQueue(), false));
}

private void showContentNotSupported() {
contentNotSupportedTextView.setVisibility(View.VISIBLE);
kaomojiTextView.setText("(︶︹︺)");
kaomojiTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 45f);
noVideosTextView.setVisibility(View.GONE);
}

private PlayQueue getPlayQueue() {
return getPlayQueue(0);
}
Expand Down
11 changes: 11 additions & 0 deletions app/src/main/res/layout/fragment_channel.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
tools:visibility="visible">

<TextView
android:id="@+id/channel_kaomoji"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
Expand All @@ -42,12 +43,22 @@
tools:ignore="HardcodedText,UnusedAttribute"/>

<TextView
android:id="@+id/channel_no_videos"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/empty_view_no_videos"
android:textSize="24sp"/>

<TextView
android:layout_marginTop="20dp"
android:id="@+id/error_content_not_supported"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/content_not_supported"
android:textSize="15sp"
android:visibility="gone" />

</LinearLayout>

<!--ERROR PANEL-->
Expand Down

0 comments on commit 769ebe2

Please sign in to comment.