diff --git a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java index c1cea305b08..5a4eab6e831 100644 --- a/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java +++ b/app/src/main/java/org/schabi/newpipe/local/playlist/LocalPlaylistFragment.java @@ -352,8 +352,8 @@ public void onComplete() { @Override public boolean onOptionsItemSelected(final MenuItem item) { if (item.getItemId() == R.id.menu_item_share_playlist) { - if (sharedPreferences.getBoolean(requireContext().getString( - R.string.share_playlist_with_details_can_show_dialog_key), true)) { + if (!sharedPreferences.getBoolean(requireContext().getString( + R.string.remember_local_playlist_sharing_option_key), false)) { createShareConfirmationDialog(); } else { sharePlaylist(); @@ -388,14 +388,19 @@ public boolean onOptionsItemSelected(final MenuItem item) { * Share the playlist as a newline-separated list of stream URLs and video names. */ private void sharePlaylist() { + final Context context = getContext(); + if (context == null) { + return; + } + final boolean shouldSharePlaylistDetails = sharedPreferences.getBoolean( - requireContext().getString(R.string.share_playlist_with_details_key), false); + context.getString(R.string.share_playlist_with_details_key), false); disposables.add(playlistManager.getPlaylistStreams(playlistId) .flatMapSingle(playlist -> Single.just(playlist.stream() .map(PlaylistStreamEntry::getStreamEntity) .map(streamEntity -> { if (shouldSharePlaylistDetails) { - return String.format("- %s: %s", + return context.getString(R.string.video_details_list_item, streamEntity.getTitle(), streamEntity.getUrl()); } else { return streamEntity.getUrl(); @@ -404,8 +409,9 @@ private void sharePlaylist() { .collect(Collectors.joining("\n")))) .observeOn(AndroidSchedulers.mainThread()) .subscribe(urlsText -> ShareUtils.shareText( - requireContext(), name, shouldSharePlaylistDetails - ? String.format("%s\n%s", name, urlsText) : urlsText), + context, name, shouldSharePlaylistDetails + ? context.getString(R.string.share_playlist_content_details, + name, urlsText) : urlsText), throwable -> showUiErrorSnackbar(this, "Sharing playlist", throwable))); } @@ -877,26 +883,26 @@ private void createShareConfirmationDialog() { .setCancelable(true) .setView(dialogBinding.getRoot()) .setPositiveButton(R.string.share_playlist_with_details, (dialog, which) -> { - sharedPreferences.edit() - .putBoolean(requireContext().getString( - R.string.share_playlist_with_details_can_show_dialog_key), - !dialogBinding.rememberChoiceCheckBox.isChecked()) - .putBoolean(requireContext().getString( - R.string.share_playlist_with_details_key), true) - .commit(); - sharePlaylist(); + savePreferencesAndSharePlaylist( + dialogBinding.rememberChoiceCheckBox.isChecked(), true); }) .setNegativeButton(R.string.share_playlist_with_list, (dialog, which) -> { - sharedPreferences.edit() - .putBoolean(requireContext().getString( - R.string.share_playlist_with_details_can_show_dialog_key), - !dialogBinding.rememberChoiceCheckBox.isChecked()) - .putBoolean(requireContext().getString( - R.string.share_playlist_with_details_key), false) - .commit(); - sharePlaylist(); + savePreferencesAndSharePlaylist( + dialogBinding.rememberChoiceCheckBox.isChecked(), false); }) .show(); } + + private void savePreferencesAndSharePlaylist(final boolean rememberPlaylistSharingOption, + final boolean sharePlaylistWithDetails) { + sharedPreferences.edit() + .putBoolean(requireContext().getString( + R.string.remember_local_playlist_sharing_option_key), + rememberPlaylistSharingOption) + .putBoolean(requireContext().getString( + R.string.share_playlist_with_details_key), sharePlaylistWithDetails) + .apply(); + sharePlaylist(); + } } diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index 11e9fa9f9f3..005bf2b5459 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -25,7 +25,7 @@ clear_queue_confirmation_key ignore_hardware_media_buttons_key share_playlist_with_details_key - share_playlist_with_details_can_show_dialog_key + remember_local_playlist_sharing_option_key popup_saved_width popup_saved_x diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f491004f37c..ab9d0e1e929 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -812,9 +812,11 @@ Channel tabs What tabs are shown on the channel pages Share Playlist - Share playlist with details such as playlist name and video titles Or a simply share a list of video links + Share playlist with details such as playlist name and video titles or as a simple list of video URLs Share with details - Share list + Share URL list Remember my choice Share playlist with details such as playlist name and video titles - \ No newline at end of file + - %s: %s + %s\n%s +