diff --git a/app/build.gradle b/app/build.gradle index 054d91fa5..795f4488f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -102,7 +102,7 @@ ext { checkstyleVersion = '8.38' androidxLifecycleVersion = '2.2.0' - androidxRoomVersion = '2.3.0-alpha03' + androidxRoomVersion = '2.3.0' icepickVersion = '3.2.0' exoPlayerVersion = '2.12.3' diff --git a/app/src/main/java/org/schabi/newpipe/database/Converters.java b/app/src/main/java/org/schabi/newpipe/database/Converters.java deleted file mode 100644 index c46b5f427..000000000 --- a/app/src/main/java/org/schabi/newpipe/database/Converters.java +++ /dev/null @@ -1,64 +0,0 @@ -package org.schabi.newpipe.database; - -import androidx.room.TypeConverter; - -import org.schabi.newpipe.extractor.stream.StreamType; -import org.schabi.newpipe.local.subscription.FeedGroupIcon; - -import java.time.Instant; -import java.time.OffsetDateTime; -import java.time.ZoneOffset; - -public final class Converters { - private Converters() { } - - /** - * Convert a long value to a {@link OffsetDateTime}. - * - * @param value the long value - * @return the {@code OffsetDateTime} - */ - @TypeConverter - public static OffsetDateTime offsetDateTimeFromTimestamp(final Long value) { - return value == null ? null : OffsetDateTime.ofInstant(Instant.ofEpochMilli(value), - ZoneOffset.UTC); - } - - /** - * Convert a {@link OffsetDateTime} to a long value. - * - * @param offsetDateTime the {@code OffsetDateTime} - * @return the long value - */ - @TypeConverter - public static Long offsetDateTimeToTimestamp(final OffsetDateTime offsetDateTime) { - return offsetDateTime == null ? null : offsetDateTime.withOffsetSameInstant(ZoneOffset.UTC) - .toInstant().toEpochMilli(); - } - - @TypeConverter - public static StreamType streamTypeOf(final String value) { - return StreamType.valueOf(value); - } - - @TypeConverter - public static String stringOf(final StreamType streamType) { - return streamType.name(); - } - - @TypeConverter - public static Integer integerOf(final FeedGroupIcon feedGroupIcon) { - return feedGroupIcon.getId(); - } - - @TypeConverter - public static FeedGroupIcon feedGroupIconOf(final Integer id) { - for (final FeedGroupIcon icon : FeedGroupIcon.values()) { - if (icon.getId() == id) { - return icon; - } - } - - throw new IllegalArgumentException("There's no feed group icon with the id \"" + id + "\""); - } -} diff --git a/app/src/main/java/org/schabi/newpipe/database/Converters.kt b/app/src/main/java/org/schabi/newpipe/database/Converters.kt new file mode 100644 index 000000000..0eafcede1 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/database/Converters.kt @@ -0,0 +1,52 @@ +package org.schabi.newpipe.database + +import androidx.room.TypeConverter +import org.schabi.newpipe.extractor.stream.StreamType +import org.schabi.newpipe.local.subscription.FeedGroupIcon +import java.time.Instant +import java.time.OffsetDateTime +import java.time.ZoneOffset + +object Converters { + /** + * Convert a long value to a [OffsetDateTime]. + * + * @param value the long value + * @return the `OffsetDateTime` + */ + @TypeConverter + fun offsetDateTimeFromTimestamp(value: Long?): OffsetDateTime? { + return value?.let { OffsetDateTime.ofInstant(Instant.ofEpochMilli(it), ZoneOffset.UTC) } + } + + /** + * Convert a [OffsetDateTime] to a long value. + * + * @param offsetDateTime the `OffsetDateTime` + * @return the long value + */ + @TypeConverter + fun offsetDateTimeToTimestamp(offsetDateTime: OffsetDateTime?): Long? { + return offsetDateTime?.withOffsetSameInstant(ZoneOffset.UTC)?.toInstant()?.toEpochMilli() + } + + @TypeConverter + fun streamTypeOf(value: String): StreamType { + return StreamType.valueOf(value) + } + + @TypeConverter + fun stringOf(streamType: StreamType): String { + return streamType.name + } + + @TypeConverter + fun integerOf(feedGroupIcon: FeedGroupIcon): Int { + return feedGroupIcon.id + } + + @TypeConverter + fun feedGroupIconOf(id: Int): FeedGroupIcon { + return FeedGroupIcon.values().first { it.id == id } + } +}