Compare commits

...

21 Commits

Author SHA1 Message Date
Vitor Pamplona
2f45067949 v0.85.1 2024-03-04 12:00:02 -05:00
Vitor Pamplona
5a680beabb Fixes missing Fhir Classes on Release 2024-03-04 11:58:24 -05:00
Vitor Pamplona
779ce110ba Adding the most recent release features to the Readme. 2024-03-04 11:26:22 -05:00
Vitor Pamplona
43bcee5642 Merge branch 'main' of https://github.com/vitorpamplona/amethyst 2024-03-04 11:03:55 -05:00
Vitor Pamplona
64c4f7dc95 Removes extra new line 2024-03-04 10:29:19 -05:00
Vitor Pamplona
2b6cd07805 Merge pull request #796 from davotoula/accessibility_updates
Accessibility updates
2024-03-04 10:29:05 -05:00
David Kaspar
875d538581 added accessibility translations for CS, DE, SV, PT 2024-03-04 15:03:36 +00:00
David Kaspar
f0c53efebd app logo 2024-03-04 14:56:59 +00:00
David Kaspar
8c5aea46f1 refactor incognito button icon 2024-03-04 14:56:59 +00:00
David Kaspar
e507e0bb6a update Play text 2024-03-04 14:56:59 +00:00
David Kaspar
2f3df616f3 QR code icon 2024-03-04 14:56:59 +00:00
David Kaspar
75934b5b98 Relay list screeen 2024-03-04 14:56:59 +00:00
David Kaspar
4cbdf11ecb Send message button 2024-03-04 14:56:59 +00:00
David Kaspar
bbf0d36cdf Sealed message button on send message 2024-03-04 14:56:59 +00:00
David Kaspar
2bef5f015d change ArrowForwardIos to AutoMirrored 2024-03-04 14:56:59 +00:00
David Kaspar
708bd00d0d updated vertical dots with content descriptions 2024-03-04 14:56:59 +00:00
David Kaspar
2158e36032 Correct spelling 2024-03-04 14:56:59 +00:00
David Kaspar
08a103d332 updated some icons with content descriptions 2024-03-04 14:56:59 +00:00
Vitor Pamplona
57bcae6a0d Merge pull request #795 from vitorpamplona/l10n_crowdin_translations
New Crowdin Translations
2024-03-04 09:43:33 -05:00
Crowdin Bot
4897c28ed3 New Crowdin translations by GitHub Action 2024-03-04 14:38:48 +00:00
Vitor Pamplona
b3211cbb35 Removes the release drafter plugin on actions. Too buggy 2024-03-04 09:37:32 -05:00
23 changed files with 155 additions and 67 deletions

View File

@@ -228,8 +228,3 @@ jobs:
asset_path: app/build/outputs/bundle/fdroidRelease/app-fdroid-release.aab
asset_name: amethyst-fdroid-${{ github.ref_name }}.aab
asset_content_type: application/zip
- name: Drafts a description for the release
uses: release-drafter/release-drafter@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,5 +1,5 @@
<div align="center">
<a href="https://amethyst.social">
<img src="./docs/design/3rd%20Logo%20-%20Zitron/amethyst.svg" alt="Amethyst Logo" title="Amethyst logo" width="80"/>
</a>
@@ -40,7 +40,7 @@ height="70">](https://github.com/vitorpamplona/amethyst/releases)
- [x] Events / Relay Subscriptions (NIP-01)
- [x] Follow List (NIP-02)
- [ ] OpenTimestamps Attestations (NIP-03)
- [x] OpenTimestamps Attestations (NIP-03)
- [x] Private Messages (NIP-04)
- [x] DNS Address (NIP-05)
- [ ] Mnemonic seed phrase (NIP-06)
@@ -70,7 +70,9 @@ height="70">](https://github.com/vitorpamplona/amethyst/releases)
- [x] Event kind summaries (NIP-31)
- [ ] Labeling (NIP-32)
- [x] Parameterized Replaceable Events (NIP-33)
- [x] Git Stuff (NIP-34/Draft)
- [x] Sensitive Content (NIP-36)
- [x] Note Edits (NIP-37/Draft)
- [x] User Status Event (NIP-38)
- [x] External Identities (NIP-39)
- [x] Expiration Support (NIP-40)
@@ -109,7 +111,7 @@ height="70">](https://github.com/vitorpamplona/amethyst/releases)
- [x] Classifieds (NIP-99)
- [x] Private Messages and Small Groups (NIP-24/Draft)
- [x] Versioned Encrypted Payloads (NIP-44/Draft)
- [x] Audio Tracks (zapstr.live) (Kind:31337)
- [x] Audio Tracks (zapstr.live) (kind:31337)
- [x] Push Notifications (Google and Unified Push)
- [x] In-Device Automatic Translations
- [x] Hashtag Following and Custom Hashtags
@@ -118,6 +120,9 @@ height="70">](https://github.com/vitorpamplona/amethyst/releases)
- [x] De-googled F-Droid flavor
- [x] Multiple Accounts
- [x] Markdown Support
- [x] FHIR Payloads (kind:82)
- [ ] Decentralized Wiki (kind:30818)
- [ ] Embed events
- [ ] Image/Video Capture in the app
- [ ] Local Database
- [ ] Workspaces
@@ -135,16 +140,16 @@ Information shared on Nostr can be re-broadcasted to other servers and should be
# Development Overview
This repository is split between Amethyst and Quartz:
This repository is split between Amethyst and Quartz:
- Amethyst is a native Android app made with Kotlin and Jetpack Compose.
- Quartz is our own Nostr-commons library to host classes that are of interest to other Nostr Clients.
- Quartz is our own Nostr-commons library to host classes that are of interest to other Nostr Clients.
The app architecture consists of the UI, which uses the usual State/ViewModel/Composition, the service layer that connects with Nostr relays,
and the model/repository layer, which keeps all Nostr objects in memory, in a full OO graph.
The repository layer stores Nostr Events as Notes and Users separately. Those classes use LiveData and Flow objects to
allow the UI and other parts of the app to subscribe to each Note/User and receive updates when they happen.
They are also responsible for updating viewModels when needed. As the user scrolls through Events, the Datasource classes
They are also responsible for updating viewModels when needed. As the user scrolls through Events, the Datasource classes
are updated to receive more information about those particular Events.
Most of the UI is reactive to changes in the repository classes. The service layer assembles Nostr filters for each need of the app,

View File

@@ -12,8 +12,8 @@ android {
applicationId "com.vitorpamplona.amethyst"
minSdk 26
targetSdk 34
versionCode 359
versionName "0.85.0"
versionCode 360
versionName "0.85.1"
buildConfigField "String", "RELEASE_NOTES_ID", "\"d8da33fd13d129d86c53564aedefafbe3716f007c520431be4a8e488d3925afb\""
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

View File

@@ -18,7 +18,7 @@
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package com.vitorpamplona.amethyst.ui.note
package com.vitorpamplona.amethyst.model
import android.util.Log
import com.fasterxml.jackson.annotation.JsonSubTypes

View File

@@ -88,7 +88,7 @@ fun NewMediaView(
val resolver = LocalContext.current.contentResolver
val context = LocalContext.current
val scroolState = rememberScrollState()
val scrollState = rememberScrollState()
LaunchedEffect(uri) {
val mediaType = resolver.getType(uri) ?: ""
@@ -173,7 +173,7 @@ fun NewMediaView(
modifier = Modifier.fillMaxWidth().weight(1f),
) {
Column(
modifier = Modifier.fillMaxWidth().verticalScroll(scroolState),
modifier = Modifier.fillMaxWidth().verticalScroll(scrollState),
) {
ImageVideoPost(postViewModel, accountViewModel)
}

View File

@@ -56,7 +56,8 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowForwardIos
import androidx.compose.material.icons.automirrored.filled.ArrowForwardIos
import androidx.compose.material.icons.automirrored.outlined.ArrowForwardIos
import androidx.compose.material.icons.filled.Bolt
import androidx.compose.material.icons.filled.CurrencyBitcoin
import androidx.compose.material.icons.filled.LocationOff
@@ -65,7 +66,6 @@ import androidx.compose.material.icons.filled.Sell
import androidx.compose.material.icons.filled.ShowChart
import androidx.compose.material.icons.filled.Visibility
import androidx.compose.material.icons.filled.VisibilityOff
import androidx.compose.material.icons.outlined.ArrowForwardIos
import androidx.compose.material.icons.outlined.Bolt
import androidx.compose.material.icons.rounded.Warning
import androidx.compose.material3.Button
@@ -1087,7 +1087,7 @@ fun FowardZapTo(
tint = BitcoinOrange,
)
Icon(
imageVector = Icons.Outlined.ArrowForwardIos,
imageVector = Icons.AutoMirrored.Outlined.ArrowForwardIos,
contentDescription = stringResource(id = R.string.zaps),
modifier =
Modifier
@@ -1451,7 +1451,7 @@ private fun ForwardZapTo(
tint = MaterialTheme.colorScheme.onBackground,
)
Icon(
imageVector = Icons.Default.ArrowForwardIos,
imageVector = Icons.AutoMirrored.Filled.ArrowForwardIos,
contentDescription = null,
modifier =
Modifier
@@ -1470,7 +1470,7 @@ private fun ForwardZapTo(
tint = BitcoinOrange,
)
Icon(
imageVector = Icons.Outlined.ArrowForwardIos,
imageVector = Icons.AutoMirrored.Outlined.ArrowForwardIos,
contentDescription = null,
modifier =
Modifier
@@ -1534,7 +1534,7 @@ private fun MarkAsSensitive(
)
Icon(
imageVector = Icons.Rounded.Warning,
contentDescription = null,
contentDescription = stringResource(R.string.add_content_warning),
modifier =
Modifier
.size(10.dp)
@@ -1553,7 +1553,7 @@ private fun MarkAsSensitive(
)
Icon(
imageVector = Icons.Rounded.Warning,
contentDescription = null,
contentDescription = stringResource(id = R.string.remove_content_warning),
modifier =
Modifier
.size(10.dp)

View File

@@ -45,8 +45,8 @@ import androidx.compose.material.icons.filled.SyncProblem
import androidx.compose.material.icons.filled.Upload
import androidx.compose.material3.Button
import androidx.compose.material3.ButtonDefaults
import androidx.compose.material3.Divider
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.Icon
import androidx.compose.material3.IconButton
import androidx.compose.material3.MaterialTheme
@@ -272,9 +272,7 @@ fun ServerConfigHeader() {
}
}
Divider(
thickness = DividerThickness,
)
HorizontalDivider(thickness = DividerThickness)
}
}
@@ -459,9 +457,7 @@ fun ServerConfigClickableLine(
}
}
Divider(
thickness = DividerThickness,
)
HorizontalDivider(thickness = DividerThickness)
}
}
@@ -839,7 +835,7 @@ private fun FirstLine(
) {
Icon(
imageVector = Icons.Default.Cancel,
null,
contentDescription = stringResource(id = R.string.remove),
modifier = Modifier.padding(start = 10.dp).size(15.dp),
tint = WarningColor,
)
@@ -875,7 +871,7 @@ fun EditableServerConfig(
IconButton(onClick = { read = !read }) {
Icon(
imageVector = Icons.Default.Download,
null,
contentDescription = stringResource(id = R.string.read_from_relay),
modifier = Modifier.size(Size35dp).padding(horizontal = 5.dp),
tint =
if (read) {
@@ -889,7 +885,7 @@ fun EditableServerConfig(
IconButton(onClick = { write = !write }) {
Icon(
imageVector = Icons.Default.Upload,
null,
contentDescription = stringResource(id = R.string.write_to_relay),
modifier = Modifier.size(Size35dp).padding(horizontal = 5.dp),
tint =
if (write) {

View File

@@ -768,7 +768,7 @@ fun BottomContent(
) {
Icon(
painter = painterResource(R.drawable.ic_qrcode),
null,
contentDescription = stringResource(id = R.string.show_npub_as_a_qr_code),
modifier = Modifier.size(24.dp),
tint = MaterialTheme.colorScheme.primary,
)

View File

@@ -162,7 +162,7 @@ fun BadgeCompose(
) {
Icon(
imageVector = Icons.Default.MoreVert,
null,
contentDescription = stringResource(id = R.string.more_options),
modifier = Size15Modifier,
tint = MaterialTheme.colorScheme.placeholderText,
)

View File

@@ -22,7 +22,10 @@ package com.vitorpamplona.amethyst.ui.note
import androidx.compose.foundation.layout.size
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ArrowBack
import androidx.compose.material.icons.automirrored.filled.ArrowBack
import androidx.compose.material.icons.automirrored.filled.OpenInNew
import androidx.compose.material.icons.automirrored.filled.VolumeOff
import androidx.compose.material.icons.automirrored.filled.VolumeUp
import androidx.compose.material.icons.filled.Bolt
import androidx.compose.material.icons.filled.Cancel
import androidx.compose.material.icons.filled.Clear
@@ -33,11 +36,8 @@ import androidx.compose.material.icons.filled.ExpandLess
import androidx.compose.material.icons.filled.ExpandMore
import androidx.compose.material.icons.filled.Link
import androidx.compose.material.icons.filled.MoreVert
import androidx.compose.material.icons.filled.OpenInNew
import androidx.compose.material.icons.filled.PushPin
import androidx.compose.material.icons.filled.Report
import androidx.compose.material.icons.filled.VolumeOff
import androidx.compose.material.icons.filled.VolumeUp
import androidx.compose.material.icons.outlined.BarChart
import androidx.compose.material.icons.outlined.PlayCircle
import androidx.compose.material3.Icon
@@ -62,7 +62,7 @@ import com.vitorpamplona.amethyst.ui.theme.subtleButton
fun AmethystIcon(iconSize: Dp) {
Icon(
painter = painterResource(R.drawable.amethyst),
null,
contentDescription = stringResource(id = R.string.app_logo),
modifier = Modifier.size(iconSize),
tint = Color.Unspecified,
)
@@ -81,7 +81,7 @@ fun FollowingIcon(iconSize: Dp) {
@Composable
fun ArrowBackIcon() {
Icon(
imageVector = Icons.Default.ArrowBack,
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
contentDescription = stringResource(R.string.back),
tint = MaterialTheme.colorScheme.grayText,
)
@@ -104,7 +104,7 @@ fun DownloadForOfflineIcon(
) {
Icon(
imageVector = Icons.Default.DownloadForOffline,
null,
contentDescription = stringResource(id = R.string.accessibility_download_for_offline),
modifier = remember(iconSize) { Modifier.size(iconSize) },
tint = tint,
)
@@ -237,7 +237,7 @@ fun OpenInNewIcon(
tint: Color = Color.Unspecified,
) {
Icon(
imageVector = Icons.Default.OpenInNew,
imageVector = Icons.AutoMirrored.Filled.OpenInNew,
stringResource(id = R.string.copy_to_clipboard),
tint = tint,
modifier = modifier,
@@ -320,7 +320,7 @@ fun RegularPostIcon() {
fun CancelIcon() {
Icon(
imageVector = Icons.Default.Cancel,
null,
contentDescription = stringResource(id = R.string.cancel),
modifier = Size30Modifier,
tint = MaterialTheme.colorScheme.placeholderText,
)
@@ -338,7 +338,7 @@ fun CloseIcon() {
@Composable
fun MutedIcon() {
Icon(
imageVector = Icons.Default.VolumeOff,
imageVector = Icons.AutoMirrored.Filled.VolumeOff,
contentDescription = stringResource(id = R.string.muted_button),
tint = MaterialTheme.colorScheme.onBackground,
modifier = Size30Modifier,
@@ -348,7 +348,7 @@ fun MutedIcon() {
@Composable
fun MuteIcon() {
Icon(
imageVector = Icons.Default.VolumeUp,
imageVector = Icons.AutoMirrored.Filled.VolumeUp,
contentDescription = stringResource(id = R.string.mute_button),
tint = MaterialTheme.colorScheme.onBackground,
modifier = Size30Modifier,
@@ -375,7 +375,7 @@ fun PlayIcon(
) {
Icon(
imageVector = Icons.Outlined.PlayCircle,
contentDescription = null,
contentDescription = stringResource(id = R.string.accessibility_play_username),
modifier = modifier,
tint = tint,
)
@@ -401,7 +401,7 @@ fun LyricsIcon(
) {
Icon(
painter = painterResource(id = R.drawable.lyrics_on),
contentDescription = null,
contentDescription = stringResource(id = R.string.accessibility_lyrics_on),
modifier = modifier,
tint = tint,
)
@@ -414,7 +414,7 @@ fun LyricsOffIcon(
) {
Icon(
painter = painterResource(id = R.drawable.lyrics_off),
contentDescription = null,
contentDescription = stringResource(id = R.string.accessibility_lyrics_off),
modifier = modifier,
tint = tint,
)
@@ -480,3 +480,29 @@ fun NIP05FailedVerification(modifier: Modifier) {
tint = Color.Red,
)
}
@Composable
fun IncognitoIconOn(
modifier: Modifier,
tint: Color,
) {
Icon(
painter = painterResource(id = R.drawable.incognito),
contentDescription = stringResource(id = R.string.accessibility_turn_off_sealed_message),
modifier = modifier,
tint = tint,
)
}
@Composable
fun IncognitoIconOff(
modifier: Modifier,
tint: Color,
) {
Icon(
painter = painterResource(id = R.drawable.incognito_off),
contentDescription = stringResource(id = R.string.accessibility_turn_on_sealed_message),
modifier = modifier,
tint = tint,
)
}

View File

@@ -112,10 +112,19 @@ import com.vitorpamplona.amethyst.commons.MediaUrlImage
import com.vitorpamplona.amethyst.commons.MediaUrlVideo
import com.vitorpamplona.amethyst.commons.RichTextParser
import com.vitorpamplona.amethyst.model.AddressableNote
import com.vitorpamplona.amethyst.model.Bundle
import com.vitorpamplona.amethyst.model.Channel
import com.vitorpamplona.amethyst.model.FhirElementDatabase
import com.vitorpamplona.amethyst.model.LensSpecification
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.model.Patient
import com.vitorpamplona.amethyst.model.Practitioner
import com.vitorpamplona.amethyst.model.RelayBriefInfoCache
import com.vitorpamplona.amethyst.model.Resource
import com.vitorpamplona.amethyst.model.User
import com.vitorpamplona.amethyst.model.VisionPrescription
import com.vitorpamplona.amethyst.model.findReferenceInDb
import com.vitorpamplona.amethyst.model.parseResourceBundleOrNull
import com.vitorpamplona.amethyst.service.CachedGeoLocations
import com.vitorpamplona.amethyst.ui.actions.EditPostView
import com.vitorpamplona.amethyst.ui.actions.NewRelayListView

View File

@@ -445,7 +445,7 @@ fun UpdateZapAmountDialog(
) {
Icon(
painter = painterResource(R.drawable.alby),
null,
contentDescription = stringResource(id = R.string.accessibility_navigate_to_alby),
modifier = Modifier.size(24.dp),
tint = Color.Unspecified,
)
@@ -454,7 +454,7 @@ fun UpdateZapAmountDialog(
IconButton(onClick = { qrScanning = true }) {
Icon(
painter = painterResource(R.drawable.ic_qrcode),
null,
contentDescription = stringResource(id = R.string.accessibility_scan_qr_code),
modifier = Modifier.size(24.dp),
tint = MaterialTheme.colorScheme.primary,
)

View File

@@ -58,7 +58,7 @@ import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.theme.FeedPadding
@Composable
fun RefresheableCardView(
fun RefreshableCardView(
viewModel: CardFeedViewModel,
accountViewModel: AccountViewModel,
nav: (String) -> Unit,

View File

@@ -435,7 +435,7 @@ fun NoteMaster(
) {
Icon(
imageVector = Icons.Default.MoreVert,
null,
contentDescription = stringResource(id = R.string.more_options),
modifier = Size15Modifier,
tint = MaterialTheme.colorScheme.placeholderText,
)

View File

@@ -269,7 +269,7 @@ fun ChatroomListScreenOnlyList(
) {
Icon(
imageVector = Icons.Default.MoreVert,
contentDescription = null,
contentDescription = stringResource(id = R.string.more_options),
tint = MaterialTheme.colorScheme.placeholderText,
)

View File

@@ -68,7 +68,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.font.FontWeight
import androidx.compose.ui.text.input.KeyboardCapitalization
@@ -98,6 +97,8 @@ import com.vitorpamplona.amethyst.ui.components.ObserveDisplayNip05Status
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
import com.vitorpamplona.amethyst.ui.note.DisplayRoomSubject
import com.vitorpamplona.amethyst.ui.note.DisplayUserSetAsSubject
import com.vitorpamplona.amethyst.ui.note.IncognitoIconOff
import com.vitorpamplona.amethyst.ui.note.IncognitoIconOn
import com.vitorpamplona.amethyst.ui.note.LoadUser
import com.vitorpamplona.amethyst.ui.note.NonClickableUserPictures
import com.vitorpamplona.amethyst.ui.note.QuickActionAlertDialog
@@ -441,17 +442,19 @@ fun PrivateMessageEditFieldRow(
},
) {
if (channelScreenModel.nip24) {
Icon(
painter = painterResource(id = R.drawable.incognito),
null,
modifier = Modifier.padding(top = 2.dp).size(18.dp),
IncognitoIconOn(
modifier =
Modifier
.padding(top = 2.dp)
.size(18.dp),
tint = MaterialTheme.colorScheme.primary,
)
} else {
Icon(
painter = painterResource(id = R.drawable.incognito_off),
null,
modifier = Modifier.padding(top = 2.dp).size(18.dp),
IncognitoIconOff(
modifier =
Modifier
.padding(top = 2.dp)
.size(18.dp),
tint = MaterialTheme.colorScheme.placeholderText,
)
}
@@ -534,7 +537,7 @@ fun ThinSendButton(
) {
Icon(
imageVector = Icons.Default.Send,
null,
contentDescription = stringResource(id = R.string.accessibility_send),
modifier = Size20Modifier,
)
}

View File

@@ -78,7 +78,7 @@ import com.vitorpamplona.amethyst.ui.note.UserReactionsViewModel
import com.vitorpamplona.amethyst.ui.note.showAmount
import com.vitorpamplona.amethyst.ui.note.showCount
import com.vitorpamplona.amethyst.ui.screen.NotificationViewModel
import com.vitorpamplona.amethyst.ui.screen.RefresheableCardView
import com.vitorpamplona.amethyst.ui.screen.RefreshableCardView
import com.vitorpamplona.amethyst.ui.screen.ScrollStateKeys
import com.vitorpamplona.amethyst.ui.screen.SharedPreferencesViewModel
import com.vitorpamplona.amethyst.ui.theme.BitcoinOrange
@@ -121,7 +121,7 @@ fun NotificationScreen(
model = userReactionsStatsModel,
)
RefresheableCardView(
RefreshableCardView(
viewModel = notifFeedViewModel,
accountViewModel = accountViewModel,
nav = nav,

View File

@@ -57,11 +57,13 @@ import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalLifecycleOwner
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.service.NostrVideoDataSource
import com.vitorpamplona.amethyst.ui.actions.NewPostView
@@ -398,7 +400,7 @@ private fun VideoUserOptionAction(
) {
Icon(
imageVector = Icons.Default.MoreVert,
null,
contentDescription = stringResource(id = R.string.more_options),
modifier = remember { Modifier.size(20.dp) },
tint = MaterialTheme.colorScheme.placeholderText,
)

View File

@@ -670,6 +670,7 @@
<string name="git_repository">Git repositář: %1$s</string>
<string name="git_web_address">Internet:</string>
<string name="git_clone_address">Klon:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Důkaz časového razítka</string>
<string name="ots_info_description">Existuje důkaz, že tento příspěvek byl podepsán někdy před %1$s. Důkaz byl označen v Bitcoin blockchainu v tomto datu a čase.</string>
<string name="edit_post">Upravit příspěvek</string>
@@ -677,4 +678,13 @@
<string name="message_to_author">Souhrn změn</string>
<string name="message_to_author_placeholder">Rychlé opravy…</string>
<string name="accept_the_suggestion">Přijmout návrhy</string>
<string name="accessibility_download_for_offline">Stáhnout</string>
<string name="accessibility_lyrics_on">Text písně zapnuto</string>
<string name="accessibility_lyrics_off">Text písně vypnuto</string>
<string name="accessibility_turn_on_sealed_message">Zapečetěná zpráva vypnuta. Klikněte pro zapnutí zapečetěné zprávy</string>
<string name="accessibility_turn_off_sealed_message">Zapečetěná zpráva zapnuta. Klikněte pro vypnutí zapečetěné zprávy</string>
<string name="accessibility_send">Odeslat</string>
<string name="accessibility_play_username">Přehrát uživatelské jméno jako audio</string>
<string name="accessibility_scan_qr_code">Skenovat QR kód</string>
<string name="accessibility_navigate_to_alby">Přejít na poskytovatele peněženky třetí strany Alby</string>
</resources>

View File

@@ -675,6 +675,7 @@ anz der Bedingungen ist erforderlich</string>
<string name="git_repository">Git Repository: %1$s</string>
<string name="git_web_address">Internet:</string>
<string name="git_clone_address">Klonen:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Zeitstempel Beweis</string>
<string name="ots_info_description">Es gibt einen Beweis, dass dieser Beitrag irgendwann vor %1$s signiert wurde. Der Beweis wurde zu diesem Datum und Uhrzeit in der Bitcoin-Blockchain gestempelt.</string>
<string name="edit_post">Beitrag bearbeiten</string>
@@ -682,4 +683,13 @@ anz der Bedingungen ist erforderlich</string>
<string name="message_to_author">Zusammenfassung der Änderungen</string>
<string name="message_to_author_placeholder">Schnelle Korrekturen…</string>
<string name="accept_the_suggestion">Den Vorschlag annehmen</string>
<string name="accessibility_download_for_offline">Herunterladen</string>
<string name="accessibility_lyrics_on">Liedtext an</string>
<string name="accessibility_lyrics_off">Liedtext aus</string>
<string name="accessibility_turn_on_sealed_message">Versiegelte Nachricht aus. Klicken Sie, um die versiegelte Nachricht einzuschalten</string>
<string name="accessibility_turn_off_sealed_message">Versiegelte Nachricht an. Klicken Sie, um die versiegelte Nachricht auszuschalten</string>
<string name="accessibility_send">Senden</string>
<string name="accessibility_play_username">Benutzernamen als Audio abspielen</string>
<string name="accessibility_scan_qr_code">QR-Code scannen</string>
<string name="accessibility_navigate_to_alby">Navigieren Sie zum Drittanbieter-Wallet-Anbieter Alby</string>
</resources>

View File

@@ -50,6 +50,7 @@
<string name="boosted">impulsionado</string>
<string name="edited">editado</string>
<string name="edited_number">edição #%1$s</string>
<string name="original">original</string>
<string name="quote">Citar</string>
<string name="fork">Garfo</string>
<string name="propose_an_edit">Propor uma Edição</string>
@@ -669,6 +670,7 @@
<string name="git_repository">Repositório Git: %1$s</string>
<string name="git_web_address">Site:</string>
<string name="git_clone_address">Clonar:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Prova de Carimbo de data/hora</string>
<string name="ots_info_description">Há prova de que esta postagem foi assinada antes de %1$s. A prova foi carimbada no blockchain do Bitcoin naquela data e hora.</string>
<string name="edit_post">Editar postagem</string>
@@ -676,4 +678,13 @@
<string name="message_to_author">Resumo das alterações</string>
<string name="message_to_author_placeholder">Correções rápidas…</string>
<string name="accept_the_suggestion">Aceitar a Sugestão</string>
<string name="accessibility_download_for_offline">Baixar</string>
<string name="accessibility_lyrics_on">Letras ligadas</string>
<string name="accessibility_lyrics_off">Letras desligadas</string>
<string name="accessibility_turn_on_sealed_message">Mensagem selada desligada. Clique para ligar a mensagem selada</string>
<string name="accessibility_turn_off_sealed_message">Mensagem selada ligada. Clique para desligar a mensagem selada</string>
<string name="accessibility_send">Enviar</string>
<string name="accessibility_play_username">Reproduzir nome de usuário como áudio</string>
<string name="accessibility_scan_qr_code">Escanear código QR</string>
<string name="accessibility_navigate_to_alby">Navegar para o provedor de carteira de terceiros Alby</string>
</resources>

View File

@@ -50,6 +50,7 @@
<string name="boosted">boostad</string>
<string name="edited">redigerat</string>
<string name="edited_number">redigering #%1$s</string>
<string name="original">original</string>
<string name="quote">Citera</string>
<string name="fork">Förgrening</string>
<string name="propose_an_edit">Föreslå en redigering</string>
@@ -668,6 +669,7 @@
<string name="git_repository">Git Repository: %1$s</string>
<string name="git_web_address">Webbplats:</string>
<string name="git_clone_address">Klona:</string>
<string name="existed_since">OTS: %1$s</string>
<string name="ots_info_title">Tidsstämpel Bevis</string>
<string name="ots_info_description">Det finns bevis på att detta inlägg signerades någon gång före %1$s. Beviset stämplades i Bitcoin-blockchainen vid det datumet och den tiden.</string>
<string name="edit_post">Redigera inlägg</string>
@@ -675,4 +677,13 @@
<string name="message_to_author">Sammanfattning av ändringar</string>
<string name="message_to_author_placeholder">Snabba fixar…</string>
<string name="accept_the_suggestion">Acceptera förslaget</string>
<string name="accessibility_download_for_offline">Ladda ner</string>
<string name="accessibility_lyrics_on">Undertexter på</string>
<string name="accessibility_lyrics_off">Undertexter av</string>
<string name="accessibility_turn_on_sealed_message">Förseglat meddelande av. Klicka för att slå på förseglat meddelande</string>
<string name="accessibility_turn_off_sealed_message">Förseglat meddelande på. Klicka för att stänga av förseglat meddelande</string>
<string name="accessibility_send">Skicka</string>
<string name="accessibility_play_username">Spela upp användarnamn som ljud</string>
<string name="accessibility_scan_qr_code">Skanna QR-kod</string>
<string name="accessibility_navigate_to_alby">Navigera till tredjeparts plånboksleverantören Alby</string>
</resources>

View File

@@ -802,4 +802,14 @@
<string name="message_to_author_placeholder">Quick fixes…</string>
<string name="accept_the_suggestion">Accept the Suggestion</string>
<string name="accessibility_download_for_offline">Download</string>
<string name="accessibility_lyrics_on">Lyrics on</string>
<string name="accessibility_lyrics_off">Lyrics off</string>
<string name="accessibility_turn_on_sealed_message">Sealed message off. Click to turn on sealed message</string>
<string name="accessibility_turn_off_sealed_message">Sealed message on. Click to turn off sealed message</string>
<string name="accessibility_send">Send</string>
<string name="accessibility_play_username">Play username as audio</string>
<string name="accessibility_scan_qr_code">Scan QR code</string>
<string name="accessibility_navigate_to_alby">Navigate to the third-party wallet provider Alby</string>
</resources>