- Allow reply to reply by using BaseVoiceEvent
This commit is contained in:
davotoula
2025-12-23 13:07:56 +00:00
parent 2422e77dd0
commit 6785f124e9
5 changed files with 11 additions and 12 deletions
@@ -202,6 +202,7 @@ import com.vitorpamplona.quartz.nip94FileMetadata.mimeType
import com.vitorpamplona.quartz.nip94FileMetadata.originalHash
import com.vitorpamplona.quartz.nip94FileMetadata.tags.DimensionTag
import com.vitorpamplona.quartz.nip98HttpAuth.HTTPAuthorizationEvent
import com.vitorpamplona.quartz.nipA0VoiceMessages.BaseVoiceEvent
import com.vitorpamplona.quartz.nipA0VoiceMessages.VoiceEvent
import com.vitorpamplona.quartz.nipA0VoiceMessages.VoiceReplyEvent
import com.vitorpamplona.quartz.utils.Log
@@ -1002,7 +1003,7 @@ class Account(
hash: String,
duration: Int,
waveform: List<Float>,
replyTo: EventHintBundle<VoiceEvent>,
replyTo: EventHintBundle<BaseVoiceEvent>,
) {
signAndComputeBroadcast(VoiceReplyEvent.build(url, mimeType, hash, duration, waveform, replyTo))
}
@@ -134,7 +134,7 @@ import com.vitorpamplona.quartz.nip59Giftwrap.seals.SealedRumorEvent
import com.vitorpamplona.quartz.nip59Giftwrap.wraps.GiftWrapEvent
import com.vitorpamplona.quartz.nip90Dvms.NIP90ContentDiscoveryResponseEvent
import com.vitorpamplona.quartz.nip94FileMetadata.tags.DimensionTag
import com.vitorpamplona.quartz.nipA0VoiceMessages.VoiceEvent
import com.vitorpamplona.quartz.nipA0VoiceMessages.BaseVoiceEvent
import com.vitorpamplona.quartz.utils.Hex
import com.vitorpamplona.quartz.utils.Log
import com.vitorpamplona.quartz.utils.TimeUtils
@@ -1154,7 +1154,7 @@ class AccountViewModel(
context: Context,
) {
if (isWriteable()) {
val hint = note.toEventHint<VoiceEvent>() ?: return
val hint = note.toEventHint<BaseVoiceEvent>() ?: return
launchSigner {
val uploader = UploadOrchestrator()
@@ -121,6 +121,7 @@ import com.vitorpamplona.quartz.nip94FileMetadata.originalHash
import com.vitorpamplona.quartz.nip94FileMetadata.sensitiveContent
import com.vitorpamplona.quartz.nip94FileMetadata.size
import com.vitorpamplona.quartz.nipA0VoiceMessages.AudioMeta
import com.vitorpamplona.quartz.nipA0VoiceMessages.BaseVoiceEvent
import com.vitorpamplona.quartz.nipA0VoiceMessages.VoiceEvent
import com.vitorpamplona.quartz.nipA0VoiceMessages.VoiceReplyEvent
import com.vitorpamplona.quartz.utils.Log
@@ -539,8 +540,8 @@ open class ShortNotePostViewModel :
private suspend fun createTemplate(): EventTemplate<out Event>? {
// Check if this is a voice message
voiceMetadata?.let { audioMeta ->
// Only create voice reply if original note is also a VoiceEvent
val originalVoiceHint = originalNote?.toEventHint<VoiceEvent>()
// Only create voice reply if original note is also a voice message
val originalVoiceHint = originalNote?.toEventHint<BaseVoiceEvent>()
return if (originalVoiceHint != null) {
// Create voice reply event
VoiceReplyEvent.build(
@@ -1024,9 +1025,6 @@ open class ShortNotePostViewModel :
onError(uploadErrorTitle, uploadVoiceFailed)
voiceRecording = null
}
else -> {
onError(uploadErrorTitle, uploadVoiceUnexpected)
}
}
} catch (e: Exception) {
onError(uploadErrorTitle, uploadVoiceExceptionMessage(e.message ?: e.javaClass.simpleName))
@@ -38,7 +38,7 @@ import com.vitorpamplona.amethyst.ui.actions.uploads.RecordingResult
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.stringRes
import com.vitorpamplona.quartz.nipA0VoiceMessages.AudioMeta
import com.vitorpamplona.quartz.nipA0VoiceMessages.VoiceEvent
import com.vitorpamplona.quartz.nipA0VoiceMessages.BaseVoiceEvent
import com.vitorpamplona.quartz.nipA0VoiceMessages.VoiceReplyEvent
import com.vitorpamplona.quartz.utils.Log
import kotlinx.coroutines.CancellationException
@@ -200,7 +200,7 @@ class VoiceReplyViewModel : ViewModel() {
is UploadingState.Finished -> {
when (val orchestratorResult = result.result) {
is UploadOrchestrator.OrchestratorResult.ServerResult -> {
val hint = note.toEventHint<VoiceEvent>()
val hint = note.toEventHint<BaseVoiceEvent>()
if (hint == null) {
accountViewModel.toastManager.toast(uploadErrorTitle, uploadVoiceFailed)
return
@@ -65,12 +65,12 @@ class VoiceReplyEvent(
hash: String,
duration: Int,
waveform: List<Float>,
replyingTo: EventHintBundle<VoiceEvent>,
replyingTo: EventHintBundle<BaseVoiceEvent>,
) = build(AudioMeta(url, mimeType, hash, duration, waveform), replyingTo)
fun build(
voiceMessage: AudioMeta,
replyingTo: EventHintBundle<VoiceEvent>,
replyingTo: EventHintBundle<BaseVoiceEvent>,
createdAt: Long = TimeUtils.now(),
initializer: TagArrayBuilder<VoiceReplyEvent>.() -> Unit = {},
) = build(voiceMessage, KIND, ALT_DESCRIPTION, createdAt) {