From ebb97f4f391730e47906fe1b59e02bfe53f87be6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6sche?= Date: Fri, 9 Jan 2026 17:01:41 +0100 Subject: [PATCH] idle --- b0esche_cloud/lib/injection.dart | 4 +- .../repositories/http_auth_repository.dart | 31 +++++++------ .../repositories/http_file_repository.dart | 32 +++++++++++--- b0esche_cloud/lib/services/file_service.dart | 44 ++++++++++++++----- go_cloud/internal/http/routes.go | 2 +- 5 files changed, 82 insertions(+), 31 deletions(-) diff --git a/b0esche_cloud/lib/injection.dart b/b0esche_cloud/lib/injection.dart index 6edc1aa..2722a30 100644 --- a/b0esche_cloud/lib/injection.dart +++ b/b0esche_cloud/lib/injection.dart @@ -16,7 +16,9 @@ void configureDependencies(SessionBloc sessionBloc) { // Register repositories (HTTP-backed) final apiClient = ApiClient(sessionBloc); getIt.registerSingleton(HttpAuthRepository(apiClient)); - getIt.registerSingleton(HttpFileRepository(FileService(apiClient))); + getIt.registerSingleton( + HttpFileRepository(FileService(apiClient)), + ); // Register services getIt.registerSingleton(AuthService(getIt())); diff --git a/b0esche_cloud/lib/repositories/http_auth_repository.dart b/b0esche_cloud/lib/repositories/http_auth_repository.dart index ad45ba3..ad7fce6 100644 --- a/b0esche_cloud/lib/repositories/http_auth_repository.dart +++ b/b0esche_cloud/lib/repositories/http_auth_repository.dart @@ -8,18 +8,21 @@ class HttpAuthRepository implements AuthRepository { @override Future login(String email, String password) async { - final res = await _apiClient.post('/auth/password-login', data: { - 'username': email, - 'password': password, - }, fromJson: (d) { - final user = d['user']; - return User( - id: user['id'].toString(), - username: user['username'] ?? user['email'], - email: user['email'], - createdAt: DateTime.parse(user['createdAt'] ?? DateTime.now().toIso8601String()), - ); - }); + final res = await _apiClient.post( + '/auth/password-login', + data: {'username': email, 'password': password}, + fromJson: (d) { + final user = d['user']; + return User( + id: user['id'].toString(), + username: user['username'] ?? user['email'], + email: user['email'], + createdAt: DateTime.parse( + user['createdAt'] ?? DateTime.now().toIso8601String(), + ), + ); + }, + ); return res; } @@ -34,7 +37,9 @@ class HttpAuthRepository implements AuthRepository { id: user['id'].toString(), username: user['username'] ?? user['email'], email: user['email'], - createdAt: DateTime.parse(user['createdAt'] ?? DateTime.now().toIso8601String()), + createdAt: DateTime.parse( + user['createdAt'] ?? DateTime.now().toIso8601String(), + ), ); } } catch (_) {} diff --git a/b0esche_cloud/lib/repositories/http_file_repository.dart b/b0esche_cloud/lib/repositories/http_file_repository.dart index ce3bd2f..fad08d3 100644 --- a/b0esche_cloud/lib/repositories/http_file_repository.dart +++ b/b0esche_cloud/lib/repositories/http_file_repository.dart @@ -35,12 +35,20 @@ class HttpFileRepository implements FileRepository { } @override - Future createFolder(String orgId, String parentPath, String folderName) async { + Future createFolder( + String orgId, + String parentPath, + String folderName, + ) async { await _fileService.createFolder(orgId, parentPath, folderName); } @override - Future moveFile(String orgId, String sourcePath, String targetPath) async { + Future moveFile( + String orgId, + String sourcePath, + String targetPath, + ) async { throw UnimplementedError(); } @@ -53,21 +61,33 @@ class HttpFileRepository implements FileRepository { Future> searchFiles(String orgId, String query) async { // Not yet parameterized on API side; fallback to client-side filter final files = await getFiles(orgId, '/'); - return files.where((f) => f.name.toLowerCase().contains(query.toLowerCase())).toList(); + return files + .where((f) => f.name.toLowerCase().contains(query.toLowerCase())) + .toList(); } @override - Future requestViewerSession(String orgId, String fileId) async { + Future requestViewerSession( + String orgId, + String fileId, + ) async { return await _fileService.requestViewerSession(orgId, fileId); } @override - Future requestEditorSession(String orgId, String fileId) async { + Future requestEditorSession( + String orgId, + String fileId, + ) async { return await _fileService.requestEditorSession(orgId, fileId); } @override - Future saveAnnotations(String orgId, String fileId, List annotations) async { + Future saveAnnotations( + String orgId, + String fileId, + List annotations, + ) async { await _fileService.saveAnnotations(orgId, fileId, annotations); } } diff --git a/b0esche_cloud/lib/services/file_service.dart b/b0esche_cloud/lib/services/file_service.dart index 0abf75f..f4bedf8 100644 --- a/b0esche_cloud/lib/services/file_service.dart +++ b/b0esche_cloud/lib/services/file_service.dart @@ -48,9 +48,7 @@ class FileService { Future uploadFile(String orgId, FileItem file) async { // If bytes or localPath available, send multipart upload with field 'file' - final Map fields = { - 'path': file.path, - }; + final Map fields = {'path': file.path}; FormData formData; if (file.bytes != null) { formData = FormData.fromMap({ @@ -74,24 +72,44 @@ class FileService { await _apiClient.post('/user/files', data: data, fromJson: (d) => null); return; } - await _apiClient.post('/orgs/$orgId/files', data: data, fromJson: (d) => null); + await _apiClient.post( + '/orgs/$orgId/files', + data: data, + fromJson: (d) => null, + ); return; } if (orgId.isEmpty) { - await _apiClient.post('/user/files', data: formData, fromJson: (d) => null); + await _apiClient.post( + '/user/files', + data: formData, + fromJson: (d) => null, + ); return; } - await _apiClient.post('/orgs/$orgId/files', data: formData, fromJson: (d) => null); + await _apiClient.post( + '/orgs/$orgId/files', + data: formData, + fromJson: (d) => null, + ); } Future deleteFile(String orgId, String path) async { final data = {'path': path}; if (orgId.isEmpty) { - await _apiClient.post('/user/files/delete', data: data, fromJson: (d) => null); + await _apiClient.post( + '/user/files/delete', + data: data, + fromJson: (d) => null, + ); return; } - await _apiClient.post('/orgs/$orgId/files/delete', data: data, fromJson: (d) => null); + await _apiClient.post( + '/orgs/$orgId/files/delete', + data: data, + fromJson: (d) => null, + ); } Future createFolder( @@ -99,7 +117,9 @@ class FileService { String parentPath, String folderName, ) async { - final path = parentPath.endsWith('/') ? '$parentPath$folderName' : '$parentPath/$folderName'; + final path = parentPath.endsWith('/') + ? '$parentPath$folderName' + : '$parentPath/$folderName'; final data = { 'name': folderName, 'path': path, @@ -110,7 +130,11 @@ class FileService { await _apiClient.post('/user/files', data: data, fromJson: (d) => null); return; } - await _apiClient.post('/orgs/$orgId/files', data: data, fromJson: (d) => null); + await _apiClient.post( + '/orgs/$orgId/files', + data: data, + fromJson: (d) => null, + ); } Future moveFile( diff --git a/go_cloud/internal/http/routes.go b/go_cloud/internal/http/routes.go index f493fa8..ce4e1de 100644 --- a/go_cloud/internal/http/routes.go +++ b/go_cloud/internal/http/routes.go @@ -2,13 +2,13 @@ package http import ( "encoding/json" + "fmt" "io" "net/http" "os" "path/filepath" "strings" "time" - "fmt" "go.b0esche.cloud/backend/internal/audit" "go.b0esche.cloud/backend/internal/auth"