enqueue method

Future<String> enqueue({
  1. String? mutationType,
  2. String? tag,
  3. required Map<String, dynamic> payload,
  4. ConflictPolicy conflictPolicy = ConflictPolicy.clientWins,
})

Enqueues an optimistic mutation when disconnected.

Returns the unique generated mutation identifier.

Example:

final id = await queue.enqueue(
  mutationType: 'send_message',
  payload: {'text': 'Hello world'},
);

Implementation

Future<String> enqueue({
  String? mutationType,
  String? tag,
  required Map<String, dynamic> payload,
  ConflictPolicy conflictPolicy = ConflictPolicy.clientWins,
}) async {
  final type = mutationType ?? tag ?? 'unknown';
  final id = '${DateTime.now().microsecondsSinceEpoch}';
  final mutation = QueuedMutation(
    id: id,
    mutationType: type,
    payload: payload,
    createdAt: DateTime.now(),
    conflictPolicy: conflictPolicy,
  );

  _queue.add(mutation);
  logger.info('OfflineMutationQueue: Queued mutation [$type] (id: $id). Queue depth: ${_queue.length}');
  await persist();
  return id;
}