restoreAttributionStateFromSnapshots method

AttributionState restoreAttributionStateFromSnapshots(
  1. List<AttributionSnapshotMessage> snapshots
)

Restore attribution state from snapshot messages.

Implementation

AttributionState restoreAttributionStateFromSnapshots(
  List<AttributionSnapshotMessage> snapshots,
) {
  final attrState = createEmptyAttributionState();

  // The last snapshot has the most recent count for every path.
  final lastSnapshot = snapshots.isNotEmpty ? snapshots.last : null;
  if (lastSnapshot == null) return attrState;

  final fileStates = <String, FileAttributionState>{};
  for (final entry in lastSnapshot.fileStates.entries) {
    fileStates[entry.key] = entry.value;
  }

  return attrState.copyWith(
    surface: lastSnapshot.surface,
    fileStates: fileStates,
    promptCount: lastSnapshot.promptCount,
    promptCountAtLastCommit: lastSnapshot.promptCountAtLastCommit,
    permissionPromptCount: lastSnapshot.permissionPromptCount,
    permissionPromptCountAtLastCommit:
        lastSnapshot.permissionPromptCountAtLastCommit,
    escapeCount: lastSnapshot.escapeCount,
    escapeCountAtLastCommit: lastSnapshot.escapeCountAtLastCommit,
  );
}