Library for interacting with Obyte chat
npm install obyte-multi-paymentsA library for establishing chat sessions between your web-based dapp and the user's Obyte wallet. Use the chat to:
* request payments, including payments in multiple assets;
* request to sign a message;
* request user's address (without having to copy/paste);
* request private profiles (such as real name attestations);
* request a vote in a poll.
This library uses local storage
yarn add obyte-browser-chat obyteUse
`js
import browserChat from "obyte-browser-chat"
`
Example
$3
`js
import obyte from "obyte";export default new obyte.Client('wss://obyte.org/bb-test'); // or wss://obyte.org/bb for livenet
`$3
`js
import browserChat from "obyte-browser-chat";import client from "..."; // obyte.js client instance
export default browserChat({
name: "mydomain.com", // chat name that'll show up in the user's wallet
client, // obyte.js client instance
testnet: true
});
`
$3
`js
import browserChatInstance from "..."; const payments = [
{
address: "2QVJOY3BRRGWP7IOYL64O5BU3WLUJ4TZ",
amount: 1e9, // integer, amount in smallest units
asset: "base"
},
{
address: "EJC4A7WQGHEZEKW6RLO7F26SAR4LAQBU",
amount: 2e9,
asset: "base"
}
];
const paymentJsonBase64 = browserChatInstance.generatePaymentString({ payments });
const message =
Send bytes \nsend;const link = browserChatInstance.sendMessageAfterPairing(message);
...
`Methods
$3
`js
const pairingLink = browserChatInstance.getPairingLink();
`
Returns a link that looks like obyte:PUB_KEY@obyte.org/bb. The user needs to click it to open the chat.$3
`js
const pairingLink = browserChatInstance.sendMessageAfterPairing("We're glad to see you");
`
As above, plus the provided message will be sent to the user immediately after pairing.$3
`js
browserChatInstance.onPairing((msgObject) => {
console.log("msgObject", msgObject); // send a plain text message
msgObject.reply("Hi there!");
// request to sign a text message
msgObject.reply("Please prove ownership of your address by signing this message: any text");
// request to sign an object
const order = {field1: "value1"};
const orderJsonBase64 = Buffer.from(JSON.stringify(order), 'utf8').toString('base64');
msgObject.reply(
Please sign an order: any text); // request a private profile
msgObject.reply(
Click this link to reveal your private profile to us: any text.); // request a vote
const objVote = {
poll_unit: '0Vv6lhpjjk3VsKCSGML2NY/5W+WgpsNELQJ1rukhL5Y=',
choice: 'Institute For the Future of the University of Nicosia',
};
const voteJsonBase64 = Buffer.from(JSON.stringify(objVote), 'utf8').toString('base64');
msgObject.reply(
Click to vote for ${objVote.choice}: any text.);});
`
where msgObject contains:
* reply - message forwarding function
* body - object with pairing_secret field
* sender - sender's public key$3
`js
browserChatInstance.onMessage((msgObject) => {
msgObject.reply("Thanks, you said: " + msgObject.body);
});
`
where msgObject contains:
* reply - message forwarding function
* body - received message (string)
* sender - sender's public key$3
`js
browserChatInstance.onReady(() => {
console.log("I'm connected to the hub");
});
`$3
`js
const payments = [
{
address: "2QVJOY3BRRGWP7IOYL64O5BU3WLUJ4TZ",
amount: 1e9,
asset: "base"
},
{
address: "EJC4A7WQGHEZEKW6RLO7F26SAR4LAQBU",
amount: 2e9,
asset: "base"
}
];const paymentJsonBase64 = chatInstance.generatePaymentString({ payments });
``