Fix sometimes not resetting media position (#7147)

Before 5218e06904e489f77da4078de775dd0a63b94ef4, deleting an item
loaded its state from the database again. Now it stores the state
of that object. markItemPlayed() did not reset the object's playback
position, so when auto-delete was enabled, the position was overwritten again.
This commit is contained in:
ByteHamster 2024-04-28 23:56:23 +02:00 committed by GitHub
parent 257c3bca5e
commit 1505c50b1b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 7 additions and 15 deletions

View File

@ -728,20 +728,10 @@ public class DBWriter {
*/ */
@NonNull @NonNull
public static Future<?> markItemPlayed(FeedItem item, int played, boolean resetMediaPosition) { public static Future<?> markItemPlayed(FeedItem item, int played, boolean resetMediaPosition) {
long mediaId = (item.hasMedia()) ? item.getMedia().getId() : 0;
return markItemPlayed(item.getId(), played, mediaId, resetMediaPosition);
}
@NonNull
private static Future<?> markItemPlayed(final long itemId,
final int played,
final long mediaId,
final boolean resetMediaPosition) {
return runOnDbThread(() -> { return runOnDbThread(() -> {
final PodDBAdapter adapter = PodDBAdapter.getInstance(); final PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open(); adapter.open();
adapter.setFeedItemRead(played, itemId, mediaId, adapter.setFeedItemRead(item, played, resetMediaPosition);
resetMediaPosition);
adapter.close(); adapter.close();
EventBus.getDefault().post(new UnreadItemsUpdateEvent()); EventBus.getDefault().post(new UnreadItemsUpdateEvent());

View File

@ -684,19 +684,21 @@ public class PodDBAdapter {
return item.getId(); return item.getId();
} }
public void setFeedItemRead(int played, long itemId, long mediaId, public void setFeedItemRead(FeedItem item, int played, boolean resetMediaPosition) {
boolean resetMediaPosition) {
try { try {
db.beginTransactionNonExclusive(); db.beginTransactionNonExclusive();
ContentValues values = new ContentValues(); ContentValues values = new ContentValues();
values.put(KEY_READ, played); values.put(KEY_READ, played);
db.update(TABLE_NAME_FEED_ITEMS, values, KEY_ID + "=?", new String[]{String.valueOf(itemId)}); db.update(TABLE_NAME_FEED_ITEMS, values, KEY_ID + "=?", new String[]{String.valueOf(item.getId())});
item.setPlayed(played == FeedItem.PLAYED);
if (resetMediaPosition) { if (resetMediaPosition) {
values.clear(); values.clear();
values.put(KEY_POSITION, 0); values.put(KEY_POSITION, 0);
db.update(TABLE_NAME_FEED_MEDIA, values, KEY_ID + "=?", new String[]{String.valueOf(mediaId)}); db.update(TABLE_NAME_FEED_MEDIA, values, KEY_ID + "=?",
new String[]{String.valueOf(item.getMedia().getId())});
item.getMedia().setPosition(0);
} }
db.setTransactionSuccessful(); db.setTransactionSuccessful();