diff --git a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt index 8f29730a3..12072b1fe 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/model/Account.kt @@ -2435,6 +2435,10 @@ class Account( return (activeRelays() ?: convertLocalRelays()).filter { it.write } } + fun activeAllRelays(): List { + return ((activeRelays() ?: convertLocalRelays()).toList()) + } + fun isAllHidden(users: Set): Boolean { return users.all { isHidden(it) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt index 21eaeb714..e9e63fede 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/Relay.kt @@ -449,6 +449,38 @@ class Relay( } } + // This function sends the event regardless of the relay being write or not. + fun sendOverride(signedEvent: EventInterface) { + checkNotInMainThread() + + if (signedEvent is RelayAuthEvent) { + authResponse.put(signedEvent.id, false) + // specific protocol for this event. + val event = """["AUTH",${signedEvent.toJson()}]""" + socket?.send(event) + eventUploadCounterInBytes += event.bytesUsedInMemory() + } else { + val event = """["EVENT",${signedEvent.toJson()}]""" + if (isConnected()) { + if (isReady) { + socket?.send(event) + eventUploadCounterInBytes += event.bytesUsedInMemory() + } + } else { + // sends all filters after connection is successful. + connectAndRun { + checkNotInMainThread() + + socket?.send(event) + eventUploadCounterInBytes += event.bytesUsedInMemory() + + // Sends everything. + renewFilters() + } + } + } + } + fun send(signedEvent: EventInterface) { checkNotInMainThread() diff --git a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/RelayPool.kt b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/RelayPool.kt index faf184671..969a726b7 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/service/relays/RelayPool.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/service/relays/RelayPool.kt @@ -150,13 +150,17 @@ object RelayPool : Relay.Listener { list: List, signedEvent: EventInterface, ) { - list.forEach { relay -> relays.filter { it.url == relay.url }.forEach { it.send(signedEvent) } } + list.forEach { relay -> relays.filter { it.url == relay.url }.forEach { it.sendOverride(signedEvent) } } } fun send(signedEvent: EventInterface) { relays.forEach { it.send(signedEvent) } } + fun sendOverride(signedEvent: EventInterface) { + relays.forEach { it.sendOverride(signedEvent) } + } + fun close(subscriptionId: String) { relays.forEach { it.close(subscriptionId) } } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt index b64c63cec..b2286c749 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/actions/RelaySelectionDialog.kt @@ -78,7 +78,7 @@ fun RelaySelectionDialog( var relays by remember { mutableStateOf( - accountViewModel.account.activeWriteRelays().map { + accountViewModel.account.activeAllRelays().map { RelayList( relay = it, relayInfo = RelayBriefInfoCache.RelayBriefInfo(it.url), diff --git a/app/src/main/res/values-pl-rPL/strings.xml b/app/src/main/res/values-pl-rPL/strings.xml index 66a570486..6b02d4f8a 100644 --- a/app/src/main/res/values-pl-rPL/strings.xml +++ b/app/src/main/res/values-pl-rPL/strings.xml @@ -1,2 +1,109 @@ - + + Najedź na kod QR + Pokaż QR kod + Zdjęcie profilowe + Twoje zdjęcie profilowe + Zeskanuj QR kod + Pokaż mimo wszystko + Ten post został ukryty, ponieważ dotyczy ukrytych użytkowników lub słów + Post został wyciszony lub zgłoszony przez + Zdjęcie kanału + Przywołane zdarzenie nie zostało znalezione + Nie można odszyfrować wiadomości + Zdjęcie grupy + Niedozwolona zawartość + Spam + Podszywanie się + Nielegalne zachowanie + Ikona retransmitera + Autor nieznany + Skopiuj tekst + Zablokuj / Zgłoś + + Zgłoś spam/oszustwo + Zgłoś podszywanie się + Zgłoś niedozwoloną zawartość + Dodaj + Płatność zakończona pomyślnie + Wyloguj się + Zapłać + Dziękuję bardzo! + Nowy kanał + Nazwa kanału + Moja wspaniała Grupa + Adres URL zdjęcia + "O nas. " + Co masz na myśli? + Zapisz + Utwórz + Anuluj + Adres retransmitera + Dodaj Retransmiter + Nazwa użytkownika + Adres URL strony + Dodaj zdjęcie + Więcej opcji + " Retransmitery" + Odblokuj + Kopiuj ID użytkownika + Odblokuj użytkownika + "npub, nazwa użytkownika, tekst" + Wyczyść + Logo aplikacji + nsec. lub npub. + Pokaż hasło + Ukryj hasło + Nieprawidłowy klucz + "Akceptuję " + warunki użytkowania + Wymagane jest zaakceptowanie warunków użytkowania + Hasło jest wymagane + Zaloguj się + Zarejestruj się + Utwórz konto + Jak się do ciebie zwracać? + Nie posiadasz konta Nostr? + Masz już konto Nostr? + Utwórz nowe konto + Wygeneruj nowy klucz + Spróbuj ponownie + Odśwież + i zdjęcie + zmieniono nazwę czatu na + Wyjdź + Przestań obserwować + Czat Publiczny + Usuń + Zaznacz tekst + Dodaj nowe konto + Konta + Wybierz Konto + Dodaj konto + Wstecz + Wybierz + Skopiuj tekst + Usuń + Przestań obserwować + Śledź + Nie pokazuj ponownie + Dodaj wiadomość publiczną + Dodaj prywatną wiadomość + Dziękujemy za całą twoją pracę! + Utwórz i Dodaj + Dodaj wideo + Dodaj dokument + Każdy może zobaczyć transakcję i wiadomość + Nadawca i odbiorca mogą zobaczyć się nawzajem i przeczytać wiadomość + Twoje retransmitery (NIP-95) + Pliki są przechowywane przez Twoje retransmitery. Nowy NIP: sprawdź, czy jest obsługiwany + Odczytaj z Retransmitera + Zapisz do Retransmitera + Wystąpił błąd podczas próby uzyskania informacji o retransmiterze z %1$s + Retransmitery + Wybierz retransmiter, aby kontynuować + Nie można pobrać dokumentu retransmitera + Retransmiter %1$s + Rozwiń listę retransmiterów + Wybór listy retransmiterów +