diff --git a/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt b/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt
index c6f90c022..67db0cdcc 100644
--- a/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt
+++ b/app/src/main/java/com/github/libretube/adapters/PlaylistAdapter.kt
@@ -1,7 +1,6 @@
package com.github.libretube.adapters
import android.app.Activity
-import android.text.format.DateUtils
import android.util.Log
import android.view.LayoutInflater
import android.view.View
@@ -10,6 +9,7 @@ import androidx.fragment.app.FragmentManager
import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.databinding.PlaylistRowBinding
import com.github.libretube.dialogs.VideoOptionsDialog
+import com.github.libretube.extensions.setFormattedDuration
import com.github.libretube.obj.PlaylistId
import com.github.libretube.obj.StreamItem
import com.github.libretube.preferences.PreferenceHelper
@@ -53,7 +53,7 @@ class PlaylistAdapter(
holder.binding.apply {
playlistTitle.text = streamItem.title
playlistDescription.text = streamItem.uploaderName
- thumbnailDuration.text = DateUtils.formatElapsedTime(streamItem.duration!!)
+ thumbnailDuration.setFormattedDuration(streamItem.duration!!)
ConnectionHelper.loadImage(streamItem.thumbnail, playlistThumbnail)
root.setOnClickListener {
NavigationHelper.navigateVideo(root.context, streamItem.url, playlistId)
diff --git a/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt b/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt
index fa48060ea..62213ab41 100644
--- a/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt
+++ b/app/src/main/java/com/github/libretube/adapters/SearchAdapter.kt
@@ -1,6 +1,5 @@
package com.github.libretube.adapters
-import android.text.format.DateUtils
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -12,6 +11,7 @@ import com.github.libretube.databinding.PlaylistSearchRowBinding
import com.github.libretube.databinding.VideoRowBinding
import com.github.libretube.dialogs.PlaylistOptionsDialog
import com.github.libretube.dialogs.VideoOptionsDialog
+import com.github.libretube.extensions.setFormattedDuration
import com.github.libretube.obj.SearchItem
import com.github.libretube.util.ConnectionHelper
import com.github.libretube.util.NavigationHelper
@@ -80,12 +80,7 @@ class SearchAdapter(
private fun bindWatch(item: SearchItem, binding: VideoRowBinding) {
binding.apply {
ConnectionHelper.loadImage(item.thumbnail, thumbnail)
- if (item.duration != -1L) {
- thumbnailDuration.text = DateUtils.formatElapsedTime(item.duration!!)
- } else {
- thumbnailDuration.text = root.context.getString(R.string.live)
- thumbnailDuration.setBackgroundColor(R.attr.colorPrimaryDark)
- }
+ thumbnailDuration.setFormattedDuration(item.duration!!)
ConnectionHelper.loadImage(item.uploaderAvatar, channelImage)
videoTitle.text = item.title
val viewsString = if (item.views?.toInt() != -1) item.views.formatShort() else ""
diff --git a/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt b/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt
index 1d9aba5b5..7fd28718d 100644
--- a/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt
+++ b/app/src/main/java/com/github/libretube/adapters/TrendingAdapter.kt
@@ -5,9 +5,9 @@ import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.fragment.app.FragmentManager
import androidx.recyclerview.widget.RecyclerView
-import com.github.libretube.R
import com.github.libretube.databinding.TrendingRowBinding
import com.github.libretube.dialogs.VideoOptionsDialog
+import com.github.libretube.extensions.setFormattedDuration
import com.github.libretube.obj.StreamItem
import com.github.libretube.util.ConnectionHelper
import com.github.libretube.util.NavigationHelper
@@ -49,12 +49,7 @@ class TrendingAdapter(
trending.uploaderName + " • " +
trending.views.formatShort() + " • " +
DateUtils.getRelativeTimeSpanString(trending.uploaded!!)
- if (trending.duration != -1L) {
- thumbnailDuration.text = DateUtils.formatElapsedTime(trending.duration!!)
- } else {
- thumbnailDuration.text = root.context.getString(R.string.live)
- thumbnailDuration.setBackgroundColor(R.attr.colorPrimaryDark)
- }
+ thumbnailDuration.setFormattedDuration(trending.duration!!)
channelImage.setOnClickListener {
NavigationHelper.navigateChannel(root.context, trending.uploaderUrl)
}
diff --git a/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt b/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt
index b3a8f1b5b..5ff8604b4 100644
--- a/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt
+++ b/app/src/main/java/com/github/libretube/adapters/WatchHistoryAdapter.kt
@@ -1,12 +1,12 @@
package com.github.libretube.adapters
-import android.text.format.DateUtils
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.fragment.app.FragmentManager
import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.databinding.WatchHistoryRowBinding
import com.github.libretube.dialogs.VideoOptionsDialog
+import com.github.libretube.extensions.setFormattedDuration
import com.github.libretube.obj.WatchHistoryItem
import com.github.libretube.preferences.PreferenceHelper
import com.github.libretube.util.ConnectionHelper
@@ -32,7 +32,7 @@ class WatchHistoryAdapter(
videoTitle.text = video.title
channelName.text = video.uploader
videoInfo.text = video.uploadDate
- thumbnailDuration.text = DateUtils.formatElapsedTime(video.duration?.toLong()!!)
+ thumbnailDuration.setFormattedDuration(video.duration!!)
ConnectionHelper.loadImage(video.thumbnailUrl, thumbnail)
ConnectionHelper.loadImage(video.uploaderAvatar, channelImage)
@@ -55,7 +55,7 @@ class WatchHistoryAdapter(
true
}
- watchProgress.setWatchProgressLength(video.videoId!!, video.duration.toLong())
+ watchProgress.setWatchProgressLength(video.videoId!!, video.duration)
}
}
diff --git a/app/src/main/java/com/github/libretube/extensions/SetFormattedDuration.kt b/app/src/main/java/com/github/libretube/extensions/SetFormattedDuration.kt
new file mode 100644
index 000000000..0551ee066
--- /dev/null
+++ b/app/src/main/java/com/github/libretube/extensions/SetFormattedDuration.kt
@@ -0,0 +1,14 @@
+package com.github.libretube.extensions
+
+import android.text.format.DateUtils
+import android.widget.TextView
+import com.github.libretube.R
+
+fun TextView?.setFormattedDuration(duration: Long) {
+ val text = if (duration < 0L) {
+ this!!.setBackgroundColor(R.attr.colorPrimaryDark)
+ this.context.getString(R.string.live)
+ } else if (duration == 0L) this!!.context.getString(R.string.yt_shorts)
+ else DateUtils.formatElapsedTime(duration)
+ this!!.text = text
+}
diff --git a/app/src/main/java/com/github/libretube/obj/Streams.kt b/app/src/main/java/com/github/libretube/obj/Streams.kt
index 34613b73e..b497859ac 100644
--- a/app/src/main/java/com/github/libretube/obj/Streams.kt
+++ b/app/src/main/java/com/github/libretube/obj/Streams.kt
@@ -15,7 +15,7 @@ data class Streams(
val dash: String?,
val lbryId: String?,
val uploaderVerified: Boolean?,
- val duration: Int?,
+ val duration: Long?,
val views: Long?,
val likes: Long?,
val dislikes: Long?,
diff --git a/app/src/main/java/com/github/libretube/obj/WatchHistoryItem.kt b/app/src/main/java/com/github/libretube/obj/WatchHistoryItem.kt
index 2e6d047f9..f8b436d5f 100644
--- a/app/src/main/java/com/github/libretube/obj/WatchHistoryItem.kt
+++ b/app/src/main/java/com/github/libretube/obj/WatchHistoryItem.kt
@@ -8,5 +8,5 @@ data class WatchHistoryItem(
val uploaderUrl: String? = null,
val uploaderAvatar: String? = null,
val thumbnailUrl: String? = null,
- val duration: Int? = null
+ val duration: Long? = null
)
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2f3ec6ca5..3c8b69fe1 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -302,4 +302,5 @@
Break reminder
Time to take a break
You already spent %1$s minutes in the app, time to take a break.
+ Shorts