converse_chat_adapters 1.0.1
converse_chat_adapters: ^1.0.1 copied to clipboard
Firebase-based infrastructure layer for the Converse Chat SDK. Implements repository interfaces from converse_chat_core for chat, user, presence, typing and attachment management.
βοΈ Converse Chat Adapters #
Converse Chat Adapters form the infrastructure layer of the Converse Chat SDK.
They connect the clean domain layer fromconverse_chat_coreto real-world backends like Firebase Firestore, Realtime Database, and Firebase Storage.
π Overview #
This package provides Firebase-based repository implementations for the abstract interfaces defined in converse_chat_core.
It handles message persistence, user management, presence tracking, and file uploads.
App / UI
β
Converse Chat SDK
β
Converse Chat Adapters (Firebase, REST)
β
Converse Chat Core
β
Firebase / REST / Custom backend
It includes:
- π₯ Firebase Chat Repository β sending, receiving, and syncing messages
- π€ Firebase User Repository β managing user metadata
- π’ Firebase Presence Repository β tracking online/offline users
- π Firebase Attachment Repository β file and media uploads
- βοΈ Adapter Initializer β handles Firebase setup before use
- π§© Collection Helpers β centralized Firestore path and collection naming
π§ Architecture #
Follows the Clean Architecture structure:
+------------------------------+
| Presentation Layer (UI/SDK) | β converse_chat_sdk
+------------------------------+
| Domain Layer (Use Cases) | β converse_chat_core
+------------------------------+
| Data Layer / Adapters | β converse_chat_adapters
+------------------------------+
| Infrastructure (Firebase) | β External systems
+------------------------------+
This package provides the concrete implementations of:
IChatRepositoryIUserRepositoryIAttachmentRepositoryIPresenceRepository
defined in the core domain layer.
π§© Key Features #
β
Implements all domain repositories from core
β
Firebase Realtime Database + Firestore support
β
Presence tracking using onDisconnect() (mobile)
β
Attachment uploads via Firebase Storage
β
Centralized Firestore collection management
β
Adapter initializer for clean setup
β
Easily replaceable adapters for REST or Supabase backends
π§± Folder Structure #
lib/
ββ converse_chat_adapters.dart # β
Public entrypoint (exports all implementations)
ββ src/
ββ repositories/
β ββ firebase_chat_repository.dart # Message send/receive/sync logic
β ββ firebase_user_repository.dart # User management
β ββ firebase_presence_repository.dart # Online/offline presence
β ββ firebase_attachment_repository.dart # File upload/download
β ββ ... # (Future) additional integrations
β
ββ firebase_chat_adapter.dart # Combines all Firebase repositories
ββ firebase_collections.dart # Defines Firestore collection names
ββ adapter_initializer.dart # Handles Firebase initialization
ββ ... # (Future) REST or WebSocket adapters
βοΈ Initialization Example #
Although converse_chat_sdk initializes adapters automatically,
you can use this package directly for testing or custom setups.
import 'package:converse_chat_adapters/converse_chat_adapters.dart';
Future<void> main() async {
// Initialize Firebase and adapters
await AdapterInitializer.initializeFirebase();
// Create a chat repository instance
final chatRepo = FirebaseChatRepository();
// Send a message
await chatRepo.sendMessage(
chatId: 'chat_123',
senderId: 'user_001',
text: 'Hello world π',
);
}
π§° Installation #
Typically, you donβt install this package directly.
Itβs automatically included when using converse_chat_sdk.
However, you can also add it manually for experimental setups:
dependencies:
converse_chat_adapters: ^1.0.0
Then import it:
import 'package:converse_chat_adapters/converse_chat_adapters.dart';
π Related Packages #
| Package | Description |
|---|---|
| converse_chat_core | Core domain models and use cases |
| converse_chat_sdk | Main SDK β includes adapters and exposes developer-friendly API |
π§ Topics #
firebase, chat, messaging, realtime, sdk, clean-architecture, flutter, presence, storage, core
πͺͺ License #
This project is licensed under the MIT License.
π¨βπ» Author #
Rajendra Bisht
GitHub @rbishtdev