feat(library): offline fallback for album & artist detail pages
Extend the offline-library behaviour to the detail screens: with the backend unreachable, both pages resolve their entity + tracks/albums from the locally-cached library (reusing the `selectLocal*` selectors, filtered by id) instead of showing a retry-only error. - album detail: album + tracks from cache; offline banner; "not available offline" state when the album isn't cached; inner track states no longer error over locally-available tracks - artist detail: artist + discography + tracks from cache; same treatment - i18n: `common.offlineBanner`, `album.offline.*`, `artist.offline.*` (en + ru) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -116,6 +116,10 @@ const ru: Translations = {
|
||||
title: 'Нет треков',
|
||||
description: 'В этом альбоме нет треков.',
|
||||
},
|
||||
offline: {
|
||||
title: 'Альбом недоступен офлайн',
|
||||
description: 'Нет связи, а этот альбом не сохранён на устройстве.',
|
||||
},
|
||||
},
|
||||
artist: {
|
||||
type: 'Исполнитель',
|
||||
@@ -129,6 +133,10 @@ const ru: Translations = {
|
||||
title: 'Нет треков',
|
||||
description: 'У этого исполнителя нет треков.',
|
||||
},
|
||||
offline: {
|
||||
title: 'Исполнитель недоступен офлайн',
|
||||
description: 'Нет связи, а этот исполнитель не сохранён на устройстве.',
|
||||
},
|
||||
},
|
||||
playlist: {
|
||||
type: 'Плейлист',
|
||||
@@ -231,6 +239,8 @@ const ru: Translations = {
|
||||
retry: 'Повторить',
|
||||
comingSoon: 'Скоро',
|
||||
back: 'Назад',
|
||||
offlineBanner:
|
||||
'Нет связи с сервером — показаны локально доступные данные, только для чтения.',
|
||||
},
|
||||
storage: {
|
||||
subtitle: 'Всё, что хранит этот инстанс',
|
||||
|
||||
Reference in New Issue
Block a user