mirror of
https://github.com/AntennaPod/AntennaPod.git
synced 2025-12-01 12:31:45 +00:00
Fix sometimes not resetting media position (#7147)
Before 5218e06904, 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:
@ -728,20 +728,10 @@ public class DBWriter {
|
||||
*/
|
||||
@NonNull
|
||||
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(() -> {
|
||||
final PodDBAdapter adapter = PodDBAdapter.getInstance();
|
||||
adapter.open();
|
||||
adapter.setFeedItemRead(played, itemId, mediaId,
|
||||
resetMediaPosition);
|
||||
adapter.setFeedItemRead(item, played, resetMediaPosition);
|
||||
adapter.close();
|
||||
|
||||
EventBus.getDefault().post(new UnreadItemsUpdateEvent());
|
||||
|
||||
@ -684,19 +684,21 @@ public class PodDBAdapter {
|
||||
return item.getId();
|
||||
}
|
||||
|
||||
public void setFeedItemRead(int played, long itemId, long mediaId,
|
||||
boolean resetMediaPosition) {
|
||||
public void setFeedItemRead(FeedItem item, int played, boolean resetMediaPosition) {
|
||||
try {
|
||||
db.beginTransactionNonExclusive();
|
||||
ContentValues values = new ContentValues();
|
||||
|
||||
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) {
|
||||
values.clear();
|
||||
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();
|
||||
|
||||
Reference in New Issue
Block a user