import 'package:appwrite/appwrite.dart'; import '../appwrite_config.dart'; import '../config/appwrite_rechnungen_setup.dart'; /// Verständliche Meldung beim Laden von Aufträgen / Account (Haupt-Shell). String nachrichtFuerAppwriteDatenFehler(Object error) { if (error is! AppwriteException) { return error.toString(); } final e = error; final typ = e.type ?? ''; final msgLower = (e.message ?? '').toLowerCase(); // Appwrite-Texte sprechen manchmal von „API key“ — die App nutzt aber die // **Nutzer-Session** (nach Login), nicht die Datei `.appwrite_api_key`. if (msgLower.contains('api') && msgLower.contains('key')) { return 'Die App verwendet beim normalen Betrieb **keinen** Server-API-Key ' '(die Datei `.appwrite_api_key` ist nur fürs Einrichtungs-Skript).\n\n' 'Wenn Appwrite trotzdem von einem Key spricht, liegt es meist an:\n' '• Session abgelaufen oder ungültig → **Abmelden und neu anmelden**\n' '• Falsche **Project-ID** oder **Endpoint** in der App\n' '• Unter Appwrite **Settings → Platforms** die Plattform ' '(Bundle-ID / Hostname) fehlt → „Unauthorized“ / merkwürdige Meldungen\n\n' 'Technisch: ${e.toString()}'; } switch (typ) { case 'database_not_found': return 'Auf dem Appwrite-Server gibt es keine Datenbank mit der ID ' '„$kAppwriteDatabaseId“.\n\n' 'So behebst du das:\n' '• Appwrite Console öffnen → dein Projekt → Databases → ' '„Create database“ → als Database ID exakt ' '„$kAppwriteDatabaseId“ eintragen\n' 'oder\n' '• In lib/appwrite_local.dart bei kAppwriteDatabaseIdOverride die ' 'ID eintragen (oder --dart-define=APPWRITE_DATABASE_ID=…).\n\n' 'Technisch: ${e.toString()}'; case 'collection_not_found': return 'Die Collection „$kAppwriteCollectionId“ fehlt in der Datenbank ' '„$kAppwriteDatabaseId“.\n\n' '${appwriteRechnungenCollectionCheckliste()}\n\n' 'Technisch: ${e.toString()}'; case 'bucket_not_found': return 'Der Storage-Bucket „$kAppwriteBucketId“ wurde nicht gefunden.\n\n' 'Lege ihn in Storage an oder trage die Bucket-ID in ' 'lib/appwrite_local.dart (kAppwriteBucketIdOverride) ein.\n\n' 'Technisch: ${e.toString()}'; case 'project_not_found': return 'Das Appwrite-Projekt wurde nicht gefunden (falsche Project-ID ' 'oder Endpoint). Prüfe setProject(...) in lib/appwrite_config.dart ' 'und den Endpoint.\n\n' 'Technisch: ${e.toString()}'; case 'user_unauthorized': case 'general_unauthorized_scope': return 'Keine Berechtigung für diese Aktion. Bitte erneut anmelden ' 'oder in der Appwrite Console die Collection-/DB-Rechte prüfen.\n\n' 'Technisch: ${e.toString()}'; default: return e.toString(); } }