galoymoney / blink-mobile Goto Github PK
View Code? Open in Web Editor NEWThe Everyday Bitcoin Wallet
Home Page: https://www.blink.sv
License: MIT License
The Everyday Bitcoin Wallet
Home Page: https://www.blink.sv
License: MIT License
it doens't make sense to try to send 1 sat to an onchain address, and lnd refuse to estimate transaction for such low. figure out what the lowest limit should be from lnd.
currently payment in the form of lnurl-pay are not accepted by the mobile application.
lnurl-pay is very useful in the context of printed QR code, such that a merchant could have a printed QR code and their customer could pay by simply scanning the QR code, whether they use the Galoy wallet or any other wallets that accept lnurl-pay.
Eventually we want to work on lnurl with our own platform, but on the mobile side, the task can be developped independantly by using other platforms. a good way to test this is to use this messaging platform.
on scanning the QR code from https://chat.blixtwallet.com/, our wallet should ask for the invoice, have a screen for confirmation and then pay it.
BlueWallet has a complete integration of lnurl so looking at their repo is a good way to understand the whole flow.
not sure why this is error has popping up.
build work on local machine on debug
error log:
The input changes require a full rebuild for incremental task ':app:mergeReleaseAssets'.
Unable do incremental execution: full task run
file or directory '/home/circleci/galoy-mobile/android/app/libs', not found
Transforming hermes-release.aar with JetifyTransform
Transforming hermes-release.aar with ExtractAarTransform
Transforming hermes-release.aar with AarTransform
file or directory '/home/circleci/galoy-mobile/node_modules/@remobile/react-native-qrcode-local-image/android/libs', not found
file or directory '/home/circleci/galoy-mobile/node_modules/react-native-inappbrowser-reborn/android/libs', not found
file or directory '/home/circleci/galoy-mobile/node_modules/react-native-push-notification/android/libs', not found
Task :app:mergeReleaseAssets in app Finished
:app:mergeReleaseAssets (Thread[Execution worker for ':' Thread 4,5,main]) completed. Took 0.206 secs.
:app:bundleReleaseJsAndAssets (Thread[Execution worker for ':' Thread 4,5,main]) started.
> Task :app:bundleReleaseJsAndAssets
Task :app:bundleReleaseJsAndAssets in app Starting
Caching disabled for task ':app:bundleReleaseJsAndAssets' because:
Build cache is disabled
Task ':app:bundleReleaseJsAndAssets' is not up-to-date because:
No history is available.
Starting process 'command 'node''. Working directory: /home/circleci/galoy-mobile Command: node /home/circleci/galoy-mobile/node_modules/@react-native-community/cli/build/bin.js bundle --platform android --dev false --reset-cache --entry-file index.js --bundle-output /home/circleci/galoy-mobile/android/app/build/generated/assets/react/release/index.android.bundle --assets-dest /home/circleci/galoy-mobile/android/app/build/generated/res/react/release --sourcemap-output /home/circleci/galoy-mobile/android/app/build/intermediates/sourcemaps/react/release/index.android.bundle.packager.map
Successfully started process 'command 'node''
warning: the transform cache was reset.
Welcome to Metro!
Fast - Scalable - Integrated
Task :app:bundleReleaseJsAndAssets in app Finished
> Task :app:bundleReleaseJsAndAssets FAILED
:app:bundleReleaseJsAndAssets (Thread[Execution worker for ':' Thread 4,5,main]) completed. Took 6 mins 15.689 secs.
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:bundleReleaseJsAndAssets'.
> Process 'command 'node'' finished with non-zero exit value 137
* Try:
Run with --debug option to get more log output. Run with --scan to get full insights.
* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:bundleReleaseJsAndAssets'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$3(ExecuteActionsTaskExecuter.java:186)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:184)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:411)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:398)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:391)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:377)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
Caused by: org.gradle.process.internal.ExecException: Process 'command 'node'' finished with non-zero exit value 137
at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:414)
at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:38)
at org.gradle.api.tasks.AbstractExecTask.exec(AbstractExecTask.java:70)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:104)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$2.run(ExecuteActionsTaskExecuter.java:494)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:56)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$run$1(DefaultBuildOperationExecutor.java:71)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.runWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:45)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:71)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:479)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:462)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.access$400(ExecuteActionsTaskExecuter.java:105)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.executeWithPreviousOutputFiles(ExecuteActionsTaskExecuter.java:273)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution.execute(ExecuteActionsTaskExecuter.java:251)
at org.gradle.internal.execution.steps.ExecuteStep.lambda$executeOperation$1(ExecuteStep.java:66)
at org.gradle.internal.execution.steps.ExecuteStep.executeOperation(ExecuteStep.java:66)
at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:34)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:47)
at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:44)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:44)
at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:34)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:72)
at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:42)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:53)
at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:39)
at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:44)
at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:77)
at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:58)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:54)
at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:32)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:57)
at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:38)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:63)
at org.gradle.internal.execution.steps.BroadcastChangingOutputsStep.execute(BroadcastChangingOutputsStep.java:30)
at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:176)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:76)
at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:43)
at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:32)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:39)
at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:25)
at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:102)
at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$0(SkipUpToDateStep.java:95)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:55)
at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:39)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:83)
at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:96)
at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:52)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:83)
at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:54)
at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:74)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:88)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:88)
at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:46)
at org.gradle.internal.execution.steps.LoadExecutionStateStep.execute(LoadExecutionStateStep.java:34)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:43)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$TaskExecution$3.withWorkspace(ExecuteActionsTaskExecuter.java:286)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:43)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:33)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:40)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:30)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:54)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:40)
at org.gradle.internal.execution.impl.DefaultExecutionEngine.execute(DefaultExecutionEngine.java:41)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:183)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:183)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:173)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:109)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:62)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:200)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:195)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:75)
at org.gradle.internal.operations.DefaultBuildOperationRunner$3.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:153)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:68)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:62)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.lambda$call$2(DefaultBuildOperationExecutor.java:76)
at org.gradle.internal.operations.UnmanagedBuildOperationWrapper.callWithUnmanagedSupport(UnmanagedBuildOperationWrapper.java:54)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:76)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:41)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:411)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:398)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:391)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:377)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:56)
lnService.getChainFeeEstimate will return : transaction output is dust
manage this properly from the app
(some quick research leads to google cloud messaging: oney/react-native-gcm-android#21)
Describe the bug
most of the app is being translate in Spanish but not the quiz.
the quizz is quite complex so the translation file is (mostly) being generated programmatically from a google sheet. the script is in utils/parseCSV.js
this should make the app lighter/faster to load
waiting to the have the detail of the API
Requested by salim
issue:
#!/bin/bash --login -o pipefail
cd ~/android/app/build
VERSION_CODE=$(jq .elements[0].apkData.versionCode ./intermediates/instant_app_manifest/release/output.json)
cd ./outputs/apk/release/
gsutil cp ./app-release.apk gs://bitcoin-beach-wallet/"$VERSION_CODE".apk
gsutil cp ./app-release.apk gs://bitcoin-beach-wallet/latest.apk
/home/circleci/.rvm/scripts/extras/bash_zsh_support/chpwd/function.sh: line 5: cd: /home/circleci/android/app/build: No such file or directory
jq: error: Could not open file ./intermediates/instant_app_manifest/release/output.json: No such file or directory
/home/circleci/.rvm/scripts/extras/bash_zsh_support/chpwd/function.sh: line 5: cd: ./outputs/apk/release/: No such file or directory
CommandException: No URLs matched: ./app-release.apk
CommandException: No URLs matched: ./app-release.apk
Exited with code exit status 1
CircleCI received exit code 1
Describe the bug
The home page should show 3 buttons for the payment and some text, on the last build it just show a white button.
To Reproduce
Build with current master.
Problem is present both on Android and iOS
Additional context
I have not looked into the issue but I'm not sure why this is happening, is it a regression related to some previous (I had a look quickly and see nothing obvious related) or related to some third party dependancy.
The button are based on the react native element and we use an old way to describe the syntax, there has been warning on it on the console for some time now. maybe it's related.
Describe the bug
After cloning the repo and installing the dependencies, I got an error running react-native run-android
I downloaded Android Studio, and Java 13 with OpenJDK
Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081
OpenJDK 64-Bit Server VM warning: Ignoring option MaxPermSize; support was removed in 8.0
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring root project 'GaloyApp'.
> Could not resolve all dependencies for configuration ':classpath'.
> Could not create service of type OutputFilesRepository using ExecutionGradleServices.createOutputFilesRepository().
> Timeout waiting to lock Build Output Cleanup Cache (/Volumes/SSD/Code/galoy-mobile/android/.gradle/buildOutputCleanup). It is currently in use by another Gradle instance.
To Reproduce
Steps to reproduce the behavior:
yarn
installreact-native run-android
Expected behavior
Open the Android emulator
Is anyone developing on a M1 Mac? I think that might be at the root of the problem, Java not playing nice with the M1 chip. Any help would be appreciated!
many low end android device are being used in developing country like El Salvador.
Optimizing the QR code would allow low end care to have better odds to correctly capture the QR code showed on another phone.
more info: https://bitcoinops.org/en/bech32-sending-support/
TODO
Is your feature request related to a problem? Please describe.
People who want to reach out for any question on the wallet don't know how to do it.
Describe the solution you'd like
There is no easy way to contact the support from the app currently. The easiest way to get started because we think of a broader approach is to add a button from the settings to open the whatsapp app when tapping on a button.
The number can be hardcoded for now. We could provide the number with an API through the backend in later update.
Describe alternatives you've considered
In app messaging, but would take a long time to implement
Additional context
Add any other context or screenshots about the feature request here.
related to #4
Check clipboard is called with a useEffect on the RootStack. This will open the clipboard before the user has authenticated if they have a validPayment in their clipboard. The clipboard should only show after the user has authenticated.
Describe the bug
Salim in El Zonte has reported that our QR code doesn't work with many wallets: "trust wallet, binance, okex, strike and wallet of satoshi"
To Reproduce
Steps to reproduce the behavior:
Additional context
Could this be because there is a bitcoin:
prefix? I think this is supposed to be the standard from a bitcoin perspective. maybe it's unrelated
Is your feature request related to a problem? Please describe.
The styling of the app has not been done in a very cohesive way. there are a lot of css settings being overrided locally instead of being addresses in a more global config settings.
Describe the solution you'd like
Refactor the style with less local hacky css. if we can manage to have one large css file, this would help forking the wallet and have other community have their own style.
This refactoring should be done prior working on a dark mode implementation.
phone number form when logging in case have non number characters like ",". the query is still send to the backend but is being rejected. there should be a check before sending the query that the phone number has the same regex check than the backend has.
Sometimes Athena ATMs have difficulty scanning the QR code generated by the app. If the issue persists after UPPERCASE is rolled out, it may be necessary to further optimize the qr code by removing the protocol prefix or reducing the logo size.
Is your feature request related to a problem? Please describe.
We should not request to find and connect decives to the local network at app startup, this is not a good UX practice.
Describe the solution you'd like
maybe there is some features we use that would use that "local network" request (I'm not sure, to be investigated). in that case we should request this in context, whenever it's needed
Describe the bug
I've done a local build to test the Auth PR, and some font/images seems to be missing. I'm not sure yet if this is just on my laptop because it's a local build or if this is related to an update we may have done recently.
do you have the same issue? @cryptosalomao @jrbuhl93
Smartphone (please complete the following information):
flag is missing on first screenshot. a lightning logo overlay is missing on the QRCode.
to be investigated.
could be the cache in the mobile app when a new user is being created.
Internet connection is unreliable here (compared to the US). Even if you have Wifi enabled/4G enabled, often time the connection would fail.
Our app doesn't handle that well.
I think we would need to switch from mst + mst-gql to appolo client library. This is quite a big change but after looking in mst-gql + graphql_request, I see that those libraries doesn't have all the retry mechanism that Apollo has.
I also have a lot of time had issue with mst-gql. this is still a new library. Apollo on the other side seems battle tested.
Is your feature request related to a problem? Please describe.
When confirming the code sent by text, there is no mention of which phone the code was sent to.
This is from the prior screen. So if the phone was not entered correctly the only way to figure out is typically to wait for a few minutes, and if nothing happen go the previous screen
Describe the solution you'd like
Show the phone code in the code confirmation page.
on top of GaloyMoney/galoy-app#451, I saw sometimes some low-end phones that were not able to scan the QR code for some reason.
The QR code was scanned camera, but it was not going to the payment screen.
I could see that the QRcode was not really sharp (and one of the lady had clean the lens and trying again without any change). The density (number of black/white squares) depends on the length of the invoice. Because invoices is long compared to address, it needs a camera with a better resolution.
there may be things to tweak into how we generate the QR code (ie: there is a redundancy variable) to make this less likely to happen.
We are adding a 2fa to validating large payment, but it would be a good features that would add security easily if we could ask for the biometrics at the launch of the app.
we have a lot more user on Android, so we could start with Android first.
If we keep coming back to the wallet after switching to some other app, we should only ask once. If the user dismiss the address once, we should not ask again if the same address is in the clipboard
https://twitter.com/ceramicwhite/status/1406306717009207297
Also it seems the 1y is lacking some data
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.