Coder Social home page Coder Social logo

neolink's People

Contributors

austinhinderer avatar comountainclimber avatar deanpress avatar hal0x2328 avatar masterneuron avatar nasirhm avatar slipo avatar zeshon 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

Watchers

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

neolink's Issues

Add testing framework

Use jest and check out how neon-wallet does it. Write at least some initial tests.

Debug Logging

Review all debug logging to verify the proper data is being logged for all outcomes. The error checking may be the main culprit here but a separate issue is nice for tracking.

We should probably implement debug flag mechanism as well.

Add Redux Devtools support

By accessing the extension directly, we have much better support for dev tooling.

chrome-extension://[CHROME_EXTENSION_ID]/popup.html

We should add redux dev tools for development to enable better inspection of the store at runtime.

Send update when login status changes

Currently the page doesn't get an update, when the user does login or logout of NeoLink. Therefor he can't notify the user. Please send the same on login/logout message as on page load to the user, so the page knows about the status of NeoLink without constantly polling it.

Web pages should be able to open the popup to prompt the user to initiate a send

This is partially implemented in the development branch in React.

Here's the original code:
https://github.com/CityOfZion/NeoLink/blob/master/src/js/content.js#L71
https://github.com/CityOfZion/NeoLink/blob/master/src/js/background.js#L116

We need that in the React version. Note that there is a separate issue to make Send Invoke actually work #13.

Popup in React version happens here:
https://github.com/CityOfZion/NeoLink/blob/development/src/js/background/popupWindow.js#L31

My thought is to create a new 'popupMessage.html' and pass the parameters as GET params. Then react can have a route for 'popupMessage.html' and show relevant panes based on the params.

Display issue with less than 15 transactions

I have a wallet which only has 2 transactions. When I view the transactions I see
Viewing 15 of 2 transactions
15of2transactions

only transactions are listed but only one of them has a descriptor (IMAGE)

CI integration

Use CircleCI. Check out how neon-wallet does it. We should also have prepush checks on linting and tests (if testing is implemented when this is done)

Feat(UI): Gas Icon

If a Gas icon has been approved, let's keep a reminder to use that on transaction card et al.

Network Selection (Action vs Query)

This may not be an issue right now, but I'd like to take note of it and open discussion.

Currently, the network selection is done by custom, "TestNet" or "MainNet" as per the usual community behavior. Internally to Neolink, this means for queries that it uses Neoscan REST to determine endpoints by API and for actions it uses neon-js api.neoscan to acquire RPC nodes for transactions.

I'm pondering how this could be or become an issue, say in the case where one is down and another is up. This is as much as a reminder as a forum.

Robust error detection in the network selection code with good user feedback may be all that is needed.

Review dApp SC Message Passing

Look at how dApps are passing messages to NeoLink for sc execution now and see if it is the best way or if we need another approach.

Feature: Switch Node Option

I was doing some testing of neolink on testnet and just realized that when it picks a bad node unusual things can happen.

We should have a way for the user to easily see a node and try another one that is equally or lesser ranked.

dApp Open Authorization Tab

Can the content.js (dApp side) pop open the authorization tab in NeoLink to prompt the user to authorize a transaction? If not, should we use a modal message that prompts the user to login / authorize in NeoLink

Add linting

Since it's on the roadmap and a new UI is being built, we should get linting running before going too deep. I have a set of react lint rules I'm using for cityofzion.io that will work here as well.

User Configurable API Selector

Add to settings a way for the user to choose type of API to use for all queries:

  • neon-js
  • neoscan
  • neolink api (working on this now as a separate task)
  • fallback mechanism with preference?

dApp Connected Wallet Address

Add a feature to allow a site to get the address of the connected wallet. Work out what kind of controls we should have around this

can't build on windows10

os :widnows 10
nodejs:8.9.2
npm:5.5.1

PS D:\lab_git\NeoLink> npm run build

[email protected] build D:\lab_git\NeoLink
NODE_ENV=production node utils/build.js

'NODE_ENV' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] build: NODE_ENV=production node utils/build.js
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR! C:\Users\TerryLiu\AppData\Roaming\npm-cache_logs\2018-02-28T06_05_56_735Z-debug.log

2018-02-28T06_05_56_735Z-debug.log

0 info it worked if it ends with ok
1 verbose cli [ 'C:\Program Files\nodejs\node.exe',
1 verbose cli 'C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js',
1 verbose cli 'run',
1 verbose cli 'build' ]
2 info using [email protected]
3 info using [email protected]
4 verbose run-script [ 'prebuild', 'build', 'postbuild' ]
5 info lifecycle [email protected]prebuild: [email protected]
6 info lifecycle [email protected]
build: [email protected]
7 verbose lifecycle [email protected]build: unsafe-perm in lifecycle true
8 verbose lifecycle [email protected]
build: PATH: C:\Program Files\nodejs\node_modules\npm\bin\node-gyp-bin;D:\lab_git\NeoLink\node_modules.bin;C:\Program Files\Docker\Docker\Resources\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\Program Files\Microsoft SQL Server\120\Tools\Binn;C:\Program Files\Microsoft SQL Server\130\Tools\Binn;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn;C:\Program Files\Microsoft SQL Server\100\Tools\Binn;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn;C:\Program Files (x86)\Microsoft SQL Server\110\DTS\Binn;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn;C:\Program Files (x86)\Microsoft SQL Server\130\DTS\Binn;C:\Program Files\OpenVPN\bin;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit;C:\Program Files\dotnet;C:\Program Files (x86)\OpenSSH\bin;C:\Program Files\Java\jdk1.8.0_131\bin;C:\Program Files\Java\jdk1.8.0_131\jre\bin;C:\Program Files\nodejs;C:\Program Files (x86)\Yarn\bin;C:\Program Files\Git\cmd;C:\Users\TerryLiu.app;C:\Users\TerryLiu\AppData\Local\Microsoft\WindowsApps;D:\我的坚果云\代码库\neo-compiler\neon\bin\Release\netcoreapp1.0\win10-x64;C:\Users\TerryLiu\AppData\Roaming\npm;C:\Program Files\Microsoft VS Code\bin;C:\Users\TerryLiu\AppData\Local\Yarn\bin
9 verbose lifecycle [email protected]build: CWD: D:\lab_git\NeoLink
10 silly lifecycle [email protected]
build: Args: [ '/d /s /c', 'NODE_ENV=production node utils/build.js' ]
11 silly lifecycle [email protected]build: Returned: code: 1 signal: null
12 info lifecycle [email protected]
build: Failed to exec build script
13 verbose stack Error: [email protected] build: NODE_ENV=production node utils/build.js
13 verbose stack Exit status 1
13 verbose stack at EventEmitter. (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:280:16)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at EventEmitter.emit (events.js:214:7)
13 verbose stack at ChildProcess. (C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack at emitTwo (events.js:126:13)
13 verbose stack at ChildProcess.emit (events.js:214:7)
13 verbose stack at maybeClose (internal/child_process.js:925:16)
13 verbose stack at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)
14 verbose pkgid [email protected]
15 verbose cwd D:\lab_git\NeoLink
16 verbose Windows_NT 10.0.14393
17 verbose argv "C:\Program Files\nodejs\node.exe" "C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js" "run" "build"
18 verbose node v8.9.2
19 verbose npm v5.5.1
20 error code ELIFECYCLE
21 error errno 1
22 error [email protected] build: NODE_ENV=production node utils/build.js
22 error Exit status 1
23 error Failed at the [email protected] build script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

Component refactor

I'd like to suggest a number of changes to the components. Please let me know if you have any thoughts on these suggestions.

  • Many components outside the container directory are connecting to the redux store. Instead of connecting to the redux store from our components, we should rely on containers to connect to the store and pass the data down via props.
  • Many components don't take advantage of the lifecycle, so they could be converted to stateless functional components.
  • My understanding of container components it that they handle interaction with the redux store, then pass their data down to your components which actually render their HTML. This helps create a separation of concerns between stateful interactions and stateless rendering. It also helps compartmentalize your testing structures. Currently, most of the container components handle some form of their own rendering. My suggestion is to leave the container components in charge of talking to the store and passing data via props to other components which handle the actual HTML rendering.

Feat(UI): Refresh Transaction Button

Currently, the Account Info Amounts have a refresh button, but the Transaction list does not and it does not refresh automatically. One has to go to another card then come back to refresh transactions.

I propose a UI enhancement to create a refresh button in the Transaction list section.

Unable to add token hashes for testnet

In order to test wallet, tried to access CTX from wallet, but there is no option to load token into the wallet so it doesn't show in my wallet. Can user be allowed to add the token type to the wallet? Easier than having to do it on dev side for each one?

Minor: unnecessary scrolling to see bottom of app

Sent Funds doesn’t fit into one screen without scrolling … looks like it is just cutting off midway and no scrollbar present or no way to change size of wallet screen - consider decrease in spacing to allow it to completely fit - future check to see if impacted by system font sizes

Minor - Clearing Highlight for next visit

Did not clear the previous button highlight when I went back to screen after sending initial amount (Steps: #Opted to send gas; filled out required fields; hit send; saw message; checked the transaction info on neoscan-testnet.io; reopened neolink from chrome icon)

Neoscan support

Ability to add a privnet with neoscan in front + do balance/transaction queries to it.

Pin Flyout Option for Account Label on Home Screen

Add a pin option to the flyout for the account label on the home screen.

Rationale:

If you are reviewing a deep list of txs, you don't have to go all the way back up if you want to perform an account action. You also get modular screen real estate.

Isolate material components from CoZ components

The material design components expose their own css in components which breaks proper CSS Module isolation, and causes issues with component tests. We should isolate the material components behind our own API to prevent CSS Module conflicts and make it easy to update our code if we want to remove the material components later.

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.