Video Upload
This commit is contained in:
@@ -136,7 +136,12 @@ class IgelCsvImportService {
|
||||
// Alternativ: "schlanke" CSV nur mit Messwert-Spalten ohne igel_* → dann importieren wir *alle* Zeilen in diesen Igel.
|
||||
final hasAnyIgelCol = (hIgelId >= 0) || (hIgelName >= 0);
|
||||
|
||||
final res = _ImportResult(rows: 0);
|
||||
final res = _ImportResult(
|
||||
rows: 0,
|
||||
igelsCreated: 0,
|
||||
igelsMatched: 0,
|
||||
messwerteCreated: 0,
|
||||
);
|
||||
for (var r = 1; r < rows.length; r++) {
|
||||
final row = rows[r];
|
||||
|
||||
@@ -258,7 +263,12 @@ class IgelCsvImportService {
|
||||
};
|
||||
|
||||
final createdIgels = <String, Igel>{};
|
||||
var res = _ImportResult(rows: rows.length - 1);
|
||||
var res = _ImportResult(
|
||||
rows: rows.length - 1,
|
||||
igelsCreated: 0,
|
||||
igelsMatched: 0,
|
||||
messwerteCreated: 0,
|
||||
);
|
||||
|
||||
// jede Datenzeile
|
||||
for (var r = 1; r < rows.length; r++) {
|
||||
@@ -422,10 +432,10 @@ class _ImportResult {
|
||||
final List<String> errors;
|
||||
|
||||
_ImportResult({
|
||||
this.rows = 0,
|
||||
this.igelsCreated = 0,
|
||||
this.igelsMatched = 0,
|
||||
this.messwerteCreated = 0,
|
||||
required this.rows,
|
||||
required this.igelsCreated,
|
||||
required this.igelsMatched,
|
||||
required this.messwerteCreated,
|
||||
List<String>? errors,
|
||||
}) : errors = errors ?? [];
|
||||
}
|
||||
|
||||
@@ -17,8 +17,9 @@ class ShareService {
|
||||
Uri.parse('$baseUrl/hedgehogs.php?r=/igel/$igelId/shares'),
|
||||
headers: _auth(token),
|
||||
);
|
||||
if (r.statusCode != 200)
|
||||
if (r.statusCode != 200) {
|
||||
throw Exception('listShares failed (${r.statusCode}) ${r.body}');
|
||||
}
|
||||
final List data = jsonDecode(r.body) as List;
|
||||
return data.map((e) => Share.fromJson(e as Map<String, dynamic>)).toList();
|
||||
}
|
||||
@@ -33,8 +34,9 @@ class ShareService {
|
||||
headers: _auth(token, extra: {'Content-Type': 'application/json'}),
|
||||
body: jsonEncode({'email': email, 'role': role}),
|
||||
);
|
||||
if (r.statusCode != 201)
|
||||
if (r.statusCode != 201) {
|
||||
throw Exception('invite failed (${r.statusCode}) ${r.body}');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateRole(
|
||||
@@ -46,8 +48,9 @@ class ShareService {
|
||||
headers: _auth(token, extra: {'Content-Type': 'application/json'}),
|
||||
body: jsonEncode({'role': role}),
|
||||
);
|
||||
if (r.statusCode != 200)
|
||||
if (r.statusCode != 200) {
|
||||
throw Exception('updateRole failed (${r.statusCode}) ${r.body}');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> revoke({required int shareId, required String token}) async {
|
||||
@@ -55,8 +58,9 @@ class ShareService {
|
||||
Uri.parse('$baseUrl/hedgehogs.php?r=/shares/$shareId'),
|
||||
headers: _auth(token),
|
||||
);
|
||||
if (r.statusCode != 200)
|
||||
if (r.statusCode != 200) {
|
||||
throw Exception('revoke failed (${r.statusCode}) ${r.body}');
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> acceptInvite(
|
||||
@@ -66,8 +70,9 @@ class ShareService {
|
||||
headers: _auth(tokenJwt, extra: {'Content-Type': 'application/json'}),
|
||||
body: jsonEncode({'token': inviteToken}),
|
||||
);
|
||||
if (r.statusCode != 200)
|
||||
if (r.statusCode != 200) {
|
||||
throw Exception('acceptInvite failed (${r.statusCode}) ${r.body}');
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<SharedIgelItem>> listSharedWithMe({required String token}) async {
|
||||
@@ -75,8 +80,9 @@ class ShareService {
|
||||
Uri.parse('$baseUrl/hedgehogs.php?r=/me/shared'),
|
||||
headers: _auth(token),
|
||||
);
|
||||
if (r.statusCode != 200)
|
||||
if (r.statusCode != 200) {
|
||||
throw Exception('listSharedWithMe failed (${r.statusCode}) ${r.body}');
|
||||
}
|
||||
final List data = jsonDecode(r.body) as List;
|
||||
return data
|
||||
.map((e) => SharedIgelItem.fromJson(e as Map<String, dynamic>))
|
||||
|
||||
Reference in New Issue
Block a user