Last updated:
0 purchases
firechat
Firechat #
Firebase chat package for Flutter
Reference #
Most of the code is coming from FireFlutter.
See the test code of FireFlutter.
TODOs #
Make chat room and chat list singleton.
Use rxdart to notify all the event. No more render!
Overview #
Firechat does not support for file uploading since every app has different backends.
But it provides an interface for uploading photo and it should be very simple.
Resources #
Most of the code is coming from FireFlutter. It's worthy to check out FireFlutter README file.
Installation #
Packages #
crypto is for encrypting user id list for a room id.
Firebase Auth #
User must login Firebase before using any of firechat code.
Global Rooms and User Rooms #
Global rooms are the room information documents that are saved under /chat/global-rooms/list collection.
User rooms are the documents that has a room information for a single user.
The differnces of global and user rooms are;
A global room has room informations like admins, password(to enter the room), room title, blocked user list, and more of the room itself.
A user room has information of the relation between the user and the room. Like no of new messages, last message of the room, etc.
Logic of Chat Room Create #
Create global room
Send welcome messages to users (by creating user's room) in the global room.
Security Rules #
It's in firebase/firestore.rules
Test on Security Rules #
First setup Firebase project.
Then, install Firebase tools and login.
% npm install -g firebase-tools
Then, log into Firebase
% firebase login
Then, install npm for testing.
% cd firebase
% npm init -y
% npm i -D @firebase/rules-unit-testing
% npm i -D firebase-admin
% npm i -D mocha
copied to clipboard
Then, run Firestore emualtor
firebase emulators:start --only firestore ; run firebase emulator
copied to clipboard
Then, edit MY_PROJECT_ID with your Firebase project ID in chat.js.
Then, run the test
./node_modules/.bin/mocha tests/chat.js
copied to clipboard
Developer Guideline #
Global varaibles #
room() {
return ChatRoom.instance;
}
roomList() {
return ChatRoomList.instance;
}
room().listen(() { ... });
copied to clipboard
Tests #
Read the comments on top of chat.test.dart to know how to run test code.
Run the test code like below
import 'package:firechat/chat.test.dart';
a.firebaseInitialized.listen((ready) { // when firebase initialized,
if (ready == false) return;
FireChatTest().roomCreateTest(); // call test.
});
copied to clipboard
For personal and professional use. You cannot resell or redistribute these repositories in their original state.
There are no reviews.