feat: donation button

This commit is contained in:
edde746
2026-04-19 11:52:46 +02:00
parent ff2928b18f
commit b4e78febc0
35 changed files with 164 additions and 40 deletions
+1
View File
@@ -1 +1,2 @@
github: edde746 github: edde746
liberapay: edde746
+8 -7
View File
@@ -7,6 +7,7 @@ env:
SENTRY_DART_DEFINE: ${{ github.repository == 'edde746/plezy' && '--dart-define=ENABLE_SENTRY=true' || '' }} SENTRY_DART_DEFINE: ${{ github.repository == 'edde746/plezy' && '--dart-define=ENABLE_SENTRY=true' || '' }}
GIT_COMMIT_DART_DEFINE: --dart-define=GIT_COMMIT=${{ github.sha }} GIT_COMMIT_DART_DEFINE: --dart-define=GIT_COMMIT=${{ github.sha }}
SENTRY_ENV_DART_DEFINE: --dart-define=SENTRY_ENVIRONMENT=github SENTRY_ENV_DART_DEFINE: --dart-define=SENTRY_ENVIRONMENT=github
DONATIONS_DART_DEFINE: --dart-define=ENABLE_DONATIONS=true
jobs: jobs:
build-android: build-android:
@@ -63,7 +64,7 @@ jobs:
EOF EOF
- name: Build APKs - name: Build APKs
run: flutter build apk --release --split-per-abi --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} run: flutter build apk --release --split-per-abi --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} ${{ env.DONATIONS_DART_DEFINE }}
- name: Clean up keystore - name: Clean up keystore
if: always() if: always()
@@ -131,7 +132,7 @@ jobs:
run: flutter pub get run: flutter pub get
- name: Build iOS (no codesign) - name: Build iOS (no codesign)
run: flutter build ios --release --no-codesign --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} run: flutter build ios --release --no-codesign --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} ${{ env.DONATIONS_DART_DEFINE }}
- name: Create IPA - name: Create IPA
run: | run: |
@@ -189,7 +190,7 @@ jobs:
run: flutter pub get run: flutter pub get
- name: Build macOS - name: Build macOS
run: flutter build macos --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} run: flutter build macos --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} ${{ env.DONATIONS_DART_DEFINE }}
- name: Import Code Signing Certificate - name: Import Code Signing Certificate
env: env:
@@ -340,7 +341,7 @@ jobs:
run: flutter pub get run: flutter pub get
- name: Build Windows x64 - name: Build Windows x64
run: flutter build windows --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} run: flutter build windows --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} ${{ env.DONATIONS_DART_DEFINE }}
- name: Upload x64 build - name: Upload x64 build
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@@ -377,7 +378,7 @@ jobs:
run: flutter pub get run: flutter pub get
- name: Build Windows arm64 - name: Build Windows arm64
run: flutter build windows --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} run: flutter build windows --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} ${{ env.DONATIONS_DART_DEFINE }}
- name: Upload arm64 build - name: Upload arm64 build
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
@@ -521,7 +522,7 @@ jobs:
run: flutter pub get run: flutter pub get
- name: Build Linux x64 - name: Build Linux x64
run: flutter build linux --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} run: flutter build linux --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} ${{ env.DONATIONS_DART_DEFINE }}
env: env:
PKG_CONFIG_PATH: ${{ github.workspace }}/libmpv-prefix/lib/pkgconfig:${{ github.workspace }}/libmpv-prefix/lib/x86_64-linux-gnu/pkgconfig PKG_CONFIG_PATH: ${{ github.workspace }}/libmpv-prefix/lib/pkgconfig:${{ github.workspace }}/libmpv-prefix/lib/x86_64-linux-gnu/pkgconfig
@@ -629,7 +630,7 @@ jobs:
run: flutter pub get run: flutter pub get
- name: Build Linux arm64 - name: Build Linux arm64
run: flutter build linux --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} run: flutter build linux --release --dart-define=ENABLE_UPDATE_CHECK=true ${{ env.SENTRY_DART_DEFINE }} ${{ env.GIT_COMMIT_DART_DEFINE }} ${{ env.SENTRY_ENV_DART_DEFINE }} ${{ env.DONATIONS_DART_DEFINE }}
env: env:
PKG_CONFIG_PATH: ${{ github.workspace }}/libmpv-prefix/lib/pkgconfig:${{ github.workspace }}/libmpv-prefix/lib/aarch64-linux-gnu/pkgconfig PKG_CONFIG_PATH: ${{ github.workspace }}/libmpv-prefix/lib/pkgconfig:${{ github.workspace }}/libmpv-prefix/lib/aarch64-linux-gnu/pkgconfig
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Indstillinger", "title": "Indstillinger",
"supportDeveloper": "Støt Plezy",
"supportDeveloperDescription": "Doner via Liberapay for at finansiere udviklingen",
"language": "Sprog", "language": "Sprog",
"theme": "Tema", "theme": "Tema",
"appearance": "Udseende", "appearance": "Udseende",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Einstellungen", "title": "Einstellungen",
"supportDeveloper": "Plezy unterstützen",
"supportDeveloperDescription": "Per Liberapay spenden, um die Entwicklung zu fördern",
"language": "Sprache", "language": "Sprache",
"theme": "Design", "theme": "Design",
"appearance": "Darstellung", "appearance": "Darstellung",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Settings", "title": "Settings",
"supportDeveloper": "Support Plezy",
"supportDeveloperDescription": "Donate via Liberapay to fund development",
"language": "Language", "language": "Language",
"theme": "Theme", "theme": "Theme",
"appearance": "Appearance", "appearance": "Appearance",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Configuración", "title": "Configuración",
"supportDeveloper": "Apoya Plezy",
"supportDeveloperDescription": "Dona vía Liberapay para financiar el desarrollo",
"language": "Idioma", "language": "Idioma",
"theme": "Tema", "theme": "Tema",
"appearance": "Apariencia", "appearance": "Apariencia",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Paramètres", "title": "Paramètres",
"supportDeveloper": "Soutenir Plezy",
"supportDeveloperDescription": "Faites un don via Liberapay pour financer le développement",
"language": "Langue", "language": "Langue",
"theme": "Thème", "theme": "Thème",
"appearance": "Apparence", "appearance": "Apparence",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Impostazioni", "title": "Impostazioni",
"supportDeveloper": "Supporta Plezy",
"supportDeveloperDescription": "Dona tramite Liberapay per finanziare lo sviluppo",
"language": "Lingua", "language": "Lingua",
"theme": "Tema", "theme": "Tema",
"appearance": "Aspetto", "appearance": "Aspetto",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "設定", "title": "設定",
"supportDeveloper": "Plezy を支援",
"supportDeveloperDescription": "Liberapay で寄付して開発を支援",
"language": "言語", "language": "言語",
"theme": "テーマ", "theme": "テーマ",
"appearance": "外観", "appearance": "外観",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "설정", "title": "설정",
"supportDeveloper": "Plezy 후원하기",
"supportDeveloperDescription": "Liberapay로 후원하여 개발 지원",
"language": "언어", "language": "언어",
"theme": "테마", "theme": "테마",
"appearance": "외관", "appearance": "외관",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Innstillinger", "title": "Innstillinger",
"supportDeveloper": "Støtt Plezy",
"supportDeveloperDescription": "Doner via Liberapay for å finansiere utviklingen",
"language": "Språk", "language": "Språk",
"theme": "Tema", "theme": "Tema",
"appearance": "Utseende", "appearance": "Utseende",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Instellingen", "title": "Instellingen",
"supportDeveloper": "Steun Plezy",
"supportDeveloperDescription": "Doneer via Liberapay om de ontwikkeling te steunen",
"language": "Taal", "language": "Taal",
"theme": "Thema", "theme": "Thema",
"appearance": "Uiterlijk", "appearance": "Uiterlijk",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Ustawienia", "title": "Ustawienia",
"supportDeveloper": "Wesprzyj Plezy",
"supportDeveloperDescription": "Wspomóż rozwój darowizną na Liberapay",
"language": "Język", "language": "Język",
"theme": "Motyw", "theme": "Motyw",
"appearance": "Wygląd", "appearance": "Wygląd",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Configurações", "title": "Configurações",
"supportDeveloper": "Apoie o Plezy",
"supportDeveloperDescription": "Doe via Liberapay para financiar o desenvolvimento",
"language": "Idioma", "language": "Idioma",
"theme": "Tema", "theme": "Tema",
"appearance": "Aparência", "appearance": "Aparência",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Настройки", "title": "Настройки",
"supportDeveloper": "Поддержать Plezy",
"supportDeveloperDescription": "Пожертвуйте через Liberapay на развитие",
"language": "Язык", "language": "Язык",
"theme": "Тема", "theme": "Тема",
"appearance": "Внешний вид", "appearance": "Внешний вид",
+2 -2
View File
@@ -4,9 +4,9 @@
/// To regenerate, run: `dart run slang` /// To regenerate, run: `dart run slang`
/// ///
/// Locales: 15 /// Locales: 15
/// Strings: 13575 (905 per locale) /// Strings: 13605 (907 per locale)
/// ///
/// Built on 2026-04-19 at 09:09 UTC /// Built on 2026-04-19 at 09:37 UTC
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: type=lint, unused_import // ignore_for_file: type=lint, unused_import
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsDa implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Indstillinger'; @override String get title => 'Indstillinger';
@override String get supportDeveloper => 'Støt Plezy';
@override String get supportDeveloperDescription => 'Doner via Liberapay for at finansiere udviklingen';
@override String get language => 'Sprog'; @override String get language => 'Sprog';
@override String get theme => 'Tema'; @override String get theme => 'Tema';
@override String get appearance => 'Udseende'; @override String get appearance => 'Udseende';
@@ -1476,6 +1478,8 @@ extension on TranslationsDa {
'update.latestVersion' => 'Du har den nyeste version', 'update.latestVersion' => 'Du har den nyeste version',
'update.checkFailed' => 'Kunne ikke søge efter opdateringer', 'update.checkFailed' => 'Kunne ikke søge efter opdateringer',
'settings.title' => 'Indstillinger', 'settings.title' => 'Indstillinger',
'settings.supportDeveloper' => 'Støt Plezy',
'settings.supportDeveloperDescription' => 'Doner via Liberapay for at finansiere udviklingen',
'settings.language' => 'Sprog', 'settings.language' => 'Sprog',
'settings.theme' => 'Tema', 'settings.theme' => 'Tema',
'settings.appearance' => 'Udseende', 'settings.appearance' => 'Udseende',
@@ -1922,10 +1926,10 @@ extension on TranslationsDa {
'libraries.noFoldersFound' => 'Ingen mapper fundet', 'libraries.noFoldersFound' => 'Ingen mapper fundet',
'libraries.folders' => 'mapper', 'libraries.folders' => 'mapper',
'libraries.tabs.recommended' => 'Anbefalet', 'libraries.tabs.recommended' => 'Anbefalet',
'libraries.tabs.browse' => 'Gennemse',
'libraries.tabs.collections' => 'Samlinger',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Gennemse',
'libraries.tabs.collections' => 'Samlinger',
'libraries.tabs.playlists' => 'Playlister', 'libraries.tabs.playlists' => 'Playlister',
'libraries.groupings.title' => 'Gruppering', 'libraries.groupings.title' => 'Gruppering',
'libraries.groupings.all' => 'Alle', 'libraries.groupings.all' => 'Alle',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsDe implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Einstellungen'; @override String get title => 'Einstellungen';
@override String get supportDeveloper => 'Plezy unterstützen';
@override String get supportDeveloperDescription => 'Per Liberapay spenden, um die Entwicklung zu fördern';
@override String get language => 'Sprache'; @override String get language => 'Sprache';
@override String get theme => 'Design'; @override String get theme => 'Design';
@override String get appearance => 'Darstellung'; @override String get appearance => 'Darstellung';
@@ -1476,6 +1478,8 @@ extension on TranslationsDe {
'update.latestVersion' => 'Aktuellste Version installiert', 'update.latestVersion' => 'Aktuellste Version installiert',
'update.checkFailed' => 'Fehler bei der Updateprüfung', 'update.checkFailed' => 'Fehler bei der Updateprüfung',
'settings.title' => 'Einstellungen', 'settings.title' => 'Einstellungen',
'settings.supportDeveloper' => 'Plezy unterstützen',
'settings.supportDeveloperDescription' => 'Per Liberapay spenden, um die Entwicklung zu fördern',
'settings.language' => 'Sprache', 'settings.language' => 'Sprache',
'settings.theme' => 'Design', 'settings.theme' => 'Design',
'settings.appearance' => 'Darstellung', 'settings.appearance' => 'Darstellung',
@@ -1922,10 +1926,10 @@ extension on TranslationsDe {
'libraries.noFoldersFound' => 'Keine Ordner gefunden', 'libraries.noFoldersFound' => 'Keine Ordner gefunden',
'libraries.folders' => 'Ordner', 'libraries.folders' => 'Ordner',
'libraries.tabs.recommended' => 'Empfohlen', 'libraries.tabs.recommended' => 'Empfohlen',
'libraries.tabs.browse' => 'Durchsuchen',
'libraries.tabs.collections' => 'Sammlungen',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Durchsuchen',
'libraries.tabs.collections' => 'Sammlungen',
'libraries.tabs.playlists' => 'Wiedergabelisten', 'libraries.tabs.playlists' => 'Wiedergabelisten',
'libraries.groupings.title' => 'Gruppierung', 'libraries.groupings.title' => 'Gruppierung',
'libraries.groupings.all' => 'Alle', 'libraries.groupings.all' => 'Alle',
+10 -2
View File
@@ -326,6 +326,12 @@ class TranslationsSettingsEn {
/// en: 'Settings' /// en: 'Settings'
String get title => 'Settings'; String get title => 'Settings';
/// en: 'Support Plezy'
String get supportDeveloper => 'Support Plezy';
/// en: 'Donate via Liberapay to fund development'
String get supportDeveloperDescription => 'Donate via Liberapay to fund development';
/// en: 'Language' /// en: 'Language'
String get language => 'Language'; String get language => 'Language';
@@ -3293,6 +3299,8 @@ extension on Translations {
'update.latestVersion' => 'You are on the latest version', 'update.latestVersion' => 'You are on the latest version',
'update.checkFailed' => 'Failed to check for updates', 'update.checkFailed' => 'Failed to check for updates',
'settings.title' => 'Settings', 'settings.title' => 'Settings',
'settings.supportDeveloper' => 'Support Plezy',
'settings.supportDeveloperDescription' => 'Donate via Liberapay to fund development',
'settings.language' => 'Language', 'settings.language' => 'Language',
'settings.theme' => 'Theme', 'settings.theme' => 'Theme',
'settings.appearance' => 'Appearance', 'settings.appearance' => 'Appearance',
@@ -3739,10 +3747,10 @@ extension on Translations {
'libraries.noFoldersFound' => 'No folders found', 'libraries.noFoldersFound' => 'No folders found',
'libraries.folders' => 'folders', 'libraries.folders' => 'folders',
'libraries.tabs.recommended' => 'Recommended', 'libraries.tabs.recommended' => 'Recommended',
'libraries.tabs.browse' => 'Browse',
'libraries.tabs.collections' => 'Collections',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Browse',
'libraries.tabs.collections' => 'Collections',
'libraries.tabs.playlists' => 'Playlists', 'libraries.tabs.playlists' => 'Playlists',
'libraries.groupings.title' => 'Grouping', 'libraries.groupings.title' => 'Grouping',
'libraries.groupings.all' => 'All', 'libraries.groupings.all' => 'All',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsEs implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Configuración'; @override String get title => 'Configuración';
@override String get supportDeveloper => 'Apoya Plezy';
@override String get supportDeveloperDescription => 'Dona vía Liberapay para financiar el desarrollo';
@override String get language => 'Idioma'; @override String get language => 'Idioma';
@override String get theme => 'Tema'; @override String get theme => 'Tema';
@override String get appearance => 'Apariencia'; @override String get appearance => 'Apariencia';
@@ -1476,6 +1478,8 @@ extension on TranslationsEs {
'update.latestVersion' => 'Ya estás en la última versión', 'update.latestVersion' => 'Ya estás en la última versión',
'update.checkFailed' => 'Error al buscar actualizaciones', 'update.checkFailed' => 'Error al buscar actualizaciones',
'settings.title' => 'Configuración', 'settings.title' => 'Configuración',
'settings.supportDeveloper' => 'Apoya Plezy',
'settings.supportDeveloperDescription' => 'Dona vía Liberapay para financiar el desarrollo',
'settings.language' => 'Idioma', 'settings.language' => 'Idioma',
'settings.theme' => 'Tema', 'settings.theme' => 'Tema',
'settings.appearance' => 'Apariencia', 'settings.appearance' => 'Apariencia',
@@ -1922,10 +1926,10 @@ extension on TranslationsEs {
'libraries.noFoldersFound' => 'No se encontraron carpetas', 'libraries.noFoldersFound' => 'No se encontraron carpetas',
'libraries.folders' => 'carpetas', 'libraries.folders' => 'carpetas',
'libraries.tabs.recommended' => 'Recomendado', 'libraries.tabs.recommended' => 'Recomendado',
'libraries.tabs.browse' => 'Explorar',
'libraries.tabs.collections' => 'Colecciones',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Explorar',
'libraries.tabs.collections' => 'Colecciones',
'libraries.tabs.playlists' => 'Listas', 'libraries.tabs.playlists' => 'Listas',
'libraries.groupings.title' => 'Agrupación', 'libraries.groupings.title' => 'Agrupación',
'libraries.groupings.all' => 'Todo', 'libraries.groupings.all' => 'Todo',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsFr implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Paramètres'; @override String get title => 'Paramètres';
@override String get supportDeveloper => 'Soutenir Plezy';
@override String get supportDeveloperDescription => 'Faites un don via Liberapay pour financer le développement';
@override String get language => 'Langue'; @override String get language => 'Langue';
@override String get theme => 'Thème'; @override String get theme => 'Thème';
@override String get appearance => 'Apparence'; @override String get appearance => 'Apparence';
@@ -1476,6 +1478,8 @@ extension on TranslationsFr {
'update.latestVersion' => 'Vous utilisez la dernière version', 'update.latestVersion' => 'Vous utilisez la dernière version',
'update.checkFailed' => 'Échec de la vérification des mises à jour', 'update.checkFailed' => 'Échec de la vérification des mises à jour',
'settings.title' => 'Paramètres', 'settings.title' => 'Paramètres',
'settings.supportDeveloper' => 'Soutenir Plezy',
'settings.supportDeveloperDescription' => 'Faites un don via Liberapay pour financer le développement',
'settings.language' => 'Langue', 'settings.language' => 'Langue',
'settings.theme' => 'Thème', 'settings.theme' => 'Thème',
'settings.appearance' => 'Apparence', 'settings.appearance' => 'Apparence',
@@ -1922,10 +1926,10 @@ extension on TranslationsFr {
'libraries.noFoldersFound' => 'Aucun dossier trouvé', 'libraries.noFoldersFound' => 'Aucun dossier trouvé',
'libraries.folders' => 'dossiers', 'libraries.folders' => 'dossiers',
'libraries.tabs.recommended' => 'Recommandé', 'libraries.tabs.recommended' => 'Recommandé',
'libraries.tabs.browse' => 'Parcourir',
'libraries.tabs.collections' => 'Collections',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Parcourir',
'libraries.tabs.collections' => 'Collections',
'libraries.tabs.playlists' => 'Playlists', 'libraries.tabs.playlists' => 'Playlists',
'libraries.groupings.title' => 'Regroupement', 'libraries.groupings.title' => 'Regroupement',
'libraries.groupings.all' => 'Tous', 'libraries.groupings.all' => 'Tous',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsIt implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Impostazioni'; @override String get title => 'Impostazioni';
@override String get supportDeveloper => 'Supporta Plezy';
@override String get supportDeveloperDescription => 'Dona tramite Liberapay per finanziare lo sviluppo';
@override String get language => 'Lingua'; @override String get language => 'Lingua';
@override String get theme => 'Tema'; @override String get theme => 'Tema';
@override String get appearance => 'Aspetto'; @override String get appearance => 'Aspetto';
@@ -1476,6 +1478,8 @@ extension on TranslationsIt {
'update.latestVersion' => 'La versione installata è l\'ultima disponibile', 'update.latestVersion' => 'La versione installata è l\'ultima disponibile',
'update.checkFailed' => 'Impossibile controllare gli aggiornamenti', 'update.checkFailed' => 'Impossibile controllare gli aggiornamenti',
'settings.title' => 'Impostazioni', 'settings.title' => 'Impostazioni',
'settings.supportDeveloper' => 'Supporta Plezy',
'settings.supportDeveloperDescription' => 'Dona tramite Liberapay per finanziare lo sviluppo',
'settings.language' => 'Lingua', 'settings.language' => 'Lingua',
'settings.theme' => 'Tema', 'settings.theme' => 'Tema',
'settings.appearance' => 'Aspetto', 'settings.appearance' => 'Aspetto',
@@ -1922,10 +1926,10 @@ extension on TranslationsIt {
'libraries.noFoldersFound' => 'Nessuna cartella trovata', 'libraries.noFoldersFound' => 'Nessuna cartella trovata',
'libraries.folders' => 'cartelle', 'libraries.folders' => 'cartelle',
'libraries.tabs.recommended' => 'Consigliati', 'libraries.tabs.recommended' => 'Consigliati',
'libraries.tabs.browse' => 'Esplora',
'libraries.tabs.collections' => 'Raccolte',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Esplora',
'libraries.tabs.collections' => 'Raccolte',
'libraries.tabs.playlists' => 'Playlist', 'libraries.tabs.playlists' => 'Playlist',
'libraries.groupings.title' => 'Raggruppamento', 'libraries.groupings.title' => 'Raggruppamento',
'libraries.groupings.all' => 'Tutti', 'libraries.groupings.all' => 'Tutti',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsJa implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => '設定'; @override String get title => '設定';
@override String get supportDeveloper => 'Plezy を支援';
@override String get supportDeveloperDescription => 'Liberapay で寄付して開発を支援';
@override String get language => '言語'; @override String get language => '言語';
@override String get theme => 'テーマ'; @override String get theme => 'テーマ';
@override String get appearance => '外観'; @override String get appearance => '外観';
@@ -1476,6 +1478,8 @@ extension on TranslationsJa {
'update.latestVersion' => '最新バージョンです', 'update.latestVersion' => '最新バージョンです',
'update.checkFailed' => 'アップデートの確認に失敗しました', 'update.checkFailed' => 'アップデートの確認に失敗しました',
'settings.title' => '設定', 'settings.title' => '設定',
'settings.supportDeveloper' => 'Plezy を支援',
'settings.supportDeveloperDescription' => 'Liberapay で寄付して開発を支援',
'settings.language' => '言語', 'settings.language' => '言語',
'settings.theme' => 'テーマ', 'settings.theme' => 'テーマ',
'settings.appearance' => '外観', 'settings.appearance' => '外観',
@@ -1922,10 +1926,10 @@ extension on TranslationsJa {
'libraries.noFoldersFound' => 'フォルダが見つかりません', 'libraries.noFoldersFound' => 'フォルダが見つかりません',
'libraries.folders' => 'フォルダ', 'libraries.folders' => 'フォルダ',
'libraries.tabs.recommended' => 'おすすめ', 'libraries.tabs.recommended' => 'おすすめ',
'libraries.tabs.browse' => 'ブラウズ',
'libraries.tabs.collections' => 'コレクション',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'ブラウズ',
'libraries.tabs.collections' => 'コレクション',
'libraries.tabs.playlists' => 'プレイリスト', 'libraries.tabs.playlists' => 'プレイリスト',
'libraries.groupings.title' => 'グループ', 'libraries.groupings.title' => 'グループ',
'libraries.groupings.all' => 'すべて', 'libraries.groupings.all' => 'すべて',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsKo implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => '설정'; @override String get title => '설정';
@override String get supportDeveloper => 'Plezy 후원하기';
@override String get supportDeveloperDescription => 'Liberapay로 후원하여 개발 지원';
@override String get language => '언어'; @override String get language => '언어';
@override String get theme => '테마'; @override String get theme => '테마';
@override String get appearance => '외관'; @override String get appearance => '외관';
@@ -1476,6 +1478,8 @@ extension on TranslationsKo {
'update.latestVersion' => '최신 버전을 사용 중입니다', 'update.latestVersion' => '최신 버전을 사용 중입니다',
'update.checkFailed' => '업데이트 확인 실패', 'update.checkFailed' => '업데이트 확인 실패',
'settings.title' => '설정', 'settings.title' => '설정',
'settings.supportDeveloper' => 'Plezy 후원하기',
'settings.supportDeveloperDescription' => 'Liberapay로 후원하여 개발 지원',
'settings.language' => '언어', 'settings.language' => '언어',
'settings.theme' => '테마', 'settings.theme' => '테마',
'settings.appearance' => '외관', 'settings.appearance' => '외관',
@@ -1922,10 +1926,10 @@ extension on TranslationsKo {
'libraries.noFoldersFound' => '폴더를 찾을 수 없습니다', 'libraries.noFoldersFound' => '폴더를 찾을 수 없습니다',
'libraries.folders' => '폴더', 'libraries.folders' => '폴더',
'libraries.tabs.recommended' => '추천', 'libraries.tabs.recommended' => '추천',
'libraries.tabs.browse' => '찾아보기',
'libraries.tabs.collections' => '컬렉션',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => '찾아보기',
'libraries.tabs.collections' => '컬렉션',
'libraries.tabs.playlists' => '재생 목록', 'libraries.tabs.playlists' => '재생 목록',
'libraries.groupings.title' => '그룹', 'libraries.groupings.title' => '그룹',
'libraries.groupings.all' => '전체', 'libraries.groupings.all' => '전체',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsNb implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Innstillinger'; @override String get title => 'Innstillinger';
@override String get supportDeveloper => 'Støtt Plezy';
@override String get supportDeveloperDescription => 'Doner via Liberapay for å finansiere utviklingen';
@override String get language => 'Språk'; @override String get language => 'Språk';
@override String get theme => 'Tema'; @override String get theme => 'Tema';
@override String get appearance => 'Utseende'; @override String get appearance => 'Utseende';
@@ -1476,6 +1478,8 @@ extension on TranslationsNb {
'update.latestVersion' => 'Du har den nyeste versjonen', 'update.latestVersion' => 'Du har den nyeste versjonen',
'update.checkFailed' => 'Kunne ikke se etter oppdateringer', 'update.checkFailed' => 'Kunne ikke se etter oppdateringer',
'settings.title' => 'Innstillinger', 'settings.title' => 'Innstillinger',
'settings.supportDeveloper' => 'Støtt Plezy',
'settings.supportDeveloperDescription' => 'Doner via Liberapay for å finansiere utviklingen',
'settings.language' => 'Språk', 'settings.language' => 'Språk',
'settings.theme' => 'Tema', 'settings.theme' => 'Tema',
'settings.appearance' => 'Utseende', 'settings.appearance' => 'Utseende',
@@ -1922,10 +1926,10 @@ extension on TranslationsNb {
'libraries.noFoldersFound' => 'Ingen mapper funnet', 'libraries.noFoldersFound' => 'Ingen mapper funnet',
'libraries.folders' => 'mapper', 'libraries.folders' => 'mapper',
'libraries.tabs.recommended' => 'Anbefalt', 'libraries.tabs.recommended' => 'Anbefalt',
'libraries.tabs.browse' => 'Bla gjennom',
'libraries.tabs.collections' => 'Samlinger',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Bla gjennom',
'libraries.tabs.collections' => 'Samlinger',
'libraries.tabs.playlists' => 'Spillelister', 'libraries.tabs.playlists' => 'Spillelister',
'libraries.groupings.title' => 'Gruppering', 'libraries.groupings.title' => 'Gruppering',
'libraries.groupings.all' => 'Alle', 'libraries.groupings.all' => 'Alle',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsNl implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Instellingen'; @override String get title => 'Instellingen';
@override String get supportDeveloper => 'Steun Plezy';
@override String get supportDeveloperDescription => 'Doneer via Liberapay om de ontwikkeling te steunen';
@override String get language => 'Taal'; @override String get language => 'Taal';
@override String get theme => 'Thema'; @override String get theme => 'Thema';
@override String get appearance => 'Uiterlijk'; @override String get appearance => 'Uiterlijk';
@@ -1476,6 +1478,8 @@ extension on TranslationsNl {
'update.latestVersion' => 'Je hebt de nieuwste versie', 'update.latestVersion' => 'Je hebt de nieuwste versie',
'update.checkFailed' => 'Kon niet controleren op updates', 'update.checkFailed' => 'Kon niet controleren op updates',
'settings.title' => 'Instellingen', 'settings.title' => 'Instellingen',
'settings.supportDeveloper' => 'Steun Plezy',
'settings.supportDeveloperDescription' => 'Doneer via Liberapay om de ontwikkeling te steunen',
'settings.language' => 'Taal', 'settings.language' => 'Taal',
'settings.theme' => 'Thema', 'settings.theme' => 'Thema',
'settings.appearance' => 'Uiterlijk', 'settings.appearance' => 'Uiterlijk',
@@ -1922,10 +1926,10 @@ extension on TranslationsNl {
'libraries.noFoldersFound' => 'Geen mappen gevonden', 'libraries.noFoldersFound' => 'Geen mappen gevonden',
'libraries.folders' => 'mappen', 'libraries.folders' => 'mappen',
'libraries.tabs.recommended' => 'Aanbevolen', 'libraries.tabs.recommended' => 'Aanbevolen',
'libraries.tabs.browse' => 'Bladeren',
'libraries.tabs.collections' => 'Collecties',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Bladeren',
'libraries.tabs.collections' => 'Collecties',
'libraries.tabs.playlists' => 'Afspeellijsten', 'libraries.tabs.playlists' => 'Afspeellijsten',
'libraries.groupings.title' => 'Groepering', 'libraries.groupings.title' => 'Groepering',
'libraries.groupings.all' => 'Alles', 'libraries.groupings.all' => 'Alles',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsPl implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Ustawienia'; @override String get title => 'Ustawienia';
@override String get supportDeveloper => 'Wesprzyj Plezy';
@override String get supportDeveloperDescription => 'Wspomóż rozwój darowizną na Liberapay';
@override String get language => 'Język'; @override String get language => 'Język';
@override String get theme => 'Motyw'; @override String get theme => 'Motyw';
@override String get appearance => 'Wygląd'; @override String get appearance => 'Wygląd';
@@ -1476,6 +1478,8 @@ extension on TranslationsPl {
'update.latestVersion' => 'Masz najnowszą wersję', 'update.latestVersion' => 'Masz najnowszą wersję',
'update.checkFailed' => 'Nie udało się sprawdzić aktualizacji', 'update.checkFailed' => 'Nie udało się sprawdzić aktualizacji',
'settings.title' => 'Ustawienia', 'settings.title' => 'Ustawienia',
'settings.supportDeveloper' => 'Wesprzyj Plezy',
'settings.supportDeveloperDescription' => 'Wspomóż rozwój darowizną na Liberapay',
'settings.language' => 'Język', 'settings.language' => 'Język',
'settings.theme' => 'Motyw', 'settings.theme' => 'Motyw',
'settings.appearance' => 'Wygląd', 'settings.appearance' => 'Wygląd',
@@ -1922,10 +1926,10 @@ extension on TranslationsPl {
'libraries.noFoldersFound' => 'Nie znaleziono folderów', 'libraries.noFoldersFound' => 'Nie znaleziono folderów',
'libraries.folders' => 'foldery', 'libraries.folders' => 'foldery',
'libraries.tabs.recommended' => 'Rekomendowane', 'libraries.tabs.recommended' => 'Rekomendowane',
'libraries.tabs.browse' => 'Przeglądaj',
'libraries.tabs.collections' => 'Kolekcje',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Przeglądaj',
'libraries.tabs.collections' => 'Kolekcje',
'libraries.tabs.playlists' => 'Playlisty', 'libraries.tabs.playlists' => 'Playlisty',
'libraries.groupings.title' => 'Grupowanie', 'libraries.groupings.title' => 'Grupowanie',
'libraries.groupings.all' => 'Wszystkie', 'libraries.groupings.all' => 'Wszystkie',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsPt implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Configurações'; @override String get title => 'Configurações';
@override String get supportDeveloper => 'Apoie o Plezy';
@override String get supportDeveloperDescription => 'Doe via Liberapay para financiar o desenvolvimento';
@override String get language => 'Idioma'; @override String get language => 'Idioma';
@override String get theme => 'Tema'; @override String get theme => 'Tema';
@override String get appearance => 'Aparência'; @override String get appearance => 'Aparência';
@@ -1476,6 +1478,8 @@ extension on TranslationsPt {
'update.latestVersion' => 'Você está na versão mais recente', 'update.latestVersion' => 'Você está na versão mais recente',
'update.checkFailed' => 'Falha ao verificar atualizações', 'update.checkFailed' => 'Falha ao verificar atualizações',
'settings.title' => 'Configurações', 'settings.title' => 'Configurações',
'settings.supportDeveloper' => 'Apoie o Plezy',
'settings.supportDeveloperDescription' => 'Doe via Liberapay para financiar o desenvolvimento',
'settings.language' => 'Idioma', 'settings.language' => 'Idioma',
'settings.theme' => 'Tema', 'settings.theme' => 'Tema',
'settings.appearance' => 'Aparência', 'settings.appearance' => 'Aparência',
@@ -1922,10 +1926,10 @@ extension on TranslationsPt {
'libraries.noFoldersFound' => 'Nenhuma pasta encontrada', 'libraries.noFoldersFound' => 'Nenhuma pasta encontrada',
'libraries.folders' => 'pastas', 'libraries.folders' => 'pastas',
'libraries.tabs.recommended' => 'Recomendados', 'libraries.tabs.recommended' => 'Recomendados',
'libraries.tabs.browse' => 'Navegar',
'libraries.tabs.collections' => 'Coleções',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Navegar',
'libraries.tabs.collections' => 'Coleções',
'libraries.tabs.playlists' => 'Playlists', 'libraries.tabs.playlists' => 'Playlists',
'libraries.groupings.title' => 'Agrupamento', 'libraries.groupings.title' => 'Agrupamento',
'libraries.groupings.all' => 'Todos', 'libraries.groupings.all' => 'Todos',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsRu implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Настройки'; @override String get title => 'Настройки';
@override String get supportDeveloper => 'Поддержать Plezy';
@override String get supportDeveloperDescription => 'Пожертвуйте через Liberapay на развитие';
@override String get language => 'Язык'; @override String get language => 'Язык';
@override String get theme => 'Тема'; @override String get theme => 'Тема';
@override String get appearance => 'Внешний вид'; @override String get appearance => 'Внешний вид';
@@ -1476,6 +1478,8 @@ extension on TranslationsRu {
'update.latestVersion' => 'У вас последняя версия', 'update.latestVersion' => 'У вас последняя версия',
'update.checkFailed' => 'Не удалось проверить обновления', 'update.checkFailed' => 'Не удалось проверить обновления',
'settings.title' => 'Настройки', 'settings.title' => 'Настройки',
'settings.supportDeveloper' => 'Поддержать Plezy',
'settings.supportDeveloperDescription' => 'Пожертвуйте через Liberapay на развитие',
'settings.language' => 'Язык', 'settings.language' => 'Язык',
'settings.theme' => 'Тема', 'settings.theme' => 'Тема',
'settings.appearance' => 'Внешний вид', 'settings.appearance' => 'Внешний вид',
@@ -1922,10 +1926,10 @@ extension on TranslationsRu {
'libraries.noFoldersFound' => 'Папки не найдены', 'libraries.noFoldersFound' => 'Папки не найдены',
'libraries.folders' => 'папки', 'libraries.folders' => 'папки',
'libraries.tabs.recommended' => 'Рекомендуемые', 'libraries.tabs.recommended' => 'Рекомендуемые',
'libraries.tabs.browse' => 'Обзор',
'libraries.tabs.collections' => 'Коллекции',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Обзор',
'libraries.tabs.collections' => 'Коллекции',
'libraries.tabs.playlists' => 'Плейлисты', 'libraries.tabs.playlists' => 'Плейлисты',
'libraries.groupings.title' => 'Группировка', 'libraries.groupings.title' => 'Группировка',
'libraries.groupings.all' => 'Все', 'libraries.groupings.all' => 'Все',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsSv implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => 'Inställningar'; @override String get title => 'Inställningar';
@override String get supportDeveloper => 'Stöd Plezy';
@override String get supportDeveloperDescription => 'Donera via Liberapay för att finansiera utvecklingen';
@override String get language => 'Språk'; @override String get language => 'Språk';
@override String get theme => 'Tema'; @override String get theme => 'Tema';
@override String get appearance => 'Utseende'; @override String get appearance => 'Utseende';
@@ -1476,6 +1478,8 @@ extension on TranslationsSv {
'update.latestVersion' => 'Du har den senaste versionen', 'update.latestVersion' => 'Du har den senaste versionen',
'update.checkFailed' => 'Misslyckades att kontrollera uppdateringar', 'update.checkFailed' => 'Misslyckades att kontrollera uppdateringar',
'settings.title' => 'Inställningar', 'settings.title' => 'Inställningar',
'settings.supportDeveloper' => 'Stöd Plezy',
'settings.supportDeveloperDescription' => 'Donera via Liberapay för att finansiera utvecklingen',
'settings.language' => 'Språk', 'settings.language' => 'Språk',
'settings.theme' => 'Tema', 'settings.theme' => 'Tema',
'settings.appearance' => 'Utseende', 'settings.appearance' => 'Utseende',
@@ -1922,10 +1926,10 @@ extension on TranslationsSv {
'libraries.noFoldersFound' => 'Inga mappar hittades', 'libraries.noFoldersFound' => 'Inga mappar hittades',
'libraries.folders' => 'mappar', 'libraries.folders' => 'mappar',
'libraries.tabs.recommended' => 'Rekommenderat', 'libraries.tabs.recommended' => 'Rekommenderat',
'libraries.tabs.browse' => 'Bläddra',
'libraries.tabs.collections' => 'Samlingar',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => 'Bläddra',
'libraries.tabs.collections' => 'Samlingar',
'libraries.tabs.playlists' => 'Spellistor', 'libraries.tabs.playlists' => 'Spellistor',
'libraries.groupings.title' => 'Gruppering', 'libraries.groupings.title' => 'Gruppering',
'libraries.groupings.all' => 'Alla', 'libraries.groupings.all' => 'Alla',
+6 -2
View File
@@ -194,6 +194,8 @@ class _TranslationsSettingsZh implements TranslationsSettingsEn {
// Translations // Translations
@override String get title => '设置'; @override String get title => '设置';
@override String get supportDeveloper => '支持 Plezy';
@override String get supportDeveloperDescription => '通过 Liberapay 捐赠支持开发';
@override String get language => '语言'; @override String get language => '语言';
@override String get theme => '主题'; @override String get theme => '主题';
@override String get appearance => '外观'; @override String get appearance => '外观';
@@ -1476,6 +1478,8 @@ extension on TranslationsZh {
'update.latestVersion' => '已安装的版本是可用的最新版本', 'update.latestVersion' => '已安装的版本是可用的最新版本',
'update.checkFailed' => '无法检查更新', 'update.checkFailed' => '无法检查更新',
'settings.title' => '设置', 'settings.title' => '设置',
'settings.supportDeveloper' => '支持 Plezy',
'settings.supportDeveloperDescription' => '通过 Liberapay 捐赠支持开发',
'settings.language' => '语言', 'settings.language' => '语言',
'settings.theme' => '主题', 'settings.theme' => '主题',
'settings.appearance' => '外观', 'settings.appearance' => '外观',
@@ -1922,10 +1926,10 @@ extension on TranslationsZh {
'libraries.noFoldersFound' => '未找到文件夹', 'libraries.noFoldersFound' => '未找到文件夹',
'libraries.folders' => '文件夹', 'libraries.folders' => '文件夹',
'libraries.tabs.recommended' => '推荐', 'libraries.tabs.recommended' => '推荐',
'libraries.tabs.browse' => '浏览',
'libraries.tabs.collections' => '合集',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'libraries.tabs.browse' => '浏览',
'libraries.tabs.collections' => '合集',
'libraries.tabs.playlists' => '播放列表', 'libraries.tabs.playlists' => '播放列表',
'libraries.groupings.title' => '分组', 'libraries.groupings.title' => '分组',
'libraries.groupings.all' => '全部', 'libraries.groupings.all' => '全部',
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "Inställningar", "title": "Inställningar",
"supportDeveloper": "Stöd Plezy",
"supportDeveloperDescription": "Donera via Liberapay för att finansiera utvecklingen",
"language": "Språk", "language": "Språk",
"theme": "Tema", "theme": "Tema",
"appearance": "Utseende", "appearance": "Utseende",
+2
View File
@@ -74,6 +74,8 @@
}, },
"settings": { "settings": {
"title": "设置", "title": "设置",
"supportDeveloper": "支持 Plezy",
"supportDeveloperDescription": "通过 Liberapay 捐赠支持开发",
"language": "语言", "language": "语言",
"theme": "主题", "theme": "主题",
"appearance": "外观", "appearance": "外观",
+22 -1
View File
@@ -14,6 +14,7 @@ import '../../focus/input_mode_tracker.dart';
import '../../i18n/strings.g.dart'; import '../../i18n/strings.g.dart';
import '../main_screen.dart'; import '../main_screen.dart';
import '../../mixins/refreshable.dart'; import '../../mixins/refreshable.dart';
import '../../services/donation_service.dart';
import '../../services/download_storage_service.dart'; import '../../services/download_storage_service.dart';
import '../../services/file_picker_service.dart'; import '../../services/file_picker_service.dart';
import '../../services/saf_storage_service.dart'; import '../../services/saf_storage_service.dart';
@@ -46,6 +47,7 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab {
late final FocusMemoryTracker _focusTracker; late final FocusMemoryTracker _focusTracker;
// Focus tracking keys // Focus tracking keys
static const _kDonate = 'donate';
static const _kAppearance = 'appearance'; static const _kAppearance = 'appearance';
static const _kPlayback = 'playback'; static const _kPlayback = 'playback';
static const _kTrakt = 'trakt'; static const _kTrakt = 'trakt';
@@ -100,7 +102,7 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab {
@override @override
void focusActiveTabIfReady() { void focusActiveTabIfReady() {
if (InputModeTracker.isKeyboardMode(context)) { if (InputModeTracker.isKeyboardMode(context)) {
_focusTracker.restoreFocus(fallbackKey: _kAppearance); _focusTracker.restoreFocus(fallbackKey: DonationService.isEnabled ? _kDonate : _kAppearance);
} }
} }
@@ -149,6 +151,9 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab {
ExcludeFocus(child: CustomAppBar(title: Text(t.settings.title), pinned: true)), ExcludeFocus(child: CustomAppBar(title: Text(t.settings.title), pinned: true)),
SliverList( SliverList(
delegate: SliverChildListDelegate([ delegate: SliverChildListDelegate([
// --- Donate (non-store builds only) ---
if (DonationService.isEnabled) _buildDonateTile(),
// --- Appearance (navigation tile) --- // --- Appearance (navigation tile) ---
_buildAppearanceTile(), _buildAppearanceTile(),
@@ -190,6 +195,22 @@ class _SettingsScreenState extends State<SettingsScreen> with FocusableTab {
); );
} }
Widget _buildDonateTile() {
return ListTile(
focusNode: _focusTracker.get(_kDonate),
leading: const AppIcon(Symbols.favorite_rounded, fill: 1),
title: Text(t.settings.supportDeveloper),
subtitle: Text(t.settings.supportDeveloperDescription),
trailing: const AppIcon(Symbols.open_in_new_rounded, fill: 1),
onTap: () async {
final url = Uri.parse(DonationService.donationUrl);
if (await canLaunchUrl(url)) {
await launchUrl(url, mode: LaunchMode.externalApplication);
}
},
);
}
Widget _buildAppearanceTile() { Widget _buildAppearanceTile() {
return Consumer2<ThemeProvider, SettingsProvider>( return Consumer2<ThemeProvider, SettingsProvider>(
builder: (context, themeProvider, settingsProvider, child) { builder: (context, themeProvider, settingsProvider, child) {
+7
View File
@@ -0,0 +1,7 @@
class DonationService {
static const String donationUrl = 'https://liberapay.com/edde746';
static bool get isEnabled {
return const bool.fromEnvironment('ENABLE_DONATIONS', defaultValue: false);
}
}