diff --git a/app/src/main/java/com/koalasat/pokey/models/ExternalSigner.kt b/app/src/main/java/com/koalasat/pokey/models/ExternalSigner.kt index 568f1d8..1a7bd3a 100644 --- a/app/src/main/java/com/koalasat/pokey/models/ExternalSigner.kt +++ b/app/src/main/java/com/koalasat/pokey/models/ExternalSigner.kt @@ -3,10 +3,12 @@ package com.koalasat.pokey.models import android.app.Activity import android.content.Intent import android.util.Log +import android.widget.Toast import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.fragment.app.Fragment import com.koalasat.pokey.Pokey +import com.koalasat.pokey.R import com.vitorpamplona.quartz.signers.ExternalSignerLauncher import com.vitorpamplona.quartz.signers.SignerType import java.util.UUID @@ -20,6 +22,7 @@ class ExternalSigner(fragment: Fragment) { nostrSignerLauncher = fragment.registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result -> if (result.resultCode != Activity.RESULT_OK) { Log.e("Pokey", "ExternalSigner result error: ${result.resultCode}") + Toast.makeText(fragment.context, fragment.getString(R.string.amber_not_found), Toast.LENGTH_SHORT).show() } else { result.data?.let { externalSignerLauncher.newResult(it) } } diff --git a/app/src/main/java/com/koalasat/pokey/service/NotificationsService.kt b/app/src/main/java/com/koalasat/pokey/service/NotificationsService.kt index c0c4595..ed56119 100644 --- a/app/src/main/java/com/koalasat/pokey/service/NotificationsService.kt +++ b/app/src/main/java/com/koalasat/pokey/service/NotificationsService.kt @@ -24,10 +24,12 @@ import com.vitorpamplona.ammolite.relays.EVENT_FINDER_TYPES import com.vitorpamplona.ammolite.relays.Relay import com.vitorpamplona.ammolite.relays.RelayPool import com.vitorpamplona.ammolite.relays.TypedFilter -import com.vitorpamplona.ammolite.relays.filters.EOSETime import com.vitorpamplona.ammolite.relays.filters.SincePerRelayFilter +import com.vitorpamplona.quartz.encoders.Hex import com.vitorpamplona.quartz.encoders.Nip19Bech32 import com.vitorpamplona.quartz.encoders.Nip19Bech32.uriToRoute +import com.vitorpamplona.quartz.encoders.toNote +import com.vitorpamplona.quartz.encoders.toNpub import com.vitorpamplona.quartz.events.Event import com.vitorpamplona.quartz.events.EventInterface import java.time.Instant @@ -207,9 +209,9 @@ class NotificationsService : Service() { TypedFilter( types = COMMON_FEED_TYPES, filter = SincePerRelayFilter( - kinds = listOf(1, 4, 6, 7, 13, 9735), tags = mapOf("p" to listOf(hexKey)), - since = RelayPool.getAll().associate { it.url to EOSETime(latestNotification) }, +// since = RelayPool.getAll().associate { it.url to EOSETime(latestNotification) }, + limit = 1, ), ), ), @@ -330,6 +332,7 @@ class NotificationsService : Service() { var title = "" var text = "" val pubKey = EncryptedStorage.pubKey + var nip32Bech32 = "" if (event.kind == 1) { title = if (event.content().contains("nostr:$pubKey")) { @@ -340,10 +343,13 @@ class NotificationsService : Service() { getString(R.string.new_reply) } text = event.content().replace(Regex("nostr:[a-zA-Z0-9]+"), "") + nip32Bech32 = Hex.decode(event.id).toNote() } else if (event.kind == 6) { title = getString(R.string.new_repost) + nip32Bech32 = Hex.decode(event.id).toNote() } else if (event.kind == 4 || event.kind == 13) { title = getString(R.string.new_private) + nip32Bech32 = Hex.decode(event.pubKey).toNpub() } else if (event.kind == 7) { title = getString(R.string.new_reaction) text = if (event.content.isEmpty() || event.content == "+") { @@ -351,28 +357,23 @@ class NotificationsService : Service() { } else { event.content } + val taggedEvent = event.taggedEvents().first() + nip32Bech32 = Hex.decode(taggedEvent).toNote() } else if (event.kind == 9735) { title = getString(R.string.new_zap) + var sats = event.zapraiserAmount() + text = "⚡ $sats Sats" } - + Log.d("Pokey", nip32Bech32) if (title.isEmpty()) return@launch - displayNoteNotification(title, text, event) + displayNoteNotification(title, text, nip32Bech32, event) } } - private fun displayNoteNotification(title: String, text: String, event: Event) { + private fun displayNoteNotification(title: String, text: String, nip32Bech32: String, event: Event) { val deepLinkIntent = Intent(Intent.ACTION_VIEW).apply { -// val nPub = Nip19Bech32.parseComponents( -// "npub", -// event.pubKey, -// null, -// ) - -// if (nPub != null) { -// data = Uri.parse("nostr:${nPub.nip19raw}") -// } - data = Uri.parse("nostr:") + data = Uri.parse("nostr:$nip32Bech32") } val pendingIntent = PendingIntent.getActivity( this@NotificationsService, diff --git a/app/src/main/java/com/koalasat/pokey/ui/home/HomeFragment.kt b/app/src/main/java/com/koalasat/pokey/ui/home/HomeFragment.kt index 8ac063b..c4bdd0c 100644 --- a/app/src/main/java/com/koalasat/pokey/ui/home/HomeFragment.kt +++ b/app/src/main/java/com/koalasat/pokey/ui/home/HomeFragment.kt @@ -66,14 +66,12 @@ class HomeFragment : Fragment() { if (it) { val typedValue = TypedValue() requireContext().theme.resolveAttribute(android.R.attr.colorButtonNormal, typedValue, true) - binding.serviceStart.setBackgroundColor(typedValue.data) binding.serviceStart.text = getString(R.string.stop) binding.amber.isEnabled = false binding.npubInput.isEnabled = false } else { val typedValue = TypedValue() requireContext().theme.resolveAttribute(android.R.attr.colorPrimary, typedValue, true) - binding.serviceStart.setBackgroundColor(typedValue.data) binding.serviceStart.text = getString(R.string.start) binding.amber.isEnabled = true binding.npubInput.isEnabled = true diff --git a/app/src/main/java/com/koalasat/pokey/ui/home/HomeViewModel.kt b/app/src/main/java/com/koalasat/pokey/ui/home/HomeViewModel.kt index ee57352..1730066 100644 --- a/app/src/main/java/com/koalasat/pokey/ui/home/HomeViewModel.kt +++ b/app/src/main/java/com/koalasat/pokey/ui/home/HomeViewModel.kt @@ -1,6 +1,5 @@ package com.koalasat.pokey.ui.home -import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel @@ -39,7 +38,6 @@ class HomeViewModel : ViewModel() { fun updateNpubInput(text: String) { _npubInput.value = text validateNpubInput() - Log.e("Pokey", "validation: " + _validationResult.value.toString()) if (_validationResult.value == true) { EncryptedStorage.updatePubKey(text) } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fa06754..00252be 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6,6 +6,7 @@ Relays Notifications Pokey is running in background + Amber not installed Relays connection Notifications New mention