Implemented a warning before adding duplicate to playlist.

This commit is contained in:
Jared Fantaye 2022-12-05 00:15:05 +01:00 committed by Stypox
parent 262b3a2945
commit fdfeac081a
No known key found for this signature in database
GPG key ID: 4BDF1B40A49FDD23
4 changed files with 49 additions and 1 deletions

View file

@ -1,5 +1,6 @@
package org.schabi.newpipe.local.dialog;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@ -128,6 +129,19 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
private void onPlaylistSelected(@NonNull final LocalPlaylistManager manager,
@NonNull final PlaylistMetadataEntry playlist,
@NonNull final List<StreamEntity> streams) {
final int numOfDuplicates = manager.getPlaylistDuplicates(playlist.uid,
streams.get(0).getUrl()).blockingFirst();
if (numOfDuplicates > 0) {
createDuplicateDialog(numOfDuplicates, manager, playlist, streams);
} else {
addStreamToPlaylist(manager, playlist, streams);
}
}
private void addStreamToPlaylist(@NonNull final LocalPlaylistManager manager,
@NonNull final PlaylistMetadataEntry playlist,
@NonNull final List<StreamEntity> streams) {
final Toast successToast = Toast.makeText(getContext(),
R.string.playlist_add_stream_success, Toast.LENGTH_SHORT);
@ -142,7 +156,23 @@ public final class PlaylistAppendDialog extends PlaylistDialog {
playlistDisposables.add(manager.appendToPlaylist(playlist.uid, streams)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(ignored -> successToast.show()));
requireDialog().dismiss();
}
private void createDuplicateDialog(final int duplicates,
@NonNull final LocalPlaylistManager manager,
@NonNull final PlaylistMetadataEntry playlist,
@NonNull final List<StreamEntity> streams) {
//TODO: change color
final AlertDialog.Builder builder = new AlertDialog.Builder(this.getActivity());
builder.setTitle(R.string.duplicate_stream_in_playlist_title);
builder.setMessage(getString(R.string.duplicate_stream_in_playlist_description,
duplicates));
builder.setPositiveButton(android.R.string.yes, (dialog, i) -> {
addStreamToPlaylist(manager, playlist, streams);
});
builder.setNeutralButton(R.string.cancel, null);
builder.create().show();
}
}

View file

@ -91,6 +91,10 @@ public class LocalPlaylistManager {
return playlistStreamTable.getOrderedStreamsOf(playlistId).subscribeOn(Schedulers.io());
}
public Flowable<Integer> getPlaylistDuplicates(final long playlistId, final String streamURL) {
return playlistStreamTable.getDuplicates(playlistId, streamURL);
}
public Single<Integer> deletePlaylist(final long playlistId) {
return Single.fromCallable(() -> playlistTable.deletePlaylist(playlistId))
.subscribeOn(Schedulers.io());