diff --git a/build.gradle.kts b/build.gradle.kts index 47832010f..c7d45203e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -35,4 +35,11 @@ allprojects { ) } } + configurations.all { + resolutionStrategy.eachDependency { + if (requested.group == "net.java.dev.jna" && requested.name == "jna") { + useTarget("net.java.dev.jna:jna:5.12.1") + } + } + } } diff --git a/desktopApp/build.gradle.kts b/desktopApp/build.gradle.kts index 71659dfda..82e6948dc 100644 --- a/desktopApp/build.gradle.kts +++ b/desktopApp/build.gradle.kts @@ -98,8 +98,3 @@ val macExtraPlistKeys: String """ - -apply(from = "vlc-download-task.gradle.kts") -tasks.named("compileKotlin") { - dependsOn("downloadVlc") -} \ No newline at end of file diff --git a/desktopApp/src/main/ composeResources/values-af-rZA/strings.xml b/desktopApp/src/main/ composeResources/values-af-rZA/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-af-rZA/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/ composeResources/values-ar-rSA/strings.xml b/desktopApp/src/main/ composeResources/values-ar-rSA/strings.xml deleted file mode 100644 index abcd8074d..000000000 --- a/desktopApp/src/main/ composeResources/values-ar-rSA/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - حسناً - إلغاء - حذف - تحديث - تأليف - تسجيل الدخول - الإعدادات - المنزل - الإشعارات - أنا - اكتشف - الإعدادات - محلي - عامة - مميز - المفضلة - المفضلة - قائمة - التحديثات - الرسائل المباشرة - راس - تبويقات جديدة - الرجوع - رابط مثيل - التالي - لا يوجد مثيلات - مرحبا بكم في Felle - الفلاش هو عميل شبكة اجتماعية لـ %1$s.\nللبدء، الرجاء تحديد خدمة للاتصال بها. - الرجاء الانتظار بينما نقوم بالتحقق من بيانات الاعتماد الخاصة بك. - المشاركات - الوظائف والردود - إعجاب - الوسائط - تقرير - ما هي المشكلة مع هذا المنشور؟ - مزعج - غير قانوني وعاجل - مضللة - محتوى جنسي غير مرغوب فيه - السلوك المعادي للمجتمع - اخرى - إشارات أو ردود مفرطة - ثالثا - الانتهاكات الصارخة للقانون أو شروط الخدمة - هذه المشاركة مضللة - العقل أو المواد الإباحية غير الموصوفة بهذه الصفة - التحرش أو الغطرسة أو التعصب - مشكلة غير مدرجة في هذه الخيارات - حذف - هل أنت متأكد من أنك تريد حذف هذا؟ - تقرير - هل أنت متأكد من أنك تريد الإبلاغ عن هذا؟ - إزالة الإشارة المرجعية - إضافة إشارة مرجعية - إعجاب - خلافا - المزيد - اقتباس - إضافة رد فعل - إزالة رد الفعل - الرد - تقرير - تغريدة - إزالة التغريدة - إعادة المحاولة - تعليق - إعادة - حديثاً - البحث - Show thumbnail list - إخفاء قائمة الصور المصغرة - حفظ - ملء الشاشة - إضافة قائمة - تحرير القائمة - حذف القائمة - هل أنت متأكد من أنك تريد حذف هذه القائمة %1$s؟ - لا توجد قوائم - فشل تحميل القوائم - إنشاء قائمة - اسم القائمة - اسم القائمة - الأعضاء - تحرير الأعضاء - لا يوجد أعضاء - فشل تحميل الأعضاء - تحرير قائمة الأعضاء - ابحث عن التالي - البحث - البحث - لم يتم العثور على مستخدمين - فشل البحث عن المستخدمين - إضافة - إزالة - وصف القائمة - وصف القائمة - تغذيتي - اكتشف الخلاصات - تم إنشاؤها بواسطة %1$s - إلغاء الاشتراك - اشترك - diff --git a/desktopApp/src/main/ composeResources/values-ca-rES/strings.xml b/desktopApp/src/main/ composeResources/values-ca-rES/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-ca-rES/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/ composeResources/values-cs-rCZ/strings.xml b/desktopApp/src/main/ composeResources/values-cs-rCZ/strings.xml deleted file mode 100644 index 4c7dfb788..000000000 --- a/desktopApp/src/main/ composeResources/values-cs-rCZ/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - OK - Zrušit - Vymazat - Aktualizovat - Napsat - Přihlásit se - Nastavení - Domů - Oznámení - - Objevte - Nastavení - Místní - Veřejnost - Doporučené - Záložky - Oblíbená - Seznam - Zdroje - Přímé zprávy - RSS - Nové tooty - Zpět - URL instance - Další - Nebyly nalezeny žádné instance - Vítejte na Flare - Flare je sociální síťový klient pro %1$s.\nChcete-li začít, vyberte službu, ke které se chcete připojit. - Počkejte prosím, než ověříme Vaše přihlašovací údaje. - Příspěvky - Příspěvky a odpovědi - Líbí se mi - Média - Nahlásit - Jaký je problém s tímto příspěvkem? - Nevyžádaná pošta - Nelegální a naléhavé - Klamavý - Nechtěný Sexuální obsah - Protisociální chování - Ostatní - Nadměrné zmínky nebo odpovědi - Vyjasnění porušení práva nebo podmínek poskytování služeb - Tento příspěvek je zavádějící - Nudita nebo pornografie, které jako takové nejsou označeny - Obtěžování, trollling nebo netolerance - Problém nezahrnutý do těchto možností - Vymazat - Jste si jisti, že to chcete odstranit? - Nahlásit - Opravdu to chcete nahlásit? - Odstranit záložku - Přidat záložku - Líbí se mi - Nelíbí se mi - Více - Cenová nabídka - Přidat reakci - Odstranit reakci - Odpověď - Nahlásit - Opakovat - Odstranit retweet - Opakovat - Komentář - Znovu odeslat - Nedávné - Hledat - Show thumbnail list - Skrýt seznam náhledů - Uložit - Celá obrazovka - Přidat seznam - Upravit seznam - Odstranit seznam - Jste si jisti, že chcete odstranit tento seznam %1$s? - Žádné seznamy - Nepodařilo se načíst seznamy - Vytvořit seznam - Název seznamu - Název seznamu - Členové - Upravit členy - Žádní členové - Nepodařilo se načíst členy - Upravit seznam členů - Hledat následující - Hledat - Hledat - Nenalezeni žádní uživatelé - Nepodařilo se vyhledat uživatele - Přidat - Odebrat - Popis seznamu - Popis seznamu - Moje zdroje - Objevte kanály - Vytvořil %1$s - Odhlásit odběr - Odebírat - diff --git a/desktopApp/src/main/ composeResources/values-da-rDK/strings.xml b/desktopApp/src/main/ composeResources/values-da-rDK/strings.xml deleted file mode 100644 index 300291638..000000000 --- a/desktopApp/src/main/ composeResources/values-da-rDK/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Ok - Annuller - Slet - Opdater - Skriv - Login - Indstillinger - Hjem - Notifikationer - Mig - Opdag - Indstillinger - Lokal - Offentlig - Fremhævet - Bogmærker - Favorit - Liste - Feeds - Direkte Beskeder - Rss - Nye toots - Tilbage - Instance URL - Næste - Ingen forekomster fundet - Velkommen til Flare - Flare er en social netværksklient for %1$s.\nFor at komme i gang skal du vælge en tjeneste at oprette forbindelse til. - Vent venligst mens vi verificerer dine legitimationsoplysninger. - Indlæg - Indlæg og svar - Likes - Medier - Rapport - Hvad er problemet med dette indlæg? - Spam - Ulovlig og hastende - Misvisende - Uønsket Seksuelt Indhold - Anti-Social Opførsel - Andet - Overdreven omtaler eller svar - Grove overtrædelser af lov eller tjenestevilkår - Dette indlæg er misvisende - Nøgenhed eller pornografi, der ikke er mærket som sådan - Harassment, trolling, eller intolerance - Et problem der ikke er inkluderet i disse muligheder - Slet - Er du sikker på, at du vil slette dette? - Rapport - Er du sikker på, at du vil rapportere dette? - Fjern bogmærke - Tilføj bogmærke - Ligesom - I modsætning - Mere - Tilbud - Tilføj reaktion - Fjern reaktion - Svar - Rapport - Retweet - Fjern retweet - Forsøg igen - Kommentar - Genpost - Seneste - Søg - Show thumbnail list - Skjul miniatureliste - Gem - Fuldskærm - Tilføj liste - Rediger liste - Slet liste - Er du sikker på, at du vil slette denne liste %1$s? - Ingen lister - Kunne ikke indlæse lister - Opret liste - Liste navn - Liste navn - Medlemmer - Rediger medlemmer - Ingen medlemmer - Kunne ikke indlæse medlemmer - Rediger liste medlemmer - Søg efter følgende - Søg - Søg - Ingen brugere fundet - Kunne ikke søge brugere - Tilføj - Fjern - Liste beskrivelse - Liste beskrivelse - Mine feeds - Opdag feeds - Oprettet af %1$s - Afmeld - Abonnér - diff --git a/desktopApp/src/main/ composeResources/values-de-rDE/strings.xml b/desktopApp/src/main/ composeResources/values-de-rDE/strings.xml deleted file mode 100644 index 3c897c317..000000000 --- a/desktopApp/src/main/ composeResources/values-de-rDE/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Ok - Abbrechen - Löschen - Aktualisieren - Verfassen - Anmelden - Einstellungen - Zuhause - Benachrichtigungen - Ich - Entdecken - Einstellungen - Lokal - Öffentlich - Empfohlen - Lesezeichen - Favorit - Liste - Feeds - Direkte Nachrichten - RS - Neue toots - Zurück - Instanz URL - Nächste - Keine Instanzen gefunden - Willkommen bei Leuchtturm - Flare ist ein Sozialnetzwerk-Client für %1$s.\nUm loszulegen, wählen Sie bitte einen Dienst zum Verbinden aus. - Bitte warten Sie, bis wir Ihre Zugangsdaten verifizieren. - Beiträge - Beiträge und Antworten - Gefällt - Medien - Bericht - Was ist das Problem mit diesem Beitrag? - Spam - Illegaler und dringender - Irreführend - Ungewollter sexueller Inhalt - Anti-Soziales Verhalten - Andere - Übermäßige Erwähnungen oder Antworten - eklatante Verstöße gegen das Recht oder die Nutzungsbedingungen - Dieser Beitrag ist irreführend - Nacktheit oder Pornographie nicht als solche gekennzeichnet - Belästigung, Trolle oder Intoleranz - Ein Problem nicht in diesen Optionen enthalten - Löschen - Bist du sicher, dass du dies löschen möchtest? - Bericht - Bist du sicher, dass du dies melden möchtest? - Lesezeichen entfernen - Lesezeichen hinzufügen - Möge - Anders - Mehr - Zitat - Antwort hinzufügen - Reaktion entfernen - Antwort - Bericht - Retweet - Retweet entfernen - Wiederholen - Kommentar - Repost - Neueste - Suchen - Show thumbnail list - Thumbnail-Liste ausblenden - Speichern - Vollbild - Neue Liste - Liste bearbeiten - Liste löschen - Sind Sie sicher, dass Sie diese Liste %1$s löschen möchten? - Keine Listen - Fehler beim Laden der Listen - Liste erstellen - Listenname - Listenname - Mitglieder - Mitglieder bearbeiten - Keine Mitglieder - Fehler beim Laden der Mitglieder - Listenmitglieder bearbeiten - Folgende suchen - Suchen - Suchen - Keine Benutzer gefunden - Fehler bei der Suche der Benutzer - Neu - Entfernen - Listenbeschreibung - Listenbeschreibung - Meine Feeds - Feeds entdecken - Erstellt von %1$s - Abmelden - Abonnieren - diff --git a/desktopApp/src/main/ composeResources/values-el-rGR/strings.xml b/desktopApp/src/main/ composeResources/values-el-rGR/strings.xml deleted file mode 100644 index 209004b59..000000000 --- a/desktopApp/src/main/ composeResources/values-el-rGR/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Εντάξει - Ακύρωση - Διαγραφή - Ανανέωση - Σύνθεση - Είσοδος - Ρυθμίσεις - Αρχική - Ειδοποιήσεις - Εγώ - Ανακαλύψτε - Ρυθμίσεις - Τοπικό - Δημόσιο - Προτεινόμενα - Σελιδοδείκτες - Αγαπημένο - Λίστα - Ροές - Άμεσα Μηνύματα - RSS - Νέα φωνές - Πίσω - Διεύθυνση Url Παρουσίας - Επόμενο - Δεν βρέθηκαν παρουσίες - Καλώς ήλθατε στο Flare - Το Flare είναι ένας πελάτης κοινωνικής δικτύωσης για %1$s.\nΓια να ξεκινήσετε, παρακαλώ επιλέξτε μια υπηρεσία με την οποία θα συνδεθείτε. - Παρακαλώ περιμένετε όσο επαληθεύουμε τα στοιχεία σας. - Αναρτήσεις - Δημοσιεύσεις και απαντήσεις - Αρέσει - Πολυμέσα - Αναφορά - Ποιο είναι το ζήτημα με αυτή την ανάρτηση? - Ανεπιθύμητα - Παράνομο και Επείγον - Παραπλανητικό - Ανεπιθύμητο Σεξουαλικό Περιεχόμενο - Αντικοινωνική Συμπεριφορά - Άλλο - Υπέρμετρες αναφορές ή απαντήσεις - Καταφανείς παραβιάσεις του νόμου ή των όρων υπηρεσίας - Αυτή η ανάρτηση είναι παραπλανητική - Γυμνό ή πορνογραφία που δεν χαρακτηρίζεται ως τέτοια - Παρενόχληση, συρτή ή δυσανεξία - Ένα ζήτημα που δεν περιλαμβάνεται σε αυτές τις επιλογές - Διαγραφή - Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό? - Αναφορά - Είστε βέβαιοι ότι θέλετε να αναφέρετε αυτό? - Αφαίρεση σελιδοδείκτη - Προσθήκη σελιδοδείκτη - Αρέσει - Σε αντίθεση - Περισσότερα - Παράθεση - Προσθήκη αντίδρασης - Αφαίρεση αντίδρασης - Απάντηση - Αναφορά - Retweet - Αφαίρεση retweet - Επανάληψη - Σχόλιο - Επαναδημοσίευση - Πρόσφατα - Αναζήτηση - Show thumbnail list - Απόκρυψη λίστας μικρογραφιών - Αποθήκευση - Πλήρης Οθόνη - Προσθήκη λίστας - Επεξεργασία λίστας - Διαγραφή λίστας - Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή τη λίστα %1$s? - Δεν υπάρχουν λίστες - Αποτυχία φόρτωσης λιστών - Δημιουργία λίστας - Όνομα λίστας - Όνομα λίστας - Μέλη - Επεξεργασία μελών - Κανένα μέλος - Αποτυχία φόρτωσης μελών - Επεξεργασία λίστας μελών - Αναζητήστε τα παρακάτω σας - Αναζήτηση - Αναζήτηση - Δεν βρέθηκαν χρήστες - Αποτυχία αναζήτησης χρηστών - Προσθήκη - Αφαίρεση - Περιγραφή λίστας - Περιγραφή λίστας - Οι ροές μου - Ανακαλύψτε ροές - Δημιουργήθηκε από %1$s - Διαγραφή - Εγγραφή - diff --git a/desktopApp/src/main/ composeResources/values-en-rUS/strings.xml b/desktopApp/src/main/ composeResources/values-en-rUS/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-en-rUS/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/ composeResources/values-es-rES/strings.xml b/desktopApp/src/main/ composeResources/values-es-rES/strings.xml deleted file mode 100644 index fcb60ff36..000000000 --- a/desktopApp/src/main/ composeResources/values-es-rES/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Ok - Cancelar - Eliminar - Refrescar - Redactar - Ingresar - Ajustes - Inicio - Notificaciones - Yo - Descubre - Ajustes - Local - Público - Destacado - Marcadores - Favorito - Lista - Alimentos - Mensajes directos - Bruto - Nuevos toots - Atrás - URL de instancia - Siguiente - No se encontraron instancias - Bienvenido a Bengala - Flare es un cliente de red social para %1$s.\nPara empezar, seleccione un servicio para conectarse. - Por favor, espere mientras verificamos sus credenciales. - Mensajes - Mensajes y respuestas - Me gusta - Medios - Reporte - ¿Cuál es el problema con esta publicación? - Spam - Ilegal y urgente - Misular - Contenido sexual no deseado - Comportamiento antisocial - Otro - Menciones o respuestas excesivas - Violaciones de declaración de la ley o de las condiciones de servicio - Esta publicación es engañosa - Nudidad o pornografía no etiquetadas como tales - Acoso, trolling, o intolerancia - Un problema no incluido en estas opciones - Eliminar - ¿Está seguro que desea eliminar esto? - Reporte - ¿Estás seguro de que quieres reportar esto? - Eliminar marcador - Añadir marcador - Me gusta - A diferencia de - Más - Cotización - Añadir reacción - Eliminar reacción - Responder - Reporte - Retwittear - Eliminar retweet - Reintentar - Comentario - Repostar - Recientes - Buscar - Show thumbnail list - Ocultar lista de miniaturas - Guardar - Pantalla completa - Añadir lista - Editar lista - Borrar lista - ¿Está seguro que desea eliminar esta lista %1$s? - No hay listas - Error al cargar las listas - Crear lista - Nombre de lista - Nombre de lista - Miembros - Editar miembros - No hay miembros - Error al cargar miembros - Editar miembros de la lista - Busca en tu siguiente - Buscar - Buscar - No hay usuarios - Error al buscar usuarios - Añadir - Eliminar - Descripción de lista - Descripción de lista - Mis Feeds - Descubre feeds - Creado por %1$s - Darse de baja - Suscribirse - diff --git a/desktopApp/src/main/ composeResources/values-fi-rFI/strings.xml b/desktopApp/src/main/ composeResources/values-fi-rFI/strings.xml deleted file mode 100644 index 2af1534ea..000000000 --- a/desktopApp/src/main/ composeResources/values-fi-rFI/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Ok - Peruuta - Poista - Päivitä - Luo - Kirjaudu - Asetukset - Koti - Ilmoitukset - Minä - Löydä - Asetukset - Paikallinen - Julkinen - Suositellut - Kirjanmerkit - Suosikki - Lista - Syötteet - Suorat Viestit - RSS - Uudet tootit - Takaisin - Ilmentymän URL - Seuraava - Esiintymiä ei löytynyt - Tervetuloa Flareen - Flare on sosiaalisen verkoston asiakasohjelma %1$s.\nPäästäksesi alkuun, valitse palvelu, johon haluat yhteyden. - Ole hyvä ja odota kunnes vahvistamme käyttäjätunnuksesi. - Julkaisut - Julkaisut ja vastaukset - Tykkäykset - Media - Raportoi - Mikä on ongelma tässä viestissä? - Roskaposti - Laiton ja kiireellinen - Harhaanjohtava - Ei-Haluttu Seksuaalinen Sisältö - Sosiaalinen Käyttäytyminen - Muu - Liialliset maininnat tai vastaukset - Lain tai palvelusehtojen räikeät rikkomukset - Tämä viesti on harhaanjohtava - Arkuus tai pornografia, jota ei ole merkitty sellaiseksi - Häirintä, trollaus, tai suvaitsemattomuus - Ongelma, joka ei sisälly näihin vaihtoehtoihin - Poista - Oletko varma, että haluat poistaa tämän? - Raportoi - Oletko varma, että haluat raportoida tästä? - Poista kirjanmerkki - Lisää kirjanmerkki - Tykkää - Toisin - Lisää - Tarjous - Lisää reaktio - Poista reaktio - Vastaa - Raportoi - Yritä Uudelleen - Poista uudelleentwiittaa - Yritä Uudelleen - Kommentti - Uudelleenlähetys - Viimeisimmät - Etsi - Show thumbnail list - Piilota pikkukuvien lista - Tallenna - Kokoruutu - Lisää lista - Muokkaa listaa - Poista lista - Oletko varma, että haluat poistaa tämän luettelon %1$s? - Ei listoja - Listajen lataaminen epäonnistui - Luo lista - Listan nimi - Listan nimi - Jäsenet - Muokkaa jäseniä - Ei jäseniä - Jäsenten lataaminen epäonnistui - Muokkaa listan jäseniä - Etsi seuraamuksesi - Etsi - Etsi - Käyttäjiä ei löytynyt - Käyttäjien haku epäonnistui - Lisää - Poista - Listan kuvaus - Listan kuvaus - Omat syötteet - Löydä syötteet - Luotu %1$s - Peruuta Tilaus - Tilaa - diff --git a/desktopApp/src/main/ composeResources/values-fr-rFR/strings.xml b/desktopApp/src/main/ composeResources/values-fr-rFR/strings.xml deleted file mode 100644 index ca32221d7..000000000 --- a/desktopApp/src/main/ composeResources/values-fr-rFR/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Ok - Abandonner - Supprimez - Rafraîchir - Composer - Se connecter - Réglages - Domicile - Notifications - Moi - Découvrir - Réglages - Locale - Publique - En vedette - Signets - Favoris - Liste - Flux - Messages directs - Rss - Nouveaux pouets - Précédent - URL de l\'instance - Suivant - Aucune instance trouvée - Bienvenue dans Flare - Fusée éclairante est un client de réseau social pour %1$s.\nPour commencer, veuillez sélectionner un service auquel vous connecter. - Veuillez patienter pendant que nous vérifions vos identifiants. - Publications - Messages et réponses - J\'aime - Médias - Rapporter - Quel est le problème avec ce message ? - Spam - Illégal et urgent - Mauvaise - Contenu sexuel non désiré - Comportement anti-social - Autres - Mentions ou réponses excessives - Violations flagrantes de la loi ou des conditions d\'utilisation - Ce message est trompeur - Nudité ou pornographie non étiquetée en tant que telle - Harcèlement, troll ou intolérance - Un problème non inclus dans ces options - Supprimez - Êtes-vous sûr de vouloir supprimer cela ? - Rapporter - Êtes-vous sûr de vouloir signaler cela ? - Supprimer le favori - Ajouter un favori - J\'aime - J\'aime - En savoir plus - Devis - Ajouter une réaction - Supprimer la réaction - Répondre - Rapporter - Retweet - Supprimer le retweet - Réessayer - Commenter - Republier - Récentes - Chercher - Show thumbnail list - Masquer la liste des vignettes - Enregistrer - Plein écran - Ajouter une liste - Editer la liste - Supprimer la liste - Êtes-vous sûr de vouloir supprimer cette liste %1$s? - Aucune liste - Impossible de charger les listes - Créer une liste - Nom de liste - Nom de liste - Membres - Modifier les membres - Aucun membre - Impossible de charger les membres - Modifier les membres de la liste - Recherchez dans vos recherches suivantes - Chercher - Chercher - Aucun utilisateur trouvé - Impossible de rechercher des utilisateurs - Ajouter - Retirer - Description de la liste - Description de la liste - Mes flux - Découvrir les flux - Créé par %1$s - Se désabonner - S\'abonner - diff --git a/desktopApp/src/main/ composeResources/values-hu-rHU/strings.xml b/desktopApp/src/main/ composeResources/values-hu-rHU/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-hu-rHU/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/ composeResources/values-it-rIT/strings.xml b/desktopApp/src/main/ composeResources/values-it-rIT/strings.xml deleted file mode 100644 index c5e6361bd..000000000 --- a/desktopApp/src/main/ composeResources/values-it-rIT/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - OK - Annulla - Elimina - Aggiorna - Componi - Accedi - Impostazioni - Home - Notifiche - Io - Scopri - Impostazioni - Locale - Pubblico - Vetrina - Segnalibri - Preferito - Elenco - Feed - Messaggi Diretti - Rss - Nuovi toots - Indietro - Url Istanza - Successivo - Nessuna istanza trovata - Benvenuto in chiarore - Flare è un client di social network per %1$s.\nPer iniziare, selezionare un servizio a cui connettersi. - Attendere mentre verifichiamo le tue credenziali. - Post - Posti e risposte - Mi Piace - Media - Segnala - Qual è il problema con questo post? - Spam - Illegale e urgente - fuorviante - Contenuto Sessuale Indesiderato - Comportamento Anti-Sociale - Altro - Menzioni o risposte eccessive - Glaring violazioni della legge o dei termini di servizio - Questo post è fuorviante - Nudità o pornografia non etichettate come tali - Molestie, trolling o intolleranza - Un problema non incluso in queste opzioni - Elimina - Sei sicuro di voler eliminare questo? - Segnala - Sei sicuro di voler segnalare questo? - Rimuovi segnalibro - Aggiungi segnalibro - Like - A differenza - Altro - Preventivo - Aggiungi reazione - Rimuovi reazione - Rispondi - Segnala - Retweet - Rimuovi retweet - Riprova - Commento - Repost - Recenti - Cerca - Show thumbnail list - Nascondi elenco miniature - Salva - Schermo - Aggiungi elenco - Modifica elenco - Elimina elenco - Sei sicuro di voler eliminare questo elenco %1$s? - Nessuna lista - Impossibile caricare le liste - Crea lista - Nome elenco - Nome elenco - Membri - Modifica membri - Nessun membro - Impossibile caricare i membri - Modifica membri della lista - Cerca qui di seguito - Cerca - Cerca - Nessun utente trovato - Ricerca degli utenti non riuscita - Aggiungi - Rimuovi - Descrizione elenco - Descrizione elenco - I miei feed - Scopri i feed - Creato da %1$s - Disiscriviti - Abbonati - diff --git a/desktopApp/src/main/ composeResources/values-iw-rIL/strings.xml b/desktopApp/src/main/ composeResources/values-iw-rIL/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-iw-rIL/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/ composeResources/values-ja-rJP/strings.xml b/desktopApp/src/main/ composeResources/values-ja-rJP/strings.xml deleted file mode 100644 index 68b09795a..000000000 --- a/desktopApp/src/main/ composeResources/values-ja-rJP/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - OK - キャンセル - 削除 - 更新 - 作成 - ログイン - 設定 - ホーム - 通知 - 自分 - 見つける - 設定 - ローカル - 公開 - 注目 - ブックマーク - お気に入り - リスト - フィード - ダイレクトメッセージ - RSS - 新しいトゥート - 戻る - インスタンス URL - 次へ - インスタンスが見つかりません - Flareへようこそ - Flare は %1$sのソーシャルネットワーククライアントです。\n開始するには、接続するサービスを選択してください。 - 認証情報を確認するまでしばらくお待ちください。 - 投稿 - 投稿と返信 - いいね - メディア - レポート - この投稿の問題点は何ですか? - 迷惑メール - 規約違反かつ緊急 - 誤解を招く内容 - 望ましくない性的コンテンツ - 反社会的行動 - その他 - 過度のメンションまたは返信 - 法令またはサービス利用規約の違反 - 誤解を招く投稿 - ヌードまたはポルノとしてラベル付けされていない - 嫌がらせ、荒らし、荒らし - これらのオプションに含まれていない問題 - 削除 - 削除してもよろしいですか? - レポート - これを報告してもよろしいですか? - ブックマークを削除 - ブックマークを追加 - いいね! - いいね!を解除 - もっと見る - 引用 - リアクションを追加 - リアクションを削除 - 返信 - レポート - リツイート - リツイートを削除 - 再試行する - コメント - リポスト - 最近のもの - 検索 - Show thumbnail list - サムネイル一覧を非表示 - 保存 - 全画面 - リストを追加 - リストを編集 - リストを削除 - リスト %1$s を削除してもよろしいですか? - リストがありません - リストの読み込みに失敗しました - リストを作成 - リスト名 - リスト名 - メンバー - メンバーを編集 - メンバーなし - メンバーの読み込みに失敗しました - リストメンバーを編集 - フォローしているものを検索 - 検索 - 検索 - ユーザーが見つかりませんでした - ユーザー検索に失敗しました - 追加 - 削除 - リストの説明 - リストの説明 - 私のフィード - フィードを発見する - 作成者: %1$s - 購読解除 - 購読する - diff --git a/desktopApp/src/main/ composeResources/values-ko-rKR/strings.xml b/desktopApp/src/main/ composeResources/values-ko-rKR/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-ko-rKR/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/ composeResources/values-nl-rNL/strings.xml b/desktopApp/src/main/ composeResources/values-nl-rNL/strings.xml deleted file mode 100644 index 119592be4..000000000 --- a/desktopApp/src/main/ composeResources/values-nl-rNL/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Ok - annuleren - Verwijderen - Vernieuwen - Samenstellen - Aanmelden - Instellingen - Startpagina - Notificaties - IK - Ontdek - Instellingen - lokaal - Openbaar - Aanbevolen - Bladwijzers - Favoriete - Klantenlijst - Feeds - Directe Berichten - RSS - Nieuwe toots - Achterzijde - Aanleg URL - Volgende - Geen instanties gevonden - Welkom bij Flare - Verlaging is een sociaal netwerk client voor %1$s.\nSelecteer een service om verbinding te maken met %1$s. - Een moment geduld aub terwijl we uw inloggegevens verifiëren. - Berichten - Berichten en antwoorden - Vind-ik-leuk - Medium - Rapporteren - Wat is het probleem met dit bericht? - Spam - Illegaal en urgent - Misleidend - Ongewenste seksuele inhoud - Anti-sociaal gedrag - anders - Overmatige vermeldingen of reacties - Ernstige schendingen van de wet of de gebruiksvoorwaarden - Deze post is misleidend - Voedingsstoffen of pornografie niet als zodanig geëtiketteerd - Pesterij, trollen of intolerantie - Een probleem niet opgenomen in deze opties - Verwijderen - Weet u zeker dat u dit wilt verwijderen? - Rapporteren - Weet u zeker dat u dit wilt melden? - Bladwijzer verwijderen - Bladwijzer toevoegen - vind-ik-leuk - Anders dan - Meer - Offerte - Reactie toevoegen - Reactie verwijderen - Beantwoorden - Rapporteren - Retweet - Verwijder retweet - Opnieuw - Opmerking - Herpost - Recentelijk - Zoeken - Show thumbnail list - Verberg thumbnail lijst - Opslaan - Volledig scherm - Lijst toevoegen - Lijst bewerken - Lijst verwijderen - Weet u zeker dat u deze lijst %1$s wilt verwijderen? - Geen lijsten - Laden van lijsten mislukt - Lijst aanmaken - Lijst naam - Lijst naam - leden - Deelnemers bewerken - Geen leden - Laad deelnemers mislukt - Lijstleden bewerken - Zoek je volgende - Zoeken - Zoeken - Geen gebruikers gevonden - Zoeken naar gebruikers mislukt - Toevoegen - Verwijderen - Omschrijving lijst - Omschrijving lijst - Mijn feeds - Ontdek feeds - Aangemaakt door %1$s - Afmelden - Abonneren - diff --git a/desktopApp/src/main/ composeResources/values-no-rNO/strings.xml b/desktopApp/src/main/ composeResources/values-no-rNO/strings.xml deleted file mode 100644 index a4b4c6134..000000000 --- a/desktopApp/src/main/ composeResources/values-no-rNO/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Ok - Avbryt - Slett - Oppdater - Skriv - Innlogging - Innstillinger - Hjem - Varsler - Meg - Oppdag - Innstillinger - Lokal - Offentlig - Anbefalt - Bokmerker - Favoritt - Liste - Strøm - Direkte meldinger - RSS - Nye toots - Tilbake - Instans URL - Neste - Ingen instanser funnet - Velkommen til oppsprett - Oppblussing er en sosial nettverk-klient for %1$s.\nFor å komme i gang, velg en tjeneste du vil koble til. - Vennligst vent mens vi bekrefter dine legitimasjon. - Innlegg - Innlegg og svar - Liker - Medier - Rapporter - Hva er problemet med dette innlegget? - Søppelpost - Ulovlig og Haster - Villende - Uønsket suell innhold - Anti-Social Athavior - Annet - Overdreven omtale eller svar - Anskaffelse av lovbrudd eller tjenestevilkår - Dette innlegget er misvisende - Nudity eller pornografi som ikke er merket slik - Trakassering, kontroll eller intoleranse - Et problem er ikke inkludert i disse alternativene - Slett - Er du sikker på at du vil slette dette? - Rapporter - Er du sikker på at du vil rapportere dette? - Fjern bokmerke - Legg til bokmerke - Lik - Ulikt - Mer - Sitat - Legg til reaksjon - Fjern reaksjon - Svar - Rapporter - Prøv igjen - Fjern retweet - Prøv igjen - Kommentar - Gjenkjenn - Siste - Søk - Show thumbnail list - Skjul miniatyrbilde liste - Lagre - Fullskjerm - Legge til listen - Rediger liste - Slett liste - Er du sikker på at du vil slette denne listen %1$s? - Ingen lister - Kunne ikke laste lister - Lag oppgaveliste - Navn på liste - Navn på liste - Medlemmer - Rediger medlemmer - Ingen medlemmer - Kunne ikke laste inn medlemmer - Rediger listemedlemmer - Søk i dine følger - Søk - Søk - Ingen brukere funnet - Kunne ikke søke brukere - Legg til - Fjern - Liste beskrivelse - Liste beskrivelse - Mine fôr - Oppdag fôr - Opprettet av %1$s - Avmeld - Abonner - diff --git a/desktopApp/src/main/ composeResources/values-pl-rPL/strings.xml b/desktopApp/src/main/ composeResources/values-pl-rPL/strings.xml deleted file mode 100644 index c155352f8..000000000 --- a/desktopApp/src/main/ composeResources/values-pl-rPL/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - OK - Anuluj - Usuń - Odśwież - Napisz - Logowanie - Ustawienia - Strona główna - Powiadomienia - Pr - Odkryj - Ustawienia - Lokalny - Publiczne - Polecane - Zakładki - Ulubione - Lista - Kanały - Wiadomości bezpośrednie - Rss - Nowe wpisy - Powrót - Adres URL instancji - Następny - Nie znaleziono instancji - Witaj w Flare - Flare jest klientem sieci społecznościowej dla %1$s.\nAby rozpocząć, wybierz usługę, z którą chcesz się połączyć. - Proszę czekać, weryfikujemy Twoje dane logowania. - Posty - Posty i odpowiedzi - Polubienia - Media - Zgłoszenie - Jaki jest problem z tym postem? - Spam - Nielegalne i pilne - Wprowadzanie w błąd - Niechciana zawartość seksualna - Zachowanie antyspołeczne - Inne - Nadmierne wzmianki lub odpowiedzi - Łączenie naruszeń prawa lub warunków świadczenia usług - Ten post wprowadza w błąd - Nudność lub pornografia nieoznaczona jako taka. - molestowanie, troling, nietolerancja - Problem nieuwzględniony w tych opcjach - Usuń - Czy na pewno chcesz to usunąć? - Zgłoszenie - Czy na pewno chcesz to zgłosić? - Usuń zakładkę - Dodaj zakładkę - Lubię - Nie lubię - Więcej - Oferta - Dodaj reakcję - Usuń reakcję - Odpowiedz - Zgłoszenie - crwdns74747:0crwdne74747:0 - Usuń retweet - Ponów próbę - Komentarz - Udostępnij ponownie - Najnowsze - Szukaj - Show thumbnail list - Ukryj listę miniatur - Zapisz - Pełny ekran - Dodaj listę - Edytuj listę - Usuń listę - Czy na pewno chcesz usunąć tę listę %1$s? - Brak list - Nie udało się załadować list - Utwórz listę - Nazwa listy - Nazwa listy - Członkowie - Edytuj użytkowników - Brak członków - Nie udało się załadować członków - Edytuj członków listy - Przeszukaj obserwowane - Szukaj - Szukaj - Nie znaleziono użytkowników - Nie udało się wyszukać użytkowników - Dodaj - Usuń - Opis listy - Opis listy - Moje kanały - Odkryj kanały - Utworzone przez %1$s - Anuluj subskrypcję - Subskrybuj - diff --git a/desktopApp/src/main/ composeResources/values-pt-rBR/strings.xml b/desktopApp/src/main/ composeResources/values-pt-rBR/strings.xml deleted file mode 100644 index 128f9351d..000000000 --- a/desktopApp/src/main/ composeResources/values-pt-rBR/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Certo - cancelar - excluir - atualizar - Compor - Conectar-se - Confirgurações - Residencial - notificações - Eu - Pendentes - Confirgurações - Localização - Público - Destaques - Favoritos - Favorito - Lista - Conteúdos - Mensagens Diretas - RSS - Novos toots - Anterior - Instância URL - Próximo - Nenhuma instância encontrada - Bem-vindo ao Sinalizador - Sinalizador é um cliente de rede social para %1$s.\nPara começar, selecione um serviço para se conectar. - Por favor, aguarde enquanto verificamos suas credenciais. - Postagens - Mensagens e respostas - Gostos - Multimídia - Denunciar - Qual é o problema com esta publicação? - Spam - Ilegal e Urgente - Enganador - Conteúdo Sexual Indesejado - Comportamento anti-social - Outros - Menções ou respostas excessivas - Violações flagrantes das leis ou termos de serviço - Este post está enganando - Nudez ou pornografia não rotulada como tal - Assédio, Trollação ou intolerância - Uma issue não incluída nessas opções - excluir - Tem certeza que deseja excluir isto? - Denunciar - Tem certeza de que deseja denunciar isto? - Remover marcador favorito - Adicionar marcador - Gostei - Descurtir - MAIS - Cotação - Adicionar reação - Remover reação - Responder - Denunciar - Retweetar - Remover retweet - Repetir - Comentar - Republicar - Recente - Pesquisa - Show thumbnail list - Ocultar lista de miniaturas - Guardar - Tela cheia - Adicionar lista - Editar lista - Excluir lista - Tem certeza que deseja excluir esta lista %1$s? - Nenhuma lista - Falha ao carregar listas - Criar lista - Nome da lista - Nome da lista - membros - Editar membros - Não membros - Falha ao carregar membros - Editar membros da lista - Pesquisar no seu seguinte - Pesquisa - Pesquisa - Nenhum usuário encontrado - Falha ao procurar usuários - Adicionar - Excluir - Descrição da lista - Descrição da lista - Meus feeds - Alimentos de descobertas - Criado por %1$s - Desinscrever - Inscrever-se - diff --git a/desktopApp/src/main/ composeResources/values-pt-rPT/strings.xml b/desktopApp/src/main/ composeResources/values-pt-rPT/strings.xml deleted file mode 100644 index 128f9351d..000000000 --- a/desktopApp/src/main/ composeResources/values-pt-rPT/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Certo - cancelar - excluir - atualizar - Compor - Conectar-se - Confirgurações - Residencial - notificações - Eu - Pendentes - Confirgurações - Localização - Público - Destaques - Favoritos - Favorito - Lista - Conteúdos - Mensagens Diretas - RSS - Novos toots - Anterior - Instância URL - Próximo - Nenhuma instância encontrada - Bem-vindo ao Sinalizador - Sinalizador é um cliente de rede social para %1$s.\nPara começar, selecione um serviço para se conectar. - Por favor, aguarde enquanto verificamos suas credenciais. - Postagens - Mensagens e respostas - Gostos - Multimídia - Denunciar - Qual é o problema com esta publicação? - Spam - Ilegal e Urgente - Enganador - Conteúdo Sexual Indesejado - Comportamento anti-social - Outros - Menções ou respostas excessivas - Violações flagrantes das leis ou termos de serviço - Este post está enganando - Nudez ou pornografia não rotulada como tal - Assédio, Trollação ou intolerância - Uma issue não incluída nessas opções - excluir - Tem certeza que deseja excluir isto? - Denunciar - Tem certeza de que deseja denunciar isto? - Remover marcador favorito - Adicionar marcador - Gostei - Descurtir - MAIS - Cotação - Adicionar reação - Remover reação - Responder - Denunciar - Retweetar - Remover retweet - Repetir - Comentar - Republicar - Recente - Pesquisa - Show thumbnail list - Ocultar lista de miniaturas - Guardar - Tela cheia - Adicionar lista - Editar lista - Excluir lista - Tem certeza que deseja excluir esta lista %1$s? - Nenhuma lista - Falha ao carregar listas - Criar lista - Nome da lista - Nome da lista - membros - Editar membros - Não membros - Falha ao carregar membros - Editar membros da lista - Pesquisar no seu seguinte - Pesquisa - Pesquisa - Nenhum usuário encontrado - Falha ao procurar usuários - Adicionar - Excluir - Descrição da lista - Descrição da lista - Meus feeds - Alimentos de descobertas - Criado por %1$s - Desinscrever - Inscrever-se - diff --git a/desktopApp/src/main/ composeResources/values-ro-rRO/strings.xml b/desktopApp/src/main/ composeResources/values-ro-rRO/strings.xml deleted file mode 100644 index 9a9e4c961..000000000 --- a/desktopApp/src/main/ composeResources/values-ro-rRO/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Ok - Anulează - Ștergere - Împrospătează - Compune - Autentificare - Setări - Acasă - Notificări - Eu - Descoperă - Setări - Local - Publice - Recomandate - Marcaje - Favorit - Listă - Fluxuri - Mesaje directe - RSS - Notițe noi - Înapoi - URL Instanță - Următoarea - Nu s-au găsit instanțe - Bun venit la Flare - Flare este un client de rețea socială pentru %1$s.\nPentru a începe, vă rugăm să selectați un serviciu la care să vă conectați. - Te rugăm să aștepți până îți verificăm acreditările. - Mesaje - Postări și răspunsuri - Aprecieri - Media - Raport - Care este problema cu acest post? - Spam - ilegal și urgent - Inducere - Conținut sexual nedorit - Comportament antisocial - Altele - Mențiuni sau răspunsuri excesive - Încălcări clare ale legii sau ale termenilor serviciului - Această postare este înșelătoare - Nuditate sau pornografie nedenumită ca atare - Hărțuire, intimidare sau intoleranță - O problemă care nu este inclusă în aceste opțiuni - Ștergere - Sunteţi sigur că doriţi să ştergeţi acest lucru? - Raport - Ești sigur că vrei să raportezi acest lucru? - Eliminaţi marcajul - Adaugă marcaj - Apreciere - Spre deosebire - Mai - Ofertă - Adaugă reacţie - Eliminați reacția - Răspuns - Raport - Retweet - Elimină retweet - Reîncercați - Comentariu - Repostează - Recente - Caută - Show thumbnail list - Ascunde lista de miniaturi - Salvează - Ecran complet - Adaugă listă - Editare listă - Șterge lista - Sunteţi sigur că doriţi să ştergeţi această listă %1$s? - Nicio listă - Încărcarea listelor a eșuat - Creați o listă - Nume listă - Nume listă - Membri - Editare membri - Niciun membru - Încărcarea membrilor a eșuat - Editare membri listă - Căutați următoarele - Caută - Caută - Niciun utilizator găsit - Căutarea utilizatorilor a eșuat - Adăugare - Elimină - Descriere listă - Descriere listă - Fluxurile mele - Descoperă feed-uri - Creat de %1$s - Dezabonare - Abonează-te - diff --git a/desktopApp/src/main/ composeResources/values-ru-rRU/strings.xml b/desktopApp/src/main/ composeResources/values-ru-rRU/strings.xml deleted file mode 100644 index 7bc348195..000000000 --- a/desktopApp/src/main/ composeResources/values-ru-rRU/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - ОК - Отмена - Удалить - Обновить - Написать - Логин - Настройки - Домашний - Уведомления - Я - Узнайте - Настройки - Локальный - Публичный - Избранные - Закладки - Избранное - Список - Ленты - Прямые сообщения - Rss - Новые зубы - Назад - URL экземпляра - Следующий - Экземпляров не найдено - Добро пожаловать в Сигнал - Flare - это клиент социальной сети для %1$s.\nЧтобы начать, пожалуйста, выберите сервис, к которому можно подключиться. - Пожалуйста, подождите, пока мы верифицируем ваши учетные данные. - Должности - Сообщения и ответы - Лайки - Медиа - Отчет - В чем проблема с этим сообщением? - Спам - Незаконный и срочный - Вводящий в заблуждение - Нежелаемый сексуальный контент - Антисоциальное поведение - Прочие вопросы - Чрезмерные упоминания или ответы - Вопиющие нарушения закона или условий предоставления услуг - Этот пост вводит в заблуждение - Нуждаемость или порнография не помечены как таковые - Домогательства, троллинги или нетерпимость - Проблема не была включена в эти параметры - Удалить - Вы уверены, что хотите удалить это? - Отчет - Вы уверены, что хотите сообщить об этом? - Удалить закладку - Добавить закладку - Лайкнуть - Не нравится - Ещё - Цитата - Добавить реакцию - Удалить реакцию - Ответ - Отчет - Ретвитнуть - Удалить ретвит - Повторить - Комментарий - Репост - Недавние - Искать - Show thumbnail list - Скрыть список миниатюр - Сохранить - Полноэкранный - Добавить список - Изменить список - Удалить список - Вы уверены, что хотите удалить этот список %1$s? - Нет списков - Не удалось загрузить списки - Создать список - Название списка - Название списка - Члены Комитета - Изменить участников - Нет участников - Не удалось загрузить участников - Редактировать участников списка - Искать в вашей подписке - Искать - Искать - Пользователей не найдено - Не удалось найти пользователей - Добавить - Удалить - Описание списка - Описание списка - Мои каналы - Откройте фиды - Создано %1$s - Отписаться - Подписаться - diff --git a/desktopApp/src/main/ composeResources/values-sr-rSP/strings.xml b/desktopApp/src/main/ composeResources/values-sr-rSP/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-sr-rSP/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/ composeResources/values-sv-rSE/strings.xml b/desktopApp/src/main/ composeResources/values-sv-rSE/strings.xml deleted file mode 100644 index 81d74e06e..000000000 --- a/desktopApp/src/main/ composeResources/values-sv-rSE/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Ok - Avbryt - Radera - Uppdatera - Skriv - Inloggning - Inställningar - Hem - Aviseringar - Jag - Upptäck - Inställningar - Lokal - Publik - Utvalda - Bokmärken - Favorit - Lista - Flöden - Direkta meddelanden - Rss - Nya toots - Tillbaka - Instans URL - Nästa - Inga instanser hittades - Välkommen till Flare - Flare är en social nätverkskund för %1$s.\nFör att komma igång, vänligen välj en tjänst att ansluta till. - Vänligen vänta medan vi verifierar dina uppgifter. - Inlägg - Inlägg och svar - Gillar - Media - Rapportera - Vad är problemet med det här inlägget? - Spam - Olagligt och bråttom - Vilseledande - Oönskat sexuellt innehåll - Antisocialt beteende - Annat - Överdrivna omnämnanden eller svar - Allvarliga brott mot lag eller tjänstevillkor - Det här inlägget är vilseledande - Nakenhet eller pornografi är inte märkta som sådana - Trakassering, trolling, eller intolerans - Ett problem som inte ingår i dessa alternativ - Radera - Är du säker du vill ta bort detta? - Rapportera - Är du säker på att du vill rapportera detta? - Ta bort bokmärke - Lägg till bokmärke - Gilla - Ogilla - Mer - Offert - Lägg till reaktion - Ta bort reaktion - Svara - Rapportera - Retweet - Ta bort retweet - Försök igen - Kommentar - Omvänd - Senaste - Sök - Show thumbnail list - Dölj miniatyrlista - Spara - Helskärm - Lägg till lista - Redigera lista - Ta bort lista - Är du säker på att du vill ta bort denna lista %1$s? - Inga listor - Det gick inte att ladda listor - Skapa lista - Listans namn - Listans namn - Medlemmar - Redigera medlemmar - Inga medlemmar - Det gick inte att läsa in medlemmar - Redigera listans medlemmar - Sök efter följande - Sök - Sök - Inga användare hittades - Misslyckades med att söka användare - Lägg till - Radera - Lista beskrivning - Lista beskrivning - Mina flöden - Upptäck flöden - Skapad av %1$s - Avprenumerera - Prenumerera - diff --git a/desktopApp/src/main/ composeResources/values-tr-rTR/strings.xml b/desktopApp/src/main/ composeResources/values-tr-rTR/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-tr-rTR/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/ composeResources/values-uk-rUA/strings.xml b/desktopApp/src/main/ composeResources/values-uk-rUA/strings.xml deleted file mode 100644 index 64f1d5736..000000000 --- a/desktopApp/src/main/ composeResources/values-uk-rUA/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - Гаразд - Скасувати - Видалити - Оновити - Написати лист - Логін - Налаштування - Домашній екран - Сповіщення - Ме - Відкрийте для себе - Налаштування - Місцевий - Загальнодоступна - Рекомендовані - Закладки - Фаворит - Список - Стрічки новин - Миттєві повідомлення - RSS - Нові дмухи - Відмінити - URL-адреса інстансу - Уперед - Екземплярів не знайдено - Ласкаво просимо до Flare - Flare - це клієнт соціальної мережі для %1$s.\nдля початку, будь ласка, виберіть службу для підключення. - Будь ласка, зачекайте, поки ми перевіряємо ваші облікові дані. - Повідомлення - Повідомлення і відповіді - Сподобалося - Медіа - Доповісти - Що проблема з цим постом? - Спам - Нелегальний та спецнат - Оселінг - Небажаний сексуальний вміст - Антисоціальна поведінка - Інше - Надмірні згадки або відповіді - славні порушення закону або умови надання послуг - Цей пост в омані - Нагота чи порнографія не позначена як така - Домагання, тролінг або нетерпимість - Проблема не включена до цих опцій - Видалити - Ви впевнені, що бажаєте видалити це? - Доповісти - Ви впевнені, що хочете повідомити про це? - Видалити з обраного - Додати до закладок - Подобається - На відміну від - Більше - Цитувати - Додати реакцію - Видалити реакцію - Відповідь - Доповісти - Ретвіт - Видалити ретвіт - Повторити спробу - Коментар - Репост - Недавні - Пошук - Show thumbnail list - Приховати список ескізів - Зберегти - Повноекранний - Додати список - Редагувати список - Видалити список - Ви дійсно бажаєте видалити цей список %1$s? - Немає списків - Не вдалося завантажити списки - Створити список - Назва списку - Назва списку - Члени - Редагувати учасників - Немає учасників - Не вдалося завантажити члени - Редагувати список учасників - Пошук підписок - Пошук - Пошук - Користувачів не знайдено - Помилка пошуку користувачів - Додати - Видалити - Список описів - Список описів - Мої стрічки - Відкрийте для себе стрічки - Створено %1$s - Відмовитися від підписки - Підписатися - diff --git a/desktopApp/src/main/ composeResources/values-vi-rVN/strings.xml b/desktopApp/src/main/ composeResources/values-vi-rVN/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-vi-rVN/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/ composeResources/values-zh-rCN/strings.xml b/desktopApp/src/main/ composeResources/values-zh-rCN/strings.xml deleted file mode 100644 index b0e3bee31..000000000 --- a/desktopApp/src/main/ composeResources/values-zh-rCN/strings.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - 好的 - 取消 - 删除 - 刷新 - 发帖 - 登录 - 设置 - 首页 - 通知 - - 发现 - 设置 - 本地 - 公开 - 精选 - 书签 - 收藏 - 列表 - 订阅源 - 私信 - Rss - 有新嘟文 - 后退 - 实例地址 - 下一步 - 没有找到实例 - 欢迎使用 Flare - 闪光是 %1$s的社交网络客户端。\n若要开始,请选择要连接的服务。 - 请稍等,正在验证您的凭据。 - 帖子 - 帖子和回复 - 点赞 - 媒体 - 举报 - 这篇帖子有什么问题? - 垃圾信息 - 违法违规 - 误导 - 不良性内容 - 反社会行为 - 其他 - 过多的提及或回复 - 明显违反法律或服务条款 - 这篇帖子具有误导性 - 未标明的裸露或色情内容 - 骚扰、恶作剧或不宽容行为 - 这些选项中未包含的问题 - 删除 - 您确定要删除此内容吗? - 举报 - 您确定要举报此内容吗? - 删除书签 - 添加书签 - 点赞 - 取消点赞 - 更多 - 引用 - 添加反应 - 移除反应 - 回复 - 举报 - 转推 - 移除转推 - 重试 - 评论 - 转发 - 最近的 - 搜索 - Show thumbnail list - 隐藏缩略图列表 - 保存 - 全屏 - 新建列表 - 编辑列表 - 删除列表 - 您确定要删除这个列表 %1$s? - 列表为空 - 无法加载列表 - 创建列表 - 列表名称 - 列表名称 - 成员 - 编辑成员 - 暂无成员 - 无法加载成员 - 编辑成员 - 搜索您的关注 - 搜索 - 搜索 - 未找到用户 - 搜索用户失败 - 添加 - 删除账户 - 列表描述 - 列表描述 - 我的订阅 - 发现订阅源 - 由%1$s创建 - 取消订阅 - 订阅 - diff --git a/desktopApp/src/main/ composeResources/values-zh-rTW/strings.xml b/desktopApp/src/main/ composeResources/values-zh-rTW/strings.xml deleted file mode 100644 index 045e125f3..000000000 --- a/desktopApp/src/main/ composeResources/values-zh-rTW/strings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/desktopApp/src/main/kotlin/dev/dimension/flare/di/DesktopModule.kt b/desktopApp/src/main/kotlin/dev/dimension/flare/di/DesktopModule.kt index 8f9594542..b0a26abfd 100644 --- a/desktopApp/src/main/kotlin/dev/dimension/flare/di/DesktopModule.kt +++ b/desktopApp/src/main/kotlin/dev/dimension/flare/di/DesktopModule.kt @@ -3,6 +3,7 @@ package dev.dimension.flare.di import dev.dimension.flare.common.InAppNotification import dev.dimension.flare.common.Message import dev.dimension.flare.ui.component.platform.VideoPlayerPool +import org.koin.core.module.dsl.singleOf import org.koin.dsl.binds import org.koin.dsl.module @@ -27,9 +28,5 @@ val desktopModule = } } } binds arrayOf(InAppNotification::class) - single { - VideoPlayerPool( - get(), - ) - } + singleOf(::VideoPlayerPool) } diff --git a/desktopApp/src/main/kotlin/dev/dimension/flare/ui/route/Router.kt b/desktopApp/src/main/kotlin/dev/dimension/flare/ui/route/Router.kt index f40a61820..c2018d722 100644 --- a/desktopApp/src/main/kotlin/dev/dimension/flare/ui/route/Router.kt +++ b/desktopApp/src/main/kotlin/dev/dimension/flare/ui/route/Router.kt @@ -89,8 +89,8 @@ internal fun Router( it.arguments ?.getString("accountKey") ?.let(MicroBlogKey::valueOf) - ?.let(AccountType::Specific) - if (userKey != null && accountKey != null) { + ?.let(AccountType::Specific) ?: AccountType.Guest + if (userKey != null) { ProfileScreen( accountType = accountKey, userKey = userKey, diff --git a/desktopApp/vlc-download-task.gradle.kts b/desktopApp/vlc-download-task.gradle.kts deleted file mode 100644 index cd1ead221..000000000 --- a/desktopApp/vlc-download-task.gradle.kts +++ /dev/null @@ -1,295 +0,0 @@ -import org.apache.tools.ant.taskdefs.condition.Os -import org.gradle.api.DefaultTask -import org.gradle.api.tasks.TaskAction -import java.io.File -import java.net.URI -import java.net.http.HttpClient -import java.net.http.HttpRequest -import java.net.http.HttpResponse -import java.nio.file.Files -import java.nio.file.StandardCopyOption -import java.util.zip.ZipInputStream - -// Define task class -open class DownloadVlcTask : DefaultTask() { - // Set VLC version as a property for easy updates - private val vlcVersion = "3.0.20" - - @TaskAction - fun downloadVlc() { - val isWindows = Os.isFamily(Os.FAMILY_WINDOWS) - val isMacOS = Os.isFamily(Os.FAMILY_MAC) - val isArm64 = - System.getProperty("os.arch").lowercase().contains("aarch64") || - System.getProperty("os.arch").lowercase().contains("arm64") - - // Use projectDir to locate resource directory - val resourcesDir = File(project.projectDir, "resources") - if (!resourcesDir.exists()) { - resourcesDir.mkdirs() - } - - // Create download directory in project's build folder - val downloadDir = File(project.buildDir, "download") - if (!downloadDir.exists()) { - downloadDir.mkdirs() - } - - when { - isWindows -> { - val targetDir = File(resourcesDir, "windows-x64") - if (!targetDir.exists()) { - targetDir.mkdirs() - } - - // Check if directory is empty - if (targetDir.listFiles()?.isEmpty() != false) { - println("Windows x64 platform detected, downloading VLC $vlcVersion...") - downloadAndExtractZip( - "https://download.videolan.org/pub/videolan/vlc/$vlcVersion/win64/vlc-$vlcVersion-win64.zip", - targetDir, - downloadDir, - ) - } else { - println("Windows x64 directory already contains files, skipping download") - } - } - - isMacOS && isArm64 -> { - val targetDir = File(resourcesDir, "macos-arm64") - if (!targetDir.exists()) { - targetDir.mkdirs() - } - - // Check if directory is empty - if (targetDir.listFiles()?.isEmpty() != false) { - println("MacOS ARM64 platform detected, downloading VLC $vlcVersion...") - downloadAndMountDmg( - "https://download.videolan.org/pub/videolan/vlc/$vlcVersion/macosx/vlc-$vlcVersion-arm64.dmg", - targetDir, - downloadDir, - ) - } else { - println("MacOS ARM64 directory already contains files, skipping download") - } - } - - isMacOS -> { - val targetDir = File(resourcesDir, "macos-x64") - if (!targetDir.exists()) { - targetDir.mkdirs() - } - - // Check if directory is empty - if (targetDir.listFiles()?.isEmpty() != false) { - println("MacOS x64 platform detected, downloading VLC $vlcVersion...") - downloadAndMountDmg( - "https://download.videolan.org/pub/videolan/vlc/$vlcVersion/macosx/vlc-$vlcVersion-intel64.dmg", - targetDir, - downloadDir, - ) - } else { - println("MacOS x64 directory already contains files, skipping download") - } - } - - else -> { - println("Unsupported platform") - } - } - } - - private fun downloadAndExtractZip( - url: String, - targetDir: File, - downloadDir: File, - ) { - try { - println("Downloading: $url") - val tempFile = File(downloadDir, "vlc-download-${System.currentTimeMillis()}.zip") - - // Use URI and HttpClient instead of deprecated URL constructor - val client = HttpClient.newBuilder().build() - val request = - HttpRequest - .newBuilder() - .uri(URI.create(url)) - .GET() - .build() - - client.send(request, HttpResponse.BodyHandlers.ofInputStream()).body().use { input -> - Files.copy(input, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING) - } - - println("Download complete, extracting...") - - // Create lib directory - val libDir = File(targetDir, "lib") - if (!libDir.exists()) { - libDir.mkdirs() - } - - // First pass: determine the root directory in the zip - var rootDirName = "" - ZipInputStream(tempFile.inputStream()).use { zipIn -> - var entry = zipIn.nextEntry - if (entry != null) { - val pathParts = entry.name.split("/") - if (pathParts.isNotEmpty()) { - rootDirName = pathParts[0] - } - } - } - - println("Detected root directory in zip: $rootDirName") - - // Second pass: extract files, renaming from 'vlc-x.x.x' to 'lib' - ZipInputStream(tempFile.inputStream()).use { zipIn -> - var entry = zipIn.nextEntry - while (entry != null) { - // Skip the root directory entry itself - if (entry.name != "$rootDirName/") { - // Replace the root directory name with "lib" - val relativePath = - if (rootDirName.isNotEmpty()) { - entry.name.substring(rootDirName.length + 1) - } else { - entry.name - } - - val outputFile = File(libDir, relativePath) - - if (entry.isDirectory) { - if (!outputFile.exists()) { - outputFile.mkdirs() - } - } else { - // Create parent directories if they don't exist - outputFile.parentFile?.mkdirs() - - // Extract file - outputFile.outputStream().use { output -> - zipIn.copyTo(output) - } - } - } - - zipIn.closeEntry() - entry = zipIn.nextEntry - } - } - - println("Extraction complete") - } catch (e: Exception) { - println("Error during download or extraction: ${e.message}") - e.printStackTrace() - } - } - - private fun downloadAndMountDmg( - url: String, - targetDir: File, - downloadDir: File, - ) { - try { - println("Downloading: $url") - val tempFile = File(downloadDir, "vlc-download-${System.currentTimeMillis()}.dmg") - - // Use URI and HttpClient instead of deprecated URL constructor - val client = HttpClient.newBuilder().build() - val request = - HttpRequest - .newBuilder() - .uri(URI.create(url)) - .GET() - .build() - - client.send(request, HttpResponse.BodyHandlers.ofInputStream()).body().use { input -> - Files.copy(input, tempFile.toPath(), StandardCopyOption.REPLACE_EXISTING) - } - - println("Download complete, mounting DMG file...") - - // Mount DMG file - val mountPoint = File(System.getProperty("java.io.tmpdir"), "vlc_mount") - if (!mountPoint.exists()) { - mountPoint.mkdirs() - } - - val mountProcess = - ProcessBuilder( - "hdiutil", - "attach", - "-mountpoint", - mountPoint.absolutePath, - tempFile.absolutePath, - ).start() - - val mountExitCode = mountProcess.waitFor() - if (mountExitCode != 0) { - throw RuntimeException("Failed to mount DMG file, exit code: $mountExitCode") - } - - println("DMG mounted, copying content...") - - // Look for the MacOS directory containing the actual binaries - val vlcApp = File(mountPoint, "VLC.app") - val macOSDir = File(vlcApp, "Contents/MacOS") - - if (macOSDir.exists() && macOSDir.isDirectory) { - // Copy all files from MacOS directory directly to targetDir - println("Copying files from VLC.app/Contents/MacOS directly to target directory") - macOSDir.listFiles()?.forEach { file -> - val targetFile = File(targetDir, file.name) - if (file.isDirectory) { - copyDirectory(file, targetFile) - } else { - Files.copy(file.toPath(), targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING) - } - } - println("Files copied successfully") - } else { - println("VLC.app/Contents/MacOS not found in mounted DMG") - } - - // Unmount DMG - val unmountProcess = - ProcessBuilder( - "hdiutil", - "detach", - mountPoint.absolutePath, - ).start() - - val unmountExitCode = unmountProcess.waitFor() - if (unmountExitCode != 0) { - println("Warning: Failed to unmount DMG, exit code: $unmountExitCode") - } - - println("Processing complete") - } catch (e: Exception) { - println("Error during download or DMG processing: ${e.message}") - e.printStackTrace() - } - } - - private fun copyDirectory( - source: File, - target: File, - ) { - if (!target.exists()) { - target.mkdirs() - } - - source.listFiles()?.forEach { file -> - val targetFile = File(target, file.name) - if (file.isDirectory) { - copyDirectory(file, targetFile) - } else { - Files.copy(file.toPath(), targetFile.toPath(), StandardCopyOption.REPLACE_EXISTING) - } - } - } -} - -// Register task -tasks.register("downloadVlc") diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 9e1bc1c77..2a76ad89b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -49,7 +49,6 @@ materialKolor = "2.1.1" room = "2.7.0" sqlite = "2.5.0" compose-multiplatform = "1.7.3" -mediamp = "0.0.25" [libraries] androidx-collection = { module = "androidx.collection:collection", version.ref = "collection" } @@ -193,10 +192,6 @@ jSystemThemeDetector = { module = "com.github.Dansoftowner:jSystemThemeDetector" jetbrains-navigation-compose = { module = "org.jetbrains.androidx.navigation:navigation-compose", version = "2.8.0-alpha10" } -mediamp-vlc-loader = { module = "org.openani.mediamp:mediamp-vlc-loader", version.ref = "mediamp" } -mediamp-vlc = { module = "org.openani.mediamp:mediamp-vlc", version.ref = "mediamp" } -mediamp-vlc-compose = { module = "org.openani.mediamp:mediamp-vlc-compose", version.ref = "mediamp" } - [bundles] compose = ["ui", "ui-util", "ui-graphics", "ui-tooling", "ui-tooling-preview", "material3", "material3WindowSizeClass", "material3-adaptive-navigation-suite", "material3-adaptive", "material3-adaptive-navigation", "material3-adaptive-layout"] navigation = ["navigation-compose"] @@ -210,7 +205,6 @@ compose-destinations = ["compose-destinations", "material3-navigation"] media3 = ["media3-exoplayer", "media3-ui", "media3-hls"] firebase = ["firebase-analytics-ktx", "firebase-crashlytics-ktx"] ktorfit = ["ktorfit-lib", "ktorfit-converters-response", "ktorfit-converters-flow", "ktorfit-converters-call"] -mediamp = ["mediamp-vlc-loader", "mediamp-vlc", "mediamp-vlc-compose"] [plugins] android-application = { id = "com.android.application", version.ref = "agp" } diff --git a/shared/ui/component/build.gradle.kts b/shared/ui/component/build.gradle.kts index f5fee7a02..83f6cb8a2 100644 --- a/shared/ui/component/build.gradle.kts +++ b/shared/ui/component/build.gradle.kts @@ -55,7 +55,7 @@ kotlin { implementation(libs.fluent.ui) implementation(libs.koin.compose) implementation(compose("org.jetbrains.compose.material3:material3-window-size-class")) - api(libs.bundles.mediamp) + implementation("io.github.kdroidfilter:composemediaplayer:0.6.4") implementation(libs.androidx.collection) } } diff --git a/shared/ui/component/src/androidMain/kotlin/dev/dimension/flare/ui/component/VideoPlayer.kt b/shared/ui/component/src/androidMain/kotlin/dev/dimension/flare/ui/component/VideoPlayer.kt index 8102840ed..d4d97ea41 100644 --- a/shared/ui/component/src/androidMain/kotlin/dev/dimension/flare/ui/component/VideoPlayer.kt +++ b/shared/ui/component/src/androidMain/kotlin/dev/dimension/flare/ui/component/VideoPlayer.kt @@ -118,7 +118,7 @@ public fun VideoPlayer( delay(500) } } - DisposableEffect(Unit) { + DisposableEffect(uri) { onDispose { playerPool.release(uri) } diff --git a/shared/ui/component/src/androidMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.android.kt b/shared/ui/component/src/androidMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.android.kt index e6ff89dab..05cf1f499 100644 --- a/shared/ui/component/src/androidMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.android.kt +++ b/shared/ui/component/src/androidMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.android.kt @@ -21,6 +21,7 @@ internal actual fun PlatformVideoPlayer( onLongClick: (() -> Unit)?, autoPlay: Boolean, remainingTimeContent: @Composable (BoxScope.(Long) -> Unit)?, + errorContent: @Composable BoxScope.() -> Unit, loadingPlaceholder: @Composable BoxScope.() -> Unit, ) { VideoPlayer( diff --git a/shared/ui/component/src/commonMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.kt b/shared/ui/component/src/commonMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.kt index 6e17ba0a6..76c78331b 100644 --- a/shared/ui/component/src/commonMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.kt +++ b/shared/ui/component/src/commonMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.kt @@ -9,6 +9,10 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale +import compose.icons.FontAwesomeIcons +import compose.icons.fontawesomeicons.Solid +import compose.icons.fontawesomeicons.solid.FaceFrown +import dev.dimension.flare.ui.component.FAIcon import dev.dimension.flare.ui.component.NetworkImage @Composable @@ -26,6 +30,21 @@ internal expect fun PlatformVideoPlayer( onLongClick: (() -> Unit)? = null, autoPlay: Boolean = true, remainingTimeContent: @Composable (BoxScope.(Long) -> Unit)? = null, + errorContent: @Composable BoxScope.() -> Unit = { + if (previewUri != null) { + Box( + modifier = + Modifier + .fillMaxSize(), + contentAlignment = Alignment.Center, + ) { + FAIcon( + FontAwesomeIcons.Solid.FaceFrown, + contentDescription = null, + ) + } + } + }, loadingPlaceholder: @Composable BoxScope.() -> Unit = { if (previewUri != null) { Box( diff --git a/shared/ui/component/src/commonMain/kotlin/dev/dimension/flare/ui/component/status/StatusMediaComponent.kt b/shared/ui/component/src/commonMain/kotlin/dev/dimension/flare/ui/component/status/StatusMediaComponent.kt index a47fe63b2..07e5ca2b1 100644 --- a/shared/ui/component/src/commonMain/kotlin/dev/dimension/flare/ui/component/status/StatusMediaComponent.kt +++ b/shared/ui/component/src/commonMain/kotlin/dev/dimension/flare/ui/component/status/StatusMediaComponent.kt @@ -27,6 +27,7 @@ import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.unit.dp import compose.icons.FontAwesomeIcons import compose.icons.fontawesomeicons.Solid +import compose.icons.fontawesomeicons.solid.CircleExclamation import compose.icons.fontawesomeicons.solid.CirclePlay import compose.icons.fontawesomeicons.solid.EyeSlash import dev.dimension.flare.common.AppDeepLink @@ -290,6 +291,38 @@ public fun MediaItem( color = Color.White, ) }, + errorContent = { + Box( + modifier = + Modifier + .fillMaxSize(), + contentAlignment = Alignment.Center, + ) { + NetworkImage( + contentScale = contentScale, + model = media.thumbnailUrl, + contentDescription = media.description, + modifier = + Modifier + .fillMaxSize(), + ) + } + FAIcon( + FontAwesomeIcons.Solid.CircleExclamation, + modifier = + Modifier + .padding(16.dp) + .align(Alignment.BottomStart) + .background( + color = Color.Black.copy(alpha = 0.75f), + shape = PlatformTheme.shapes.medium, + ).padding( + 8.dp, + ), + tint = Color.White, + contentDescription = null, + ) + }, remainingTimeContent = if (showCountdown) { { diff --git a/shared/ui/component/src/jvmMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.jvm.kt b/shared/ui/component/src/jvmMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.jvm.kt index 694ddb217..87b77daa5 100644 --- a/shared/ui/component/src/jvmMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.jvm.kt +++ b/shared/ui/component/src/jvmMain/kotlin/dev/dimension/flare/ui/component/platform/PlatformVideoPlayer.jvm.kt @@ -11,10 +11,10 @@ import androidx.compose.foundation.layout.wrapContentSize import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.collectAsState -import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableLongStateOf import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clipToBounds import androidx.compose.ui.geometry.Size @@ -23,21 +23,14 @@ import androidx.compose.ui.layout.layout import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.Dp -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.launch -import org.openani.mediamp.InternalMediampApi -import org.openani.mediamp.PlaybackState -import org.openani.mediamp.features.AudioLevelController -import org.openani.mediamp.playUri -import org.openani.mediamp.vlc.VlcMediampPlayer -import org.openani.mediamp.vlc.compose.VlcMediampPlayerSurface +import io.github.kdroidfilter.composemediaplayer.VideoPlayerState +import io.github.kdroidfilter.composemediaplayer.VideoPlayerSurface +import kotlinx.coroutines.delay import kotlin.concurrent.timer -import kotlin.coroutines.CoroutineContext -import kotlin.coroutines.EmptyCoroutineContext import kotlin.math.roundToInt import kotlin.time.Duration.Companion.minutes -@OptIn(ExperimentalFoundationApi::class, InternalMediampApi::class) +@OptIn(ExperimentalFoundationApi::class) @Composable internal actual fun PlatformVideoPlayer( uri: String, @@ -53,6 +46,7 @@ internal actual fun PlatformVideoPlayer( onLongClick: (() -> Unit)?, autoPlay: Boolean, remainingTimeContent: @Composable (BoxScope.(Long) -> Unit)?, + errorContent: @Composable BoxScope.() -> Unit, loadingPlaceholder: @Composable BoxScope.() -> Unit, ) { val playerPool: VideoPlayerPool = org.koin.compose.koinInject() @@ -60,54 +54,49 @@ internal actual fun PlatformVideoPlayer( remember(uri) { playerPool .get(uri) + .apply { + if (autoPlay) { + play() + } + volume = if (muted) 0f else 1f + } } - val state by player.playbackState.collectAsState() - LaunchedEffect(state) { - if (state in listOf(PlaybackState.READY, PlaybackState.PAUSED) && autoPlay) { - player.features[AudioLevelController.Key]?.setMute(muted) - player.resume() - } - } - LaunchedEffect(muted) { - player.features[AudioLevelController.Key]?.setMute(muted) - } - DisposableEffect(Unit) { + DisposableEffect(uri) { onDispose { playerPool.release(uri) } } - val properties by player.mediaProperties.collectAsState() - val position by player.currentPositionMillis.collectAsState() + var remainingTime by remember { mutableLongStateOf(0L) } val density = LocalDensity.current val size = - remember(state) { - val dimension = player.player.video().videoDimension() - if (dimension != null) { + remember(player.metadata) { + val height = player.metadata.height + val width = player.metadata.width + if (height != null && width != null) { with(density) { Size( - width = dimension.width.toFloat(), - height = dimension.height.toFloat(), + width = width.toFloat(), + height = height.toFloat(), ) } } else { null } } - val remainingTime by remember { - derivedStateOf { - properties?.durationMillis?.let { duration -> - if (duration > 0) { - duration - position - } else { - 0 - } - } ?: 0 + LaunchedEffect(player) { + while (true) { + val duration = player.metadata.duration + if (remainingTimeContent != null && duration != null) { + val position = player.sliderPos / 1000f + remainingTime = (duration * 1000 * (1f - position)).toLong() + } + delay(500) } } Box(modifier) { - VlcMediampPlayerSurface( - mediampPlayer = player, + VideoPlayerSurface( + playerState = player, modifier = Modifier .clipToBounds() @@ -133,7 +122,9 @@ internal actual fun PlatformVideoPlayer( } }.matchParentSize(), ) - if (state != PlaybackState.PLAYING || position <= 0) { + if (player.error != null) { + errorContent.invoke(this) + } else if (player.isLoading) { loadingPlaceholder() } else { remainingTimeContent?.invoke(this, remainingTime) @@ -173,28 +164,23 @@ private fun Modifier.resizeWithContentScale( ), ) -public class VideoPlayerPool( - private val scope: CoroutineScope, - private val context: CoroutineContext = EmptyCoroutineContext, -) { - private val positionPool = mutableMapOf() +public class VideoPlayerPool { + private val positionPool = mutableMapOf() private val lockCount = linkedMapOf() private val pool = - lruCache( + lruCache( maxSize = 10, create = { uri -> - VlcMediampPlayer(context) + VideoPlayerState() .apply { - player.controls().repeat = true - scope.launch { - playUri(uri) - } + loop = true + openUri(uri) } }, onEntryRemoved = { evicted, key, oldValue, newValue -> if (evicted) { - positionPool.put(key, oldValue.getCurrentPositionMillis()) - oldValue.close() + positionPool.put(key, oldValue.sliderPos) + oldValue.dispose() } else if (newValue != null) { val position = positionPool.get(key) if (position != null) { @@ -209,14 +195,14 @@ public class VideoPlayerPool( timer(period = 1.minutes.inWholeMilliseconds) { pool.snapshot().forEach { (uri, _) -> if (lockCount.getOrElse(uri) { 0 } == 0L) { - pool.remove(uri)?.close() + pool.remove(uri)?.dispose() } } } - public fun peek(uri: String): VlcMediampPlayer? = pool.get(uri) + public fun peek(uri: String): VideoPlayerState? = pool.get(uri) - public fun get(uri: String): VlcMediampPlayer { + public fun get(uri: String): VideoPlayerState { lock(uri) return pool.get(uri)!! }