Chat3 Features
###### tags: `Chat3`
===
# Login
1. User can login by connect their wallet
2. User can login as guest by clicking one button, system will generate a random account for him.
3. In guest mode, user can connect their wallet:
1. If the wallet was already connected to other account before, then we prompt a window to ask him to login to that account instead
2. If the wallet is never connected, then we link this wallet address to the current account. All messages preserved.
4. In case of spamming, user will always login to the same guest account unless it's already connected
## Addresses
1. One account can have only 1 address (for now).
2. One address can only be linked to 1 account.
# Username
1. Non-guest users will automatically get a random number as their initial username
2. Usernames are unqiue(can't be same as others') and can be changed after
# Contacts
1. User can set their contacts' nickname
2. If nickname is set, app display contacts' nickname instead username
3. Shows a "people you might know" list as recommendation to add to contacts
## Adding a contact
1. User can add people to contacts by:
1. Their wallet addresses
2. Their username
3. Their ENS address (xxx.eth)
# Messages Page
1. Shows list of conversations
2. Each list item shows users' nickname/username and latest message in the conversation
3. Shows a button to go to "Message Requests"
## Message Requests
1. Shows list of conversations from guest accounts
2. (What messages goes into this list? TBD)
# Conversation Page
1. Shows messages in a conversation
2. User can block the conversation
3. Has button to link to User Profile page
4. If user sends a message in conversation in Message Requests list, the conversation will be moved into normal messages page
5. If the current user is a guest, show an obvious sign
# User Profile
1. Shows user's username
2. Shows user's nickname
3. Shows user's badges (No badges currently, TBD)
## Others Profile (User A seeing others' profile page)
1. Can set user's nickname
2. Can block this user
## My Profile (User seeing his own profile page)
1. Can change username