View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0010738 | Taler | wallet (Android App) | public | 2025-12-05 16:40 | 2026-01-07 16:23 |
| Reporter | sebasjm | Assigned To | avalos | ||
| Priority | normal | Severity | minor | Reproducibility | have not tried |
| Status | resolved | Resolution | fixed | ||
| Product Version | 1.0 | ||||
| Target Version | 1.4 | ||||
| Summary | 0010738: enable http for dev mode | ||||
| Description | I can't test android with my local kyc setup. my current workaround is installing self-signed certificated on android also nigthly crashed trying to do it and withdrawal screen failed with no error message | ||||
| Tags | No tags attached. | ||||
| Attached Files | Error in Taler Wallet Nightly a57c3c1c6bdb.txt (7,692 bytes)
type: crash osVersion: google/tegu/tegu:16/BP3A.251105.015/2025112101:user/release-keys flags: dev options enabled package: net.taler.wallet.nightly:1764869068, targetSdk 36 process: net.taler.wallet.nightly processUptime: 4751 + 553 ms installer: com.android.packageinstaller java.util.NoSuchElementException: List is empty. at kotlin.collections.CollectionsKt.first(Unknown Source:10) at net.taler.wallet.withdraw.PromptWithdrawFragment.onCreateView$lambda$0$2(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:88) at net.taler.wallet.withdraw.PromptWithdrawFragment.$r8$lambda$KjdVN9_hyGsTy-QmjFSy1a3vNDo(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:1) at androidx.compose.material3.ButtonKt$$ExternalSyntheticLambda3.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:50) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:10) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:1) at androidx.compose.ui.platform.ComposeView.Content(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:67) at androidx.compose.ui.platform.AbstractComposeView$ensureCompositionCreated$1.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:28) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:10) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:1) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:46) at androidx.compose.ui.platform.CompositionLocalsKt.ProvideCommonCompositionLocals(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:297) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt$ProvideAndroidCompositionLocals$3.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:32) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:10) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:1) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:46) at androidx.compose.ui.platform.AndroidCompositionLocals_androidKt.ProvideAndroidCompositionLocals(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:586) at androidx.compose.ui.platform.WrappedComposition$setContent$1$1$3.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:32) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:10) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:1) at androidx.compose.runtime.CompositionLocalKt.CompositionLocalProvider(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:84) at androidx.compose.ui.platform.WrappedComposition$setContent$1$1.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:178) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:10) at androidx.compose.runtime.internal.ComposableLambdaImpl.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:1) at androidx.compose.runtime.internal.Expect_jvmKt.invokeComposable(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:15) at androidx.compose.runtime.ComposerImpl.doCompose-aFTiNEg(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:95) at androidx.compose.runtime.CompositionImpl.composeContent(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:37) at androidx.compose.runtime.Recomposer.composeInitial$runtime(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:60) at androidx.compose.runtime.CompositionImpl.setContent(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:32) at androidx.compose.ui.platform.WrappedComposition$setContent$1.invoke(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:57) at androidx.compose.ui.platform.AndroidComposeView.setOnViewTreeOwnersAvailable(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:7) at androidx.compose.ui.platform.WrappedComposition.setContent(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:8) at androidx.compose.ui.platform.WrappedComposition.onStateChanged(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:19) at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:24) at androidx.lifecycle.LifecycleRegistry.sync(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:343) at androidx.lifecycle.LifecycleRegistry.moveToState(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:139) at androidx.lifecycle.LifecycleRegistry.handleLifecycleEvent(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:15) at androidx.fragment.app.FragmentViewLifecycleOwner.handleLifecycleEvent(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:3) at androidx.fragment.app.Fragment.restoreViewState(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:31) at androidx.fragment.app.Fragment.performActivityCreated(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:62) at androidx.fragment.app.FragmentStateManager.activityCreated(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:42) at androidx.fragment.app.FragmentStateManager.moveToExpectedState(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:164) at androidx.fragment.app.FragmentManager.executeOpsTogether(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:1129) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:92) at androidx.fragment.app.FragmentManager.execPendingActions(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:172) at androidx.fragment.app.FragmentManager$5.run(r8-map-id-f36a4100b5657bb6f7a99b9f322a16539af344183d20537a217410a57c38b454:4) at android.os.Handler.handleCallback(Handler.java:1041) at android.os.Handler.dispatchMessage(Handler.java:103) at android.os.Looper.dispatchMessage(Looper.java:315) at android.os.Looper.loopOnce(Looper.java:251) at android.os.Looper.loop(Looper.java:349) at android.app.ActivityThread.main(ActivityThread.java:9085) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:593) at com.android.internal.os.ExecInit.main(ExecInit.java:50) at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method) at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:371) | ||||
|
|
note that the workaround requires to compile the android from source which is also not nice. we need to support http for dev, otherwise debugging or testing against local environment (to test different deployment) is infeasible |
|
|
It seems like it's not possible to toggle insecure HTTP in runtime, but what I can do is either a) enable it for all wallets, regardless of dev mode, or b) only enable it for nightly and debug builds. I personally think (b) makes more sense, so that's what I just did: commit ec34c9ab65358840cad4e959dca9e6e2aa2b6352 Author: Iván Ávalos <avalos@disroot.org> Date: Wed Jan 7 16:18:38 2026 +0100 [wallet] fix 0010738 (insecure http) Let me know if you prefer (a), feel free to reopen. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2025-12-05 16:40 | sebasjm | New Issue | |
| 2025-12-05 16:40 | sebasjm | File Added: Error in Taler Wallet Nightly a57c3c1c6bdb.txt | |
| 2025-12-05 20:48 | Christian Grothoff | Assigned To | => avalos |
| 2025-12-05 20:48 | Christian Grothoff | Status | new => assigned |
| 2025-12-05 20:48 | Christian Grothoff | Product Version | => 1.0 |
| 2025-12-05 20:48 | Christian Grothoff | Target Version | => 1.4 |
| 2025-12-23 20:36 | sebasjm | Note Added: 0027178 | |
| 2026-01-07 16:23 | avalos | Note Added: 0027205 | |
| 2026-01-07 16:23 | avalos | Status | assigned => resolved |
| 2026-01-07 16:23 | avalos | Resolution | open => fixed |