1.0.1 • Published 4 years ago
@metehankurucu/firebase-chat v1.0.1
Getting started
Install the library:
yarn add @metehankurucu/firebase-chator npm:
npm install --save @metehankurucu/firebase-chatUsage
Step 1 - Initialize FirebaseChat
import FirebaseChat from '@metehankurucu/firebase-chat';
// Optional. Use if firebase not initialized before
const firebaseConfig = {
apiKey: '',
authDomain: '',
projectId: '',
storageBucket: '',
messagingSenderId: '',
appId: '',
measurementId: '',
};
const options = {
collectionPrefix: 'chat', // optional. collection names will be 'chatmessages' and 'chatrooms'
};
FirebaseChat.initialize({}, firebaseConfig);
// Or set collection prefixes
FirebaseChat.initialize(options, firebaseConfig);
// Or give custom firestore instance (for example using library in React Native)
import firestore from '@react-native-firebase/firestore';
FirebaseChat.initialize({}, firebaseConfig, firestore());FirebaseChat must initialize only one time. You can check if it is initialized.
if (!FirebaseChat.isInitialized) {
FirebaseChat.initialize({}, firebaseConfig);
}Step 2 - Set Current User Id
import FirebaseChat from '@metehankurucu/firebase-chat';
FirebaseChat.setUser(userId);
// Or you can combine two steps
FirebaseChat.initialize({}, firebaseConfig).setUser(userId);Rooms
const rooms = FirebaseChat.rooms();Listen current user's rooms
const unsubscribe = rooms.listenRooms(async (items) => {
// Do some stuff
});Get a room
// Get a room with other user id
const room = rooms.getRoom(otherUserId);
// Or room can create if not exists
const room = rooms.getRoom(otherUserId, { createIfNotExists: true });Delete a room
rooms.deleteRoom(room.id);Create a room
rooms.createRoom(otherUserId);Note: Recommended way to create a room using getRoom with createIfNotExists option.
const room = rooms.getRoom(otherUserId, { createIfNotExists: true });Get collection. If you want to use collection to run custom operations.
// Firestore collection instance
const roomsCollection = rooms.collection();Messages
const room = await rooms.getRoom(otherUserId, { createIfNotExists: true });
const messages = FirebaseChat.messages(room.id);Send message
const message = messages.sendMessage('Hey!');
// Optional mediaURL
const message = messages.sendMessage('Did you see this meme?', 'pic-url');Note: Sending message will update current room's lastMessage field.
Listen this room's messages
// For example listen messages with first get last 50 messages
const unsubscribe = messages.listenMessages({ limit: 50 }, (items) => {});Get this room's messages
const messagesList = await messages.getMessages({ limit: 50 });Get other user id
const otherUserId = messages.getOtherUserId();On read a message. This will update this message's read field as true.
await messages.onReadMessage(messageId);On read all messages. This will update all messages sent by other user read field as true.
await messages.onReadAllMessages();Delete a message
await messages.deleteMessage(messageId);Delete all messages of room
await messages.deleteMessage(messageId);Get collection. If you want to use collection to run custom operations.
// Firestore collection instance
const messagesCollection = messages.collection();API
TODO