Files
social-app/apps/lib/features/chat/ui/navigation/ui_schema_navigation.dart
T

36 lines
983 B
Dart
Raw Normal View History

bool isValidInternalNavigationPath(String path) {
if (path.isEmpty || !path.startsWith('/')) {
return false;
}
return !path.startsWith('//') &&
!path.contains('://') &&
!path.contains('?') &&
!path.contains('#') &&
!path.contains(':');
}
String buildUiSchemaNavigationTarget({
required String path,
Map<String, dynamic>? params,
}) {
final baseUri = Uri.parse(path);
final queryParams = <String, String>{};
if (params != null) {
for (final entry in params.entries) {
final value = entry.value;
if (value is String && value.isNotEmpty) {
queryParams[entry.key] = value;
} else if (value is num || value is bool) {
queryParams[entry.key] = value.toString();
}
}
}
final mergedQueryParams = {...baseUri.queryParameters, ...queryParams};
final targetUri = baseUri.replace(
queryParameters: mergedQueryParams.isEmpty ? null : mergedQueryParams,
);
return targetUri.toString();
}