Emoji State to commons
This commit is contained in:
@@ -32,6 +32,7 @@ import com.vitorpamplona.amethyst.commons.model.nip25Reactions.ReactionAction
|
|||||||
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel
|
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel
|
||||||
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatListDecryptionCache
|
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatListDecryptionCache
|
||||||
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatListState
|
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatListState
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState
|
||||||
import com.vitorpamplona.amethyst.commons.model.nip38UserStatuses.UserStatusAction
|
import com.vitorpamplona.amethyst.commons.model.nip38UserStatuses.UserStatusAction
|
||||||
import com.vitorpamplona.amethyst.commons.model.nip56Reports.ReportAction
|
import com.vitorpamplona.amethyst.commons.model.nip56Reports.ReportAction
|
||||||
import com.vitorpamplona.amethyst.commons.richtext.RichTextParser
|
import com.vitorpamplona.amethyst.commons.richtext.RichTextParser
|
||||||
@@ -51,7 +52,6 @@ import com.vitorpamplona.amethyst.model.nip02FollowLists.Kind3FollowListState
|
|||||||
import com.vitorpamplona.amethyst.model.nip03Timestamp.OtsState
|
import com.vitorpamplona.amethyst.model.nip03Timestamp.OtsState
|
||||||
import com.vitorpamplona.amethyst.model.nip17Dms.DmInboxRelayState
|
import com.vitorpamplona.amethyst.model.nip17Dms.DmInboxRelayState
|
||||||
import com.vitorpamplona.amethyst.model.nip17Dms.DmRelayListState
|
import com.vitorpamplona.amethyst.model.nip17Dms.DmRelayListState
|
||||||
import com.vitorpamplona.amethyst.model.nip30CustomEmojis.EmojiPackState
|
|
||||||
import com.vitorpamplona.amethyst.model.nip47WalletConnect.NwcSignerState
|
import com.vitorpamplona.amethyst.model.nip47WalletConnect.NwcSignerState
|
||||||
import com.vitorpamplona.amethyst.model.nip51Lists.BookmarkListState
|
import com.vitorpamplona.amethyst.model.nip51Lists.BookmarkListState
|
||||||
import com.vitorpamplona.amethyst.model.nip51Lists.HiddenUsersState
|
import com.vitorpamplona.amethyst.model.nip51Lists.HiddenUsersState
|
||||||
|
|||||||
+3
-1
@@ -20,14 +20,16 @@
|
|||||||
*/
|
*/
|
||||||
package com.vitorpamplona.amethyst.ui.note.creators.emojiSuggestions
|
package com.vitorpamplona.amethyst.ui.note.creators.emojiSuggestions
|
||||||
|
|
||||||
|
import androidx.compose.runtime.Stable
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState
|
||||||
import com.vitorpamplona.amethyst.model.Account
|
import com.vitorpamplona.amethyst.model.Account
|
||||||
import com.vitorpamplona.amethyst.model.nip30CustomEmojis.EmojiPackState
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.flow.Flow
|
import kotlinx.coroutines.flow.Flow
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.combine
|
import kotlinx.coroutines.flow.combine
|
||||||
import kotlinx.coroutines.flow.flowOn
|
import kotlinx.coroutines.flow.flowOn
|
||||||
|
|
||||||
|
@Stable
|
||||||
class EmojiSuggestionState(
|
class EmojiSuggestionState(
|
||||||
val account: Account,
|
val account: Account,
|
||||||
) {
|
) {
|
||||||
|
|||||||
+8
-10
@@ -22,7 +22,6 @@ package com.vitorpamplona.amethyst.ui.note.creators.emojiSuggestions
|
|||||||
|
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.layout.Arrangement.spacedBy
|
import androidx.compose.foundation.layout.Arrangement.spacedBy
|
||||||
import androidx.compose.foundation.layout.Box
|
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.heightIn
|
import androidx.compose.foundation.layout.heightIn
|
||||||
@@ -43,10 +42,9 @@ import androidx.compose.ui.Modifier
|
|||||||
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.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
|
import coil3.compose.AsyncImage
|
||||||
import com.vitorpamplona.amethyst.R
|
import com.vitorpamplona.amethyst.R
|
||||||
import com.vitorpamplona.amethyst.model.nip30CustomEmojis.EmojiPackState
|
import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.profile.gallery.UrlImageView
|
|
||||||
import com.vitorpamplona.amethyst.ui.stringRes
|
import com.vitorpamplona.amethyst.ui.stringRes
|
||||||
import com.vitorpamplona.amethyst.ui.theme.DividerThickness
|
import com.vitorpamplona.amethyst.ui.theme.DividerThickness
|
||||||
import com.vitorpamplona.amethyst.ui.theme.Size10dp
|
import com.vitorpamplona.amethyst.ui.theme.Size10dp
|
||||||
@@ -57,7 +55,6 @@ fun ShowEmojiSuggestionList(
|
|||||||
emojiSuggestions: EmojiSuggestionState,
|
emojiSuggestions: EmojiSuggestionState,
|
||||||
onSelect: (EmojiPackState.EmojiMedia) -> Unit,
|
onSelect: (EmojiPackState.EmojiMedia) -> Unit,
|
||||||
onFullSize: (EmojiPackState.EmojiMedia) -> Unit,
|
onFullSize: (EmojiPackState.EmojiMedia) -> Unit,
|
||||||
accountViewModel: AccountViewModel,
|
|
||||||
modifier: Modifier = Modifier.heightIn(0.dp, 200.dp),
|
modifier: Modifier = Modifier.heightIn(0.dp, 200.dp),
|
||||||
) {
|
) {
|
||||||
val suggestions by emojiSuggestions.results.collectAsStateWithLifecycle(emptyList())
|
val suggestions by emojiSuggestions.results.collectAsStateWithLifecycle(emptyList())
|
||||||
@@ -79,12 +76,14 @@ fun ShowEmojiSuggestionList(
|
|||||||
verticalAlignment = Alignment.CenterVertically,
|
verticalAlignment = Alignment.CenterVertically,
|
||||||
horizontalArrangement = spacedBy(Size10dp),
|
horizontalArrangement = spacedBy(Size10dp),
|
||||||
) {
|
) {
|
||||||
Box(Size40Modifier) {
|
AsyncImage(
|
||||||
UrlImageView(it.link, accountViewModel)
|
it.link,
|
||||||
}
|
contentDescription = it.code,
|
||||||
|
modifier = Size40Modifier,
|
||||||
|
)
|
||||||
Text(it.code, fontWeight = FontWeight.Bold, modifier = Modifier.weight(1f))
|
Text(it.code, fontWeight = FontWeight.Bold, modifier = Modifier.weight(1f))
|
||||||
Box(Size40Modifier, contentAlignment = Alignment.Center) {
|
|
||||||
IconButton(
|
IconButton(
|
||||||
|
modifier = Size40Modifier,
|
||||||
onClick = {
|
onClick = {
|
||||||
onFullSize(it)
|
onFullSize(it)
|
||||||
},
|
},
|
||||||
@@ -96,7 +95,6 @@ fun ShowEmojiSuggestionList(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
HorizontalDivider(
|
HorizontalDivider(
|
||||||
thickness = DividerThickness,
|
thickness = DividerThickness,
|
||||||
)
|
)
|
||||||
|
|||||||
+5
-5
@@ -33,11 +33,11 @@ import com.vitorpamplona.amethyst.R
|
|||||||
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
||||||
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
||||||
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState
|
||||||
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.User
|
import com.vitorpamplona.amethyst.model.User
|
||||||
import com.vitorpamplona.amethyst.model.nip30CustomEmojis.EmojiPackState
|
|
||||||
import com.vitorpamplona.amethyst.service.location.LocationState
|
import com.vitorpamplona.amethyst.service.location.LocationState
|
||||||
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
||||||
import com.vitorpamplona.amethyst.service.uploads.MultiOrchestrator
|
import com.vitorpamplona.amethyst.service.uploads.MultiOrchestrator
|
||||||
@@ -435,7 +435,7 @@ open class CommentPostViewModel :
|
|||||||
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let {
|
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let {
|
||||||
EmojiUrlTag(
|
EmojiUrlTag(
|
||||||
it.code,
|
it.code,
|
||||||
it.link.url,
|
it.link,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -634,11 +634,11 @@ open class CommentPostViewModel :
|
|||||||
}
|
}
|
||||||
|
|
||||||
open fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
open fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
||||||
val wordToInsert = item.link.url + " "
|
val wordToInsert = item.link + " "
|
||||||
|
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
iMetaAttachments.downloadAndPrepare(item.link.url) {
|
iMetaAttachments.downloadAndPrepare(item.link) {
|
||||||
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link.url)
|
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -357,7 +357,6 @@ private fun GenericCommentPostBody(
|
|||||||
it,
|
it,
|
||||||
postViewModel::autocompleteWithEmoji,
|
postViewModel::autocompleteWithEmoji,
|
||||||
postViewModel::autocompleteWithEmojiUrl,
|
postViewModel::autocompleteWithEmojiUrl,
|
||||||
accountViewModel,
|
|
||||||
modifier = Modifier.heightIn(0.dp, 300.dp),
|
modifier = Modifier.heightIn(0.dp, 300.dp),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -32,11 +32,11 @@ import com.vitorpamplona.amethyst.Amethyst
|
|||||||
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
||||||
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
||||||
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState
|
||||||
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.User
|
import com.vitorpamplona.amethyst.model.User
|
||||||
import com.vitorpamplona.amethyst.model.nip30CustomEmojis.EmojiPackState
|
|
||||||
import com.vitorpamplona.amethyst.service.location.LocationState
|
import com.vitorpamplona.amethyst.service.location.LocationState
|
||||||
import com.vitorpamplona.amethyst.ui.actions.NewMessageTagger
|
import com.vitorpamplona.amethyst.ui.actions.NewMessageTagger
|
||||||
import com.vitorpamplona.amethyst.ui.actions.uploads.SelectedMedia
|
import com.vitorpamplona.amethyst.ui.actions.uploads.SelectedMedia
|
||||||
@@ -519,7 +519,7 @@ class ChatNewMessageViewModel :
|
|||||||
): List<EmojiUrlTag> {
|
): List<EmojiUrlTag> {
|
||||||
if (myEmojiSet == null) return emptyList()
|
if (myEmojiSet == null) return emptyList()
|
||||||
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
||||||
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link.url) }
|
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -659,11 +659,11 @@ class ChatNewMessageViewModel :
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
||||||
val wordToInsert = item.link.url + " "
|
val wordToInsert = item.link + " "
|
||||||
|
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
iMetaAttachments.downloadAndPrepare(item.link.url) {
|
iMetaAttachments.downloadAndPrepare(item.link) {
|
||||||
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link.url)
|
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -311,7 +311,6 @@ fun GroupDMScreenContent(
|
|||||||
it,
|
it,
|
||||||
postViewModel::autocompleteWithEmoji,
|
postViewModel::autocompleteWithEmoji,
|
||||||
postViewModel::autocompleteWithEmojiUrl,
|
postViewModel::autocompleteWithEmojiUrl,
|
||||||
accountViewModel,
|
|
||||||
Modifier.heightIn(0.dp, 300.dp),
|
Modifier.heightIn(0.dp, 300.dp),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
-1
@@ -127,7 +127,6 @@ fun PrivateMessageEditFieldRow(
|
|||||||
it,
|
it,
|
||||||
channelScreenModel::autocompleteWithEmoji,
|
channelScreenModel::autocompleteWithEmoji,
|
||||||
channelScreenModel::autocompleteWithEmojiUrl,
|
channelScreenModel::autocompleteWithEmojiUrl,
|
||||||
accountViewModel,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -36,13 +36,13 @@ import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
|||||||
import com.vitorpamplona.amethyst.commons.model.Channel
|
import com.vitorpamplona.amethyst.commons.model.Channel
|
||||||
import com.vitorpamplona.amethyst.commons.model.emphChat.EphemeralChatChannel
|
import com.vitorpamplona.amethyst.commons.model.emphChat.EphemeralChatChannel
|
||||||
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel
|
import com.vitorpamplona.amethyst.commons.model.nip28PublicChats.PublicChatChannel
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState
|
||||||
import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActivitiesChannel
|
import com.vitorpamplona.amethyst.commons.model.nip53LiveActivities.LiveActivitiesChannel
|
||||||
import com.vitorpamplona.amethyst.commons.richtext.RichTextParser
|
import com.vitorpamplona.amethyst.commons.richtext.RichTextParser
|
||||||
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.User
|
import com.vitorpamplona.amethyst.model.User
|
||||||
import com.vitorpamplona.amethyst.model.nip30CustomEmojis.EmojiPackState
|
|
||||||
import com.vitorpamplona.amethyst.service.location.LocationState
|
import com.vitorpamplona.amethyst.service.location.LocationState
|
||||||
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
||||||
import com.vitorpamplona.amethyst.service.uploads.UploadOrchestrator
|
import com.vitorpamplona.amethyst.service.uploads.UploadOrchestrator
|
||||||
@@ -484,7 +484,7 @@ open class ChannelNewMessageViewModel :
|
|||||||
): List<EmojiUrlTag> {
|
): List<EmojiUrlTag> {
|
||||||
if (myEmojiSet == null) return emptyList()
|
if (myEmojiSet == null) return emptyList()
|
||||||
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
||||||
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link.url) }
|
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -575,11 +575,11 @@ open class ChannelNewMessageViewModel :
|
|||||||
}
|
}
|
||||||
|
|
||||||
open fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
open fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
||||||
val wordToInsert = item.link.url + " "
|
val wordToInsert = item.link + " "
|
||||||
|
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
iMetaAttachments.downloadAndPrepare(item.link.url) {
|
iMetaAttachments.downloadAndPrepare(item.link) {
|
||||||
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link.url)
|
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -104,7 +104,6 @@ fun EditFieldRow(
|
|||||||
it,
|
it,
|
||||||
channelScreenModel::autocompleteWithEmoji,
|
channelScreenModel::autocompleteWithEmoji,
|
||||||
channelScreenModel::autocompleteWithEmojiUrl,
|
channelScreenModel::autocompleteWithEmojiUrl,
|
||||||
accountViewModel,
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -327,7 +327,6 @@ private fun NewProductBody(
|
|||||||
it,
|
it,
|
||||||
postViewModel::autocompleteWithEmoji,
|
postViewModel::autocompleteWithEmoji,
|
||||||
postViewModel::autocompleteWithEmojiUrl,
|
postViewModel::autocompleteWithEmojiUrl,
|
||||||
accountViewModel,
|
|
||||||
modifier = Modifier.heightIn(0.dp, 300.dp),
|
modifier = Modifier.heightIn(0.dp, 300.dp),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -33,11 +33,11 @@ import com.vitorpamplona.amethyst.R
|
|||||||
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
||||||
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
||||||
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState
|
||||||
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.User
|
import com.vitorpamplona.amethyst.model.User
|
||||||
import com.vitorpamplona.amethyst.model.nip30CustomEmojis.EmojiPackState
|
|
||||||
import com.vitorpamplona.amethyst.service.location.LocationState
|
import com.vitorpamplona.amethyst.service.location.LocationState
|
||||||
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
||||||
import com.vitorpamplona.amethyst.service.uploads.MultiOrchestrator
|
import com.vitorpamplona.amethyst.service.uploads.MultiOrchestrator
|
||||||
@@ -365,7 +365,7 @@ open class NewProductViewModel :
|
|||||||
): List<EmojiUrlTag> {
|
): List<EmojiUrlTag> {
|
||||||
if (myEmojiSet == null) return emptyList()
|
if (myEmojiSet == null) return emptyList()
|
||||||
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
||||||
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link.url) }
|
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -534,11 +534,11 @@ open class NewProductViewModel :
|
|||||||
}
|
}
|
||||||
|
|
||||||
open fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
open fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
||||||
val wordToInsert = item.link.url + " "
|
val wordToInsert = item.link + " "
|
||||||
|
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
iMetaDescription.downloadAndPrepare(item.link.url) {
|
iMetaDescription.downloadAndPrepare(item.link) {
|
||||||
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link.url)
|
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -454,7 +454,6 @@ private fun NewPostScreenBody(
|
|||||||
it,
|
it,
|
||||||
postViewModel::autocompleteWithEmoji,
|
postViewModel::autocompleteWithEmoji,
|
||||||
postViewModel::autocompleteWithEmojiUrl,
|
postViewModel::autocompleteWithEmojiUrl,
|
||||||
accountViewModel,
|
|
||||||
modifier = Modifier.heightIn(0.dp, 300.dp),
|
modifier = Modifier.heightIn(0.dp, 300.dp),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -36,11 +36,11 @@ import com.vitorpamplona.amethyst.R
|
|||||||
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
||||||
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
||||||
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState.EmojiMedia
|
||||||
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.User
|
import com.vitorpamplona.amethyst.model.User
|
||||||
import com.vitorpamplona.amethyst.model.nip30CustomEmojis.EmojiPackState.EmojiMedia
|
|
||||||
import com.vitorpamplona.amethyst.service.location.LocationState
|
import com.vitorpamplona.amethyst.service.location.LocationState
|
||||||
import com.vitorpamplona.amethyst.service.uploads.CompressorQuality
|
import com.vitorpamplona.amethyst.service.uploads.CompressorQuality
|
||||||
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
||||||
@@ -719,7 +719,7 @@ open class ShortNotePostViewModel :
|
|||||||
): List<EmojiUrlTag> {
|
): List<EmojiUrlTag> {
|
||||||
if (myEmojiSet == null) return emptyList()
|
if (myEmojiSet == null) return emptyList()
|
||||||
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
||||||
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link.url) }
|
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -929,11 +929,11 @@ open class ShortNotePostViewModel :
|
|||||||
}
|
}
|
||||||
|
|
||||||
open fun autocompleteWithEmojiUrl(item: EmojiMedia) {
|
open fun autocompleteWithEmojiUrl(item: EmojiMedia) {
|
||||||
val wordToInsert = item.link.url + " "
|
val wordToInsert = item.link + " "
|
||||||
|
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
iMetaAttachments.downloadAndPrepare(item.link.url) {
|
iMetaAttachments.downloadAndPrepare(item.link) {
|
||||||
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link.url)
|
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
-1
@@ -284,7 +284,6 @@ fun PublicMessageScreenContent(
|
|||||||
it,
|
it,
|
||||||
postViewModel::autocompleteWithEmoji,
|
postViewModel::autocompleteWithEmoji,
|
||||||
postViewModel::autocompleteWithEmojiUrl,
|
postViewModel::autocompleteWithEmojiUrl,
|
||||||
accountViewModel,
|
|
||||||
Modifier.heightIn(0.dp, 300.dp),
|
Modifier.heightIn(0.dp, 300.dp),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+5
-5
@@ -33,11 +33,11 @@ import com.vitorpamplona.amethyst.R
|
|||||||
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
import com.vitorpamplona.amethyst.commons.compose.currentWord
|
||||||
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
import com.vitorpamplona.amethyst.commons.compose.insertUrlAtCursor
|
||||||
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
import com.vitorpamplona.amethyst.commons.compose.replaceCurrentWord
|
||||||
|
import com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis.EmojiPackState
|
||||||
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.User
|
import com.vitorpamplona.amethyst.model.User
|
||||||
import com.vitorpamplona.amethyst.model.nip30CustomEmojis.EmojiPackState
|
|
||||||
import com.vitorpamplona.amethyst.service.location.LocationState
|
import com.vitorpamplona.amethyst.service.location.LocationState
|
||||||
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
import com.vitorpamplona.amethyst.service.uploads.MediaCompressor
|
||||||
import com.vitorpamplona.amethyst.service.uploads.MultiOrchestrator
|
import com.vitorpamplona.amethyst.service.uploads.MultiOrchestrator
|
||||||
@@ -385,7 +385,7 @@ class NewPublicMessageViewModel :
|
|||||||
): List<EmojiUrlTag> {
|
): List<EmojiUrlTag> {
|
||||||
if (myEmojiSet == null) return emptyList()
|
if (myEmojiSet == null) return emptyList()
|
||||||
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
return CustomEmoji.findAllEmojiCodes(message).mapNotNull { possibleEmoji ->
|
||||||
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link.url) }
|
myEmojiSet.firstOrNull { it.code == possibleEmoji }?.let { EmojiUrlTag(it.code, it.link) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -581,11 +581,11 @@ class NewPublicMessageViewModel :
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
fun autocompleteWithEmojiUrl(item: EmojiPackState.EmojiMedia) {
|
||||||
val wordToInsert = item.link.url + " "
|
val wordToInsert = item.link + " "
|
||||||
|
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
iMetaAttachments.downloadAndPrepare(item.link.url) {
|
iMetaAttachments.downloadAndPrepare(item.link) {
|
||||||
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link.url)
|
Amethyst.instance.roleBasedHttpClientBuilder.okHttpClientForImage(item.link)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+7
-8
@@ -18,12 +18,11 @@
|
|||||||
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
* 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.
|
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
package com.vitorpamplona.amethyst.model.nip30CustomEmojis
|
package com.vitorpamplona.amethyst.commons.model.nip30CustomEmojis
|
||||||
|
|
||||||
import com.vitorpamplona.amethyst.commons.richtext.MediaUrlImage
|
import com.vitorpamplona.amethyst.commons.model.Note
|
||||||
import com.vitorpamplona.amethyst.model.LocalCache
|
import com.vitorpamplona.amethyst.commons.model.NoteState
|
||||||
import com.vitorpamplona.amethyst.model.Note
|
import com.vitorpamplona.amethyst.commons.model.cache.ICacheProvider
|
||||||
import com.vitorpamplona.amethyst.model.NoteState
|
|
||||||
import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner
|
import com.vitorpamplona.quartz.nip01Core.signers.NostrSigner
|
||||||
import com.vitorpamplona.quartz.nip01Core.tags.aTag.taggedAddresses
|
import com.vitorpamplona.quartz.nip01Core.tags.aTag.taggedAddresses
|
||||||
import com.vitorpamplona.quartz.nip30CustomEmoji.pack.EmojiPackEvent
|
import com.vitorpamplona.quartz.nip30CustomEmoji.pack.EmojiPackEvent
|
||||||
@@ -43,12 +42,12 @@ import kotlinx.coroutines.flow.transformLatest
|
|||||||
|
|
||||||
class EmojiPackState(
|
class EmojiPackState(
|
||||||
val signer: NostrSigner,
|
val signer: NostrSigner,
|
||||||
val cache: LocalCache,
|
val cache: ICacheProvider,
|
||||||
val scope: CoroutineScope,
|
val scope: CoroutineScope,
|
||||||
) {
|
) {
|
||||||
class EmojiMedia(
|
class EmojiMedia(
|
||||||
val code: String,
|
val code: String,
|
||||||
val link: MediaUrlImage,
|
val link: String,
|
||||||
)
|
)
|
||||||
|
|
||||||
// Creates a long-term reference for this note so that the GC doesn't collect the note it self
|
// Creates a long-term reference for this note so that the GC doesn't collect the note it self
|
||||||
@@ -84,7 +83,7 @@ class EmojiPackState(
|
|||||||
|
|
||||||
fun convertEmojiPack(pack: EmojiPackEvent): List<EmojiMedia> =
|
fun convertEmojiPack(pack: EmojiPackEvent): List<EmojiMedia> =
|
||||||
pack.taggedEmojis().map {
|
pack.taggedEmojis().map {
|
||||||
EmojiMedia(it.code, MediaUrlImage(it.url))
|
EmojiMedia(it.code, it.url)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun mergePack(list: Array<NoteState>): List<EmojiMedia> =
|
fun mergePack(list: Array<NoteState>): List<EmojiMedia> =
|
||||||
Reference in New Issue
Block a user