Code Monkey home page Code Monkey logo

hub's People

Contributors

bettelstab avatar curdbecker avatar danimoh avatar dependabot[bot] avatar jeffesquivels avatar mar-v-in avatar matthewdludwig avatar mraveux avatar neokrept avatar nibhar avatar onmax avatar paberr avatar rex4539 avatar sisou avatar svub avatar syvb 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

Watchers

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

hub's Issues

[User flow] Provide address to app

A website should be able to request an address from a user to use. This request should accept an optional parameter to require a proof of ownership of that address (through a signed message via the Keyguard).

Read existing accounts in LoginSuccess

The login success screen currently overwrites an existing wallet and re-detects new accounts and assigns a default wallet label and account labels to an imported wallet. However, if a user reimports a wallet, his existing accounts and labels should be used instead of overwriting them.

Signup flow

  • selection: keyguard or ledger
  • call keyguard
  • receive answer from keyguard
  • choose label
  • success screen with info about what happened
  • ledger wallets

[SUGGESTION] Use blockchain height from various APIs during checkout

For the checkout flow, the AccountsManager receives only the most basic data about a transaction, such as recipient, amount, data. All other things, like the sender, fee and validityStartHeight needs to be added by the AccountsManager itself, before being able to sign it via the Keyguard.

Now, I don't want users to have to wait for consensus before signing the transaction (because they have to wait for it afterwards when relaying the transaction, too), so I suggest getting the current blockchain height from various independant APIs (nimiq.watch, nimiqx, nimiqo, mopsus come to mind initially) and comparing them. If they agree with each other within 1 or 2 blocks, then take the lower one. If they are further apart than a certain number of blocks, fall back to network.

This would be magnitutes of times faster than having to wait for consensus, which can 1. take a long time on spotty internet connection and 2. freeze the interface for a couple seconds.

What do think?

AccountsManager must check Keyguard keys on list()

When the AccountsManager iframe's list() method is called to list available keys, the AccountsManager must also call the Keyguard's list() method to be sure all returned keys are actually available.

Furthermore, the AccountsManager should check after create() and import() calls as well, if the key has actually been stored.

Fix demo imports

Current content of "prebuild" folder was copied there manually. We should find a better way how to import code we need for demos.

Waiting for transaction transmission view

After having the keyguard signed a transaction in the checkout flow, show transaction details again and animate success message after successful transmission to the network.

Improve loading time / time until first render

First visible render is only after Vue and essentially the whole app has loaded, which takes a long time on slower internet connection. The loading spinner should already be visible instantly.

Integrate browser warnings

Integrate the browser warnings script we usually use to display warnings on outdated browsers, private tabs, etc..
Note that this should not be bundled into the main bundle to be able to run on old browsers that can not parse the main bundle due to syntax errors.

Maybe @Bettelstab could be interested in setting this up in webpack?

The newest revision of that script is in the getsome / onboarding app.
At this point we should probably also consider providing the browser-warnings via an own npm package.

Mobile onboarding

On mobile device, onboarding component is broader then the Screen.

Guide user through login with new key during checkout

The first page of the checkout flow enables the user to select which login and account to use to pay. The case where no key is yet stored, is not yet covered.

A way to let the user import a key (from file or words) needs to be provided, after which the checkout flow should proceed regularily.

Merchants should be able to set tx validity length

Exchanges mostly only guarantee an exchange rate for a certain amount of time. Thus a merchant should be able to set for how many blocks (~minutes) a transaction should be valid.

We would then use this to offset the validityStartHeight of the transaction.

Mobile layout

Page and content layout needs to be adapted for screens smaller than 460px.

Integrate Nimiq Network

  • Checking existing repos and how to do it best.

Resulting tasks:

  • Adapting Boruca Messaging Lib to new @nimiq/rpc library.
  • Checking @nimiq/network API.
  • Integrating @nimiq/network into @nimiq/accounts.

Logout flow

Enable the user to "log out", to remove a wallet from their device.

Handle non-existing Keyguard wallets

If a wallet was deleted in the Keyguard not through the accounts manager but for example by the browser, flag it as deleted in the accounts manager but keep the database entry such that the user doesn't lose his labels and can reimport the key with his old labels.

Restrict label length

Both wallet and account labels should be restricted to 63 bytes (not 64, to be able to store it in 6 bits while keeping the possibility of having a 0 length (which would then correspond to default labels)).

Note: 63 bytes does not mean 63 characters, as non-ascii characters can be multi-byte. Javascript's String.length is also not usable, as JS uses a 16-bit encoding, not 8-bit, and may thus report a shorter string length than would be in bytes.

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.