DocumentData.fromJson constructor

DocumentData.fromJson(
  1. Map<String, dynamic> json
)

Implementation

factory DocumentData.fromJson(Map<String, dynamic> json) {
  final normalized = Map<String, dynamic>.from(json);
  final path = normalized['docupath'] ??
      normalized['docuPath'] ??
      normalized['DocuPath'] ??
      normalized['docPath'] ??
      normalized['path'];
  if (path != null) normalized['docupath'] = path.toString();

  final filename = normalized['filename'] ??
      normalized['fileName'] ??
      normalized['Filename'] ??
      normalized['name'];
  if (filename != null) {
    normalized['filename'] = filename.toString();
  } else if (normalized['docupath'] != null) {
    normalized['filename'] = normalized['docupath']
        .toString()
        .replaceAll('\\', '/')
        .split('/')
        .last;
  }

  final docPath = normalized['docupath']?.toString().trim();
  final docFilename = normalized['filename']?.toString().trim();
  if (docPath != null &&
      docPath.isNotEmpty &&
      docFilename != null &&
      docFilename.isNotEmpty) {
    final normalizedPath = docPath.replaceAll('\\', '/');
    final pathParts =
        normalizedPath.split('/').where((part) => part.isNotEmpty).toList();
    final basename = pathParts.isEmpty ? '' : pathParts.last;
    if (basename == 'Dokus' || !basename.contains('.')) {
      normalized['docupath'] = '$normalizedPath/$docFilename';
    }
  }

  return _$DocumentDataFromJson(normalized);
}