0. Firebase
This application requires you to have firebase setup, from there you specify at what location you want to store chat
import FireChat from '../fire-chat';
const chat = new Firechat(db.ref("chat"));
1. Register events
Before interacting with FireChat it is best to register to the socket events, you likely only want to do this once per application.
chat.on(``'rooms-changed'``, (rooms)=>{
//{room1:{name"",id:"",lastMessage:{}}}
});
chat.on('message-add', (room, message)=>{
//{name:"Sender",message:"Hello World", typing:{user1:"Name"}}
});
2. Get rooms
Use an authorized firebase user and defined username to get rooms
You will need to call this before receiving 'rooms-changed'
events
chat.setUser(id, username);
You will receive an updated room collection from the rooms-changed event when the following events occur:
- setUser was successful
- The lastMessage changes
- You leave a room
- You enter a room
- A user is typing
3. Enter room
This will subscribe you to the room messages, and also make you a member of the room if you aren't already.
you can only be subscribed into 1 room at a time
chat.enterRoom(id, (room)=>{
//{name:"", id:""}
})
You will receive new messages via the message-add
event for the room you are subscribed to
4. Leave room
This will remove the room from your list of rooms
chat.enterRoom(id, (room)=>{
//{name:"", id:""}
})
5. Send typing notification
Whenever you receive a keyup event call this, the lib will handle the rest
chat.userTyping(roomId)
6. Read receipts
Let the library know when the user is viewing a chat (e.g. chat is showing, app is active) and when the user isn't (e.g navigated away)
chat.startedViewing(roomId)
chat.stoppedViewing(roomId)