mirror of
https://github.com/Psychotoxical/psysonic.git
synced 2026-07-22 15:25:46 +00:00
feat(themes): paginate theme store and keep scroll on refresh (#1011)
The community Theme Store grew large enough that browsing it meant scrolling through the whole catalogue. Paginate it (12 per page) with a Prev / "Page X of Y" / Next pager that resets to page 1 on filter changes and scrolls back to the top of the list when paging. Also fix the refresh button resetting the scroll position. It set the top-level loading state, which unmounted the list and collapsed the scroll viewport so it clamped back to the top. Refreshing now keeps the existing list mounted and only spins the refresh icon; the full-page loading and error placeholders are reserved for the initial load. Adds themeStorePagePrev / PageNext / PageStatus across all nine locales and a ThemeStoreSection test covering pagination, filtering, page reset, and the refresh-keeps-scroll behaviour.
This commit is contained in:
@@ -351,6 +351,9 @@ export const settings = {
|
||||
themeStoreUpdating: 'Aktualisiere…',
|
||||
themeStoreUninstall: 'Deinstallieren',
|
||||
themeStoreInstallFailed: 'Installation fehlgeschlagen',
|
||||
themeStorePagePrev: 'Vorherige Seite',
|
||||
themeStorePageNext: 'Nächste Seite',
|
||||
themeStorePageStatus: 'Seite {{page}} von {{total}}',
|
||||
tabLibrary: 'Bibliothek',
|
||||
tabServers: 'Server',
|
||||
tabLyrics: 'Songtexte',
|
||||
|
||||
@@ -418,6 +418,9 @@ export const settings = {
|
||||
themeStoreUpdating: 'Updating…',
|
||||
themeStoreUninstall: 'Uninstall',
|
||||
themeStoreInstallFailed: 'Install failed',
|
||||
themeStorePagePrev: 'Previous page',
|
||||
themeStorePageNext: 'Next page',
|
||||
themeStorePageStatus: 'Page {{page}} of {{total}}',
|
||||
tabLibrary: 'Library',
|
||||
tabServers: 'Servers',
|
||||
tabLyrics: 'Lyrics',
|
||||
|
||||
@@ -349,6 +349,9 @@ export const settings = {
|
||||
themeStoreUpdating: 'Actualizando…',
|
||||
themeStoreUninstall: 'Desinstalar',
|
||||
themeStoreInstallFailed: 'Error al instalar',
|
||||
themeStorePagePrev: 'Página anterior',
|
||||
themeStorePageNext: 'Página siguiente',
|
||||
themeStorePageStatus: 'Página {{page}} de {{total}}',
|
||||
tabLibrary: 'Biblioteca',
|
||||
tabServers: 'Servidores',
|
||||
tabLyrics: 'Letras',
|
||||
|
||||
@@ -347,6 +347,9 @@ export const settings = {
|
||||
themeStoreUpdating: 'Mise à jour…',
|
||||
themeStoreUninstall: 'Désinstaller',
|
||||
themeStoreInstallFailed: "Échec de l'installation",
|
||||
themeStorePagePrev: 'Page précédente',
|
||||
themeStorePageNext: 'Page suivante',
|
||||
themeStorePageStatus: 'Page {{page}} sur {{total}}',
|
||||
tabLibrary: 'Bibliothèque',
|
||||
tabServers: 'Serveurs',
|
||||
tabLyrics: 'Paroles',
|
||||
|
||||
@@ -350,6 +350,9 @@ export const settings = {
|
||||
themeStoreUpdating: 'Oppdaterer…',
|
||||
themeStoreUninstall: 'Avinstaller',
|
||||
themeStoreInstallFailed: 'Installasjonen mislyktes',
|
||||
themeStorePagePrev: 'Forrige side',
|
||||
themeStorePageNext: 'Neste side',
|
||||
themeStorePageStatus: 'Side {{page}} av {{total}}',
|
||||
tabStorage: 'Frakoblet & Cache',
|
||||
inputKeybindingsTitle: 'Tastatursnarveier',
|
||||
aboutContributorsCount_one: '{{count}} bidrag',
|
||||
|
||||
@@ -347,6 +347,9 @@ export const settings = {
|
||||
themeStoreUpdating: 'Bijwerken…',
|
||||
themeStoreUninstall: 'Verwijderen',
|
||||
themeStoreInstallFailed: 'Installatie mislukt',
|
||||
themeStorePagePrev: 'Vorige pagina',
|
||||
themeStorePageNext: 'Volgende pagina',
|
||||
themeStorePageStatus: 'Pagina {{page}} van {{total}}',
|
||||
tabLibrary: 'Bibliotheek',
|
||||
tabServers: 'Servers',
|
||||
tabLyrics: 'Songteksten',
|
||||
|
||||
@@ -353,6 +353,9 @@ export const settings = {
|
||||
themeStoreUpdating: 'Se actualizează…',
|
||||
themeStoreUninstall: 'Dezinstalează',
|
||||
themeStoreInstallFailed: 'Instalarea a eșuat',
|
||||
themeStorePagePrev: 'Pagina anterioară',
|
||||
themeStorePageNext: 'Pagina următoare',
|
||||
themeStorePageStatus: 'Pagina {{page}} din {{total}}',
|
||||
tabLibrary: 'Librărie',
|
||||
tabServers: 'Servere',
|
||||
tabLyrics: 'Versuri',
|
||||
|
||||
@@ -429,6 +429,9 @@ export const settings = {
|
||||
themeStoreUpdating: 'Обновление…',
|
||||
themeStoreUninstall: 'Удалить',
|
||||
themeStoreInstallFailed: 'Ошибка установки',
|
||||
themeStorePagePrev: 'Предыдущая страница',
|
||||
themeStorePageNext: 'Следующая страница',
|
||||
themeStorePageStatus: 'Страница {{page}} из {{total}}',
|
||||
tabLibrary: 'Библиотека',
|
||||
tabServers: 'Серверы',
|
||||
tabLyrics: 'Тексты песен',
|
||||
|
||||
@@ -346,6 +346,9 @@ export const settings = {
|
||||
themeStoreUpdating: '正在更新…',
|
||||
themeStoreUninstall: '卸载',
|
||||
themeStoreInstallFailed: '安装失败',
|
||||
themeStorePagePrev: '上一页',
|
||||
themeStorePageNext: '下一页',
|
||||
themeStorePageStatus: '第 {{page}} 页,共 {{total}} 页',
|
||||
tabLibrary: '媒体库',
|
||||
tabServers: '服务器',
|
||||
tabLyrics: '歌词',
|
||||
|
||||
Reference in New Issue
Block a user