Skip to content

Instantly share code, notes, and snippets.

View FlutterWiz's full-sized avatar
🎯
Discipline

FlutterWiz FlutterWiz

🎯
Discipline
View GitHub Profile
@override
Stream<List<Channel>> get channelsThatTheUserIsIncluded {
return streamChatClient
.queryChannels(
filter: Filter.in_(
'members',
[streamChatClient.state.currentUser!.id],
),
)
.map((listOfChannels) {
@override
Future<void> disconnectUser() async {
await streamChatClient.disconnectUser();
}
@override
Future<void> connectTheCurrentUser() async {
final signedInUserOption = await _firebaseAuth.getSignedInUser();
final signedInUser = signedInUserOption.fold(
@override
Stream<ChatUserModel> get chatAuthStateChanges {
return streamChatClient.state.currentUserStream.map(
(OwnUser? user) {
if (user == null) {
return ChatUserModel.empty();
} else {
return user.toDomain();
}
},
extension GetstreamUserDomainX on OwnUser {
ChatUserModel toDomain() {
return ChatUserModel(
createdAt: formatDate(createdAt, [yyyy, '-', mm, '-', dd]),
userRole: role?.toUpperCase() ?? "?",
isUserBanned: banned,
);
}
}
@module
abstract class InjectableModule {
@singleton
Connectivity get connectivity => Connectivity();
@singleton
AppRouter get appRouter => AppRouter();
@lazySingleton
FirebaseAuth get firebaseAuth => FirebaseAuth.instance;
abstract class IConnectivityService {
Stream<ConnectivityResult> get connectivityStateChanges;
}
abstract class IMicrophoneService {
Stream<PermissionStatus> get microphoneStateChanges;
Future<PermissionStatus> requestPermission();
Future<void> openAppSettingsForTheMicrophonePermission();
}
abstract class ICameraService {
Stream<PermissionStatus> get cameraStateChanges;
Future<PermissionStatus> requestPermission();
Future<void> openAppSettingsForTheCameraPermission();
}
abstract class IChatService {
Stream<ChatUserModel> get chatAuthStateChanges;
Stream<List<Channel>> get channelsThatTheUserIsIncluded;
Future<void> disconnectUser();
Future<void> connectTheCurrentUser();
Future<void> createNewChannel({
part 'chat_user_model.freezed.dart';
part 'chat_user_model.g.dart';
@freezed
class ChatUserModel with _$ChatUserModel {
const factory ChatUserModel({
required String createdAt,
required String userRole,
required bool isUserBanned,
}) = _ChatUserModel;