mymonero / mymonero-app-js Goto Github PK
View Code? Open in Web Editor NEWThe JS codebase for the MyMonero desktop apps
License: BSD 3-Clause "New" or "Revised" License
The JS codebase for the MyMonero desktop apps
License: BSD 3-Clause "New" or "Revised" License
tooltip text to inform user
better way to phrase "not enough spendable outputs" - differentiate balance and spendable outputs copy
This item depends on the Contact meta data issue #10
box shadow would be "inset 0 0.5px 0 0 rgba(255,255,255,0.10)" but where/how to add this in order to be to-design is the question. design pic available. the inset box shadow, per design, curves along the window's corner radius
when already on send page, if redundantly tapping send tab, clear screen - UNLESS currently sending or otherwise locked
for info, look at how popping to root on redundant tab item tap is done
get dropping QR code onto dock icon working - open-file for mac but parse process.argv for win… linux?
This was in the v1 design as another "action button" next to "Choose File", but I de-prioritized it for MVP.
Code interface needs to be platform agnostic (see FilesystemUI / Choose File)
Obviously makes a lot of sense to implement for mobile under Cordova
How to implement camera under Electron: http://ourcodeworld.com/articles/read/134/how-to-use-the-camera-with-electron-framework-create-a-snapshot-and-save-the-image-on-the-system
electron: exclude all *.cordova.* and cordova_*/* and tests via electron-builder rule or some such
document updates to electron folder names (if any), electron build file filtering of cordova
I figured and instrumented that part of this was loading emojione - but optimized that. Animation still seems choppy. Instrumentation shows velocity.js taking time, but not clear if that's just the caller of what takes time.
Possibly look into translate3d instead of left/top animations; connected to Cordova optimization issue
related issue: #40
As info sent by server on pending/confirming txs gets fixed…
https://www.npmjs.com/package/node-notifier
bounce dock when new tx comes in, tx confirmed, etc
badge number? related issue: #44
it’s not possible in the UI to add a wallet w/only addr & view key but… if a wallet has no account_seed or its acct seed is "" then its mnemonic cannot be shown and it should be messaged that the wallet was imported with public addr, view key, and spend key only
set app badge for number of unseen notifications BUT ONLY when app is in bg (electron should be easy but how to do that in cordova?) - and clear the badge when user comes back to unlocked app and after they unlock the app - shouldn't really be any badges on a locked app anyway - so maybe just clear badge no matter what when user comes back to app
related issue: #17
comments available in drag/drop code - See SendFundsView.web.js, RootTabBarAndContentView, etc
problem is, dragleave doesn't work if tab switched on dragenter. think it is related to elements being removed from DOM during drag
and when is that necessary and actually desired?
after server updated to support - detect flags account actually has started importing and/or done importing; after account has fully caught up once, flip needs import flag back to 0 (or just use new flags rather than keep local state); toggle Catching Up/blocks behind -> Importing/% left and also to prevent showing "Catching up" before a needed import actually done
For given modal/stack nav view, check whether back and/or cancel btn is enabled. (Views manage that themselves) to tell whether to allow a cancel-by-escape.
need to additional animation component on stack nav push:
On a push, the underlying (from / old) view should translate left-wards from origin
On pop, the underlying (to / old) view should translate right-wards to origin
cmd-r to "Refresh wallets/Sync data" and (on desktop?) reduce polling freq to 1 per min?
think this key-command/menu item would go in the View menu
require password in order to send funds? require password to delete everything? require password to remove wallet? require password to view wallet secrets?
wallet details balance view: dark swatch txt clr odd text rendering (so, white clr txt) is forced to a visually heavier font weight than light theme. any way to fix?
So, @fluffypony will give an update in a little while with more expansive info to explain why we are posting this as a Github Issue with a request for feedback.
(tl;dr) Name/emoji + XMR/OA address + optl payment ID != Complete Contact abstraction for a real Monero wallet app.
For starters, I'd like to lay out the actual issue I found.
We designed the Contacts model in the information architecture to exist ideally as an opaque/black-box UI abstraction over transaction recipient information plus some metadata like Name/Avatar. In other words, we wanted users to be able to intuitively understand things in terms of sending to and receiving from people (Contacts) instead of managing specific payment ids.
What this would mean in the UI is that a savvy user could input manual payment IDs into a Contact but on the Send Funds and Create Funds Request screens, the user would be able to simply select their desired funds recipient or requestee and let MyMonero handle the payment IDs. However, after having built the Send Funds screen, an issue was noticed.
Let's say I have created a Contact for @fluffypony, and he has created a Contact for me in his app. We just use XMR addresses, so the app generates payment IDs for us. I could have alternatively used Riccardo's OA address, but he doesn't specify a payment ID there at time of writing.
If Riccardo wanted to send me 1 XMR, he would go to the Send tab, enter '1', pick me as a contact, hit Send, and he'd be done.
But suppose I just did some dog-sitting for him while he was traveling, and he needs to send me 2 XMR for dog food. I would generate a kind of invoice for him in the form of a Request, by selecting Riccardo as the recipient in the Request contact picker. The payment ID which I want him to use in his sending of funds to me is placed in the Funds Request URI/QR code. That is so that when I get his transaction back in my history, I can tell it came from him, with the known payment ID.
So I send him the Request QR, he drags it onto his Send screen, and it locates me as a contact in his address book and shows me on-screen. But there's an issue there. If we use the payment ID info from Riccardo's contact record for me in his app, it will have a different payment ID than what I sent in the Request.
Aside: For that reason, the application code for the Send Funds page explicitly chooses the payment ID which exists on the Request, if any, and only uses the payment ID for the Contact if the user is explicitly choosing that user. (See d5b60f6)
So, in summary, there's an issue of ambiguity in specifying what a payment ID on a Contact means. The payment ID that Riccardo would have on his contact record 'Paul' would be for when he wants to "Receive from" the Contact, but the payment ID that Riccardo receives from me on a Request QR would be for when he wants to "Send to" that Contact. This implies the existence of at least two categories of payment IDs which should be stored on a Contact.
Storing payment IDs as such, a Contact would no longer map to a singular payment ID.
And, since a user might reasonably want to be able associate a given transaction with a Contact (i.e. by right-clicking on it in tx history and tagging it with the Contact), or because I may send Riccardo different requests, for different jobs done, Contact records probably need to be able to track a list of payment IDs per each category.
However, with the advent of Monero subaddresses, and the existing preference of encrypted payment IDs via integrated addresses, it wasn't clear whether this level of support for clear payment IDs ought to be implemented.
There are additional IA concerns which Ric will highlight.
Picture of design is available
this is currently already implemented in component form on the existing password entry and new password entry views
currently, validation errors are currently generally being displayed via the inline message layer - the dismiss-able orange box atop most forms
displaying them on specific fields probably will require enhancing the business logic to specify which input key(s) was/were problematic
review design to see where else this is implemented
put actual fixed mixin amount in a tooltip copy on Send Funds; rename mentions of mixin to 'ring size'
expand/add tooltip explaining funds will be locked on both sending and receiving side for short period of time until transaction is confirmed and that monero constructs transactions by using outputs the sender has available, so additional funds may be locked while pending but will be returned as change
funds requests: observe swatch change in wallet w/relevant addr, update wallet clr prop, emit, reconfig cell, details view
add up/down arrows + enter key to contact picker results highlight to select contact - similar issue for customselect exists (#22)
wallet details: txs list: date format eg FEB 6, 2017 -> 6 FEB 2017; possible to retain usage or benefit of toLocaleDateString?
possibly handle receiving URL on launch of app by hanging onto it while user is entering their pin… but that can become complex due to state so must be implemented carefully
an oddly permissive CSP was needed to get scripts executing under Corcova - esp in latest safari - see if we can restrict it more, perhaps by usage of hashes - will need to discover more info about what's actually being refused ; also, do we really need to allow gstatic? (i had read we do)
see local_modules/MainWindow/index.cordova.html
The custom switch would need to be implemented for this. related: #17
There's already a scroll animation implementation in commonComponents_forms. Note its usage of vendored and modified velocity.js version
enter key to select hovered cell; up/down; type to select name
similar issue for contact picker exists (#30)
wallets list empty state: when pw has already been entered but no wallets present use different emoji and message - configure before set visible saying not "welcome" but something more like "no wallets… yet"
currently just shows total amount
would be ideal if server could hang onto this info to provide cross-import/cross-device support but may not be possible
related issue: #54
should VDA/VWA traverse up tree to see if layer is truly in DOM, and if not, cancel? (and is there actually a good way to detect and cache this?) since, on VDA, we cascade down anyway
escape btn to cancel change pw ; enter key for 'next field' in enter new pw
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.