diff --git a/components/covers/PreviewCover.vue b/components/covers/PreviewCover.vue
new file mode 100644
index 00000000..fac0271a
--- /dev/null
+++ b/components/covers/PreviewCover.vue
@@ -0,0 +1,103 @@
+
+
+
+
+
+
+
+
Invalid Cover
+
+
+
+
{{ resolution }}
+
+
+
+
\ No newline at end of file
diff --git a/components/tables/podcast/LatestEpisodeRow.vue b/components/tables/podcast/LatestEpisodeRow.vue
new file mode 100644
index 00000000..507311b9
--- /dev/null
+++ b/components/tables/podcast/LatestEpisodeRow.vue
@@ -0,0 +1,327 @@
+
+
+
+
+
+
+
+
+
+ {{ podcast.metadata.title }}
+
+
{{ $dateDistanceFromNow(publishedAt) }}
+
+
+
+
+ {{ title }}
+
+
+
+
+
+
{{ streamIsPlaying ? 'pause' : 'play_arrow' }}
+
{{ timeRemaining }}
+
+
+
+
+
+ playlist_add
+
+
+
+ audio_file
+ {{ downloadItem ? 'downloading' : 'download' }}
+ download_done
+
+
+
+
+
+ delete_forever
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/pages/bookshelf/latest.vue b/pages/bookshelf/latest.vue
index 23188a5b..e9871040 100644
--- a/pages/bookshelf/latest.vue
+++ b/pages/bookshelf/latest.vue
@@ -3,7 +3,7 @@
Latest Episodes
-
+
diff --git a/store/globals.js b/store/globals.js
index 2a05542b..de42cc99 100644
--- a/store/globals.js
+++ b/store/globals.js
@@ -67,6 +67,16 @@ export const getters = {
const url = new URL(`/api/items/${libraryItem.id}/cover`, serverAddress)
return `${url}?token=${userToken}&ts=${lastUpdate}${raw ? '&raw=1' : ''}`
},
+ getLibraryItemCoverSrcById: (state, getters, rootState, rootGetters) => (libraryItemId, placeholder = null) => {
+ if (!placeholder) placeholder = `${rootState.routerBasePath}/book_placeholder.jpg`
+ if (!libraryItemId) return placeholder
+ const userToken = rootGetters['user/getToken']
+ const serverAddress = rootGetters['user/getServerAddress']
+ if (!userToken || !serverAddress) return placeholder
+
+ const url = new URL(`/api/items/${libraryItemId}/cover`, serverAddress)
+ return `${url}?token=${userToken}`
+ },
getLocalMediaProgressById: (state) => (localLibraryItemId, episodeId = null) => {
return state.localMediaProgress.find(lmp => {
if (episodeId != null && lmp.localEpisodeId != episodeId) return false
diff --git a/tailwind.config.js b/tailwind.config.js
index 2e7e9a6d..90182ed4 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -45,6 +45,7 @@ module.exports = {
minWidth: {
'4': '1rem',
'8': '2rem',
+ '10': '2.5rem',
'12': '3rem'
},
minHeight: {