Skip to content

Commit

Permalink
Fix sometimes not resetting media position
Browse files Browse the repository at this point in the history
Before 5218e06, 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.
  • Loading branch information
ByteHamster committed Apr 28, 2024
1 parent 3581787 commit c45c217
Show file tree
Hide file tree
Showing 2 changed files with 7 additions and 15 deletions.
Expand Up @@ -728,20 +728,10 @@ public static Future<?> markItemPlayed(final int played, final boolean broadcast
*/
@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());
Expand Down
Expand Up @@ -684,19 +684,21 @@ private long updateOrInsertFeedItem(FeedItem item, boolean saveFeed) {
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();
Expand Down

0 comments on commit c45c217

Please sign in to comment.