Task file attachments
This commit is contained in:
parent
3950f3ee94
commit
b9722106ff
|
|
@ -1,5 +1,6 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
import 'dart:typed_data';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
|
|
||||||
|
|
@ -741,6 +742,64 @@ class TasksController {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<void> uploadTaskAttachment({
|
||||||
|
required String taskId,
|
||||||
|
required String fileName,
|
||||||
|
required Uint8List bytes,
|
||||||
|
}) async {
|
||||||
|
final path = '$taskId/$fileName';
|
||||||
|
try {
|
||||||
|
debugPrint('uploadTaskAttachment uploading to path: $path');
|
||||||
|
|
||||||
|
final dynamic res;
|
||||||
|
if (kIsWeb) {
|
||||||
|
// on web, upload binary data
|
||||||
|
res = await _client.storage
|
||||||
|
.from('task_attachments')
|
||||||
|
.uploadBinary(path, bytes);
|
||||||
|
} else {
|
||||||
|
// write bytes to a simple temp file (no nested folders)
|
||||||
|
final tmpDir = Directory.systemTemp;
|
||||||
|
final localFile = File(
|
||||||
|
'${tmpDir.path}/${DateTime.now().millisecondsSinceEpoch}_$fileName',
|
||||||
|
);
|
||||||
|
try {
|
||||||
|
await localFile.create();
|
||||||
|
await localFile.writeAsBytes(bytes);
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('uploadTaskAttachment failed writing temp file: $e');
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
|
||||||
|
res = await _client.storage
|
||||||
|
.from('task_attachments')
|
||||||
|
.upload(path, localFile);
|
||||||
|
|
||||||
|
try {
|
||||||
|
await localFile.delete();
|
||||||
|
} catch (_) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
debugPrint(
|
||||||
|
'uploadTaskAttachment response type=${res.runtimeType} value=$res',
|
||||||
|
);
|
||||||
|
|
||||||
|
// Check for errors
|
||||||
|
if (res is String) {
|
||||||
|
// treat as success
|
||||||
|
} else if (res is Map && res['error'] != null) {
|
||||||
|
debugPrint('uploadTaskAttachment upload error: ${res['error']}');
|
||||||
|
throw Exception('Upload error: ${res['error']}');
|
||||||
|
} else if (res != null && res.error != null) {
|
||||||
|
debugPrint('uploadTaskAttachment upload error: ${res.error}');
|
||||||
|
throw Exception('Upload error: ${res.error}');
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
debugPrint('uploadTaskAttachment failed: $e');
|
||||||
|
rethrow;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Future<void> _notifyCreated({
|
Future<void> _notifyCreated({
|
||||||
required String taskId,
|
required String taskId,
|
||||||
required String? actorId,
|
required String? actorId,
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user