* 'main' of https://github.com/vitorpamplona/amethyst:
  update cz, pt, de, sv
  remove unused imports
  remove unused imports
  remove unused imports
This commit is contained in:
Vitor Pamplona
2026-03-02 11:25:18 -05:00
31 changed files with 144 additions and 50 deletions
@@ -25,7 +25,6 @@ import android.content.Context
import android.content.SharedPreferences import android.content.SharedPreferences
import androidx.compose.runtime.Immutable import androidx.compose.runtime.Immutable
import androidx.core.content.edit import androidx.core.content.edit
import com.vitorpamplona.amethyst.LocalPreferences.parseEventOrNull
import com.vitorpamplona.amethyst.model.ALL_FOLLOWS import com.vitorpamplona.amethyst.model.ALL_FOLLOWS
import com.vitorpamplona.amethyst.model.AccountSettings import com.vitorpamplona.amethyst.model.AccountSettings
import com.vitorpamplona.amethyst.model.GLOBAL_FOLLOWS import com.vitorpamplona.amethyst.model.GLOBAL_FOLLOWS
@@ -43,7 +43,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.service.playback.composable.controls.HorizontalLinearProgressIndicator
import com.vitorpamplona.amethyst.ui.stringRes import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange
import com.vitorpamplona.amethyst.ui.theme.Size30Modifier import com.vitorpamplona.amethyst.ui.theme.Size30Modifier
@@ -43,7 +43,6 @@ import com.vitorpamplona.amethyst.service.playback.composable.MediaControllerSta
import com.vitorpamplona.amethyst.service.playback.composable.WaveformData import com.vitorpamplona.amethyst.service.playback.composable.WaveformData
import com.vitorpamplona.amethyst.service.playback.composable.mediaitem.MediaItemData import com.vitorpamplona.amethyst.service.playback.composable.mediaitem.MediaItemData
import com.vitorpamplona.amethyst.service.playback.composable.wavefront.Waveform import com.vitorpamplona.amethyst.service.playback.composable.wavefront.Waveform
import com.vitorpamplona.amethyst.service.playback.pip.makePipParams
import com.vitorpamplona.amethyst.ui.components.getActivity import com.vitorpamplona.amethyst.ui.components.getActivity
import com.vitorpamplona.amethyst.ui.theme.VoiceHeightModifier import com.vitorpamplona.amethyst.ui.theme.VoiceHeightModifier
@@ -43,7 +43,6 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.FlowPreview import kotlinx.coroutines.FlowPreview
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.mapLatest import kotlinx.coroutines.flow.mapLatest
@@ -20,8 +20,6 @@
*/ */
package com.vitorpamplona.amethyst.ui.components package com.vitorpamplona.amethyst.ui.components
import android.R.attr.maxLines
import android.R.attr.onClick
import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.combinedClickable
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text import androidx.compose.material3.Text
@@ -31,7 +29,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.platform.LocalClipboardManager
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.style.TextOverflow
import com.vitorpamplona.amethyst.ui.components.appendLink
import com.vitorpamplona.amethyst.ui.navigation.navs.INav import com.vitorpamplona.amethyst.ui.navigation.navs.INav
import com.vitorpamplona.amethyst.ui.navigation.routes.Route import com.vitorpamplona.amethyst.ui.navigation.routes.Route
@@ -20,7 +20,6 @@
*/ */
package com.vitorpamplona.amethyst.ui.components package com.vitorpamplona.amethyst.ui.components
import android.R.attr.maxLines
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.text.InlineTextContent import androidx.compose.foundation.text.InlineTextContent
@@ -28,7 +28,6 @@ import android.widget.Toast
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut import androidx.compose.animation.fadeOut
import androidx.compose.foundation.background
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Arrangement.spacedBy import androidx.compose.foundation.layout.Arrangement.spacedBy
@@ -63,7 +63,6 @@ import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
@@ -100,7 +100,6 @@ import com.vitorpamplona.quartz.utils.TimeUtils
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flow import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlin.collections.map
@Composable @Composable
fun RenderPoll( fun RenderPoll(
@@ -37,10 +37,8 @@ import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color
@@ -23,7 +23,6 @@ package com.vitorpamplona.amethyst.ui.screen.loggedIn.chess.dal
import com.vitorpamplona.amethyst.model.Account import com.vitorpamplona.amethyst.model.Account
import com.vitorpamplona.amethyst.model.LocalCache import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.model.filterIntoSet
import com.vitorpamplona.amethyst.ui.dal.AdditiveFeedFilter import com.vitorpamplona.amethyst.ui.dal.AdditiveFeedFilter
import com.vitorpamplona.amethyst.ui.dal.DefaultFeedOrder import com.vitorpamplona.amethyst.ui.dal.DefaultFeedOrder
import com.vitorpamplona.amethyst.ui.dal.FilterByListParams import com.vitorpamplona.amethyst.ui.dal.FilterByListParams
@@ -24,7 +24,6 @@ import androidx.annotation.OptIn
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.PlayCircleOutline import androidx.compose.material.icons.filled.PlayCircleOutline
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -33,7 +32,6 @@ import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.clip
@@ -65,7 +63,6 @@ import com.vitorpamplona.amethyst.ui.theme.Size50Modifier
import com.vitorpamplona.quartz.experimental.profileGallery.ProfileGalleryEntryEvent import com.vitorpamplona.quartz.experimental.profileGallery.ProfileGalleryEntryEvent
import com.vitorpamplona.quartz.nip68Picture.PictureEvent import com.vitorpamplona.quartz.nip68Picture.PictureEvent
import com.vitorpamplona.quartz.nip71Video.VideoEvent import com.vitorpamplona.quartz.nip71Video.VideoEvent
import kotlinx.coroutines.flow.map
@Composable @Composable
fun GalleryThumbnail( fun GalleryThumbnail(
@@ -41,7 +41,6 @@ import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.emitAll import kotlinx.coroutines.flow.emitAll
import kotlinx.coroutines.flow.flow
import kotlinx.coroutines.flow.flowOn import kotlinx.coroutines.flow.flowOn
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart import kotlinx.coroutines.flow.onStart
@@ -26,9 +26,7 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.material3.Text import androidx.compose.material3.Text
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
@@ -1274,4 +1274,40 @@
<string name="confirm">Potvrdit</string> <string name="confirm">Potvrdit</string>
<string name="next">Další</string> <string name="next">Další</string>
<string name="add_poll_option_button">Přidat možnost ankety</string> <string name="add_poll_option_button">Přidat možnost ankety</string>
<string name="favorite_relays_title">Oblíbené feedy relayí</string>
<string name="favorite_section">Oblíbené feedy relayí</string>
<string name="favorite_section_explainer">Relaye, které často navštěvujete pro zobrazení jejich globálního feedu</string>
<string name="ui_preferences">Nastavení rozhraní</string>
<string name="translations">Překlady</string>
<string name="reactions">Reakce</string>
<string name="account_settings">Nastavení účtu</string>
<string name="app_settings">Nastavení aplikace</string>
<string name="go_back">Jít zpět</string>
<string name="approve">Schválit</string>
<string name="connected">Připojeno</string>
<string name="social_proof">Sociální důkaz</string>
<string name="poll_submit">Odeslat</string>
<string name="restart">Restartovat</string>
<string name="chess_accept">Přijmout</string>
<string name="chess_decline">Odmítnout</string>
<string name="chess_new_game">Nová hra</string>
<string name="new_chess_game">Nová šachová hra</string>
<string name="chess_loading_game">Načítání hry…</string>
<string name="chess_game_not_found">Hra nenalezena</string>
<string name="chess_game_waiting">Tato hra mohla skončit nebo čeká na soupeře.</string>
<string name="chess_game_id">ID hry: %1$s…</string>
<string name="badge_and_n_others"> a %1$d dalších</string>
<string name="remove_language">Odebrat %1$s</string>
<string name="relay_active_subscriptions">Aktivní odběry</string>
<string name="relay_active_outbox">Čekající události k odeslání</string>
<string name="relay_req_subscriptions">REQ odběry (%1$d)</string>
<string name="relay_count_subscriptions">COUNT odběry (%1$d)</string>
<string name="relay_outbox_events">Události k odeslání (%1$d)</string>
<string name="relay_no_active_subscriptions">Pro tento relay nejsou žádné aktivní odběry</string>
<string name="relay_filter_authors">%1$d autorů</string>
<string name="relay_filter_ids">%1$d ID</string>
<string name="relay_filter_since">od %1$s</string>
<string name="relay_filter_until">do %1$s</string>
<string name="relay_filter_limit">limit %1$d</string>
</resources> </resources>
@@ -1279,4 +1279,40 @@ anz der Bedingungen ist erforderlich</string>
<string name="confirm">Bestätigen</string> <string name="confirm">Bestätigen</string>
<string name="next">Weiter</string> <string name="next">Weiter</string>
<string name="add_poll_option_button">Umfrageoption hinzufügen</string> <string name="add_poll_option_button">Umfrageoption hinzufügen</string>
<string name="favorite_relays_title">Favorisierte Relay-Feeds</string>
<string name="favorite_section">Favorisierte Relay-Feeds</string>
<string name="favorite_section_explainer">Relays, die du häufig besuchst, um ihren globalen Feed zu sehen</string>
<string name="ui_preferences">UI-Einstellungen</string>
<string name="translations">Übersetzungen</string>
<string name="reactions">Reaktionen</string>
<string name="account_settings">Kontoeinstellungen</string>
<string name="app_settings">App-Einstellungen</string>
<string name="go_back">Zurückgehen</string>
<string name="approve">Genehmigen</string>
<string name="connected">Verbunden</string>
<string name="social_proof">Sozialer Nachweis</string>
<string name="poll_submit">Absenden</string>
<string name="restart">Neu starten</string>
<string name="chess_accept">Annehmen</string>
<string name="chess_decline">Ablehnen</string>
<string name="chess_new_game">Neues Spiel</string>
<string name="new_chess_game">Neues Schachspiel</string>
<string name="chess_loading_game">Spiel wird geladen…</string>
<string name="chess_game_not_found">Spiel nicht gefunden</string>
<string name="chess_game_waiting">Dieses Spiel ist möglicherweise beendet oder wartet auf einen Gegner.</string>
<string name="chess_game_id">Spiel-ID: %1$s…</string>
<string name="badge_and_n_others"> und %1$d weitere</string>
<string name="remove_language">%1$s entfernen</string>
<string name="relay_active_subscriptions">Aktive Abonnements</string>
<string name="relay_active_outbox">Ausstehende Outbox-Ereignisse</string>
<string name="relay_req_subscriptions">REQ-Abonnements (%1$d)</string>
<string name="relay_count_subscriptions">COUNT-Abonnements (%1$d)</string>
<string name="relay_outbox_events">Outbox-Ereignisse (%1$d)</string>
<string name="relay_no_active_subscriptions">Keine aktiven Abonnements für dieses Relay</string>
<string name="relay_filter_authors">%1$d Autoren</string>
<string name="relay_filter_ids">%1$d IDs</string>
<string name="relay_filter_since">seit %1$s</string>
<string name="relay_filter_until">bis %1$s</string>
<string name="relay_filter_limit">Limit %1$d</string>
</resources> </resources>
@@ -1274,4 +1274,40 @@
<string name="confirm">Confirmar</string> <string name="confirm">Confirmar</string>
<string name="next">Próximo</string> <string name="next">Próximo</string>
<string name="add_poll_option_button">Adicionar opção à enquete</string> <string name="add_poll_option_button">Adicionar opção à enquete</string>
<string name="favorite_relays_title">Feeds de Relays Favoritos</string>
<string name="favorite_section">Feeds de Relays Favoritos</string>
<string name="favorite_section_explainer">Relays que você visita com frequência para ver o feed Global deles</string>
<string name="ui_preferences">Preferências da Interface</string>
<string name="translations">Traduções</string>
<string name="reactions">Reações</string>
<string name="account_settings">Configurações da Conta</string>
<string name="app_settings">Configurações do App</string>
<string name="go_back">Voltar</string>
<string name="approve">Aprovar</string>
<string name="connected">Conectado</string>
<string name="social_proof">Prova social</string>
<string name="poll_submit">Enviar</string>
<string name="restart">Reiniciar</string>
<string name="chess_accept">Aceitar</string>
<string name="chess_decline">Recusar</string>
<string name="chess_new_game">Novo Jogo</string>
<string name="new_chess_game">Novo Jogo de Xadrez</string>
<string name="chess_loading_game">Carregando jogo…</string>
<string name="chess_game_not_found">Jogo não encontrado</string>
<string name="chess_game_waiting">Este jogo pode ter terminado ou está aguardando um oponente.</string>
<string name="chess_game_id">ID do Jogo: %1$s…</string>
<string name="badge_and_n_others"> e mais %1$d</string>
<string name="remove_language">Remover %1$s</string>
<string name="relay_active_subscriptions">Assinaturas Ativas</string>
<string name="relay_active_outbox">Eventos Pendentes na Outbox</string>
<string name="relay_req_subscriptions">Assinaturas REQ (%1$d)</string>
<string name="relay_count_subscriptions">Assinaturas COUNT (%1$d)</string>
<string name="relay_outbox_events">Eventos da Outbox (%1$d)</string>
<string name="relay_no_active_subscriptions">Nenhuma assinatura ativa para este relay</string>
<string name="relay_filter_authors">%1$d autores</string>
<string name="relay_filter_ids">%1$d IDs</string>
<string name="relay_filter_since">desde %1$s</string>
<string name="relay_filter_until">até %1$s</string>
<string name="relay_filter_limit">limite %1$d</string>
</resources> </resources>
@@ -1273,4 +1273,40 @@
<string name="confirm">Bekräfta</string> <string name="confirm">Bekräfta</string>
<string name="next">Nästa</string> <string name="next">Nästa</string>
<string name="add_poll_option_button">Lägg till omröstningsalternativ</string> <string name="add_poll_option_button">Lägg till omröstningsalternativ</string>
<string name="favorite_relays_title">Favorit-reläflöden</string>
<string name="favorite_section">Favorit-reläflöden</string>
<string name="favorite_section_explainer">Reläer som du ofta besöker för att se deras globala flöde</string>
<string name="ui_preferences">Gränssnittsinställningar</string>
<string name="translations">Översättningar</string>
<string name="reactions">Reaktioner</string>
<string name="account_settings">Kontoinställningar</string>
<string name="app_settings">Appinställningar</string>
<string name="go_back">Gå tillbaka</string>
<string name="approve">Godkänn</string>
<string name="connected">Ansluten</string>
<string name="social_proof">Socialt bevis</string>
<string name="poll_submit">Skicka</string>
<string name="restart">Starta om</string>
<string name="chess_accept">Acceptera</string>
<string name="chess_decline">Avböj</string>
<string name="chess_new_game">Nytt parti</string>
<string name="new_chess_game">Nytt schackparti</string>
<string name="chess_loading_game">Laddar parti…</string>
<string name="chess_game_not_found">Parti hittades inte</string>
<string name="chess_game_waiting">Detta parti kan ha avslutats eller väntar på motståndare.</string>
<string name="chess_game_id">Parti-ID: %1$s…</string>
<string name="badge_and_n_others"> och %1$d andra</string>
<string name="remove_language">Ta bort %1$s</string>
<string name="relay_active_subscriptions">Aktiva prenumerationer</string>
<string name="relay_active_outbox">Väntande utgående händelser</string>
<string name="relay_req_subscriptions">REQ-prenumerationer (%1$d)</string>
<string name="relay_count_subscriptions">COUNT-prenumerationer (%1$d)</string>
<string name="relay_outbox_events">Utgående händelser (%1$d)</string>
<string name="relay_no_active_subscriptions">Inga aktiva prenumerationer för detta relä</string>
<string name="relay_filter_authors">%1$d författare</string>
<string name="relay_filter_ids">%1$d ID:n</string>
<string name="relay_filter_since">sedan %1$s</string>
<string name="relay_filter_until">till %1$s</string>
<string name="relay_filter_limit">gräns %1$d</string>
</resources> </resources>
@@ -57,7 +57,6 @@ import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.alpha
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
@@ -25,8 +25,6 @@ import com.vitorpamplona.quartz.nip01Core.relay.normalizer.NormalizedRelayUrl
import com.vitorpamplona.quartz.nip01Core.relay.normalizer.isLocalHost import com.vitorpamplona.quartz.nip01Core.relay.normalizer.isLocalHost
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import java.lang.ref.WeakReference import java.lang.ref.WeakReference
import kotlin.collections.mapOf
import kotlin.collections.plus
@Stable @Stable
data class RelayInfo( data class RelayInfo(
@@ -33,9 +33,6 @@ import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.update import kotlinx.coroutines.flow.update
import kotlin.collections.component1
import kotlin.collections.component2
import kotlin.collections.set
@Stable @Stable
class PollResponsesCache : UserDependencies { class PollResponsesCache : UserDependencies {
@@ -25,7 +25,6 @@ import com.vitorpamplona.quartz.nip01Core.core.Event
import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter
import java.util.SortedSet import java.util.SortedSet
import java.util.concurrent.ConcurrentSkipListSet import java.util.concurrent.ConcurrentSkipListSet
import kotlin.collections.mapNotNull
/** /**
* Creates a list of events (regular and addressable) * Creates a list of events (regular and addressable)
@@ -25,7 +25,6 @@ import com.vitorpamplona.quartz.nip01Core.core.Event
import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter import com.vitorpamplona.quartz.nip01Core.relay.filters.Filter
import java.util.SortedSet import java.util.SortedSet
import java.util.concurrent.ConcurrentSkipListSet import java.util.concurrent.ConcurrentSkipListSet
import kotlin.collections.toList
/** /**
* Creates a list of notes (regular and addressable) * Creates a list of notes (regular and addressable)
@@ -31,7 +31,6 @@ import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.width
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.lazy.LazyListState
@@ -62,7 +61,6 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.min import androidx.compose.ui.unit.min
@@ -42,7 +42,6 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.FocusRequester
import androidx.compose.ui.focus.focusRequester
import androidx.compose.ui.input.key.Key import androidx.compose.ui.input.key.Key
import androidx.compose.ui.input.key.KeyEventType import androidx.compose.ui.input.key.KeyEventType
import androidx.compose.ui.input.key.isCtrlPressed import androidx.compose.ui.input.key.isCtrlPressed
@@ -26,7 +26,6 @@ import com.vitorpamplona.quartz.nip01Core.core.HexKey
import com.vitorpamplona.quartz.nip01Core.core.JsonMapper import com.vitorpamplona.quartz.nip01Core.core.JsonMapper
import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder import com.vitorpamplona.quartz.nip01Core.core.TagArrayBuilder
import com.vitorpamplona.quartz.nip01Core.core.builder import com.vitorpamplona.quartz.nip01Core.core.builder
import com.vitorpamplona.quartz.nip01Core.metadata.MetadataEvent.Companion.updateOrDeleteTagNames
import com.vitorpamplona.quartz.nip01Core.metadata.tags.AboutTag import com.vitorpamplona.quartz.nip01Core.metadata.tags.AboutTag
import com.vitorpamplona.quartz.nip01Core.metadata.tags.BannerTag import com.vitorpamplona.quartz.nip01Core.metadata.tags.BannerTag
import com.vitorpamplona.quartz.nip01Core.metadata.tags.DisplayNameTag import com.vitorpamplona.quartz.nip01Core.metadata.tags.DisplayNameTag
@@ -54,7 +53,6 @@ import com.vitorpamplona.quartz.utils.text
import kotlinx.coroutines.CancellationException import kotlinx.coroutines.CancellationException
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
import kotlinx.serialization.json.JsonElement import kotlinx.serialization.json.JsonElement
import kotlinx.serialization.json.JsonNull.content
import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.JsonObject
import kotlinx.serialization.json.JsonPrimitive import kotlinx.serialization.json.JsonPrimitive
@@ -35,7 +35,6 @@ import com.vitorpamplona.quartz.nip01Core.tags.people.isTaggedUser
import com.vitorpamplona.quartz.nip02FollowList.tags.ContactTag import com.vitorpamplona.quartz.nip02FollowList.tags.ContactTag
import com.vitorpamplona.quartz.nip31Alts.AltTag import com.vitorpamplona.quartz.nip31Alts.AltTag
import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.TimeUtils
import kotlinx.serialization.json.JsonNull.content
@Stable @Stable
class ContactListEvent( class ContactListEvent(
@@ -28,7 +28,6 @@ import com.vitorpamplona.quartz.nip01Core.signers.EventTemplate
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.TimeUtils
import kotlinx.serialization.Serializable import kotlinx.serialization.Serializable
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json import kotlinx.serialization.json.Json
/** /**
@@ -22,14 +22,10 @@ package com.vitorpamplona.quartz.nip88Polls.poll
import com.vitorpamplona.quartz.nip01Core.core.TagArray import com.vitorpamplona.quartz.nip01Core.core.TagArray
import com.vitorpamplona.quartz.nip88Polls.poll.tags.EndsAtTag import com.vitorpamplona.quartz.nip88Polls.poll.tags.EndsAtTag
import com.vitorpamplona.quartz.nip88Polls.poll.tags.EndsAtTag.Companion.parse
import com.vitorpamplona.quartz.nip88Polls.poll.tags.OptionTag import com.vitorpamplona.quartz.nip88Polls.poll.tags.OptionTag
import com.vitorpamplona.quartz.nip88Polls.poll.tags.OptionTag.Companion.parse
import com.vitorpamplona.quartz.nip88Polls.poll.tags.PollType import com.vitorpamplona.quartz.nip88Polls.poll.tags.PollType
import com.vitorpamplona.quartz.nip88Polls.poll.tags.PollTypeTag import com.vitorpamplona.quartz.nip88Polls.poll.tags.PollTypeTag
import com.vitorpamplona.quartz.nip88Polls.poll.tags.PollTypeTag.Companion.parse
import com.vitorpamplona.quartz.nip88Polls.poll.tags.RelayTag import com.vitorpamplona.quartz.nip88Polls.poll.tags.RelayTag
import com.vitorpamplona.quartz.nip88Polls.poll.tags.RelayTag.Companion.parse
import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.TimeUtils
fun TagArray.options() = mapNotNull(OptionTag::parse) fun TagArray.options() = mapNotNull(OptionTag::parse)
@@ -28,15 +28,10 @@ import com.vitorpamplona.quartz.nip01Core.hints.EventHintBundle
import com.vitorpamplona.quartz.nip01Core.hints.EventHintProvider import com.vitorpamplona.quartz.nip01Core.hints.EventHintProvider
import com.vitorpamplona.quartz.nip01Core.hints.PubKeyHintProvider import com.vitorpamplona.quartz.nip01Core.hints.PubKeyHintProvider
import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate import com.vitorpamplona.quartz.nip01Core.signers.eventTemplate
import com.vitorpamplona.quartz.nip01Core.tags.events.ETag.Companion.parseAsHint
import com.vitorpamplona.quartz.nip01Core.tags.events.ETag.Companion.parseId
import com.vitorpamplona.quartz.nip01Core.tags.people.PTag import com.vitorpamplona.quartz.nip01Core.tags.people.PTag
import com.vitorpamplona.quartz.nip01Core.tags.people.PTag.Companion.parseAsHint
import com.vitorpamplona.quartz.nip01Core.tags.people.PTag.Companion.parseKey
import com.vitorpamplona.quartz.nip22Comments.RootScope import com.vitorpamplona.quartz.nip22Comments.RootScope
import com.vitorpamplona.quartz.nip31Alts.alt import com.vitorpamplona.quartz.nip31Alts.alt
import com.vitorpamplona.quartz.nip88Polls.poll.PollEvent import com.vitorpamplona.quartz.nip88Polls.poll.PollEvent
import com.vitorpamplona.quartz.nip88Polls.response.responses
import com.vitorpamplona.quartz.nip88Polls.response.tags.PollTag import com.vitorpamplona.quartz.nip88Polls.response.tags.PollTag
import com.vitorpamplona.quartz.utils.TimeUtils import com.vitorpamplona.quartz.utils.TimeUtils
@@ -21,14 +21,8 @@
package com.vitorpamplona.quartz.nip88Polls.response package com.vitorpamplona.quartz.nip88Polls.response
import com.vitorpamplona.quartz.nip01Core.core.TagArray import com.vitorpamplona.quartz.nip01Core.core.TagArray
import com.vitorpamplona.quartz.nip01Core.tags.events.ETag.Companion.parse
import com.vitorpamplona.quartz.nip88Polls.poll.tags.EndsAtTag.Companion.parse
import com.vitorpamplona.quartz.nip88Polls.poll.tags.OptionTag.Companion.parse
import com.vitorpamplona.quartz.nip88Polls.poll.tags.PollTypeTag.Companion.parse
import com.vitorpamplona.quartz.nip88Polls.poll.tags.RelayTag.Companion.parse
import com.vitorpamplona.quartz.nip88Polls.response.tags.PollTag import com.vitorpamplona.quartz.nip88Polls.response.tags.PollTag
import com.vitorpamplona.quartz.nip88Polls.response.tags.ResponseTag import com.vitorpamplona.quartz.nip88Polls.response.tags.ResponseTag
import com.vitorpamplona.quartz.nip88Polls.response.tags.ResponseTag.Companion.parse
fun TagArray.responses() = mapNotNull(ResponseTag::parse) fun TagArray.responses() = mapNotNull(ResponseTag::parse)