Refactor document creation error handling to provide more informative error messages

This commit is contained in:
Leon Bösche
2026-01-14 04:22:13 +01:00
parent 94cb7bc99f
commit 5cb86d4fde

View File

@@ -1,3 +1,4 @@
import 'package:dio/dio.dart';
import 'dart:ui';
import 'dart:js_interop';
import 'package:flutter/material.dart';
@@ -314,10 +315,13 @@ class _FileExplorerState extends State<FileExplorer> {
),
);
final fileService = getIt<FileService>();
// If orgId is 'personal', treat as empty string for personal workspace
// Always treat 'personal' or empty orgId as personal workspace
final effectiveOrgId = (widget.orgId == 'personal' || widget.orgId.isEmpty)
? ''
: widget.orgId;
try {
final fileService = getIt<FileService>();
// If orgId is 'personal', treat as empty string for personal workspace
final effectiveOrgId = (widget.orgId == 'personal') ? '' : widget.orgId;
final fileId = await fileService.createDocument(
effectiveOrgId,
currentPath,
@@ -337,6 +341,16 @@ class _FileExplorerState extends State<FileExplorer> {
}
} catch (e) {
snackController.close();
String errorMsg = e.toString();
// If DioError, try to extract backend error message
if (e is DioError) {
final data = e.response?.data;
if (data is Map && data.containsKey('message')) {
errorMsg = data['message'].toString();
} else if (data is String) {
errorMsg = data;
}
}
if (context.mounted) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
@@ -346,7 +360,7 @@ class _FileExplorerState extends State<FileExplorer> {
const SizedBox(width: 12),
Expanded(
child: Text(
'Failed to create document: $e',
'Failed to create document: $errorMsg',
overflow: TextOverflow.ellipsis,
style: const TextStyle(color: AppTheme.primaryText),
),