- Add null-safe error message extraction using optional chaining and fallback to error.toString() - Ensure at least one retry attempt is made even when maxRetries is 0 - Improve _isRetryableError() to handle undefined/null errors gracefully - Extract error code and message once to prevent repeated property access - Fix retry attempt logging to use calculated maxAttempts instead of this.maxRetries - Add comment clarifying that lastError is guaranteed to be set after retry loop - Update task documentation to mark Property 7 test as PASSED and fix typo in critical error safety section - Prevents crashes when error objects lack message property or contain unexpected error types
Amazon Product Bar Extension
Eine Chrome Extension mit React, StaggeredMenu und AppWrite Cloud Storage, die eine Bar unter Produktbildern auf Amazon-Suchergebnisseiten hinzufügt.
Features
- 🎨 Animiertes StaggeredMenu mit GSAP
- ⚛️ React-basierte Architektur
- 🔥 Product Bar unter jedem Produktbild
- ☁️ AppWrite Cloud Storage - Synchronisation über alle Geräte
- 🔐 Benutzer-Authentifizierung - Sichere Datenspeicherung
- 🤖 AI-Integration - Mistral AI für Titel-Generierung
- 📱 Responsive Design mit Accessibility-Features
- 🌐 Unterstützt alle Amazon-Domains
- 🔄 Offline-Funktionalität - Arbeitet auch ohne Internet
- 📊 Daten-Migration - Automatische Übertragung von localStorage
Installation
Voraussetzungen
- AppWrite Account: Erstelle einen Account bei AppWrite
- Mistral AI API Key (optional): Für AI-Titel-Generierung von Mistral AI
AppWrite Setup
-
Projekt erstellen:
- Gehe zu deinem AppWrite Dashboard
- Erstelle ein neues Projekt
- Notiere dir die Project ID
-
Datenbank konfigurieren:
- Erstelle eine neue Datenbank mit ID:
amazon-extension-db - Erstelle folgende Collections:
amazon-ext-enhanced-items(Enhanced Items)amazon-ext-saved-products(Basic Products)amazon_ext_blacklist(Blacklisted Brands)amazon-ext-enhanced-settings(User Settings)amazon-ext-migration-status(Migration Status)
- Erstelle eine neue Datenbank mit ID:
-
Benutzer-Authentifizierung:
- Aktiviere Email/Password Authentication
- Konfiguriere Benutzerregistrierung (falls gewünscht)
Für Entwicklung
- Dependencies installieren:
npm install
-
AppWrite Konfiguration anpassen:
- Öffne
src/AppWriteConfig.js - Trage deine AppWrite-Daten ein:
export const APPWRITE_CONFIG = { endpoint: 'https://dein-appwrite-server.com/v1', projectId: 'deine-project-id', databaseId: 'amazon-extension-db' }; - Öffne
-
Build erstellen:
npm run build
- Extension in Chrome laden:
- Öffne
chrome://extensions/ - Aktiviere "Entwicklermodus" (oben rechts)
- Klicke auf "Entpackte Erweiterung laden"
- Wähle diesen Ordner aus
- Öffne
Für Entwicklung mit Auto-Rebuild
npm run dev
Dies startet Vite im Watch-Modus. Nach Änderungen musst du die Extension in Chrome neu laden.
Erste Schritte
1. Anmeldung
- Öffne eine Amazon-Suchergebnisseite
- Klicke auf das StaggeredMenu (oben rechts)
- Melde dich mit deinen AppWrite-Zugangsdaten an
- Bei der ersten Anmeldung werden deine lokalen Daten automatisch migriert
2. API-Konfiguration (Optional)
- Gehe zu "Settings" im Menu
- Trage deinen Mistral AI API Key ein
- Teste die Verbindung
- Speichere die Einstellungen
3. Enhanced Items verwenden
- Klicke auf "Enhanced Items" im Menu
- Füge Produkte über URL hinzu
- Nutze AI-generierte Titel-Vorschläge
- Deine Daten werden automatisch synchronisiert
Projektstruktur
├── src/
│ ├── content.jsx # Haupt-Content-Script
│ ├── StaggeredMenu.jsx # React StaggeredMenu Komponente
│ ├── StaggeredMenu.css # Menu Styles
│ ├── AppWriteConfig.js # AppWrite Konfiguration
│ ├── AppWriteManager.js # AppWrite Integration
│ ├── AuthService.js # Authentifizierung
│ ├── MigrationService.js # Daten-Migration
│ ├── OfflineService.js # Offline-Funktionalität
│ ├── LoginUI.jsx # Login-Interface
│ ├── MigrationUI.jsx # Migration-Interface
│ └── Enhanced*/ # Enhanced Item Management
├── dist/ # Build-Output (generiert)
├── manifest.json # Chrome Extension Manifest
├── package.json # NPM Dependencies
└── vite.config.js # Vite Build-Konfiguration
Verwendung
Grundfunktionen
- Gehe zu einer Amazon-Suchergebnisseite (z.B. amazon.de/s?k=laptop)
- Das StaggeredMenu erscheint oben rechts
- Unter jedem Produktbild siehst du die Product Bar
- Klicke auf "Menu" um das animierte Menü zu öffnen
Cloud-Synchronisation
- Deine Daten werden automatisch in AppWrite gespeichert
- Änderungen werden sofort auf alle deine Geräte synchronisiert
- Bei Offline-Nutzung werden Änderungen lokal gespeichert und später synchronisiert
AI-Features
- Automatische Titel-Verbesserung mit Mistral AI
- Drei Titel-Vorschläge pro Produkt
- Intelligente Produktdaten-Extraktion
Technologie-Stack
- React 18 - UI Framework
- GSAP - Animationen
- Vite - Build Tool
- AppWrite - Cloud Backend & Authentifizierung
- Mistral AI - KI-Integration
- Chrome Extension Manifest V3
Konfiguration
AppWrite Verbindung
Die AppWrite-Konfiguration findest du in src/AppWriteConfig.js:
export const APPWRITE_CONFIG = {
endpoint: 'https://appwrite.webklar.com/v1',
projectId: '6963df38003b96dab5aa',
databaseId: 'amazon-extension-db',
collections: {
enhancedItems: 'amazon-ext-enhanced-items',
savedProducts: 'amazon-ext-saved-products',
blacklist: 'amazon_ext_blacklist',
settings: 'amazon-ext-enhanced-settings',
migrationStatus: 'amazon-ext-migration-status'
}
};
Fehlerbehandlung
Die Extension bietet umfassende Fehlerbehandlung:
- AppWrite Ausfall: Automatischer Fallback zu localStorage
- Netzwerkfehler: Retry-Logik mit exponential backoff
- Authentifizierung: Automatische Erneuerung abgelaufener Sessions
- Deutsche Fehlermeldungen: Benutzerfreundliche Meldungen
Debugging
AppWrite-Verbindung testen
// In der Browser-Konsole
window.amazonExtEventBus.emit('appwrite:health-check');
Migration-Status prüfen
// Migration-Status anzeigen
window.amazonExtEventBus.emit('migration:status');
Offline-Queue anzeigen
// Offline-Operationen anzeigen
window.amazonExtEventBus.emit('offline:queue-status');
Troubleshooting
Troubleshooting
CORS-Probleme mit AppWrite
Problem: Fehlermeldung "Access to fetch blocked by CORS policy"
Ursache: Ihr AppWrite-Server ist nur für https://localhost konfiguriert, aber die Extension läuft auf Amazon-Domains.
Automatische Lösung: Die Extension erkennt CORS-Fehler automatisch und wechselt zu localStorage:
- ✅ Daten werden automatisch lokal gespeichert
- ✅ Synchronisation erfolgt später, wenn AppWrite verfügbar ist
- ✅ Keine Datenverluste durch CORS-Probleme
Manuelle Lösung:
- AppWrite-Konsole öffnen
- "Settings" → "Platforms" → "Web Platform" hinzufügen
- Hostname auf
*.amazon.*setzen (für alle Amazon-Domains)
AppWrite-Probleme
"Invalid query: Attribute not found in schema: userId" Fehler?
🚨 KRITISCH: Ihre Collections fehlt das userId-Attribut!
🔧 AUTOMATISCHE REPARATUR (Empfohlen):
- Öffne
test-appwrite-repair-tool.htmlin deinem Browser - Gib deine AppWrite-Konfiguration ein
- Klicke auf "Nur Analyse" für eine sichere Überprüfung
- Bei Problemen: Klicke auf "Reparatur starten" für automatische Behebung
- Folge den detaillierten Anweisungen im Tool
📖 Vollständige Anleitung: Siehe APPWRITE_REPAIR_TOOL_GUIDE_DE.md
Manuelle Lösung (falls automatische Reparatur fehlschlägt):
- AppWrite Console öffnen → Databases → amazon-extension-db
- Für JEDE Collection (5 Stück):
- Auf Collection-Name klicken
- "Attributes" Tab → "Create Attribute"
- Type: String, Key:
userId, Size: 255, Required: ✅
- Permissions setzen (Settings Tab):
- Create:
users - Read/Update/Delete:
user:$userId
- Create:
📖 Detaillierte manuelle Anleitung: Siehe APPWRITE_USERID_ATTRIBUTE_FIX.md
401 Unauthorized Fehler?
- Gehe zu AppWrite Console → Databases → amazon-extension-db
- Für jede Collection: Settings → Permissions setzen:
- Create:
users - Read/Update/Delete:
user:$userId
- Create:
- Siehe
APPWRITE_PERMISSIONS_FIX.mdfür detaillierte Anleitung
Verbindung fehlgeschlagen?
- Prüfe deine AppWrite-Konfiguration in
src/AppWriteConfig.js - Stelle sicher, dass dein AppWrite-Server erreichbar ist
- Überprüfe die Project ID und Endpoint-URL
- Kontrolliere die Collection-Namen
Authentifizierung schlägt fehl?
- Prüfe deine Login-Daten
- Stelle sicher, dass Email/Password Auth aktiviert ist
- Kontrolliere die AppWrite-Berechtigungen
- Bei Problemen: Logout und erneut anmelden
Daten-Migration
Migration hängt?
- Öffne die Browser-Konsole für Details
- Prüfe deine Internetverbindung
- Stelle sicher, dass AppWrite erreichbar ist
- Bei Fehlern: Migration über Settings neu starten
Offline-Modus
Synchronisation funktioniert nicht?
- Prüfe die Netzwerkverbindung
- Kontrolliere den Offline-Queue-Status
- Warte auf automatische Synchronisation
- Bei Problemen: Extension neu laden
Allgemeine Probleme
Keine Balken sichtbar?
- Prüfe ob du auf einer Amazon-Suchergebnisseite bist
- Stelle sicher, dass
npm run builderfolgreich war - Reload die Extension in
chrome://extensions/ - Prüfe die Konsole auf Fehler
Menu erscheint nicht?
- Prüfe die Console auf Fehler
- Stelle sicher, dass alle Dependencies installiert sind
- Rebuild mit
npm run build - Kontrolliere die AppWrite-Verbindung
Support
Bei Problemen:
- Prüfe die Browser-Konsole auf Fehlermeldungen
- Teste die AppWrite-Verbindung
- Kontrolliere den Migration-Status
- Prüfe die Offline-Queue bei Synchronisationsproblemen