Find consensus on naming and semantics of concepts we use to design and implement features related to user and chat management.
Please comment on the labels and definitions outlined below. Any disagreement, concerns or comments about applying them. Biggest suggested changes are:
- Move away from all use of the word [Contact] because of its ambiguous meaning.
- Introduce an additional layer [Assigned user]
- Introduce [Groups] that a user can be assigned to, [Trusted users] being a default group. This offers more flexibility going forward to manage privacy settings and is in line with a more clear distinction in the UI between [Blocked users] and [Trusted users] shortterm.
Note that labeling may or may not appear in the UI. This is a seperate conversation that can be more constructive one we have accurate and agreed on definitions.
In recent weeks inconsistent references to contacts and actions related to them surfaced. For example when [Removing] a [Contact], on a contact’s Profile screen, this contact would still be visible in the [Profile] > [Contact list] after restarting the app. https://github.com/status-im/status-react/issues/3585
Evidently this example occurs because a contact is never really added or removed. It’s merely shown and hidden. This requires taking into account dependencies such as when to show [Add to contacts] and generally increases the risk of inconsistency.
Explicit call for anyone with experience in documenting OWL and RDF schemas to contribute to add more structure to these concepts.
Anyone you have exchanged a 1-to-1 message with.
A labeled container that can hold a list of users that a given user considers the same, e.g. ‘Trusted users’.
- A user can only assign others users to a single group.
- ‘Trusted users’ is a default group
- Sharing settings can be specified by group
- Depending on the perspective, groups can be those that a user has been assigned to and those that the user as created and assigned others to.
Anyone you have assigned to a group, e.g. ‘Trusted users’
- The user who assigns or has assigned another user to a group (i.e. marks another user as a particular type of user).
- The user who is assigned to a group by another user (i.e. marked as a particular type of user).
A user who has been assigned to the group ‘Trusted users’.
- a.k.a Contact
List of users who have been added to this default group.
- a.k.a. Contacts
Mutual trusted users
Two users who have assigned oneanother to a user group ‘Trusted users’.
dd March 20, this includes chosen avatar and chosen name. Chosen name will be removed as part of Core Profile epic. Read more: Profile information Structure - Please review
Diagram of actors
Collection of messages between 2 contacts who may or may not have assigned oneanother.
Collection of messages that are assigned to a topic that anyone can tune into and fetch.
Collection of messages between a set of max 10 individuals.
Actions by user and chat
View information about any user, where the visible information differs depending on if and what group this user has been assigned to.
Assign to group (at the moment Add to Contacts)
Assigning another user to a group, e.g. ‘Trusted users’
Send connection request
Request by a user to be assigned to the default ‘Trusted users’ group.
- This may or may not require the requester to add this user to the default ‘Trusted contacts’ group themselves.
Accept connection request
For a user to grant a request to add another user to a default ‘Trusted contacts’ group.
Start a 1-to-1 chat by sending an initial message to another user. Users may or may not be assigned by eachother to a group.
Receive an initial message from another user. The other user may or may not be assigned by eachother to a group.
Send transaction to another user. This action is disabled until the other user has assigned the user sending a transaction to a group that enables visibility of the wallet address.
==We currently still allow sending a transaction to any profile. Meaning we actively expose the wallet address. I’ve found that his has been and is a topic for debate and will address this in another discuss post.==
Send transaction request
Sending a transaction request, that includes ones wallet address, to another user.
==We currently only offer this option in a 1-to-1 chat regardless of whether someone is a trusted user. Is this a command we want to enable in public and group chats? For example to request donations==
Share profile link
View, Select and Copy/Send another user’s contact code to another person or entity inside or outside of Status.
==At the moment any user can Share another user’s profile link. Similar to Send transaction, this is topic for debate and I’ll address this in another discuss post==
Invite to group chat
Send a message to users inviting them to a group chat. Only users who receive an invite can join.
Remove the user from an assigned group. This only impacts the client of the assigner. The other user will no longer receive profile updates. Any profile information that has been shared will remain visible.
Removes all previously sent messages and no longer shows new messages sent by this user. The other user is not notified of being blocked, can continue to send messages and profile information that has been shared will remain visible to them.
The blocked user can create a new account, and send a message to the user who blocked them, given that they can identify them by their random name in chat or have access to their Contact code. The user who blocked them will see their message with a blue circle on their avatar, signifying them as a ‘new’ user.
Remove the chat from the chat list. Users of the chat are still able to [Send a message] and thereby add the chat back to the [Chat list].
Send a message from another users profile or by adding their ENS name or contact code in Start chat.
Stop listening to a topic. The user will no longer see this channel or its messages as the client will be unsubscribed from this channel and will no longer fetch messags for this topic.
Start listening to the public channel’s topic. The channel will be added to the chat list.
A channel is not ‘created’, rather a first message is sent, registering a topic it belongs to. From thereon out, the topic is included in the user’s Chat list as a channel and anyone fetching messages for this specific topic will see the topic in their chat list and can view and send messages belonging to the same topic.
We currently do not distinguish between sending a first message or joining an active chat.
Select contacts from the default assigned group ‘Trusted users’, label the group, and send an invitation.
Select Trusted users upon creation of the group or [Add members] on the group Profile view after a group has been created. This allows users to be added by existing members, who the creator has not added to a ‘Trusted users’ group.
Accept an invitation to a group chat; this will inform members of the group that the user has joined.
Decline an invitation to a group chat; this will inform members of the group that the user has left.
View group info
Group info, including it’s members becomes available after joining a group and includes those who have joined the group.
Anyone can Delete a group chat from their chat list. The group chat will remain for others, showing that the user deleting the chat has left. A user can be re-invited upon which the group will reappear in the users list.
Clear history removes all messages in any given chat.
==Any specifics on the purpose to be added: To avoid any association to conversations when phone is confiscated, save memory?==