Story
As a user I am able to add and remove owners to/from my Safe in order to account for changing access rights.
Acceptance criteria
_Owner list_

_Change owner name_

_Add new owner_



_Remove owner_



_Replace owner_


Found some smaller UX issues:
(1)
When changing the name of an owner and I hit "save", it takes ~2-3s until the name is actually updated. This confused me the first time as I thought it did not save correctly.
(2)

Safe owners are not sorted alphabetically. EDIT: At some point they magically where sorted oO.
(3)
How do are ETH addresses validated?
0x0e329fa8d6Fcd1ba0Cda495431F1f7CA24F442C2) -> all good.3 -> Invalid0x0e329fa8d6fcd1ba0cda495431f1f7ca24f442c2) -> all good.3 -> Valid(4)

When replacing an owner, seems like the threshold is not filled in properly on the left side.
(5)

My nice emoji owner turned into an UNKNOWN magically at some point. I think this happened after a replace or remove owner tx.
@tschubotz
About 3)
We use isAddress function from web3.js: https://web3js.readthedocs.io/en/1.0/web3-utils.html#isaddress
web3.utils.isAddress('0x0e329fa8d6fcd1ba0cda495431f1f7ca24f442c2') -> true
web3.utils.isAddress('0x0e329fa8d6Fcd1ba0Cda495431F1f7CA24F442C2') -> true
web3.utils.isAddress('0x0e329fa8d6fcd1ba0cda495431f1f7ca24f442c3') -> true
web3.utils.isAddress('0x0e329fa8d6Fcd1ba0Cda495431F1f7CA24F442C3') -> false
From the documentation:
It will also check the checksum, if the address has upper and lowercase letters.
web3.utils.toChecksumAddress('0x0e329fa8d6fcd1ba0cda495431f1f7ca24f442c3') -> '0x0E329Fa8d6fCd1BA0cDA495431F1F7ca24F442c3'
So the address 0x0e329fa8d6Fcd1ba0Cda495431F1f7CA24F442C3 has uppercase letters, so it also checks the checksum, but it's not valid, hence it's not a valid address
Hope I got it right 馃槃
Some things that I wrote down as possible improvements:
However, I don't think we have to implement them right now. So I have added them to the backlog to be prioritised.
@tschubotz Regarding 5), I guess this happens when you try to replace with an address thats already in the owner list. It replaces with the duplicate address and overwrites the locally stored name with the new one. But because its not possible to replace with a duplicate address, it gets reset after 1-2 seconds with the old owner but does not have the name stored.
@lukasschor I think we can do 1 and 3 before the PR gets merged, it's pretty easy to implement.
@mikheevm Sure, if it doesn't take much time to implement, it would definitely be cool to have it. :)
@germartinez Another improvement we could make for this menu option is to add the following explanation text: "Add, remove and replace owners or rename existing owners. Owner names are only stored locally and never shared with Gnosis or any third parties."
If it's still feasible to add this in this PR feel free to do so, otherwise, I'll just add it to the backlog for later.