toggleModalsInUri static method

  1. @visibleForTesting
Uri toggleModalsInUri(
  1. Uri currentUri,
  2. List<String> modalIds
)

Implementation

@visibleForTesting
static Uri toggleModalsInUri(Uri currentUri, List<String> modalIds) {
  final currentModals = _getCurrentModals(currentUri);
  final updatedModals = List<String>.from(currentModals);

  for (final modalId in modalIds) {
    if (updatedModals.contains(modalId)) {
      updatedModals.remove(modalId);
    } else {
      updatedModals.add(modalId);
    }
  }

  final updatedQueryParams = <String, String>{
    for (final entry in currentUri.queryParameters.entries)
      if (entry.key != 'modal') entry.key: entry.value,
  };

  if (updatedModals.isNotEmpty) {
    updatedQueryParams['modal'] = updatedModals.join(',');
  }

  return Uri(
    path: currentUri.path,
    queryParameters: updatedQueryParams.isEmpty ? null : updatedQueryParams,
    fragment: currentUri.fragment,
  );
}