// Version: 1.0.1 | Created: 2026-04-01
// Matrix SDK client singleton provider.
// The Matrix client is kept alive for the full app lifetime once initialised.

import 'package:matrix/matrix.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';

import '../config/app_config.dart';

part 'matrix_client.g.dart';

/// Provides the single [Client] instance used throughout the app.
///
/// keepAlive: true — the Matrix client must never be disposed while the app
/// is running; it holds the sync loop and all room state.
///
/// Phase 1: no databaseBuilder — uses in-memory store only (no persistence
/// across restarts). Phase 2 will wire in a drift-backed DatabaseApi.
@Riverpod(keepAlive: true)
Client matrixClient(Ref ref) {
  return Client(AppConfig.appName);
}
