From 0e12cdea7c1d5687d662aad76aef84762e161491 Mon Sep 17 00:00:00 2001 From: Nathan Schulzke Date: Thu, 29 Jul 2021 20:59:23 -0600 Subject: [PATCH] Save the fetched duration to the database so that it can render the view correctly. --- .../local/history/HistoryRecordManager.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/local/history/HistoryRecordManager.java b/app/src/main/java/org/schabi/newpipe/local/history/HistoryRecordManager.java index eb5aab12c..29a8c6177 100644 --- a/app/src/main/java/org/schabi/newpipe/local/history/HistoryRecordManager.java +++ b/app/src/main/java/org/schabi/newpipe/local/history/HistoryRecordManager.java @@ -101,31 +101,31 @@ public class HistoryRecordManager { final OffsetDateTime currentTime = OffsetDateTime.now(ZoneOffset.UTC); return Maybe.fromCallable(() -> database.runInTransaction(() -> { - final long streamId = streamTable.upsert(new StreamEntity(info)); - - long duration = info.getDuration(); // Duration will not exist if the item was loaded with fast mode, so fetch it if empty - if (duration < 0) { - duration = ExtractorHelper.getStreamInfo( + if (info.getDuration() < 0) { + final long duration = ExtractorHelper.getStreamInfo( info.getServiceId(), info.getUrl(), false) .subscribeOn(Schedulers.io()) .blockingGet() .getDuration(); + info.setDuration(duration); } + // Upsert to get a stream ID and update durations if we fetched one + final long streamId = streamTable.upsert(new StreamEntity(info)); // Update the stream progress to the full duration of the video final List states = streamStateTable.getState(streamId) .blockingFirst(); if (!states.isEmpty()) { final StreamStateEntity entity = states.get(0); - entity.setProgressMillis(duration * 1000); + entity.setProgressMillis(info.getDuration() * 1000); streamStateTable.update(entity); } else { final StreamStateEntity entity = new StreamStateEntity( streamId, - duration * 1000 + info.getDuration() * 1000 ); streamStateTable.insert(entity); }