Amethyst 0.32.3: Performance Improvements

You will see more items (quotes, invoices, reply information, etc) being loaded on-demand, changing the view as it loads. Let me know if this isn't too annoying.

Download:

- Play Edition with Translations: https://github.com/vitorpamplona/amethyst/releases/download/v0.32.3/amethyst-googleplay-universal-v0.32.3.apk

- F-Droid Edition without Translations: https://github.com/vitorpamplona/amethyst/releases/download/v0.32.3/amethyst-fdroid-universal-v0.32.3.apk

Reply to this note

Please Login to reply.

Discussion

🚀🔨

Let's gooooo 🔥🚀

Woo hoo!

#[0]

Don't leave the devs out of the zapping!

#[0]

This is damn slick on graphene. It didn't like my nsec from Alby or Iris for some reason though. Said invalid. But I really like the interface, its fast!

Did you try inserting in the nsec and the hex format?

I did... I used qtqr on desktop to encode my nsec as a qr code, scanned on my phone, pasted it in... Didn't like it. ?? I'll play around with it some more.

But did you try the hex code as well?

I did. Didn't work. Will have to try again later. AFC at the moment

Seems nice so far.

Love it! It gives the user more feedback. It tells u something about the accuracy of the numbers. If you see they are moving a lot you know they are not accurate. Before this update you were somewhat left in the dark. If a post had low engagement numbers, it could be low or they weren't loaded yet.

Amethyst

App not installed as package

conflicts with an existing package.

Tried to update Amethyst today, received above message

Amethyst download still won't download... (?)

You have to uninstall the app if you are switching between APK and play store.

OK, I will, thanks!

Instant payments issue:

When tipping through someone's profile on Amethyst there is no visual confirmation so it is easy to accidentally send multiple payments because one keeps tapping as they are looking for a visual confirmation

crash bug report:

java.lang.StringIndexOutOfBoundsException: begin 0, end 91, length 0

at java.lang.String.checkBoundsBeginEnd(String.java:3942)

at java.lang.String.substring(String.java:2467)

at com.vitorpamplona.amethyst.ui.actions.NewPostViewModel.autocompleteWithUser(NewPostViewModel.kt:177)

at com.vitorpamplona.amethyst.ui.actions.NewPostViewKt$NewPostView$3$1$1$1$3$2$1.invoke(NewPostView.kt:258)

at com.vitorpamplona.amethyst.ui.actions.NewPostViewKt$NewPostView$3$1$1$1$3$2$1.invoke(NewPostView.kt:257)

at androidx.compose.foundation.ClickableKt$clickable$4$gesture$1$1$2.invoke-k-4lQ0M(Clickable.kt:170)

at androidx.compose.foundation.ClickableKt$clickable$4$gesture$1$1$2.invoke(Clickable.kt:159)

at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1.invokeSuspend(TapGestureDetector.kt:255)

at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)

at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178)

at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)

at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)

at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)

at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)

at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328)

at androidx.compose.ui.input.pointer.SuspendingPointerInputFilter$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:566)

at androidx.compose.ui.input.pointer.SuspendingPointerInputFilter.dispatchPointerEvent(SuspendingPointerInputFilter.kt:456)

at androidx.compose.ui.input.pointer.SuspendingPointerInputFilter.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:469)

at androidx.compose.ui.node.BackwardsCompatNode.onPointerEvent-H0pRuoY(BackwardsCompatNode.kt:365)

at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:314)

at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)

at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)

at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)

at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)

at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)

at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:183)

at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:102)

at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:98)

at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1359)

at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1311)

at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.android.kt:1251)

at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3132)

at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2813)

at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3132)

at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2813)

at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3132)

at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2813)

at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3132)

at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2813)

at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:571)

at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1899)

at android.app.Dialog.dispatchTouchEvent(Dialog.java:920)

at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:529)

at android.view.View.dispatchPointerEvent(View.java:15330)

at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6943)

at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6730)

at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6149)

at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6206)

at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6172)

at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6337)

at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6180)

at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6394)

at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6153)

at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:6206)

at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:6172)

at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:6180)

at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:6153)

at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:9291)

at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:9242)

at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:9210)

at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9430)

at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:292)

at android.os.MessageQueue.nativePollOnce(Native Method)

at android.os.MessageQueue.next(MessageQueue.java:341)

at android.os.Looper.loopOnce(Looper.java:168)

at android.os.Looper.loop(Looper.java:299)

at android.app.ActivityThread.main(ActivityThread.java:8252)

at java.lang.reflect.Method.invoke(Native Method)

at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:559)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:954)

Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@d6cc831, androidx.compose.runtime.BroadcastFrameClock@3365b16, StandaloneCoroutine{Cancelling}@6e9ac97, AndroidUiDispatcher@7deae84]

a new crash bug report(view global notes):

´´´

java.util.ConcurrentModificationException

at java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:760)

at java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:792)

at java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:790)

at java.util.HashMap.putMapEntries(HashMap.java:511)

at java.util.LinkedHashMap.(LinkedHashMap.java:408)

at kotlin.collections.MapsKt__MapsKt.plus(Maps.kt:632)

at com.vitorpamplona.amethyst.service.NostrSingleEventDataSource$singleEventChannel$1.invoke(NostrSingleEventDataSource.kt:133)

at com.vitorpamplona.amethyst.service.NostrSingleEventDataSource$singleEventChannel$1.invoke(NostrSingleEventDataSource.kt:129)

at com.vitorpamplona.amethyst.service.relays.Subscription.updateEOSE(Subscription.kt:15)

at com.vitorpamplona.amethyst.service.NostrDataSource$clientListener$1.onRelayStateChange(NostrDataSource.kt:119)

at com.vitorpamplona.amethyst.service.relays.Client$onRelayStateChange$1.invokeSuspend(Client.kt:121)

at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)

at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)

at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:570)

at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:750)

at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:677)

at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:664)

Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [StandaloneCoroutine{Cancelling}@d2e4d27, Dispatchers.Default]

´´´