-Added state saving for streams on skip and player exception events.

-Added query for loading saved stream states.
-Modified orphan record removal to no longer consider stream table records.
This commit is contained in:
John Zhen Mo 2018-01-29 14:08:26 -08:00
parent 9b4a07de34
commit d3160eed9d
5 changed files with 75 additions and 13 deletions

View file

@ -92,10 +92,6 @@ public abstract class StreamDAO implements BasicDAO<StreamEntity> {
" ON " + STREAM_ID + " = " +
StreamHistoryEntity.STREAM_HISTORY_TABLE + "." + StreamHistoryEntity.JOIN_STREAM_ID +
" LEFT JOIN " + STREAM_STATE_TABLE +
" ON " + STREAM_ID + " = " +
StreamStateEntity.STREAM_STATE_TABLE + "." + StreamStateEntity.JOIN_STREAM_ID +
" LEFT JOIN " + PLAYLIST_STREAM_JOIN_TABLE +
" ON " + STREAM_ID + " = " +
PlaylistStreamEntity.PLAYLIST_STREAM_JOIN_TABLE + "." + PlaylistStreamEntity.JOIN_STREAM_ID +

View file

@ -1,7 +1,10 @@
package org.schabi.newpipe.database.stream.dao;
import android.arch.persistence.room.Dao;
import android.arch.persistence.room.Insert;
import android.arch.persistence.room.OnConflictStrategy;
import android.arch.persistence.room.Query;
import android.arch.persistence.room.Transaction;
import org.schabi.newpipe.database.BasicDAO;
import org.schabi.newpipe.database.stream.model.StreamStateEntity;
@ -28,6 +31,18 @@ public abstract class StreamStateDAO implements BasicDAO<StreamStateEntity> {
throw new UnsupportedOperationException();
}
@Query("SELECT * FROM " + STREAM_STATE_TABLE + " WHERE " + JOIN_STREAM_ID + " = :streamId")
public abstract Flowable<List<StreamStateEntity>> getState(final long streamId);
@Query("DELETE FROM " + STREAM_STATE_TABLE + " WHERE " + JOIN_STREAM_ID + " = :streamId")
public abstract int deleteState(final long streamId);
@Insert(onConflict = OnConflictStrategy.IGNORE)
abstract void silentInsertInternal(final StreamStateEntity streamState);
@Transaction
public long upsert(StreamStateEntity stream) {
silentInsertInternal(stream);
return update(stream);
}
}