Giter Site home page Giter Site logo

synonymdev / bitkit Goto Github PK

View Code? Open in Web Editor NEW
105.0 105.0 22.0 107.29 MB

Take charge of your digital life with Bitkit. A non-custodial Bitcoin and Lightning wallet that also supports profiles, contacts, payments to contacts, key-based logins, widgets, and more.

Home Page: https://bitkit.to

License: MIT License

JavaScript 5.17% Java 0.55% Ruby 0.12% Objective-C 0.12% TypeScript 93.73% Objective-C++ 0.10% Shell 0.22%
bitcoin lightning-network

bitkit's People

Contributors

aldertnl avatar bitcoinerrorlog avatar coreyphillips avatar jasonvdb avatar jwburgers avatar limpbrains avatar miguelmedeiros avatar nuhvi avatar pwltr avatar rbndg avatar varsnotwars avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bitkit's Issues

QR reader does not open from send screen

Describe the bug
In the To field, click on the QR icon - nothing happens

To Reproduce
Steps to reproduce the behavior:
Send
Normal
Press the QR icon in the To field
Nothing happens

Expected behavior
Camera opens and lets me scan a QR code

Note, this does work correctly if you click on the QR button on the home page (between Send and Receive)

Screenshots
na

Smartphone (please complete the following information):

  • iOS

Receive: only uppercase case insensitive strings

Describe the bug
Derived addresses are invalid if uppercased.

To Reproduce
Steps to reproduce the behavior:

  1. Go to Receive
  2. Add an amount (to generate a fresh address)
  3. Copy the address
  4. Try to send or scan the QR

Expected behavior
Scanning QR works or sending to address string

Screenshots
Example invalid URI:

bitcoin:2MZGHHOAQSHBPRTTKHNUUQA7EQSOAPYYWUV?amount=0&label=&message=&lightning=LNBCRT0M1P33RUPZDQQNP4QVFPD6PC2Z7JN0TKNWS9MUCDX3VSQKW5HAMZC7Y0GWX39D85UX6HXPP58MPZXR24RCLH0SC89LCAM2F4LZ543XXA3Q4DKEKGL46HUMVZPQWQSP5JA67EGTMQ2EDYP976NUPGPKHC27YXZHZK92TEEV2YGPEP920ZWEQ9QYYSGQCQPCXQZ95YHVNK2R9RDYW50JZEUYWTP2ZK4RPKHQH5W3E6WKA2LQGRCE36UW3LSGEVKA3VTWWMWADJV3LR05NZZR7HGS9WNLWTPFTZ30DERHKZCCP4230V8

Additional context
Should only uppercase case insensitive strings (bech32) or don't change casing at all.

App Icons: Non-standard shapes

Describe the bug
Some flavors of Android will allow non-standard app icon shapes

Expected behavior
BitKit icon should respect the custom shape set by the OS

Screenshots
Screenshot_20220819_102938_com huawei android launcher

In the screenshot the shape is set to something like "rounded"

  • correct: Zap, Muun, Blixt, Blue
  • incorrect: Samourai, bitrefill, Breez, BitKit

Smartphone (please complete the following information):

  • OS: EMUI 9 (Android 9 based)

Settings: share message and link

Describe the bug
Change share message and link

To Reproduce
Steps to reproduce the behavior:

  1. Go Settings > About Bitkit > Share Bitkit with a friend.

Screenshots
image

Onboarding: left space on the splash screen

Describe the bug
On the splash screen there is a space on the left.

To Reproduce
Steps to reproduce the behavior:

  1. Turn on the app
  2. Check the splash screen on the left.

Expected behavior
The splash screen should not have that left space and be fullscreen.

Screenshots

onboarding-ui-splashscreen.mp4

Smartphone (please complete the following information):

  • OS: Android Emulator - Pixel 2

Settings: transparent background on Android

Describe the bug
Sometimes the background of the settings screens is transparent on Android making the wallet screen show through. It may only be an emulator issue. If somebody knows for sure please close this issue. Also noticed it on a real device now.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Settings'
  2. Click on a menu item
  3. Sometimes background is transparent

Expected behavior
The background has a solid black color

Screenshots
Screenshot_20220902-114529
Screenshot_1662052900
Screenshot_1662052905
Screenshot_1662052911

Smartphone (please complete the following information):

  • OS: Android

Onboarding: add terms of service screen

Describe the bug
Terms of service information are missing.

To Reproduce
Steps to reproduce the behavior:

  1. Open Bitkit app for the first time (or wipe your wallet)
  2. Swipe right to all the onboarding screens.
  3. Try to click on terms of service - nothing happens

Expected behavior
Should show the terms of service.

Screenshots

onboarding-terms-of-service.mp4

Smartphone (please complete the following information):

  • OS: Android - Pixel 2

Camera permission not given, can't go back.

Describe the bug
When the app asks for camera for permission and it's rejected by the user. They are presented with a black screen and the only way out is to close the app.

To Reproduce
Steps to reproduce the behavior:

  1. Open app
  2. Click the scan icon
  3. iOS will ask for camera permission, reject it
  4. Presented with a black screen and error message.

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your problem.

Smartphone (please complete the following information):

  • OS: iOS

Additional context

image

cleanup useEffect in LoadingWalletScreen

I get an error:

 ERROR  Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.
    in LoadingWalletScreen (at Slideshow.tsx:232)

Maybe we should do it this way?

	useEffect(() => {
		let unmounted = false;
		// repeat entering animation every DURATION seconds
		const interaval = setInterval(() => {
			if (!unmounted) {
				setKey((v) => !v);
			}
		}, DURATION);

		return () => {
			unmounted = true;
			clearInterval(interaval);
		};
	}, []);

Reactive-native-ldk not running on Android

Describe

Error message happens when I try to run on Android Emulator.
If I revert the last commit (9ee4eae) added by this PR (#211) it works.

How to simulate the error

1 - Pull the code from master
2 - To build for Android run: yarn android
3 - Run: yarn start

Preview

Console message error:

info Reloading app...
 BUNDLE  ./index.js 

 WARN  Require cycle: node_modules/react-native-crypto/index.js -> node_modules/react-native-randombytes/index.js -> node_modules/sjcl/sjcl.js -> node_modules/react-native-crypto/index.js

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  ViewPropTypes will be removed from React Native. Migrate to ViewPropTypes exported from 'deprecated-react-native-prop-types'.
 WARN  Require cycle: src/utils/wallet/index.ts -> src/store/actions/wallet.ts -> src/utils/wallet/index.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: src/utils/wallet/transactions.ts -> src/utils/scanner.ts -> src/utils/wallet/transactions.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: src/store/actions/wallet.ts -> src/utils/wallet/transactions.ts -> src/utils/scanner.ts -> src/store/actions/wallet.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: src/utils/wallet/index.ts -> src/store/actions/wallet.ts -> src/utils/wallet/transactions.ts -> src/utils/scanner.ts -> src/utils/wallet/index.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: src/utils/wallet/index.ts -> src/store/actions/wallet.ts -> src/utils/wallet/transactions.ts -> src/utils/scanner.ts -> src/store/actions/user.ts -> src/utils/wallet/index.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: src/utils/wallet/index.ts -> src/store/actions/wallet.ts -> src/utils/wallet/transactions.ts -> src/utils/wallet/index.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: src/store/actions/wallet.ts -> src/utils/wallet/transactions.ts -> src/store/actions/wallet.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: src/utils/wallet/index.ts -> src/store/actions/wallet.ts -> src/utils/wallet/transactions.ts -> src/utils/wallet/electrum.ts -> src/utils/wallet/index.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: src/store/actions/wallet.ts -> src/utils/wallet/transactions.ts -> src/utils/wallet/electrum.ts -> src/store/actions/wallet.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 WARN  Require cycle: src/utils/wallet/index.ts -> src/store/actions/wallet.ts -> src/utils/wallet/transactions.ts -> src/store/actions/activity.ts -> src/utils/wallet/index.ts

Require cycles are allowed, but can result in uninitialized values. Consider refactoring to remove the need for a cycle.
 ERROR  Error: Exception in HostObject::get for prop 'Ldk': java.lang.NoClassDefFoundError: Failed resolution of: Lorg/ldk/batteries/ChannelManagerConstructor$EventHandler;, js engine: hermes
 ERROR  Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication). A frequent cause of the error is that the application entry file path is incorrect.
      This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native., js engine: hermes
 ERROR  Invariant Violation: Module AppRegistry is not a registered callable module (calling runApplication). A frequent cause of the error is that the application entry file path is incorrect.
      This can also happen when the JS bundle is corrupt or there is an early initialization error when loading React Native., js engine: hermes```

Onboarding: add Bikit logo for brand recognition

Describe the bug
Add Bikit logo for brand recognition.

To Reproduce
Steps to reproduce the behavior:

  1. Start the app for the first time (wipe wallet if you need to reset)
  2. Wait for the splash screen to load
  3. At the bitkit first page the Bitkit logo is not there.

Expected behavior
image

Current Behaviour
image

Smartphone (please complete the following information):

  • OS: Android Emulator - Pixel 2

UI: update all user facing notifications (toasts copy)

Describe the bug
Currently technical (error) messages are shown to the user via toasts in some places.

Expected behavior
Show a non-technical description of the error/event and if applicable a suggestion for the user to resolve the error (retry, restart app etc.)

Toggling Bitcoin Network Requires App Restart

Describe the bug
When toggling networks from "Settings->Advanced->Dev Settings->Bitcoin Network Selection" the app requires a full restart for the change to take effect.

To Reproduce
Steps to reproduce the behavior:

  1. Navigate to Settings->Advanced->Dev Settings->Bitcoin Network Selection.
  2. Toggle to a new Bitcoin network.
  3. Attempt to retrieve an address for the new network.
  4. The address is either empty or returns the old network's address.

Expected behavior
The address for the new network appears.

Smartphone

  • OS: iOS & Android

Bottom Sheet does not close on back navigation

Describe the bug
When the BottomSheet is open, swiping back from the edge of the screen or pressing software/physical back button of the phone does not close the BottomSheet but the app itself.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Send'
  2. Navigate back like described
  3. App closes

Expected behavior
BottomSheet should close not app.

Smartphone (please complete the following information):

  • OS: iOS & Android

Wallet: After restore a wallet, don't ask for backup your seed again.

Describe the bug
After restore a wallet, don't ask for backup your seed again.

To Reproduce
Steps to reproduce the behavior:

  1. Go to settings > advanced > dev settings > wipe wallet data
  2. Go through the start screens and click on the restore wallet button.
  3. Paste your seed and restore wallet
  4. After a while a wallet backup will show up to you.

Expected behavior
If you just restore you wallet tapping your seed, we should not ask for the user to backup the wallet again.

Screenshots
image

Smartphone (please complete the following information):

  • OS: [Android]

Settings: iOS keyboard blocks 'Save Peer' button on Electrum Config

Describe the bug
When the keyboard pops up (iOS), 1/3 of the screen is covered, but the remain page can not be scrolled, so anything on the lower 1/3 of the page is no longer accessible (including the 'Save Peer' button).
Note: this issue has also occurred in other parts of the app - the keyboard gets in the way and can't be removed.

To Reproduce
Go to the settings -> Networks -> Electrum Config page
Try and edit the host or port.
The keyboard pops up as expected
However, there is no way to dismiss the keyboard again (the 'hide keyboard' button is not present and you can't de-focus to hide it that way either).

Expected behavior
The page should scroll when the keyboard is visible, so you can scroll to areas of the page under the keyboard,
or the keyboard should be dismiss-able.
Adding Next / Previous buttons could also help, as iOS normally does when filling in a web form

Screenshots
If applicable, add screenshots to help explain your problem.
Screenshot_17_08_2022__09_59
hiddenbuttons

Smartphone (please complete the following information):
iOS

Additional context
Was trying to set up regtest servers so I could mine some coins

Keyboard lagging when entering payment amount

Describe the bug
When trying to enter the amount to pay (Bitcoin payment, in sats), there is a delay from typing before the number updates.

To Reproduce
Steps to reproduce the behavior:
Press Send from the home screen
Normal
Try and type an amount.
Notice how long it takes for numbers to update

Expected behavior
instant

Screenshots
na

Smartphone (please complete the following information):

  • iOS

Send: NumberPad fiat amount issue

Describe the bug
Typing a dollar amount into the NumberPad with more than 5 digits resets the input

To Reproduce
Steps to reproduce the behavior:

  1. Go to Send Flow
  2. Click on the amount
  3. Type in something like 1111111

Expected behavior
Amount shows as 11,111.11

Screenshots
https://user-images.githubusercontent.com/8538369/185458941-b5ec2cfc-5355-4883-83d0-18bd319d15c3.mp4

Additional context
Bug in OnChainNumberPad, line 84
Probably caused by the "," character in the formatted dollar value

Image covers controls when sending a transaction

Describe the bug
When sending a transaction, the stack of coins image ends up covering the Notes field, making the screen look confused.

To Reproduce
Steps to reproduce the behavior:

  1. Send a payment
  2. Ask to specify the amount and notes.
  3. Add an amount
  4. Tap in the Note field
  5. The keyboard will open and cause hte image to slide up

Expected behavior
Maybe the keyboard should cover the image. It shouldn't end up on top of the notes field though :-)

Screenshots

image

Smartphone (please complete the following information):

  • OS: iOS

Onboarding: fix ui and texts.

Describe the bug

Reviewing the Onboarding screens:

  • Decrease image size
  • Fix text width to match Figma layout
  • Correct the spacing size so that the carousel indicators do not overlap the text.

To Reproduce
Steps to reproduce the behavior:

  1. Wipe your wallet info - settings > advanced > dev settings > wipe wallet data.
  2. Click on "get started"
  3. Swipe right to view all the screens.

Current behaviour

onboarding-ui-text-current.mp4

Expected behavior

onboarding-ui-text-expected.mp4

Smartphone (please complete the following information):

  • OS: Android Emulator - Pixel 2

Non circular app icons

Describe the bug
The Android app icon looks weird with non-circular app logos!

To Reproduce
Install the app on Samsung??

Screenshots
Screenshot_20220815-124827_One UI Home (1)

Smartphone (please complete the following information):

  • OS: Android (Samsung)

Pull to refresh not working on Android

Describe the bug
Pull to refresh wallet not working on Android

To Reproduce
Steps to reproduce the behavior:

  1. Go to the Home/Wallet screen
  2. Pull down from the top

Expected behavior
Spinner appears and sync action runs

Smartphone (please complete the following information):

  • OS: Android (Pixel 5 API 31 Emulator)

Additional context
working on iOS

Wallet: Missing the activity log after restore wallet.

Describe the bug
Missing the activity log after restore wallet.

To Reproduce
Steps to reproduce the behavior:

  1. Go to settings > advanced > dev settings > wipe wallet data
  2. Go through the start screens and click on the restore wallet button.
  3. Paste your seed and restore wallet
  4. You balance will show up after refreshing the wallet, and the activity log is empty.

Expected behavior
The activity log should show up with your recent transactions.

Screenshots
image

Smartphone (please complete the following information):

  • OS: [Android]

Send: Update send flow screen

Describe the bug
The send flow seems to be outdated, please update accordingly, see prototype (send flow steps, elements, size of modal, no button displayed when no action possible ( instead of grayed out))

Screenshots
image

Error: Could not invoke Ldk.updateFees

Describe the bug
Error shows up after loading the app: Could not invoke Ldk.updateFees

To Reproduce
Steps to reproduce the behavior:

  1. Open the app
  2. Wait a little bit and the error will show up automatically.

Screenshots
image

error-ldk-updatefees.mp4

Smartphone (please complete the following information):

  • OS: Android Emulator - Pixel 2

Pull to refresh sets balance BTC balance to zero

Describe the bug
After letting the app run for some time and pulling to refresh to Bitcoin balance goes to zero

To Reproduce

  1. Start bitkit
  2. leave it open for a few mins
  3. pull to refresh on the main page
  4. bitcoin balance is now zero
  5. When the app is restarted, the balance is back to normal

Expected behavior
Balance shouldn't be zero

Smartphone (please complete the following information):

  • OS: iOS

Sent some on chain bitcoin to myself. Activity log stuck on "Sending..."

Describe the bug
Create a new receive address and send some bitcoin to yourself. After the transaction being confirmed, the activity log still shows "Sending...", next to the transaction.

Clicking Boost transactions shows, "Cannot read property 'message' of undefined"

To Reproduce
Steps to reproduce the behavior:

  1. Create a receive address
  2. Send some bitcoin to the address generated in step 1
  3. Mine some blocks.
  4. Transaction is stuck in "Sending..."

Expected behavior
Should we prevent self sends in general?

Screenshots

image
image

Smartphone (please complete the following information):

  • iOS

Lightning onboarding: Crashed trying to set up lightning

Describe the bug
The "Spending and saving" page crashes on iOS and is non-functional. Need to kill the app to get out of it.
I submitted 2 crash reports following this sequence

To Reproduce
Steps to reproduce the behavior:
Tapped the 'Pay Instantly' suggestion, then 'Quick Setup' on the Instant Payments into page.
Arrive at crashed page.

Expected behavior
to not crash and let me slide the slider around :-)

Screenshots
na

Smartphone (please complete the following information):

  • iOS 15.6

Additional context
none

How can / Should I save images to disk instead of Redux?

I experimented with keeping all data in the Slashtags storage and loading it on demand as opposed to caching it in Redux to save on both memory and disk storage. That works ok until you need to list 100 contacts and then you really wish you had a persistent cache.

So I am caching data including Contacts in Redux, but this can get too big and bloated so I am looking for opportunities for optimization.

1- I will validate incoming profiles and slashpay configurations and remove any junk data or strings bigger than expected length before caching it. That would protect from spamming attacks with unbounded data.
2- I think since the profile image is expected to be the biggest item by far in any profile up to 90%, I was thinking we should take a remote image data URL from the profile, save it in user's Images then get that local URL and save it in the cache instaed.

My question is, is 2 worth it? if so how to do that?

Camera isn't always disabled when done

Describe the bug
While using the app I noticed that the iOS 'Camera is on' indicator was enabled. The app was not actively using the camera at the time. I had used it earlier, but did not notice when it went wrong.

To Reproduce
Steps to reproduce the behavior:
Used the camera at some point. Camera stayed on.

Expected behavior
Camera should be off when not in use.

Screenshots
na

Smartphone (please complete the following information):

  • iOS

Activity: update Payment Receive screen

Describe the bug

  • Increase payment modal size
  • Tapping ‘confirming’ or the amount should link to transaction overview (may work already, did not test)

Screenshots
image

App hangs on back gesture on iOS

Describe the bug
Go to wallet details page, try go back by pulling the screen corner, app hangs

To Reproduce
Steps to reproduce the behavior:

  1. Go to wallet details page
  2. try go back by pulling the screen corner
  3. app hangs

Expected behavior
app works

Smartphone (please complete the following information):

  • OS: iOS

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.