DatumManager<T extends DatumEntityInterface> constructor
DatumManager<T extends DatumEntityInterface> ({
- required LocalAdapter<
T> localAdapter, - required RemoteAdapter<
T> remoteAdapter, - DatumConflictResolver<
T> ? conflictResolver, - required DatumConnectivityChecker connectivity,
- DatumConfig<
T> ? datumConfig, - DatumLogger? logger,
- List<
DatumObserver< ? localObservers,T> > - List<
DatumMiddleware< ? middlewares,T> > - List<
GlobalDatumObserver> ? globalObservers, - DatumSyncRequestStrategy? syncRequestStrategy,
- String? deviceId,
- DatumPersistence? persistence,
Implementation
DatumManager({
required this.localAdapter,
required this.remoteAdapter,
DatumConflictResolver<T>? conflictResolver,
required DatumConnectivityChecker connectivity,
DatumConfig<T>? datumConfig,
DatumLogger? logger,
List<DatumObserver<T>>? localObservers,
List<DatumMiddleware<T>>? middlewares,
List<GlobalDatumObserver>? globalObservers,
DatumSyncRequestStrategy? syncRequestStrategy,
this.deviceId,
this.persistence,
}) : config = datumConfig ?? const DatumConfig(),
_connectivity = connectivity,
// The logger's enabled status should always respect the config.
_logger = (logger ??
DatumLogger(
enabled: datumConfig?.enableLogging ?? true,
minimumLevel: datumConfig?.logLevel ?? LogLevel.info,
enablePerformanceLogging: datumConfig?.enablePerformanceLogging ?? false,
performanceThreshold: datumConfig?.performanceLogThreshold ?? const Duration(milliseconds: 100),
samplers: datumConfig?.logSamplers ?? const {},
))
.copyWith(
enabled: datumConfig?.enableLogging ?? true,
minimumLevel: datumConfig?.logLevel ?? LogLevel.info,
enablePerformanceLogging: datumConfig?.enablePerformanceLogging ?? false,
performanceThreshold: datumConfig?.performanceLogThreshold ?? const Duration(milliseconds: 100),
samplers: datumConfig?.logSamplers ?? const {},
),
_conflictResolver = conflictResolver ?? datumConfig?.defaultConflictResolver ?? LastWriteWinsResolver<T>(),
_syncRequestStrategy = syncRequestStrategy ?? datumConfig?.syncRequestStrategy ?? const SequentialRequestStrategy() {
_localObservers.addAll((localObservers ?? []).map(_WeakObserver.new));
_globalObservers.addAll((globalObservers ?? []).map(_WeakObserver.new));
_middlewares.addAll(middlewares ?? []);
_initializeInternalComponents();
}