status-im / specs

Specifications for Status clients.
https://specs.status.im/
MIT License
14 stars 14 forks source link

Add new methods supporting chat functionality to status api in DApp browser #117

Open bgits opened 4 years ago

bgits commented 4 years ago

Some features that have been requested in the past and would enhance DApps in a unique way that only Status can provide is exposing the chat api to DApps.

Methods include being able to send messages on behalf of a user and reading conversations.

Because of the security and usability implications it would make sense to draft a specification first.

examples:

window.ethereum.status
.sendToPublicChat('room-name', 'message')
.then(data => {
console.log('message:', data.message)
})
.catch(err => {
// On user rejecting request or other reason
console.log('Error:', err)
})
window.ethereum.status
.getPublicChatMessages('room-name')
.then(data => {
// type messages :: [ { name, pubKey, message, timeStamp } ]
const { messages } = data
console.log('messages:', messages)
})
.catch(err => {
// On user rejecting request or other reason
console.log('Error:', err)
})
3esmit commented 4 years ago

This is very important for the convergence of chat platform. As being a web3 provider, Status is providing a new capability to web3: real-time messaging, which can be used by other web3 dapps to support chat, which is interoperable with the Status Network.

bgits commented 4 years ago

A more advanced use case I don't expect to be part of the initial spec. Having these initial methods will enable functionality such as incentivized DApp notifications.

High level: Any user that visits a DApp can see which events have not been sent to target users and can use this api to send notifications and submit proofs of sending for compensation.

bgits commented 4 years ago

@status-im/status-protocol @flexsurfer

hesterbruikman commented 4 years ago

@bgits @3esmit to clarify. When you describe dapps are you referring to browser based dapps exclusively or might this include 'native' API use, e.g. in the case of extensions?

Trying to understand the scope of the proposed spec and user stories it would cover.

bgits commented 4 years ago

I was referring specifically to browser based dapps as that is the largest type of dapp that exists today.

0kok0 commented 3 years ago

Cross post: https://github.com/status-im/status-react/pull/10910#issuecomment-662499998