From 2843308fb866acc088ba7baaf558343b3bf69cf8 Mon Sep 17 00:00:00 2001 From: Hallo951 <40667862+Hallo951@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:03:06 +0100 Subject: [PATCH 01/21] Update de.json --- strings/de.json | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/strings/de.json b/strings/de.json index d1ae62d6..54201b22 100644 --- a/strings/de.json +++ b/strings/de.json @@ -105,14 +105,14 @@ "LabelContinueEpisodes": "Episoden fortfahren", "LabelContinueListening": "Weiterhören", "LabelContinueSeries": "Serie fortsetzen", - "LabelCustomTime": "Benutzerdefinierte zeit", + "LabelCustomTime": "Benutzerdefinierte Zeit", "LabelDescription": "Beschreibung", "LabelDisableAudioFadeOut": "Deaktiviere Audio abklingen", "LabelDisableAudioFadeOutHelp": "Die Audiolautstärke wird verringert, wenn weniger als 1 Minute für den Einschlaf-Timer verbleibt. Aktivieren Sie diese Einstellung, um nicht abzuklingen.", "LabelDisableAutoRewind": "Deaktiviere automatisches Rückspulen", "LabelDisableShakeToReset": "Deaktiviere Schütteln zum Zurücksetzen", "LabelDisableShakeToResetHelp": "Wenn Sie Ihr Gerät schütteln, während der Timer läuft ODER innerhalb von 2 Minuten nach Ablauf des Timers, wird der Sleep-Timer zurückgesetzt. Aktivieren Sie diese Einstellung, um das Schütteln zum Zurücksetzen zu deaktivieren.", - "LabelDisableVibrateOnReset": "Deaktiviere vibrieren beim Zurücksetzen", + "LabelDisableVibrateOnReset": "Deaktiviere Vibrieren beim Zurücksetzen", "LabelDisableVibrateOnResetHelp": "Wenn der Einschlaf-Timer zurückgesetzt wird, vibriert Ihr Gerät. Aktivieren Sie diese Einstellung, um nicht zu vibrieren, wenn der Einschlaf-Timer zurückgesetzt wird.", "LabelDiscover": "Entdecken", "LabelDownload": "Herunterladen", @@ -121,7 +121,7 @@ "LabelEbook": "E-Book", "LabelEbooks": "Ebooks", "LabelEnable": "Aktivieren", - "LabelEnableMp3IndexSeeking": "Aktiviere MP3-Indexsuche", + "LabelEnableMp3IndexSeeking": "MP3-Indexsuche", "LabelEnableMp3IndexSeekingHelp": "Diese Einstellung sollte nur aktiviert werden, wenn Sie MP3-Dateien haben, bei denen das Navigieren (Seeking) nicht korrekt funktioniert. Ungenaues Navigieren ist höchstwahrscheinlich auf MP3-Dateien mit variabler Bitrate (VBR) zurückzuführen. Diese Einstellung erzwingt das Index-Navigieren (Index Seeking), bei dem eine Zeit-zu-Byte-Zuordnung erstellt wird, während die Datei gelesen wird. In einigen Fällen kann es bei großen MP3-Dateien zu einer Verzögerung kommen, wenn gegen Ende der Datei navigiert wird.", "LabelEnd": "Ende", "LabelEndOfChapter": "Kapitelende", @@ -140,7 +140,7 @@ "LabelHapticFeedback": "Haptische Rückmeldung", "LabelHasEbook": "Hat Ebook", "LabelHasSupplementaryEbook": "Hat zusätzliches Ebook", - "LabelHeavy": "Schwer", + "LabelHeavy": "Stark", "LabelHigh": "Hoch", "LabelHost": "Host", "LabelIncomplete": "Unvollständig", @@ -149,14 +149,14 @@ "LabelJumpBackwardsTime": "Rückspulzeit", "LabelJumpForwardsTime": "Vorwärtsspulzeit", "LabelLanguage": "Sprache", - "LabelLight": "Licht", + "LabelLight": "Leicht", "LabelLineSpacing": "Zeilenabstand", "LabelListenAgain": "Erneut anhören", "LabelLocalBooks": "Lokale Bücher", "LabelLocalPodcasts": "Lokale Podcasts", - "LabelLockOrientation": "Ausrichtung sperren", + "LabelLockOrientation": "automatische Bildschirmausrichtung sperren", "LabelLockPlayer": "Mediaplayer sperren", - "LabelLow": "Niedrig", + "LabelLow": "Wenig", "LabelMediaType": "Medientyp", "LabelMedium": "Mittel", "LabelMore": "Mehr", From 228a1985984919bf3832acbb53042a91abe8a3cb Mon Sep 17 00:00:00 2001 From: Jafeyyu <846373562@qq.com> Date: Thu, 21 Dec 2023 16:09:21 +0800 Subject: [PATCH 02/21] Update zh-cn.json --- strings/zh-cn.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/strings/zh-cn.json b/strings/zh-cn.json index 67e34d85..5575933c 100644 --- a/strings/zh-cn.json +++ b/strings/zh-cn.json @@ -43,7 +43,7 @@ "ButtonSendEbookToDevice": "将电子书发送到设备", "ButtonSeries": "系列", "ButtonSetTimer": "设置定时器", - "ButtonStream": "流", + "ButtonStream": "串流播放", "ButtonSubmit": "提交", "ButtonSwitchServerUser": "切换服务器/用户", "ButtonUserStats": "用户统计信息", @@ -282,4 +282,4 @@ "ToastPodcastCreateSuccess": "已成功创建播客", "ToastRSSFeedCloseFailed": "关闭 RSS 源失败", "ToastRSSFeedCloseSuccess": "RSS 源已关闭" -} \ No newline at end of file +} From 2b1667e532c7b02aa3676fcc1f4e6d00e44f1ecc Mon Sep 17 00:00:00 2001 From: benonymity Date: Fri, 22 Dec 2023 21:01:37 -0500 Subject: [PATCH 03/21] feat: now playing chapter track --- ios/App/App/AppDelegate.swift | 19 +++++++++++++------ ios/App/App/plugins/AbsAudioPlayer.m | 1 + ios/App/App/plugins/AbsAudioPlayer.swift | 11 +++++++++++ ios/App/Shared/models/PlaybackSession.swift | 8 ++++++++ ios/App/Shared/models/PlayerSettings.swift | 2 ++ ios/App/Shared/models/server/Chapter.swift | 10 ++++++++++ ios/App/Shared/player/AudioPlayer.swift | 17 ++++++++++++++++- ios/App/Shared/player/PlayerHandler.swift | 4 ++++ ios/App/Shared/util/NowPlayingInfo.swift | 16 ++++++++++++++-- plugins/capacitor/AbsAudioPlayer.js | 7 ++++++- plugins/localStore.js | 7 ++++++- 11 files changed, 91 insertions(+), 11 deletions(-) diff --git a/ios/App/App/AppDelegate.swift b/ios/App/App/AppDelegate.swift index e1423b13..26a74dcc 100644 --- a/ios/App/App/AppDelegate.swift +++ b/ios/App/App/AppDelegate.swift @@ -4,17 +4,17 @@ import RealmSwift @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { - + private let logger = AppLogger(category: "AppDelegate") lazy var window: UIWindow? = UIWindow(frame: UIScreen.main.bounds) var backgroundCompletionHandler: (() -> Void)? - + func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. - + let configuration = Realm.Configuration( - schemaVersion: 15, + schemaVersion: 16, migrationBlock: { [weak self] migration, oldSchemaVersion in if (oldSchemaVersion < 1) { self?.logger.log("Realm schema version was \(oldSchemaVersion)") @@ -48,10 +48,17 @@ class AppDelegate: UIResponder, UIApplicationDelegate { newObject?["languageCode"] = "en-us" } } + if (oldSchemaVersion < 16) { + self?.logger.log("Realm schema version was \(oldSchemaVersion)... Adding chapterTrack setting") + migration.enumerateObjects(ofType: PlayerSettings.className()) { oldObject, newObject in + newObject?["chapterTrack"] = false + } + } + } ) Realm.Configuration.defaultConfiguration = configuration - + return true } @@ -93,7 +100,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate { // tracking app url opens, make sure to keep this call return ApplicationDelegateProxy.shared.application(application, continue: userActivity, restorationHandler: restorationHandler) } - + func application(_ application: UIApplication, handleEventsForBackgroundURLSession identifier: String, completionHandler: @escaping () -> Void) { // Stores the completion handler for background downloads // The identifier of this method can be ignored at this time as we only have one background url session diff --git a/ios/App/App/plugins/AbsAudioPlayer.m b/ios/App/App/plugins/AbsAudioPlayer.m index 49aaff7a..8170d059 100644 --- a/ios/App/App/plugins/AbsAudioPlayer.m +++ b/ios/App/App/plugins/AbsAudioPlayer.m @@ -15,6 +15,7 @@ CAP_PLUGIN(AbsAudioPlayer, "AbsAudioPlayer", CAP_PLUGIN_METHOD(closePlayback, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(setPlaybackSpeed, CAPPluginReturnPromise); + CAP_PLUGIN_METHOD(setChapterTrack, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(playPlayer, CAPPluginReturnPromise); CAP_PLUGIN_METHOD(pausePlayer, CAPPluginReturnPromise); diff --git a/ios/App/App/plugins/AbsAudioPlayer.swift b/ios/App/App/plugins/AbsAudioPlayer.swift index 5ebe376c..edc4e274 100644 --- a/ios/App/App/plugins/AbsAudioPlayer.swift +++ b/ios/App/App/plugins/AbsAudioPlayer.swift @@ -119,6 +119,17 @@ public class AbsAudioPlayer: CAPPlugin { PlayerHandler.setPlaybackSpeed(speed: settings.playbackRate) call.resolve() } + + @objc func setChapterTrack(_ call: CAPPluginCall) { + let chapterTrack = call.getBool("enabled", true) + logger.log(String(chapterTrack)) + let settings = PlayerSettings.main() + try? settings.update { + settings.chapterTrack = chapterTrack + } + PlayerHandler.setChapterTrack() + call.resolve() + } @objc func playPlayer(_ call: CAPPluginCall) { PlayerHandler.paused = false diff --git a/ios/App/Shared/models/PlaybackSession.swift b/ios/App/Shared/models/PlaybackSession.swift index baa89553..ad6812ae 100644 --- a/ios/App/Shared/models/PlaybackSession.swift +++ b/ios/App/Shared/models/PlaybackSession.swift @@ -160,3 +160,11 @@ class PlaybackSession: Object, Codable, Deletable { try container.encode(localMediaProgressId, forKey: .localMediaProgressId) } } + +extension PlaybackSession { + func getCurrentChapter() -> Chapter? { + return chapters.first { chapter in + chapter.start <= self.currentTime && chapter.end > self.currentTime + } + } +} diff --git a/ios/App/Shared/models/PlayerSettings.swift b/ios/App/Shared/models/PlayerSettings.swift index 0a8b3788..c768c50c 100644 --- a/ios/App/Shared/models/PlayerSettings.swift +++ b/ios/App/Shared/models/PlayerSettings.swift @@ -12,6 +12,8 @@ class PlayerSettings: Object { // The webapp has a persisted setting for playback speed, but it's not always available to the native code // Lets track it natively as well, so we never have a situation where the UI and native player are out of sync @Persisted var playbackRate: Float = 1.0 + @Persisted var chapterTrack: Bool = true + // Singleton pattern for Realm objects static func main() -> PlayerSettings { diff --git a/ios/App/Shared/models/server/Chapter.swift b/ios/App/Shared/models/server/Chapter.swift index 2e4d1e02..537ce6c7 100644 --- a/ios/App/Shared/models/server/Chapter.swift +++ b/ios/App/Shared/models/server/Chapter.swift @@ -39,3 +39,13 @@ class Chapter: EmbeddedObject, Codable { try container.encode(title, forKey: .title) } } + +extension Chapter { + func getRelativeChapterCurrentTime(sessionCurrentTime: Double) -> Double { + return sessionCurrentTime - self.start + } + + func getRelativeChapterEndTime() -> Double { + return self.end - self.start + } +} diff --git a/ios/App/Shared/player/AudioPlayer.swift b/ios/App/Shared/player/AudioPlayer.swift index 665d776c..3ebe001b 100644 --- a/ios/App/Shared/player/AudioPlayer.swift +++ b/ios/App/Shared/player/AudioPlayer.swift @@ -224,6 +224,8 @@ class AudioPlayer: NSObject { // Update the UI NotificationCenter.default.post(name: NSNotification.Name(PlayerEvents.sleepSet.rawValue), object: nil) } + // Update the now playing and chapter info + self.updateNowPlaying() } } } @@ -443,6 +445,10 @@ class AudioPlayer: NSObject { } } + public func setChapterTrack() { + self.updateNowPlaying() + } + public func getCurrentTime() -> Double? { guard let playbackSession = self.getPlaybackSession() else { return nil } let currentTrackTime = self.audioPlayer.currentTime().seconds @@ -657,7 +663,16 @@ class AudioPlayer: NSObject { } private func updateNowPlaying() { NotificationCenter.default.post(name: NSNotification.Name(PlayerEvents.update.rawValue), object: nil) - if let duration = self.getDuration(), let currentTime = self.getCurrentTime() { + if let session = self.getPlaybackSession(), let currentChapter = session.getCurrentChapter(), PlayerSettings.main().chapterTrack { + NowPlayingInfo.shared.update( + duration: currentChapter.getRelativeChapterEndTime(), + currentTime: currentChapter.getRelativeChapterCurrentTime(sessionCurrentTime: session.currentTime), + rate: rate, + chapterName: currentChapter.title, + chapterNumber: (session.chapters.firstIndex(of: currentChapter) ?? 0) + 1, + chapterCount: session.chapters.count + ) + } else if let duration = self.getDuration(), let currentTime = self.getCurrentTime() { NowPlayingInfo.shared.update(duration: duration, currentTime: currentTime, rate: rate) } } diff --git a/ios/App/Shared/player/PlayerHandler.swift b/ios/App/Shared/player/PlayerHandler.swift index 8b6541bc..718cdf95 100644 --- a/ios/App/Shared/player/PlayerHandler.swift +++ b/ios/App/Shared/player/PlayerHandler.swift @@ -61,6 +61,10 @@ class PlayerHandler { self.player?.setPlaybackRate(speed) } + public static func setChapterTrack() { + self.player?.setChapterTrack() + } + public static func getSleepTimeRemaining() -> Double? { return self.player?.getSleepTimeRemaining() } diff --git a/ios/App/Shared/util/NowPlayingInfo.swift b/ios/App/Shared/util/NowPlayingInfo.swift index 6393611c..86ca8ad4 100644 --- a/ios/App/Shared/util/NowPlayingInfo.swift +++ b/ios/App/Shared/util/NowPlayingInfo.swift @@ -53,7 +53,7 @@ class NowPlayingInfo { self.setMetadata(artwork: artwork, metadata: metadata) } } - public func update(duration: Double, currentTime: Double, rate: Float) { + public func update(duration: Double, currentTime: Double, rate: Float, chapterName: String? = nil, chapterNumber: Int? = nil, chapterCount: Int? = nil) { // Update on the main to prevent access collisions DispatchQueue.main.async { [weak self] in if let self = self { @@ -62,6 +62,18 @@ class NowPlayingInfo { self.nowPlayingInfo[MPNowPlayingInfoPropertyPlaybackRate] = rate self.nowPlayingInfo[MPNowPlayingInfoPropertyDefaultPlaybackRate] = 1.0 + + if let chapterName = chapterName, let chapterNumber = chapterNumber, let chapterCount = chapterCount { + self.nowPlayingInfo[MPMediaItemPropertyTitle] = chapterName + self.nowPlayingInfo[MPNowPlayingInfoPropertyChapterNumber] = chapterNumber + self.nowPlayingInfo[MPNowPlayingInfoPropertyChapterCount] = chapterCount + } else { + // Set the title back to the book title + self.nowPlayingInfo[MPMediaItemPropertyTitle] = self.nowPlayingInfo[MPMediaItemPropertyAlbumTitle] + self.nowPlayingInfo[MPNowPlayingInfoPropertyChapterNumber] = nil + self.nowPlayingInfo[MPNowPlayingInfoPropertyChapterCount] = nil + } + MPNowPlayingInfoCenter.default().nowPlayingInfo = self.nowPlayingInfo } } @@ -89,7 +101,7 @@ class NowPlayingInfo { nowPlayingInfo[MPMediaItemPropertyTitle] = metadata!.title nowPlayingInfo[MPMediaItemPropertyArtist] = metadata!.author ?? "unknown" - nowPlayingInfo[MPMediaItemPropertyAlbumTitle] = metadata!.series + nowPlayingInfo[MPMediaItemPropertyAlbumTitle] = metadata!.title } private func shouldFetchCover(id: String) -> Bool { diff --git a/plugins/capacitor/AbsAudioPlayer.js b/plugins/capacitor/AbsAudioPlayer.js index 7018d91d..fa9215a9 100644 --- a/plugins/capacitor/AbsAudioPlayer.js +++ b/plugins/capacitor/AbsAudioPlayer.js @@ -141,6 +141,11 @@ class AbsAudioPlayerWeb extends WebPlugin { if (this.player) this.player.playbackRate = value } + // PluginMethod + setChapterTrack({ enabled }) { + this.useChapterTrack = enabled + } + // PluginMethod async getCurrentTime() { return { @@ -262,4 +267,4 @@ export { AbsAudioPlayer } export default ({ app, store }, inject) => { $axios = app.$axios vuexStore = store -} \ No newline at end of file +} diff --git a/plugins/localStore.js b/plugins/localStore.js index d5eee3bd..d87c59e1 100644 --- a/plugins/localStore.js +++ b/plugins/localStore.js @@ -1,4 +1,6 @@ import { Preferences } from '@capacitor/preferences' +import { AbsAudioPlayer } from '@/plugins/capacitor' + class LocalStorage { constructor(vuexStore) { @@ -45,6 +47,9 @@ class LocalStorage { async setUseChapterTrack(useChapterTrack) { try { await Preferences.set({ key: 'useChapterTrack', value: useChapterTrack ? '1' : '0' }) + console.log("ooooooo") + console.log(useChapterTrack) + AbsAudioPlayer.setChapterTrack({ enabled: useChapterTrack }) } catch (error) { console.error('[LocalStorage] Failed to set use chapter track', error) } @@ -184,4 +189,4 @@ class LocalStorage { export default ({ app, store }, inject) => { inject('localStore', new LocalStorage(store)) -} \ No newline at end of file +} From b11ad9dc5bb65c49b1ab13abc2b0dc5dc50658bb Mon Sep 17 00:00:00 2001 From: benonymity Date: Fri, 22 Dec 2023 21:18:55 -0500 Subject: [PATCH 04/21] fix: only call on ios and remove...very professional logging --- plugins/localStore.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/localStore.js b/plugins/localStore.js index d87c59e1..b97aa981 100644 --- a/plugins/localStore.js +++ b/plugins/localStore.js @@ -47,9 +47,9 @@ class LocalStorage { async setUseChapterTrack(useChapterTrack) { try { await Preferences.set({ key: 'useChapterTrack', value: useChapterTrack ? '1' : '0' }) - console.log("ooooooo") - console.log(useChapterTrack) - AbsAudioPlayer.setChapterTrack({ enabled: useChapterTrack }) + if (this.$platform === 'ios') { + AbsAudioPlayer.setChapterTrack({ enabled: useChapterTrack }) + } } catch (error) { console.error('[LocalStorage] Failed to set use chapter track', error) } From bb656a265ff3ab21618ce141d09c237f5a53b163 Mon Sep 17 00:00:00 2001 From: benonymity Date: Fri, 22 Dec 2023 21:36:49 -0500 Subject: [PATCH 05/21] fix: broken isIos --- plugins/localStore.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/plugins/localStore.js b/plugins/localStore.js index b97aa981..7f240ca6 100644 --- a/plugins/localStore.js +++ b/plugins/localStore.js @@ -1,5 +1,6 @@ import { Preferences } from '@capacitor/preferences' import { AbsAudioPlayer } from '@/plugins/capacitor' +import { Capacitor } from '@capacitor/core' class LocalStorage { @@ -47,7 +48,7 @@ class LocalStorage { async setUseChapterTrack(useChapterTrack) { try { await Preferences.set({ key: 'useChapterTrack', value: useChapterTrack ? '1' : '0' }) - if (this.$platform === 'ios') { + if (Capacitor.getPlatform() === 'ios') { AbsAudioPlayer.setChapterTrack({ enabled: useChapterTrack }) } } catch (error) { From 26d020976372e678a22e10357e416eb4d3ea28d6 Mon Sep 17 00:00:00 2001 From: benonymity Date: Sat, 23 Dec 2023 00:00:50 -0500 Subject: [PATCH 06/21] fix: ios status bar mirror theme --- assets/app.css | 6 +----- assets/tailwind.css | 6 +++++- tailwind.config.js | 3 +-- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/assets/app.css b/assets/app.css index 33561947..e5d5588b 100644 --- a/assets/app.css +++ b/assets/app.css @@ -16,10 +16,6 @@ textarea { user-select: auto; } -body { - background-color: #262626; -} - .layout-wrapper { height: calc(100vh - env(safe-area-inset-top)); min-height: calc(100vh - env(safe-area-inset-top)); @@ -167,4 +163,4 @@ Bookshelf Label .tracksTable th { padding: 4px 8px; font-size: 0.75rem; -} \ No newline at end of file +} diff --git a/assets/tailwind.css b/assets/tailwind.css index 7b8f598a..2fd04bd2 100644 --- a/assets/tailwind.css +++ b/assets/tailwind.css @@ -40,4 +40,8 @@ --gradient-audio-player: linear-gradient(169deg, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 1) 80%); --gradient-minimized-audio-player: linear-gradient(145deg, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0.9) 20%, rgb(255, 255, 255) 60%); } -} \ No newline at end of file + + body { + @apply bg-primary + } +} diff --git a/tailwind.config.js b/tailwind.config.js index 2c6497ea..cbc609d4 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -1,14 +1,13 @@ const defaultTheme = require('tailwindcss/defaultTheme') module.exports = { - purge: { + content: { safelist: [ 'bg-success', 'bg-info', 'text-info' ] }, - darkMode: false, theme: { extend: { screens: { From 439ab2c8c0bfb4cce9af1b78fcb454a1afa080c8 Mon Sep 17 00:00:00 2001 From: benonymity Date: Sat, 23 Dec 2023 01:45:40 -0500 Subject: [PATCH 07/21] fix: item page background conflict --- assets/tailwind.css | 8 ++++---- components/app/AudioPlayer.vue | 1 + pages/item/_id/index.vue | 2 +- tailwind.config.js | 3 --- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/assets/tailwind.css b/assets/tailwind.css index 2fd04bd2..f52c759f 100644 --- a/assets/tailwind.css +++ b/assets/tailwind.css @@ -17,8 +17,8 @@ --color-track-cursor: 229 231 235; --color-track: 107 114 128; --color-track-buffered: 75 85 99; - --gradient-item-page: linear-gradient(169deg, rgba(0, 0, 0, 0.4) 0%, rgba(55, 56, 56, 1) 80%); - --gradient-audio-player: linear-gradient(169deg, rgba(0, 0, 0, 0) 0%, rgba(38, 38, 38, 1) 80%); + --gradient-item-page: linear-gradient(180deg, rgba(0, 0, 0, 0) 10%, rgba(55, 56, 56, 1) 80%); + --gradient-audio-player: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(38, 38, 38, 1) 80%); --gradient-minimized-audio-player: linear-gradient(145deg, rgba(38, 38, 38, 0.5) 0%, rgba(38, 38, 38, 0.9) 20%, rgb(38, 38, 38) 60%); } @@ -36,8 +36,8 @@ --color-track-cursor: 101 109 118; --color-track: 189 191 191; --color-track-buffered: 129 131 131; - --gradient-item-page: linear-gradient(169deg, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 1) 80%); - --gradient-audio-player: linear-gradient(169deg, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 1) 80%); + --gradient-item-page: linear-gradient(180deg, rgba(255, 255, 255, 0) 10%, rgba(255, 255, 255, 1) 80%); + --gradient-audio-player: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, 1) 80%); --gradient-minimized-audio-player: linear-gradient(145deg, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0.9) 20%, rgb(255, 255, 255) 60%); } diff --git a/components/app/AudioPlayer.vue b/components/app/AudioPlayer.vue index 3bd04383..85d54b4d 100644 --- a/components/app/AudioPlayer.vue +++ b/components/app/AudioPlayer.vue @@ -164,6 +164,7 @@ export default { showFullscreen(val) { this.updateScreenSize() this.$store.commit('setPlayerFullscreen', !!val) + document.querySelector('body').style.backgroundColor = this.showFullscreen ? this.coverRgb : "" }, bookCoverAspectRatio() { this.updateScreenSize() diff --git a/pages/item/_id/index.vue b/pages/item/_id/index.vue index f9a290ba..a1530f08 100644 --- a/pages/item/_id/index.vue +++ b/pages/item/_id/index.vue @@ -1,7 +1,7 @@ @@ -58,7 +64,8 @@ export default { data() { return { listeningStats: null, - windowWidth: 0 + windowWidth: 0, + showYearInReviewBanner: false } }, watch: { @@ -103,7 +110,12 @@ export default { console.error('Failed to load listening sesions', err) return [] }) - console.log('Loaded user listening data', this.listeningStats) + + let month = new Date().getMonth() + // January and December show year in review banner + if (month === 11 || month === 0) { + this.showYearInReviewBanner = true + } } }, mounted() { diff --git a/plugins/init.client.js b/plugins/init.client.js index 09c9b34c..14ce222c 100644 --- a/plugins/init.client.js +++ b/plugins/init.client.js @@ -94,26 +94,31 @@ Vue.prototype.$elapsedPretty = (seconds, useFullNames = false) => { return `${hours} ${useFullNames ? `hour${hours === 1 ? '' : 's'}` : 'hr'} ${minutes} ${useFullNames ? `minute${minutes === 1 ? '' : 's'}` : 'min'}` } -Vue.prototype.$elapsedPrettyExtended = (seconds, useDays = true) => { +Vue.prototype.$elapsedPrettyExtended = (seconds, useDays = true, showSeconds = true) => { if (isNaN(seconds) || seconds === null) return '' seconds = Math.round(seconds) - var minutes = Math.floor(seconds / 60) + let minutes = Math.floor(seconds / 60) seconds -= minutes * 60 - var hours = Math.floor(minutes / 60) + let hours = Math.floor(minutes / 60) minutes -= hours * 60 - var days = 0 + let days = 0 if (useDays || Math.floor(hours / 24) >= 100) { days = Math.floor(hours / 24) hours -= days * 24 } - var strs = [] + // If not showing seconds then round minutes up + if (minutes && seconds && !showSeconds) { + if (seconds >= 30) minutes++ + } + + const strs = [] if (days) strs.push(`${days}d`) if (hours) strs.push(`${hours}h`) if (minutes) strs.push(`${minutes}m`) - if (seconds) strs.push(`${seconds}s`) + if (seconds && showSeconds) strs.push(`${seconds}s`) return strs.join(' ') } From d9d31a062034bd0f522ccf9d64924f083a6256fa Mon Sep 17 00:00:00 2001 From: Jafeyyu <846373562@qq.com> Date: Tue, 26 Dec 2023 18:09:17 +0800 Subject: [PATCH 10/21] Update zh-cn.json --- strings/zh-cn.json | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/strings/zh-cn.json b/strings/zh-cn.json index 5575933c..f4c7b595 100644 --- a/strings/zh-cn.json +++ b/strings/zh-cn.json @@ -101,10 +101,12 @@ "LabelClosePlayer": "关闭播放器", "LabelCollapseSeries": "折叠系列", "LabelComplete": "已完成", - "LabelContinueBooks": "Continue Books", - "LabelContinueEpisodes": "Continue Episodes", - "LabelContinueListening": "Continue Listening", - "LabelContinueSeries": "Continue Series", + "LabelContinueBooks": "继续看书", + "LabelContinueEpisodes": "继续剧集", + "LabelContinueListening": "继续收听", + "LabelContinueSeries": "继续收听系列", + "LabelContinueReading": "继续阅读", + "LabelNewestEpisodes": "最新剧集", "LabelCustomTime": "自定义时间", "LabelDescription": "描述", "LabelDisableAudioFadeOut": "禁用音频淡出", @@ -114,7 +116,7 @@ "LabelDisableShakeToResetHelp": "在计时器运行时摇晃设备,或者在计时器到期后2分钟内摇晃设备将重置睡眠计时器。启用此设置可禁用抖动以重置。", "LabelDisableVibrateOnReset": "重置时禁用振动", "LabelDisableVibrateOnResetHelp": "当睡眠计时器重置时,你的设备会振动。启用此设置以在睡眠计时器重置时不振动。", - "LabelDiscover": "Discover", + "LabelDiscover": "发现", "LabelDownload": "下载", "LabelDownloaded": "已下载", "LabelDuration": "持续时间", @@ -151,7 +153,8 @@ "LabelLanguage": "语言", "LabelLight": "轻", "LabelLineSpacing": "行间距", - "LabelListenAgain": "Listen Again", + "LabelListenAgain": "再次收听", + "LabelReadAgain": "再次阅读", "LabelLocalBooks": "本地书籍", "LabelLocalPodcasts": "本地播客", "LabelLockOrientation": "锁定方向", @@ -164,7 +167,7 @@ "LabelName": "名称", "LabelNarrator": "演播者", "LabelNarrators": "演播者", - "LabelNewestAuthors": "Newest Authors", + "LabelNewestAuthors": "最新作者", "LabelNo": "取消", "LabelNotFinished": "未听完", "LabelNotStarted": "未开始", @@ -182,8 +185,8 @@ "LabelPubDate": "出版日期", "LabelPublishYear": "发布年份", "LabelRead": "阅读", - "LabelRecentlyAdded": "Recently Added", - "LabelRecentSeries": "Recent Series", + "LabelRecentlyAdded": "最近添加", + "LabelRecentSeries": "最近添加系列", "LabelRSSFeedCustomOwnerEmail": "自定义所有者电子邮件", "LabelRSSFeedCustomOwnerName": "自定义所有者名称", "LabelRSSFeedPreventIndexing": "防止索引", From e8bea48577eed3c271f3b4ad9dbfc082dc6c2f9e Mon Sep 17 00:00:00 2001 From: advplyr Date: Tue, 26 Dec 2023 16:40:28 -0600 Subject: [PATCH 11/21] Map shelf translation strings --- strings/cs.json | 3 +++ strings/da.json | 3 +++ strings/de.json | 5 ++++- strings/en-us.json | 3 +++ strings/es.json | 3 +++ strings/fr.json | 3 +++ strings/gu.json | 3 +++ strings/hi.json | 3 +++ strings/hr.json | 3 +++ strings/it.json | 5 ++++- strings/lt.json | 3 +++ strings/nl.json | 3 +++ strings/no.json | 3 +++ strings/pl.json | 3 +++ strings/ru.json | 3 +++ strings/sv.json | 3 +++ strings/zh-cn.json | 8 ++++---- 17 files changed, 54 insertions(+), 6 deletions(-) diff --git a/strings/cs.json b/strings/cs.json index e7a8b02d..8d138ae5 100644 --- a/strings/cs.json +++ b/strings/cs.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Popis", @@ -165,6 +166,7 @@ "LabelNarrator": "Interpret", "LabelNarrators": "Interpreti", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Nedokončeno", "LabelNotStarted": "Nezahájeno", @@ -182,6 +184,7 @@ "LabelPubDate": "Datum vydání", "LabelPublishYear": "Rok vydání", "LabelRead": "Číst", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Vlastní e-mail vlastníka", diff --git a/strings/da.json b/strings/da.json index d15b5370..408743cb 100644 --- a/strings/da.json +++ b/strings/da.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Beskrivelse", @@ -165,6 +166,7 @@ "LabelNarrator": "Fortæller", "LabelNarrators": "Fortællere", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Ikke færdig", "LabelNotStarted": "Ikke påbegyndt", @@ -182,6 +184,7 @@ "LabelPubDate": "Udgivelsesdato", "LabelPublishYear": "Udgivelsesår", "LabelRead": "Læst", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Brugerdefineret ejerens e-mail", diff --git a/strings/de.json b/strings/de.json index 54201b22..60bcda59 100644 --- a/strings/de.json +++ b/strings/de.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Bücher fortfahren", "LabelContinueEpisodes": "Episoden fortfahren", "LabelContinueListening": "Weiterhören", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Serie fortsetzen", "LabelCustomTime": "Benutzerdefinierte Zeit", "LabelDescription": "Beschreibung", @@ -165,6 +166,7 @@ "LabelNarrator": "Erzähler", "LabelNarrators": "Erzähler", "LabelNewestAuthors": "Neueste Autoren", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "Nein", "LabelNotFinished": "nicht beendet", "LabelNotStarted": "Nicht begonnen", @@ -182,6 +184,7 @@ "LabelPubDate": "Veröffentlichungsdatum", "LabelPublishYear": "Jahr", "LabelRead": "Lesen", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Kürzlich hinzugefügt", "LabelRecentSeries": "Aktuelle Serien", "LabelRSSFeedCustomOwnerEmail": "Benutzerdefinierte Eigentümer-E-Mail", @@ -282,4 +285,4 @@ "ToastPodcastCreateSuccess": "Podcast erstellt", "ToastRSSFeedCloseFailed": "RSS-Feed konnte nicht geschlossen werden", "ToastRSSFeedCloseSuccess": "RSS-Feed geschlossen" -} +} \ No newline at end of file diff --git a/strings/en-us.json b/strings/en-us.json index c09aa828..b96c5929 100644 --- a/strings/en-us.json +++ b/strings/en-us.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Description", @@ -165,6 +166,7 @@ "LabelNarrator": "Narrator", "LabelNarrators": "Narrators", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Not Finished", "LabelNotStarted": "Not Started", @@ -182,6 +184,7 @@ "LabelPubDate": "Pub Date", "LabelPublishYear": "Publish Year", "LabelRead": "Read", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email", diff --git a/strings/es.json b/strings/es.json index 6b778e85..ec095812 100644 --- a/strings/es.json +++ b/strings/es.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Descripción", @@ -165,6 +166,7 @@ "LabelNarrator": "Narrador", "LabelNarrators": "Narradores", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "No Terminado", "LabelNotStarted": "Sin Iniciar", @@ -182,6 +184,7 @@ "LabelPubDate": "Fecha de Publicación", "LabelPublishYear": "Año de Publicación", "LabelRead": "Leído", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Email de dueño personalizado", diff --git a/strings/fr.json b/strings/fr.json index 172fe704..31143b0d 100644 --- a/strings/fr.json +++ b/strings/fr.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Description", @@ -165,6 +166,7 @@ "LabelNarrator": "Narrateur", "LabelNarrators": "Narrateurs", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Non terminé(e)", "LabelNotStarted": "Non Démarré(e)", @@ -182,6 +184,7 @@ "LabelPubDate": "Date de publication", "LabelPublishYear": "Année d’édition", "LabelRead": "Lire", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Courriel du propriétaire personnalisé", diff --git a/strings/gu.json b/strings/gu.json index acb20c0a..3e4011fc 100644 --- a/strings/gu.json +++ b/strings/gu.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Description", @@ -165,6 +166,7 @@ "LabelNarrator": "Narrator", "LabelNarrators": "Narrators", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Not Finished", "LabelNotStarted": "Not Started", @@ -182,6 +184,7 @@ "LabelPubDate": "Pub Date", "LabelPublishYear": "Publish Year", "LabelRead": "Read", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email", diff --git a/strings/hi.json b/strings/hi.json index d8303e39..45bb0c2b 100644 --- a/strings/hi.json +++ b/strings/hi.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Description", @@ -165,6 +166,7 @@ "LabelNarrator": "Narrator", "LabelNarrators": "Narrators", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Not Finished", "LabelNotStarted": "Not Started", @@ -182,6 +184,7 @@ "LabelPubDate": "Pub Date", "LabelPublishYear": "Publish Year", "LabelRead": "Read", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email", diff --git a/strings/hr.json b/strings/hr.json index 2dcc207b..29354142 100644 --- a/strings/hr.json +++ b/strings/hr.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Opis", @@ -165,6 +166,7 @@ "LabelNarrator": "Narrator", "LabelNarrators": "Naratori", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Nedovršeno", "LabelNotStarted": "Not Started", @@ -182,6 +184,7 @@ "LabelPubDate": "Datam izdavanja", "LabelPublishYear": "Godina izdavanja", "LabelRead": "Read", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email", diff --git a/strings/it.json b/strings/it.json index f9551319..71f87d34 100644 --- a/strings/it.json +++ b/strings/it.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Descrizione", @@ -165,6 +166,7 @@ "LabelNarrator": "Narratore", "LabelNarrators": "Narratori", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Da Completare", "LabelNotStarted": "Non iniziato", @@ -182,6 +184,7 @@ "LabelPubDate": "Data Pubblicazione", "LabelPublishYear": "Anno Pubblicazione", "LabelRead": "Leggi", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Email del proprietario personalizzato", @@ -282,4 +285,4 @@ "ToastPodcastCreateSuccess": "Podcast creato Correttamente", "ToastRSSFeedCloseFailed": "Errore chiusura RSS feed", "ToastRSSFeedCloseSuccess": "RSS feed chiuso" -} +} \ No newline at end of file diff --git a/strings/lt.json b/strings/lt.json index 3ff519c7..e64b879f 100644 --- a/strings/lt.json +++ b/strings/lt.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Aprašymas", @@ -165,6 +166,7 @@ "LabelNarrator": "Skaitytojas", "LabelNarrators": "Skaitytojai", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Nebaigta", "LabelNotStarted": "Nepasileista", @@ -182,6 +184,7 @@ "LabelPubDate": "Publikavimo data", "LabelPublishYear": "Leidimo metai", "LabelRead": "Skaityta", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Pasirinktinis savininko el. paštas", diff --git a/strings/nl.json b/strings/nl.json index 67eca949..599a3640 100644 --- a/strings/nl.json +++ b/strings/nl.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Beschrijving", @@ -165,6 +166,7 @@ "LabelNarrator": "Verteller", "LabelNarrators": "Vertellers", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Niet Voltooid", "LabelNotStarted": "Niet Gestart", @@ -182,6 +184,7 @@ "LabelPubDate": "Publicatiedatum", "LabelPublishYear": "Jaar van uitgave", "LabelRead": "Lees", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Aangepast e-mailadres eigenaar", diff --git a/strings/no.json b/strings/no.json index 91ea0d87..23c12365 100644 --- a/strings/no.json +++ b/strings/no.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Beskrivelse", @@ -165,6 +166,7 @@ "LabelNarrator": "Forteller", "LabelNarrators": "Fortellere", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Ikke fullført", "LabelNotStarted": "Ikke startet", @@ -182,6 +184,7 @@ "LabelPubDate": "Publiseringsdato", "LabelPublishYear": "Publikasjonsår", "LabelRead": "Les", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Tilpasset eier Epost", diff --git a/strings/pl.json b/strings/pl.json index 4c97af4a..51126279 100644 --- a/strings/pl.json +++ b/strings/pl.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Opis", @@ -165,6 +166,7 @@ "LabelNarrator": "Narrator", "LabelNarrators": "Lektorzy", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Nieukończone", "LabelNotStarted": "Nie rozpoęczto", @@ -182,6 +184,7 @@ "LabelPubDate": "Data publikacji", "LabelPublishYear": "Rok publikacji", "LabelRead": "Read", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Custom owner Email", diff --git a/strings/ru.json b/strings/ru.json index 25c8f1dc..bf4ae655 100644 --- a/strings/ru.json +++ b/strings/ru.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Продолжить", "LabelContinueEpisodes": "Продолжить эпизоды", "LabelContinueListening": "Продолжить слушать", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Продолжить серии", "LabelCustomTime": "Пользовательское время", "LabelDescription": "Описание", @@ -165,6 +166,7 @@ "LabelNarrator": "Читает", "LabelNarrators": "Чтецы", "LabelNewestAuthors": "Новые авторы", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "Нет", "LabelNotFinished": "Не завершено", "LabelNotStarted": "Не запущено", @@ -182,6 +184,7 @@ "LabelPubDate": "Дата публикации", "LabelPublishYear": "Год публикации", "LabelRead": "Читать", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Недавно добавленные", "LabelRecentSeries": "Недавние серии", "LabelRSSFeedCustomOwnerEmail": "Пользовательский Email владельца", diff --git a/strings/sv.json b/strings/sv.json index a739d33c..4eb6b25f 100644 --- a/strings/sv.json +++ b/strings/sv.json @@ -104,6 +104,7 @@ "LabelContinueBooks": "Continue Books", "LabelContinueEpisodes": "Continue Episodes", "LabelContinueListening": "Continue Listening", + "LabelContinueReading": "Continue Reading", "LabelContinueSeries": "Continue Series", "LabelCustomTime": "Custom time", "LabelDescription": "Beskrivning", @@ -165,6 +166,7 @@ "LabelNarrator": "Berättare", "LabelNarrators": "Berättare", "LabelNewestAuthors": "Newest Authors", + "LabelNewestEpisodes": "Newest Episodes", "LabelNo": "No", "LabelNotFinished": "Ej avslutad", "LabelNotStarted": "Inte påbörjad", @@ -182,6 +184,7 @@ "LabelPubDate": "Publiceringsdatum", "LabelPublishYear": "Publiceringsår", "LabelRead": "Läst", + "LabelReadAgain": "Read Again", "LabelRecentlyAdded": "Recently Added", "LabelRecentSeries": "Recent Series", "LabelRSSFeedCustomOwnerEmail": "Anpassad ägarens e-post", diff --git a/strings/zh-cn.json b/strings/zh-cn.json index f4c7b595..4af15313 100644 --- a/strings/zh-cn.json +++ b/strings/zh-cn.json @@ -104,9 +104,8 @@ "LabelContinueBooks": "继续看书", "LabelContinueEpisodes": "继续剧集", "LabelContinueListening": "继续收听", - "LabelContinueSeries": "继续收听系列", "LabelContinueReading": "继续阅读", - "LabelNewestEpisodes": "最新剧集", + "LabelContinueSeries": "继续收听系列", "LabelCustomTime": "自定义时间", "LabelDescription": "描述", "LabelDisableAudioFadeOut": "禁用音频淡出", @@ -154,7 +153,6 @@ "LabelLight": "轻", "LabelLineSpacing": "行间距", "LabelListenAgain": "再次收听", - "LabelReadAgain": "再次阅读", "LabelLocalBooks": "本地书籍", "LabelLocalPodcasts": "本地播客", "LabelLockOrientation": "锁定方向", @@ -168,6 +166,7 @@ "LabelNarrator": "演播者", "LabelNarrators": "演播者", "LabelNewestAuthors": "最新作者", + "LabelNewestEpisodes": "最新剧集", "LabelNo": "取消", "LabelNotFinished": "未听完", "LabelNotStarted": "未开始", @@ -185,6 +184,7 @@ "LabelPubDate": "出版日期", "LabelPublishYear": "发布年份", "LabelRead": "阅读", + "LabelReadAgain": "再次阅读", "LabelRecentlyAdded": "最近添加", "LabelRecentSeries": "最近添加系列", "LabelRSSFeedCustomOwnerEmail": "自定义所有者电子邮件", @@ -285,4 +285,4 @@ "ToastPodcastCreateSuccess": "已成功创建播客", "ToastRSSFeedCloseFailed": "关闭 RSS 源失败", "ToastRSSFeedCloseSuccess": "RSS 源已关闭" -} +} \ No newline at end of file From 5ef8961c331f964e23f62e23074c6d2dcda5a53b Mon Sep 17 00:00:00 2001 From: advplyr Date: Wed, 27 Dec 2023 17:03:36 -0600 Subject: [PATCH 12/21] Fix:Comma separated links on item page --- pages/item/_id/index.vue | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pages/item/_id/index.vue b/pages/item/_id/index.vue index f9a290ba..dec4128d 100644 --- a/pages/item/_id/index.vue +++ b/pages/item/_id/index.vue @@ -54,7 +54,7 @@ {{ $strings.ButtonRead }} {{ ebookFormat }} - {{ (downloadItem || startingDownload) ? 'downloading' : 'download' }} + {{ downloadItem || startingDownload ? 'downloading' : 'download' }} more_vert @@ -79,8 +79,8 @@
{{ podcastAuthor }}
@@ -90,8 +90,8 @@
{{ $strings.LabelSeries }}
@@ -101,16 +101,16 @@
{{ $strings.LabelNarrators }}
{{ $strings.LabelGenres }}
From d5496c2e9ae32cf97f4f9be47210e081e4e84554 Mon Sep 17 00:00:00 2001 From: advplyr Date: Wed, 27 Dec 2023 17:10:57 -0600 Subject: [PATCH 13/21] Fix:Library list view long titles overflowing, clamped to 2 lines #1013 --- components/cards/LazyListBookCard.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/cards/LazyListBookCard.vue b/components/cards/LazyListBookCard.vue index 3b46b9a4..9aebb8df 100644 --- a/components/cards/LazyListBookCard.vue +++ b/components/cards/LazyListBookCard.vue @@ -15,7 +15,7 @@
-

+

#{{ seriesSequence }} {{ displayTitle }}

{{ displayAuthor }}

From 017b6237ca518d677502ed16785ec1f1327a54e0 Mon Sep 17 00:00:00 2001 From: advplyr Date: Wed, 27 Dec 2023 17:23:55 -0600 Subject: [PATCH 14/21] Fix:Filter dialog clear filter button overflow notch on ios #999 --- components/modals/FilterModal.vue | 6 +++--- components/modals/Modal.vue | 2 +- components/ui/Btn.vue | 8 ++++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/components/modals/FilterModal.vue b/components/modals/FilterModal.vue index ae15f882..e104dd9c 100644 --- a/components/modals/FilterModal.vue +++ b/components/modals/FilterModal.vue @@ -1,12 +1,12 @@