mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 15:23:00 +00:00 
			
		
		
		
	Fix inconsistency between user interaction and database commit order when re-adding videos to the playlist
This commit is contained in:
		| @@ -54,6 +54,7 @@ import androidx.appcompat.content.res.AppCompatResources; | ||||
| import androidx.appcompat.widget.Toolbar; | ||||
| import androidx.coordinatorlayout.widget.CoordinatorLayout; | ||||
| import androidx.core.content.ContextCompat; | ||||
| import androidx.fragment.app.Fragment; | ||||
| import androidx.preference.PreferenceManager; | ||||
|  | ||||
| import com.google.android.exoplayer2.PlaybackException; | ||||
| @@ -89,6 +90,7 @@ import org.schabi.newpipe.fragments.list.videos.RelatedItemsFragment; | ||||
| import org.schabi.newpipe.ktx.AnimationType; | ||||
| import org.schabi.newpipe.local.dialog.PlaylistDialog; | ||||
| import org.schabi.newpipe.local.history.HistoryRecordManager; | ||||
| import org.schabi.newpipe.local.playlist.LocalPlaylistFragment; | ||||
| import org.schabi.newpipe.player.Player; | ||||
| import org.schabi.newpipe.player.PlayerService; | ||||
| import org.schabi.newpipe.player.PlayerType; | ||||
| @@ -472,10 +474,21 @@ public final class VideoDetailFragment | ||||
|  | ||||
|         binding.detailControlsBackground.setOnClickListener(v -> openBackgroundPlayer(false)); | ||||
|         binding.detailControlsPopup.setOnClickListener(v -> openPopupPlayer(false)); | ||||
|         binding.detailControlsPlaylistAppend.setOnClickListener(makeOnClickListener(info -> | ||||
|         binding.detailControlsPlaylistAppend.setOnClickListener(makeOnClickListener(info -> { | ||||
|             if (getFM() != null && currentInfo != null) { | ||||
|                 final Fragment fragment = getParentFragmentManager(). | ||||
|                         findFragmentById(R.id.fragment_holder); | ||||
|  | ||||
|                 // commit previous pending changes to database | ||||
|                 if (fragment instanceof LocalPlaylistFragment) { | ||||
|                     ((LocalPlaylistFragment) fragment).commitChanges(); | ||||
|                 } | ||||
|  | ||||
|                 disposables.add(PlaylistDialog.createCorrespondingDialog(requireContext(), | ||||
|                         List.of(new StreamEntity(info)), | ||||
|                         dialog -> dialog.show(getParentFragmentManager(), TAG))))); | ||||
|                         dialog -> dialog.show(getParentFragmentManager(), TAG))); | ||||
|             } | ||||
|         })); | ||||
|         binding.detailControlsDownload.setOnClickListener(v -> { | ||||
|             if (PermissionHelper.checkStoragePermissions(activity, | ||||
|                     PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE)) { | ||||
|   | ||||
| @@ -158,6 +158,15 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt | ||||
|         return headerBinding; | ||||
|     } | ||||
|  | ||||
|     // Commit changes immediately when the user turns to the player. | ||||
|     // Delete operations will be committed to ensure that the database | ||||
|     // is up to date when the user adds the just deleted stream by the player. | ||||
|     public void commitChanges() { | ||||
|         if (isModified != null && isModified.get()) { | ||||
|             saveImmediate(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     @Override | ||||
|     protected void initListeners() { | ||||
|         super.initListeners(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Yingwei Zheng
					Yingwei Zheng