mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-29 06:52:50 +02:00
deleted intentutils
This commit is contained in:
@@ -1,22 +1,180 @@
|
|||||||
package com.vitorpamplona.amethyst.service
|
package com.vitorpamplona.amethyst.service
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.net.Uri
|
import android.net.Uri
|
||||||
|
import android.util.LruCache
|
||||||
|
import android.widget.Toast
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
|
import com.vitorpamplona.amethyst.Amethyst
|
||||||
import com.vitorpamplona.amethyst.ServiceManager
|
import com.vitorpamplona.amethyst.ServiceManager
|
||||||
import com.vitorpamplona.amethyst.model.Account
|
import com.vitorpamplona.amethyst.model.Account
|
||||||
|
import com.vitorpamplona.amethyst.model.LocalCache
|
||||||
|
import com.vitorpamplona.amethyst.service.relays.Client
|
||||||
|
import com.vitorpamplona.amethyst.ui.MainActivity
|
||||||
import com.vitorpamplona.amethyst.ui.actions.SignerType
|
import com.vitorpamplona.amethyst.ui.actions.SignerType
|
||||||
import com.vitorpamplona.quartz.encoders.HexKey
|
import com.vitorpamplona.quartz.encoders.HexKey
|
||||||
import com.vitorpamplona.quartz.encoders.toHexKey
|
import com.vitorpamplona.quartz.encoders.toHexKey
|
||||||
import com.vitorpamplona.quartz.events.Event
|
import com.vitorpamplona.quartz.events.Event
|
||||||
import com.vitorpamplona.quartz.events.EventInterface
|
import com.vitorpamplona.quartz.events.EventInterface
|
||||||
|
import com.vitorpamplona.quartz.events.GiftWrapEvent
|
||||||
import com.vitorpamplona.quartz.events.LnZapRequestEvent
|
import com.vitorpamplona.quartz.events.LnZapRequestEvent
|
||||||
|
import com.vitorpamplona.quartz.events.SealedGossipEvent
|
||||||
|
import kotlinx.coroutines.DelicateCoroutinesApi
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.GlobalScope
|
||||||
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
object AmberUtils {
|
object AmberUtils {
|
||||||
var content: String = ""
|
var content: String = ""
|
||||||
var isActivityRunning: Boolean = false
|
var isActivityRunning: Boolean = false
|
||||||
val cachedDecryptedContent = mutableMapOf<HexKey, String>()
|
val cachedDecryptedContent = mutableMapOf<HexKey, String>()
|
||||||
lateinit var account: Account
|
lateinit var account: Account
|
||||||
|
lateinit var activityResultLauncher: ActivityResultLauncher<Intent>
|
||||||
|
lateinit var decryptGossipResultLauncher: ActivityResultLauncher<Intent>
|
||||||
|
lateinit var blockListResultLauncher: ActivityResultLauncher<Intent>
|
||||||
|
lateinit var signEventResultLauncher: ActivityResultLauncher<Intent>
|
||||||
|
val eventCache = LruCache<String, Event>(100)
|
||||||
|
|
||||||
|
@OptIn(DelicateCoroutinesApi::class)
|
||||||
|
fun consume(event: Event) {
|
||||||
|
if (LocalCache.justVerify(event)) {
|
||||||
|
if (event is GiftWrapEvent) {
|
||||||
|
GlobalScope.launch(Dispatchers.IO) {
|
||||||
|
val decryptedContent = cachedDecryptedContent[event.id] ?: ""
|
||||||
|
if (decryptedContent.isNotBlank()) {
|
||||||
|
event.cachedGift(
|
||||||
|
NostrAccountDataSource.account.keyPair.pubKey,
|
||||||
|
decryptedContent
|
||||||
|
)?.let {
|
||||||
|
consume(it)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
decryptGossip(event)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (event is SealedGossipEvent) {
|
||||||
|
GlobalScope.launch(Dispatchers.IO) {
|
||||||
|
val decryptedContent = cachedDecryptedContent[event.id] ?: ""
|
||||||
|
if (decryptedContent.isNotBlank()) {
|
||||||
|
event.cachedGossip(NostrAccountDataSource.account.keyPair.pubKey, decryptedContent)?.let {
|
||||||
|
LocalCache.justConsume(it, null)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
decryptGossip(event)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Don't store sealed gossips to avoid rebroadcasting by mistake.
|
||||||
|
} else {
|
||||||
|
LocalCache.justConsume(event, null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(DelicateCoroutinesApi::class)
|
||||||
|
fun start(activity: MainActivity) {
|
||||||
|
signEventResultLauncher = activity.registerForActivityResult(
|
||||||
|
ActivityResultContracts.StartActivityForResult()
|
||||||
|
) {
|
||||||
|
if (it.resultCode != Activity.RESULT_OK) {
|
||||||
|
GlobalScope.launch(Dispatchers.Main) {
|
||||||
|
Toast.makeText(
|
||||||
|
Amethyst.instance,
|
||||||
|
"Sign request rejected",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val json = it.data?.getStringExtra("event") ?: ""
|
||||||
|
GlobalScope.launch(Dispatchers.IO) {
|
||||||
|
val signedEvent = Event.fromJson(json)
|
||||||
|
if (signedEvent.hasValidSignature()) {
|
||||||
|
Client.send(signedEvent)
|
||||||
|
LocalCache.verifyAndConsume(signedEvent, null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isActivityRunning = false
|
||||||
|
ServiceManager.shouldPauseService = true
|
||||||
|
}
|
||||||
|
|
||||||
|
activityResultLauncher = activity.registerForActivityResult(
|
||||||
|
ActivityResultContracts.StartActivityForResult()
|
||||||
|
) {
|
||||||
|
isActivityRunning = false
|
||||||
|
ServiceManager.shouldPauseService = true
|
||||||
|
if (it.resultCode != Activity.RESULT_OK) {
|
||||||
|
GlobalScope.launch(Dispatchers.Main) {
|
||||||
|
Toast.makeText(
|
||||||
|
Amethyst.instance,
|
||||||
|
"Sign request rejected",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val event = it.data?.getStringExtra("signature") ?: ""
|
||||||
|
content = event
|
||||||
|
val id = it.data?.getStringExtra("id") ?: ""
|
||||||
|
if (id.isNotBlank()) {
|
||||||
|
cachedDecryptedContent[id] = event
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
blockListResultLauncher = activity.registerForActivityResult(
|
||||||
|
ActivityResultContracts.StartActivityForResult()
|
||||||
|
) {
|
||||||
|
if (it.resultCode != Activity.RESULT_OK) {
|
||||||
|
GlobalScope.launch(Dispatchers.Main) {
|
||||||
|
Toast.makeText(
|
||||||
|
Amethyst.instance,
|
||||||
|
"Sign request rejected",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val decryptedContent = it.data?.getStringExtra("signature") ?: ""
|
||||||
|
val id = it.data?.getStringExtra("id") ?: ""
|
||||||
|
if (id.isNotBlank()) {
|
||||||
|
cachedDecryptedContent[id] = decryptedContent
|
||||||
|
account.live.invalidateData()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isActivityRunning = false
|
||||||
|
ServiceManager.shouldPauseService = true
|
||||||
|
}
|
||||||
|
|
||||||
|
decryptGossipResultLauncher = activity.registerForActivityResult(
|
||||||
|
ActivityResultContracts.StartActivityForResult()
|
||||||
|
) {
|
||||||
|
if (it.resultCode != Activity.RESULT_OK) {
|
||||||
|
GlobalScope.launch(Dispatchers.Main) {
|
||||||
|
Toast.makeText(
|
||||||
|
Amethyst.instance,
|
||||||
|
"Sign request rejected",
|
||||||
|
Toast.LENGTH_SHORT
|
||||||
|
).show()
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
val decryptedContent = it.data?.getStringExtra("signature") ?: ""
|
||||||
|
val id = it.data?.getStringExtra("id") ?: ""
|
||||||
|
if (id.isNotBlank()) {
|
||||||
|
val event = eventCache.get(id)
|
||||||
|
if (event != null) {
|
||||||
|
GlobalScope.launch(Dispatchers.IO) {
|
||||||
|
AmberUtils.cachedDecryptedContent[event.id] = decryptedContent
|
||||||
|
consume(event)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
isActivityRunning = false
|
||||||
|
ServiceManager.shouldPauseService = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun openAmber(
|
fun openAmber(
|
||||||
data: String,
|
data: String,
|
||||||
@@ -50,12 +208,12 @@ object AmberUtils {
|
|||||||
openAmber(
|
openAmber(
|
||||||
event.toJson(),
|
event.toJson(),
|
||||||
SignerType.SIGN_EVENT,
|
SignerType.SIGN_EVENT,
|
||||||
IntentUtils.activityResultLauncher,
|
activityResultLauncher,
|
||||||
"",
|
"",
|
||||||
event.id()
|
event.id()
|
||||||
)
|
)
|
||||||
while (isActivityRunning) {
|
while (isActivityRunning) {
|
||||||
// do nothing
|
Thread.sleep(100)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +224,7 @@ object AmberUtils {
|
|||||||
openAmber(
|
openAmber(
|
||||||
event.toJson(),
|
event.toJson(),
|
||||||
SignerType.SIGN_EVENT,
|
SignerType.SIGN_EVENT,
|
||||||
IntentUtils.signEventResultLauncher,
|
signEventResultLauncher,
|
||||||
account.keyPair.pubKey.toHexKey(),
|
account.keyPair.pubKey.toHexKey(),
|
||||||
event.id()
|
event.id()
|
||||||
)
|
)
|
||||||
@@ -77,7 +235,7 @@ object AmberUtils {
|
|||||||
openAmber(
|
openAmber(
|
||||||
encryptedContent,
|
encryptedContent,
|
||||||
signerType,
|
signerType,
|
||||||
IntentUtils.blockListResultLauncher,
|
blockListResultLauncher,
|
||||||
pubKey,
|
pubKey,
|
||||||
id
|
id
|
||||||
)
|
)
|
||||||
@@ -89,7 +247,7 @@ object AmberUtils {
|
|||||||
openAmber(
|
openAmber(
|
||||||
encryptedContent,
|
encryptedContent,
|
||||||
signerType,
|
signerType,
|
||||||
IntentUtils.activityResultLauncher,
|
activityResultLauncher,
|
||||||
pubKey,
|
pubKey,
|
||||||
id
|
id
|
||||||
)
|
)
|
||||||
@@ -103,7 +261,7 @@ object AmberUtils {
|
|||||||
openAmber(
|
openAmber(
|
||||||
encryptedContent,
|
encryptedContent,
|
||||||
signerType,
|
signerType,
|
||||||
IntentUtils.activityResultLauncher,
|
activityResultLauncher,
|
||||||
pubKey,
|
pubKey,
|
||||||
id
|
id
|
||||||
)
|
)
|
||||||
@@ -113,21 +271,21 @@ object AmberUtils {
|
|||||||
openAmber(
|
openAmber(
|
||||||
encryptedContent,
|
encryptedContent,
|
||||||
signerType,
|
signerType,
|
||||||
IntentUtils.activityResultLauncher,
|
activityResultLauncher,
|
||||||
pubKey,
|
pubKey,
|
||||||
id
|
id
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun decryptGossip(event: Event) {
|
fun decryptGossip(event: Event) {
|
||||||
if (IntentUtils.eventCache.get(event.id) == null) {
|
if (eventCache.get(event.id) == null) {
|
||||||
IntentUtils.eventCache.put(event.id, event)
|
eventCache.put(event.id, event)
|
||||||
}
|
}
|
||||||
isActivityRunning = true
|
isActivityRunning = true
|
||||||
openAmber(
|
openAmber(
|
||||||
event.content,
|
event.content,
|
||||||
SignerType.NIP44_DECRYPT,
|
SignerType.NIP44_DECRYPT,
|
||||||
IntentUtils.decryptGossipResultLauncher,
|
decryptGossipResultLauncher,
|
||||||
event.pubKey,
|
event.pubKey,
|
||||||
event.id
|
event.id
|
||||||
)
|
)
|
||||||
@@ -138,7 +296,7 @@ object AmberUtils {
|
|||||||
openAmber(
|
openAmber(
|
||||||
decryptedContent,
|
decryptedContent,
|
||||||
signerType,
|
signerType,
|
||||||
IntentUtils.activityResultLauncher,
|
activityResultLauncher,
|
||||||
pubKey,
|
pubKey,
|
||||||
"encrypt"
|
"encrypt"
|
||||||
)
|
)
|
||||||
@@ -152,7 +310,7 @@ object AmberUtils {
|
|||||||
openAmber(
|
openAmber(
|
||||||
event.toJson(),
|
event.toJson(),
|
||||||
SignerType.DECRYPT_ZAP_EVENT,
|
SignerType.DECRYPT_ZAP_EVENT,
|
||||||
IntentUtils.activityResultLauncher,
|
activityResultLauncher,
|
||||||
event.pubKey,
|
event.pubKey,
|
||||||
event.id
|
event.id
|
||||||
)
|
)
|
||||||
|
@@ -1,167 +0,0 @@
|
|||||||
package com.vitorpamplona.amethyst.service
|
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.content.Intent
|
|
||||||
import android.util.LruCache
|
|
||||||
import android.widget.Toast
|
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
|
||||||
import com.vitorpamplona.amethyst.Amethyst
|
|
||||||
import com.vitorpamplona.amethyst.ServiceManager
|
|
||||||
import com.vitorpamplona.amethyst.model.LocalCache
|
|
||||||
import com.vitorpamplona.amethyst.service.relays.Client
|
|
||||||
import com.vitorpamplona.amethyst.ui.MainActivity
|
|
||||||
import com.vitorpamplona.quartz.events.Event
|
|
||||||
import com.vitorpamplona.quartz.events.GiftWrapEvent
|
|
||||||
import com.vitorpamplona.quartz.events.SealedGossipEvent
|
|
||||||
import kotlinx.coroutines.DelicateCoroutinesApi
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
import kotlinx.coroutines.GlobalScope
|
|
||||||
import kotlinx.coroutines.launch
|
|
||||||
|
|
||||||
object IntentUtils {
|
|
||||||
lateinit var activityResultLauncher: ActivityResultLauncher<Intent>
|
|
||||||
lateinit var decryptGossipResultLauncher: ActivityResultLauncher<Intent>
|
|
||||||
lateinit var blockListResultLauncher: ActivityResultLauncher<Intent>
|
|
||||||
lateinit var signEventResultLauncher: ActivityResultLauncher<Intent>
|
|
||||||
val eventCache = LruCache<String, Event>(100)
|
|
||||||
|
|
||||||
@OptIn(DelicateCoroutinesApi::class)
|
|
||||||
fun consume(event: Event) {
|
|
||||||
if (LocalCache.justVerify(event)) {
|
|
||||||
if (event is GiftWrapEvent) {
|
|
||||||
GlobalScope.launch(Dispatchers.IO) {
|
|
||||||
val decryptedContent = AmberUtils.cachedDecryptedContent[event.id] ?: ""
|
|
||||||
if (decryptedContent.isNotBlank()) {
|
|
||||||
event.cachedGift(
|
|
||||||
NostrAccountDataSource.account.keyPair.pubKey,
|
|
||||||
decryptedContent
|
|
||||||
)?.let {
|
|
||||||
consume(it)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
AmberUtils.decryptGossip(event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (event is SealedGossipEvent) {
|
|
||||||
GlobalScope.launch(Dispatchers.IO) {
|
|
||||||
val decryptedContent = AmberUtils.cachedDecryptedContent[event.id] ?: ""
|
|
||||||
if (decryptedContent.isNotBlank()) {
|
|
||||||
event.cachedGossip(NostrAccountDataSource.account.keyPair.pubKey, decryptedContent)?.let {
|
|
||||||
LocalCache.justConsume(it, null)
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
AmberUtils.decryptGossip(event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Don't store sealed gossips to avoid rebroadcasting by mistake.
|
|
||||||
} else {
|
|
||||||
LocalCache.justConsume(event, null)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@OptIn(DelicateCoroutinesApi::class)
|
|
||||||
fun start(activity: MainActivity) {
|
|
||||||
signEventResultLauncher = activity.registerForActivityResult(
|
|
||||||
ActivityResultContracts.StartActivityForResult()
|
|
||||||
) {
|
|
||||||
if (it.resultCode != Activity.RESULT_OK) {
|
|
||||||
GlobalScope.launch(Dispatchers.Main) {
|
|
||||||
Toast.makeText(
|
|
||||||
Amethyst.instance,
|
|
||||||
"Sign request rejected",
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val json = it.data?.getStringExtra("event") ?: ""
|
|
||||||
GlobalScope.launch(Dispatchers.IO) {
|
|
||||||
val signedEvent = Event.fromJson(json)
|
|
||||||
if (signedEvent.hasValidSignature()) {
|
|
||||||
Client.send(signedEvent)
|
|
||||||
LocalCache.verifyAndConsume(signedEvent, null)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
AmberUtils.isActivityRunning = false
|
|
||||||
ServiceManager.shouldPauseService = true
|
|
||||||
}
|
|
||||||
|
|
||||||
activityResultLauncher = activity.registerForActivityResult(
|
|
||||||
ActivityResultContracts.StartActivityForResult()
|
|
||||||
) {
|
|
||||||
if (it.resultCode != Activity.RESULT_OK) {
|
|
||||||
GlobalScope.launch(Dispatchers.Main) {
|
|
||||||
Toast.makeText(
|
|
||||||
Amethyst.instance,
|
|
||||||
"Sign request rejected",
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val event = it.data?.getStringExtra("signature") ?: ""
|
|
||||||
AmberUtils.content = event
|
|
||||||
val id = it.data?.getStringExtra("id") ?: ""
|
|
||||||
if (id.isNotBlank()) {
|
|
||||||
AmberUtils.cachedDecryptedContent[id] = event
|
|
||||||
}
|
|
||||||
}
|
|
||||||
AmberUtils.isActivityRunning = false
|
|
||||||
ServiceManager.shouldPauseService = true
|
|
||||||
}
|
|
||||||
|
|
||||||
blockListResultLauncher = activity.registerForActivityResult(
|
|
||||||
ActivityResultContracts.StartActivityForResult()
|
|
||||||
) {
|
|
||||||
if (it.resultCode != Activity.RESULT_OK) {
|
|
||||||
GlobalScope.launch(Dispatchers.Main) {
|
|
||||||
Toast.makeText(
|
|
||||||
Amethyst.instance,
|
|
||||||
"Sign request rejected",
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val decryptedContent = it.data?.getStringExtra("signature") ?: ""
|
|
||||||
val id = it.data?.getStringExtra("id") ?: ""
|
|
||||||
if (id.isNotBlank()) {
|
|
||||||
AmberUtils.cachedDecryptedContent[id] = decryptedContent
|
|
||||||
AmberUtils.account.live.invalidateData()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
AmberUtils.isActivityRunning = false
|
|
||||||
ServiceManager.shouldPauseService = true
|
|
||||||
}
|
|
||||||
|
|
||||||
decryptGossipResultLauncher = activity.registerForActivityResult(
|
|
||||||
ActivityResultContracts.StartActivityForResult()
|
|
||||||
) {
|
|
||||||
if (it.resultCode != Activity.RESULT_OK) {
|
|
||||||
GlobalScope.launch(Dispatchers.Main) {
|
|
||||||
Toast.makeText(
|
|
||||||
Amethyst.instance,
|
|
||||||
"Sign request rejected",
|
|
||||||
Toast.LENGTH_SHORT
|
|
||||||
).show()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
val decryptedContent = it.data?.getStringExtra("signature") ?: ""
|
|
||||||
val id = it.data?.getStringExtra("id") ?: ""
|
|
||||||
if (id.isNotBlank()) {
|
|
||||||
val event = eventCache.get(id)
|
|
||||||
if (event != null) {
|
|
||||||
GlobalScope.launch(Dispatchers.IO) {
|
|
||||||
AmberUtils.cachedDecryptedContent[event.id] = decryptedContent
|
|
||||||
consume(event)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
AmberUtils.isActivityRunning = false
|
|
||||||
ServiceManager.shouldPauseService = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@@ -23,7 +23,7 @@ import androidx.core.os.LocaleListCompat
|
|||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import com.vitorpamplona.amethyst.LocalPreferences
|
import com.vitorpamplona.amethyst.LocalPreferences
|
||||||
import com.vitorpamplona.amethyst.ServiceManager
|
import com.vitorpamplona.amethyst.ServiceManager
|
||||||
import com.vitorpamplona.amethyst.service.IntentUtils
|
import com.vitorpamplona.amethyst.service.AmberUtils
|
||||||
import com.vitorpamplona.amethyst.service.connectivitystatus.ConnectivityStatus
|
import com.vitorpamplona.amethyst.service.connectivitystatus.ConnectivityStatus
|
||||||
import com.vitorpamplona.amethyst.service.notifications.PushNotificationUtils
|
import com.vitorpamplona.amethyst.service.notifications.PushNotificationUtils
|
||||||
import com.vitorpamplona.amethyst.ui.components.DefaultMutedSetting
|
import com.vitorpamplona.amethyst.ui.components.DefaultMutedSetting
|
||||||
@@ -52,7 +52,7 @@ import java.nio.charset.StandardCharsets
|
|||||||
class MainActivity : AppCompatActivity() {
|
class MainActivity : AppCompatActivity() {
|
||||||
@RequiresApi(Build.VERSION_CODES.R)
|
@RequiresApi(Build.VERSION_CODES.R)
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
IntentUtils.start(this)
|
AmberUtils.start(this)
|
||||||
|
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
@@ -40,7 +40,7 @@ import androidx.lifecycle.Lifecycle
|
|||||||
import androidx.lifecycle.LifecycleEventObserver
|
import androidx.lifecycle.LifecycleEventObserver
|
||||||
import com.vitorpamplona.amethyst.R
|
import com.vitorpamplona.amethyst.R
|
||||||
import com.vitorpamplona.amethyst.model.LocalCache
|
import com.vitorpamplona.amethyst.model.LocalCache
|
||||||
import com.vitorpamplona.amethyst.service.IntentUtils
|
import com.vitorpamplona.amethyst.service.AmberUtils
|
||||||
import com.vitorpamplona.amethyst.service.NostrChatroomListDataSource
|
import com.vitorpamplona.amethyst.service.NostrChatroomListDataSource
|
||||||
import com.vitorpamplona.amethyst.ui.screen.ChatroomListFeedView
|
import com.vitorpamplona.amethyst.ui.screen.ChatroomListFeedView
|
||||||
import com.vitorpamplona.amethyst.ui.screen.FeedViewModel
|
import com.vitorpamplona.amethyst.ui.screen.FeedViewModel
|
||||||
@@ -76,7 +76,7 @@ fun ChatroomListScreen(
|
|||||||
val gifts = LocalCache.notes.elements().toList().filter { it.event is GiftWrapEvent }
|
val gifts = LocalCache.notes.elements().toList().filter { it.event is GiftWrapEvent }
|
||||||
gifts.forEach {
|
gifts.forEach {
|
||||||
it.event?.let {
|
it.event?.let {
|
||||||
IntentUtils.consume(it as Event)
|
AmberUtils.consume(it as Event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user