getTrashContent method

Future<List<Map<String, dynamic>>> getTrashContent()

Implementation

Future<List<Map<String, dynamic>>> getTrashContent() async {
  final response = await api
      .post('/v3/dir/content', {'uuid': 'trash', 'foldersOnly': false});

  final data = response['data'];
  final List<dynamic> rawFolders = data['folders'] ?? [];
  final List<dynamic> rawUploads = data['uploads'] ?? [];

  List<Map<String, dynamic>> results = [];

  for (var f in rawFolders) {
    String name = 'Unknown';
    try {
      var dec = await crypto.tryDecrypt(f['name'], masterKeys);
      name = dec.startsWith('{') ? json.decode(dec)['name'] : dec;
    } catch (_) {
      name = '[Encrypted]';
    }
    results.add({
      'type': 'folder',
      'name': name,
      'uuid': f['uuid'],
      'size': 0,
      'parent': f['parent'],
      'timestamp': f['timestamp'],
      'lastModified': f['lastModified'] ?? 0,
    });
  }

  for (var f in rawUploads) {
    String name = 'Unknown';
    int size = 0;
    int lastModified = 0;
    try {
      final m =
          json.decode(await crypto.tryDecrypt(f['metadata'], masterKeys));
      name = m['name'];
      size = m['size'] ?? 0;
      lastModified = m['lastModified'] ?? 0;
    } catch (_) {
      name = '[Encrypted]';
    }
    results.add({
      'type': 'file',
      'name': name,
      'uuid': f['uuid'],
      'size': size,
      'parent': f['parent'],
      'timestamp': f['timestamp'],
      'lastModified': lastModified,
    });
  }

  return results;
}