Skip to content

Commit 973c74b

Browse files
committed
Deduplicate actions
The code for the matching StreamDialogEntries was copy-pasted. It is now possible to use the entries directly.
1 parent a0616c7 commit 973c74b

File tree

1 file changed

+21
-77
lines changed

1 file changed

+21
-77
lines changed

app/src/main/java/org/schabi/newpipe/info_list/holder/StreamMiniInfoItemHolder.java

Lines changed: 21 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package org.schabi.newpipe.info_list.holder;
22

33
import android.content.Context;
4-
import android.net.Uri;
54
import android.os.Bundle;
65
import android.view.View;
76
import android.view.ViewGroup;
87
import android.widget.ImageView;
98
import android.widget.TextView;
109

10+
import androidx.annotation.NonNull;
1111
import androidx.appcompat.app.AppCompatActivity;
1212
import androidx.core.content.ContextCompat;
1313
import androidx.core.view.AccessibilityDelegateCompat;
@@ -17,35 +17,23 @@
1717
import androidx.preference.PreferenceManager;
1818

1919
import org.schabi.newpipe.R;
20-
import org.schabi.newpipe.database.stream.model.StreamEntity;
2120
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
22-
import org.schabi.newpipe.download.DownloadDialog;
23-
import org.schabi.newpipe.error.ErrorInfo;
24-
import org.schabi.newpipe.error.ErrorUtil;
25-
import org.schabi.newpipe.error.UserAction;
2621
import org.schabi.newpipe.extractor.InfoItem;
2722
import org.schabi.newpipe.extractor.stream.StreamInfoItem;
2823
import org.schabi.newpipe.info_list.InfoItemBuilder;
24+
import org.schabi.newpipe.info_list.dialog.StreamDialogDefaultEntry;
2925
import org.schabi.newpipe.ktx.ViewUtils;
30-
import org.schabi.newpipe.local.dialog.PlaylistAppendDialog;
31-
import org.schabi.newpipe.local.dialog.PlaylistDialog;
3226
import org.schabi.newpipe.local.history.HistoryRecordManager;
3327
import org.schabi.newpipe.player.helper.PlayerHolder;
3428
import org.schabi.newpipe.util.DependentPreferenceHelper;
3529
import org.schabi.newpipe.util.Localization;
36-
import org.schabi.newpipe.util.NavigationHelper;
37-
import org.schabi.newpipe.util.SparseItemUtil;
3830
import org.schabi.newpipe.util.StreamTypeUtil;
3931
import org.schabi.newpipe.util.external_communication.KoreUtils;
40-
import org.schabi.newpipe.util.external_communication.ShareUtils;
4132
import org.schabi.newpipe.util.image.CoilHelper;
4233
import org.schabi.newpipe.views.AnimatedProgressBar;
4334

44-
import java.util.List;
4535
import java.util.concurrent.TimeUnit;
4636

47-
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
48-
4937
public class StreamMiniInfoItemHolder extends InfoItemHolder {
5038
public final ImageView itemThumbnailView;
5139
public final TextView itemVideoTitleView;
@@ -178,8 +166,9 @@ private void enableLongClick(final StreamInfoItem item) {
178166
private void updateAccessibilityActions(final StreamInfoItem item) {
179167
ViewCompat.setAccessibilityDelegate(itemView, new AccessibilityDelegateCompat() {
180168
@Override
181-
public void onInitializeAccessibilityNodeInfo(final View host,
182-
final AccessibilityNodeInfoCompat info) {
169+
public void onInitializeAccessibilityNodeInfo(
170+
@NonNull final View host,
171+
@NonNull final AccessibilityNodeInfoCompat info) {
183172
super.onInitializeAccessibilityNodeInfo(host, info);
184173

185174
final Context context = itemBuilder.getContext();
@@ -256,99 +245,54 @@ public void onInitializeAccessibilityNodeInfo(final View host,
256245
}
257246

258247
@Override
259-
public boolean performAccessibilityAction(final View host, final int action,
248+
public boolean performAccessibilityAction(@NonNull final View host, final int action,
260249
final Bundle args) {
261250
final Context context = itemBuilder.getContext();
251+
final FragmentActivity fActivity = ((FragmentActivity) context);
252+
262253
if (context == null) {
263254
return super.performAccessibilityAction(host, action, args);
264255
}
265256

266257
if (action == R.id.accessibility_action_show_options) {
258+
// display stream dialog
267259
if (itemBuilder.getOnStreamSelectedListener() != null) {
268260
itemBuilder.getOnStreamSelectedListener().held(item);
269261
}
270262
return true;
271263
} else if (action == R.id.accessibility_action_enqueue) {
272-
SparseItemUtil.fetchItemInfoIfSparse(context, item,
273-
singlePlayQueue -> NavigationHelper.enqueueOnPlayer(
274-
context, singlePlayQueue));
264+
StreamDialogDefaultEntry.ENQUEUE.action.onClick(fActivity, item);
275265
return true;
276266
} else if (action == R.id.accessibility_action_enqueue_next) {
277-
SparseItemUtil.fetchItemInfoIfSparse(context, item,
278-
singlePlayQueue -> NavigationHelper.enqueueNextOnPlayer(
279-
context, singlePlayQueue));
267+
StreamDialogDefaultEntry.ENQUEUE_NEXT.action.onClick(fActivity, item);
280268
return true;
281269
} else if (action == R.id.accessibility_action_background) {
282-
SparseItemUtil.fetchItemInfoIfSparse(context, item, singlePlayQueue ->
283-
NavigationHelper.playOnBackgroundPlayer(
284-
context, singlePlayQueue, true));
270+
StreamDialogDefaultEntry.START_HERE_ON_BACKGROUND.action.onClick(
271+
fActivity, item);
285272
return true;
286273
} else if (action == R.id.accessibility_action_popup) {
287-
SparseItemUtil.fetchItemInfoIfSparse(context, item, singlePlayQueue ->
288-
NavigationHelper.playOnPopupPlayer(
289-
context, singlePlayQueue, true));
274+
StreamDialogDefaultEntry.START_HERE_ON_POPUP.action.onClick(fActivity, item);
290275
return true;
291276
} else if (action == R.id.accessibility_action_download) {
292-
SparseItemUtil.fetchStreamInfoAndSaveToDatabase(context,
293-
item.getServiceId(),
294-
item.getUrl(), info -> {
295-
final FragmentActivity activity = (FragmentActivity) context;
296-
if (!activity.isFinishing() && !activity.isDestroyed()) {
297-
final DownloadDialog downloadDialog =
298-
new DownloadDialog(context, info);
299-
downloadDialog.show(activity.getSupportFragmentManager(),
300-
"downloadDialog");
301-
}
302-
});
277+
StreamDialogDefaultEntry.DOWNLOAD.action.onClick(fActivity, item);
303278
return true;
304279
} else if (action == R.id.accessibility_action_playlist) {
305-
final FragmentActivity activity = (FragmentActivity) context;
306-
PlaylistDialog.createCorrespondingDialog(
307-
context,
308-
List.of(new StreamEntity(item)),
309-
dialog -> dialog.show(
310-
activity.getSupportFragmentManager(),
311-
"StreamDialogEntry@"
312-
+ (dialog instanceof PlaylistAppendDialog
313-
? "append" : "create")
314-
+ "_playlist"
315-
)
316-
);
280+
StreamDialogDefaultEntry.APPEND_PLAYLIST.action.onClick(fActivity, item);
317281
return true;
318282
} else if (action == R.id.accessibility_action_share) {
319-
ShareUtils.shareText(context, item.getName(),
320-
item.getUrl(), item.getThumbnails());
283+
StreamDialogDefaultEntry.SHARE.action.onClick(fActivity, item);
321284
return true;
322285
} else if (action == R.id.accessibility_action_browser) {
323-
ShareUtils.openUrlInBrowser(context, item.getUrl());
286+
StreamDialogDefaultEntry.OPEN_IN_BROWSER.action.onClick(fActivity, item);
324287
return true;
325288
} else if (action == R.id.accessibility_action_kodi) {
326-
KoreUtils.playWithKore(context, Uri.parse(item.getUrl()));
289+
StreamDialogDefaultEntry.PLAY_WITH_KODI.action.onClick(fActivity, item);
327290
return true;
328291
} else if (action == R.id.accessibility_action_mark_watched) {
329-
new HistoryRecordManager(context)
330-
.markAsWatched(item)
331-
.doOnError(error -> {
332-
ErrorUtil.showSnackbar(
333-
context,
334-
new ErrorInfo(
335-
error,
336-
UserAction.OPEN_INFO_ITEM_DIALOG,
337-
"Got an error when trying to mark as watched"
338-
)
339-
);
340-
})
341-
.onErrorComplete()
342-
.observeOn(AndroidSchedulers.mainThread())
343-
.subscribe();
292+
StreamDialogDefaultEntry.MARK_AS_WATCHED.action.onClick(fActivity, item);
344293
return true;
345294
} else if (action == R.id.accessibility_action_channel_details) {
346-
SparseItemUtil.fetchUploaderUrlIfSparse((AppCompatActivity) context,
347-
item.getServiceId(), item.getUrl(),
348-
item.getUploaderUrl(),
349-
url -> NavigationHelper.openChannelFragment(
350-
((AppCompatActivity) context).getSupportFragmentManager(),
351-
item.getServiceId(), url, item.getUploaderName()));
295+
StreamDialogDefaultEntry.SHOW_CHANNEL_DETAILS.action.onClick(fActivity, item);
352296
return true;
353297
}
354298

0 commit comments

Comments
 (0)