cowprotocol / cowswap Goto Github PK
View Code? Open in Web Editor NEW๐ฎ CowSwap: First CoW Protocol UI
Home Page: https://swap.cow.fi/
License: GNU General Public License v3.0
๐ฎ CowSwap: First CoW Protocol UI
Home Page: https://swap.cow.fi/
License: GNU General Public License v3.0
Describe the bug
The displayed to value does not always follow rounding rules.
In some cases it was just cut and in other cases it is rounded
How to Reproduce
Steps to reproduce the behavior:
Expected behavior
A consistent approach should be followed. Either cut off the numbers after a certain amount of significant digits or apply rounding rules.
Screenshots
Additional context
Could this be due to the fact that the before fee value is a cut/ rounded value and the to value is calculated with the exact amount?
Original issue gnosis/cowswap#389 by @MareenG
Maybe it could be argued is not an error (if we use the wallet to fetch the token info), but if that's the case, minimum we can show a message showing that you need to connect in order to add a token.
Original issue gnosis/cowswap#164 by @anxolin
Appzi allows to internationalize the button and feedback.
Add literals.
Original issue gnosis/cowswap#640 by @anxolin
As mentioned in:
gnosis/cowswap#802 (comment)
There's some issues with the efficiency and reliability of the app related to token lists.
This issue would be to find solutions. Some initial ideas:
Original issue gnosis/cowswap#803 by @anxolin
Many users complain about long time period it takes for a transaction to be executed.
This issue asks to create a proposal how the UX around this topic can be improved for the user.
For example:
Once a transaction has not been executed for 60 seconds, a notification appears "The network currently experiences high congestion, don't worry, we are speeding up the transaction for you"
Or:
A button "Speed up the transaction", when clicked, it says "Don't worry, we already take care of it"
Original issue gnosis/cowswap#677 by @annamsgeorge
Description
It can be confusing for the user that the amount being used for wrapping is the MAXIMUN SOLD, in the case of buy orders.
See this example, here:
Describe the solution you'd like
Give a better feedback to the user. Not sure what's the best option, we could do some wireframes and test it out.
Original issue gnosis/cowswap#569 by @anxolin
Right now, the UI is stateless in the sense, the user can keep sending orders as long as they have a balance
Normally, in exchanges they deduct the balance from the limit orders from the effective balance.
The user would need to cancel orders in
Related:
Original issue gnosis/cowswap#151 by @anxolin
Description
There's many utilities, logics defined in CowSwap that are very interesting to extract to a generic SDK.
Context
Balancer replicated many of these logics by copy pasting, but long term it would be good to be able to provide a simple to use TS library that contains these basic utilities that every UI and service using JS/TS would need.
Proposal
Simple TS SDK that would expose all reusable pieces of code.
Example:
Original issue gnosis/cowswap#793 by @anxolin
We still have some hooks that make requests we don't need.
We should cleanup unnecesary logic, like the claiming logic.
example:
Original issue gnosis/cowswap#111 by @anxolin
Original issue gnosis/cowswap#131 by @anxolin
Is your feature request related to a problem? Please describe.
Adjust confirmation modals to all over design
Describe the solution you'd like
These confirmation modals should be adjusted to the CowSwap design
Original issue gnosis/cowswap#587 by @MareenG
Let's keep track of some content page ideas that would help users understand better the Gnosis Protocol and Cow Swap.
The idea is being able to link this information resources in the web. For each content idea we have to decide where is the best place to add it: in the web, in the dev portal, or somewhere else.
I feel we discussed a few in comments and slack messages. So I'll leave this issue open to collect a few of these ideas.
Some that come to mind:
Bonus, some tools that can help explain the protocol better and can be linked in the tutorials:
@biocom @annamsgeorge @MareenG @avsavsavs Please add any content materials you might think is relevant, or link to a relevant Google docs if this is better handled somewhere else.
Original issue gnosis/cowswap#366 by @anxolin
#160 introduced a feature, to prevent "Specially Designated Nationals and Blocked Persons Ethereum addresses" from using the site
<Blocklist />
Consult with legal, and see if this is useful.
Basically, allows you to prevent an user from using the UI if it's in your BLOCKED_ADDRESSES
Original issue gnosis/cowswap#175 by @anxolin
Description
Placing order after approving token has no feedback.
Order is placed but no pop up nor post confirmation modal was displayed.
It was observed on this version https://pr753--gpswapui.review.gnosisdev.com/
How to Reproduce
Expected behavior
After a swap order is sent:
Screenshots
N/A
Additional context
Reported by @avsavsavs during Kaffeasdasd testing https://pr753--gpswapui.review.gnosisdev.com/
Original issue gnosis/cowswap#765 by @alfetopito
Might be cool to add some cow theme to the error messages (e.g. sad cow or cow tipping image, spilled milk...)
Original issue gnosis/cowswap#339 by @MareenG
From commented in PR: gnosis/cowswap#119 (comment)
https://docs.cypress.io/api/commands/tick.html#Syntax
Also Re-fetched when it expires
would be good to attempt to write in a more concise way
Original issue gnosis/cowswap#125 by @anxolin
Description
Show clearly when transactions are gasless, or if the transaction is not gassless, show an estimation on the cost on gas
Details
Cowswap is a gasless exchange, but in order to be gasless, you need to first enable tokens for trading.
Enabling token requires a regular Ethereum transaction, which needs ETH for gas.
Same applies for ETH. Since it cannot be sold directly, you have to wrap it first, which requires an Ethereum transaction.
Describe the solution you'd like
I would love to see clearly in every transaction details, when if is a:
If it's an ethereum transaction, I would like to know, how much ETH should it cost, and what's the USD at current prices.
Original issue gnosis/cowswap#571 by @anxolin
Not sure if this intended but I can disconnect all wallets except Metamask.
If I have selected Metamask I only can change my wallet.
Original issue gnosis/cowswap#227 by @MareenG
original comment:
nit: you can count the time that has been shown, and if it's less than the minimum animation time, you hide after the time difference
const animationStart = Date.now()
...
if (showCow) {
const timeRemainingAnimation = Math.max(0, LOADING_COW_TIMER - Date.now() - animationStart)
setTimeout(hideCow, timeRemainingAnimation)
}
Originally posted by @anxolin in gnosis/cowswap#735 (comment)
Original issue gnosis/cowswap#752 by @W3stside
Description
Add some dimension to analytics, that shows the wallet name if connected with WalletConnect
Original issue gnosis/cowswap#618 by @anxolin
There's an (unconfirmed) suggestion, that we might want to create an incentive for making a % of discount to users that hold GNO.
Most likely, this incentive should be done in the backend. Probably, we should move the whole FEE calculation to the backend.
Open questions:
Original issue gnosis/cowswap#203 by @anxolin
Possible issue:
Possible solution:
A very simple self-hosted analytics script could be used in parallel. Either self built or by self hosting solutions. This allows use to compare metrics from two different sources and ensure our metrics are less skewed. Especially if feature decisions will be taken based on metric data.
Possible alternatives (in parallel):
My assumption is, it needs to be self hosted or simply resort to some type of server logs (if available). Reason being that it's likely these alternatives are blocked as well if not self hosted. Even then, some blockers also match for more than just originating domains for the requests (e.g. pattern/script matching).
Original issue gnosis/cowswap#591 by @fairlighteth
Is your feature request related to a problem? Please describe.
The new workflow works nicely.
However, after one wrapped ETH it might be cool to set the from token automatically to WETH.
It would be cool to be directed to this screen
Just a suggestion :) as I felt stuck for a second after wrapping ETH.
Not sure if this can be done
Original issue gnosis/cowswap#508 by @MareenG
It's doing polling, should we subscribe to new blocks and update on every new ethereum block. Maybe with a small delay to let the backend update?
Original issue gnosis/cowswap#621 by @anxolin
Description
Don't wait for the approval to allow the user to sign transaction
Details
Technically, you can send the offchain transaction before the approval/allowance is done.
In order to allow a quicker flow, it would be good to allow to send orders right after the user sends the approval.
Describe alternatives you've considered
It would be good to consider how is the best flow. We could make some wireframes, but the rough idea is:
Additional context
Feedback:
https://twitter.com/austingriffith/status/1387429951935111171?s=20
Original issue gnosis/cowswap#556 by @anxolin
[good to have]
End to End test for gnosis/cowswap#165
To make it reproducible we can fake the REDUX triggered action (easier than faking the eth event)
Some other e2e already do this.
Original issue gnosis/cowswap#168 by @anxolin
0x27dce1ec4d3f72c3e457cc50354f1f975ddef488
Responsible code:
<HashLink to={UNSUPPORTED_TOKENS_FAQ_URL} target="_blank" onClick={e => e.stopPropagation()}>
File:
src/custom/components/SearchModal/CurrencyList/index.tsx
L91
Original issue gnosis/cowswap#787 by @fairlighteth
This issue, although is not a critical, it feels like low effort, and improves a little the ETH workflow.
The idea is that, instead of showing the balances, it would be nice to see the resulting balances AFTER I perform the Wrapping.
Also, if ETH balance is low, maybe it should even be red, like in this case:
Something like:
1.8 ETH ----> 1.8 WETH
balance after: 0.1 ETH balance after: 3.5 WETH (edited)
(ofcourse in the example, i removed decimals to simplify the example, but it should have decimals)
Original issue gnosis/cowswap#804 by @anxolin
This is not for devs, but a UX research topic:
Lets take @fairlighteth 's mock ups of different ways the fee can be displayed to the users and try to find out which version is most attractive for users.
Original issue gnosis/cowswap#676 by @annamsgeorge
From last test session
If possible to suggest gas price we should suggest a higher one as default is too low (e.g. on Opeara Mobile)
Suggestion
Add the average gas price in all Ethereum transactions instead of relying in the Wallet.
Nice to have
We could suggest a gas price. Some UIs also allow you to choose slow/medium/fast which is great.
This could even be done together with this proposal #571 so we, for Ethereum TX we present a nice UX where user selects his gas price. For meta-transactions we could use the gas price to show how much you are saving in gas.
Original issue gnosis/cowswap#708 by @anxolin
User request to add support to https://minerva.digital/
Original issue gnosis/cowswap#577 by @alfetopito
In some cases, the estimated amount to be sold calculated for buy orders shows rounding that is sometimes off
Notes:
.toSignificant(6)
on the trade.inputAmountWithFee
which should round appropriately, but seems to truncate or round incorrectly.Original issue gnosis/cowswap#641 by @W3stside
If I am connected to a wallet in a mobile device, I'm disconnected when I refresh the page
Open the app in a mobile device
Connect to a wallet
Refresh the page
AR: wallet is disconnected
ER: wallet should remain to be connected
Original issue gnosis/cowswap#297 by @MareenG
As soon as walleth/walleth#527 is solved, we can remove WalleETH from the unsupported wallet lists.
More context: gnosis/cowswap#716
Original issue gnosis/cowswap#717 by @anxolin
Description
This is only a suggestion:
I noticed the icon for the different pop up modals are the same eventhough the action is different
The tikmark reflects that the action was successful but it might also be cool to reflect the actual action with a corresponding icon:
Proposal
e.g.
Submitted:
The spining wheel similar to the Explorer
Cancled:
also see #860
Original issue gnosis/cowswap#867 by @MareenG
Currently token allowance approval happens only once all fields are set and the swap is ready to go, in order to separate the token approval from trading, the system could check for allowance as soon as the user fills the "from" field. This way the user can start approving tokens at any time without any commitment to trading them now.
Testing and if needed asking for approval at this stage
Original issue gnosis/cowswap#763 by @NanoOrca
Description
Super minor request.
Tooltips open when you click in the question mark icon, but if you click again, they don't close.
You can click anywhere and it would close, well anywhere but the question mark icon.
Shouldn't we allow this? It made me think at first it was not working ok
Original issue gnosis/cowswap#697 by @anxolin
Low prio.
Some possible ideas on different directions:
Original issue gnosis/cowswap#598 by @anxolin
Why??, if it's 404 you want to handle, I think you should handle that case.
Originally posted by @anxolin in gnosis/cowswap#187 (comment)
Original issue gnosis/cowswap#202 by @W3stside
For reference: https://uniswap.org/blog/ipfs-uniswap-interface
Uniswap serves the content using DNS/IPFS:
Also they use IPNS.
Original issue gnosis/cowswap#413 by @anxolin
Describe the bug
After ETH wrap I see "Insufficient ETH balance".
I would expect to be able to click Swtich to ETH
after wrapping ETH to continue the Swap
How to Reproduce
Steps to reproduce the behavior:
wrap my ETH
Insufficient ETH balance
is shownScreenshots
Additional context
I believe somewhere in the state it's too eager to show you there's not enough balance for the order, without taking into account the wrap that was just performed to use WETH instead of ETH.
This happened in Mainnet. I expect this is harder to notice on Rinkeby given tx costs way less ETH
Original issue gnosis/cowswap#609 by @alfetopito
There's an issue renewing the fees, it doesn't always happen.
We can split this into 3 tasks if it makes it easier
Original issue gnosis/cowswap#340 by @anxolin
During the trading challenge, we were working with CRC tokens.
The tricky bit is that everyone had their own CRC, and we couldn't differentiate between each other.
When adding a custom token to the UI, we'd like to be able to give an alias to it.
Original issue gnosis/cowswap#403 by @alfetopito
Review service worker functionality brought in #160
Original issue gnosis/cowswap#171 by @anxolin
Describe the bug
When setting a custom slippage around 5% a wrong notification is shown for some values
How to Reproduce
Steps to reproduce the behavior:
Enter a valid slippage percentage
Expected behavior
Your transaction may be frontrun should
be shown
Original issue gnosis/cowswap#395 by @MareenG
Describe the bug
The search input for token addresses is case sensitive
How to Reproduce
Steps to reproduce the behavior:
Expected behavior
Ideally, the search bar shouldn't be case sensitive
Screenshots
Pasted from Etherscan:
Change Cases
Additional context
I assume this is low priority as I guess most people will copy and paste from Etherscan
Note: Uniswap inherited
Original issue gnosis/cowswap#461 by @MareenG
All this stuff is copy paste,
I believe u didn't create a Mod in this case, becase src/state/swap/hooks.ts
existed already, and had some copy paste.
I won't stop the approve, but only if we promise a refactor, where we create the Mod version of this hook, and only override the parts we need to change.
Could you open an issue for this?
Originally posted by @anxolin in gnosis/cowswap#200 (comment)
Original issue gnosis/cowswap#205 by @W3stside
Using Wallet Connect, not able to sign the swap message.
To be more precise, there's no prompt at all in the wallet app when a signature is requested from the web interface.
I couldn't yet found any reference regarding their app.
There are a few repos available on github, but none that I could link to the mobile wallet, so I assume it's all closed source.
I've reached out to their support through the website (help.crypto.com)
It says it takes a day to reply. Let's wait for it ๐ค
Original issue gnosis/cowswap#610 by @alfetopito
The orderbook API introduced a new error when transferring native token (Ether, xDAI) to a smart contract receiver.
Here is relevant commit: gnosis/gp-v2-services@5481c6d
Original issue gnosis/cowswap#743 by @nlordell
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.