@@ -11097,43 +11097,61 @@ class FastSearchCard extends HTMLElement {
1109711097 console.log(`🌟 Toggle Favorit für ${entityId}...`);
1109811098
1109911099 try {
11100- // Aktuelle Favoriten aus Helper lesen
11100+ // User-ID ermitteln
11101+ const userId = this._hass.user?.id || 'unknown_user';
11102+ console.log(`👤 User ID: ${userId}`);
11103+
11104+ // Alle User-Favoriten aus Helper lesen
1110111105 const favoritesHelper = this._hass.states['input_text.fast_search_favorites'];
11102- let favorites = [] ;
11106+ let allUserFavorites = {} ;
1110311107
1110411108 if (favoritesHelper && favoritesHelper.state) {
1110511109 try {
11106- favorites = JSON.parse(favoritesHelper.state);
11110+ // Versuche JSON zu parsen
11111+ const parsed = JSON.parse(favoritesHelper.state);
11112+ // Prüfe ob es bereits Multi-User Format ist
11113+ if (typeof parsed === 'object' && !Array.isArray(parsed)) {
11114+ allUserFavorites = parsed;
11115+ } else if (Array.isArray(parsed)) {
11116+ // Legacy: Array-Format zu User-Format migrieren
11117+ console.log('🔄 Migriere Legacy-Format zu Multi-User');
11118+ allUserFavorites = { [userId]: parsed };
11119+ }
1110711120 } catch (e) {
11108- console.warn('Favoriten- Helper enthält ungültiges JSON, reset zu leerem Array ');
11109- favorites = [] ;
11121+ console.warn('Helper enthält ungültiges JSON, reset zu leerem Objekt ');
11122+ allUserFavorites = {} ;
1111011123 }
1111111124 }
1111211125
11113- console.log('Aktuelle Favoriten:', favorites);
11126+ // Aktuelle User-Favoriten holen
11127+ let userFavorites = allUserFavorites[userId] || [];
11128+ console.log(`Aktuelle Favoriten für ${userId}:`, userFavorites);
1111411129
1111511130 // Toggle: Hinzufügen oder entfernen
11116- const isFavorite = favorites.includes(entityId);
11117- let updatedFavorites;
11131+ const isFavorite = userFavorites.includes(entityId);
1111811132 let message;
1111911133
1112011134 if (isFavorite) {
11121- updatedFavorites = favorites .filter(id => id !== entityId);
11135+ userFavorites = userFavorites .filter(id => id !== entityId);
1112211136 message = 'Favorit entfernt!';
11137+ console.log(`➖ Entferne ${entityId} von Favoriten`);
1112311138 } else {
11124- updatedFavorites = [...favorites , entityId];
11139+ userFavorites = [...userFavorites , entityId];
1112511140 message = 'Favorit hinzugefügt!';
11141+ console.log(`➕ Füge ${entityId} zu Favoriten hinzu`);
1112611142 }
1112711143
11128- console.log('Neue Favoriten:', updatedFavorites);
11144+ // User-Favoriten in Gesamt-Struktur zurückschreiben
11145+ allUserFavorites[userId] = userFavorites;
11146+ console.log('Neue Gesamt-Struktur:', allUserFavorites);
1112911147
1113011148 // Zurück in Helper speichern
1113111149 await this._hass.callService('input_text', 'set_value', {
1113211150 entity_id: 'input_text.fast_search_favorites',
11133- value: JSON.stringify(updatedFavorites )
11151+ value: JSON.stringify(allUserFavorites )
1113411152 });
1113511153
11136- console.log('✅ Favoriten erfolgreich gespeichert');
11154+ console.log('✅ Benutzerspezifische Favoriten erfolgreich gespeichert');
1113711155 alert(message);
1113811156
1113911157 // Button visuell aktualisieren
@@ -11149,24 +11167,70 @@ class FastSearchCard extends HTMLElement {
1114911167 const labelButton = this.shadowRoot.querySelector('.label-test-button');
1115011168 if (!labelButton) return;
1115111169
11152- // Favoriten aus Helper lesen
11170+ try {
11171+ // User-ID ermitteln
11172+ const userId = this._hass.user?.id || 'unknown_user';
11173+
11174+ // Favoriten aus Helper lesen
11175+ const favoritesHelper = this._hass.states['input_text.fast_search_favorites'];
11176+ let allUserFavorites = {};
11177+
11178+ if (favoritesHelper && favoritesHelper.state) {
11179+ try {
11180+ const parsed = JSON.parse(favoritesHelper.state);
11181+ if (typeof parsed === 'object' && !Array.isArray(parsed)) {
11182+ allUserFavorites = parsed;
11183+ } else if (Array.isArray(parsed)) {
11184+ // Legacy Format: Als aktueller User behandeln
11185+ allUserFavorites = { [userId]: parsed };
11186+ }
11187+ } catch (e) {
11188+ console.warn('Fehler beim Parsen der Favoriten');
11189+ allUserFavorites = {};
11190+ }
11191+ }
11192+
11193+ // User-spezifische Favoriten prüfen
11194+ const userFavorites = allUserFavorites[userId] || [];
11195+ const isFavorite = userFavorites.includes(entityId);
11196+
11197+ // Button Text und Style ändern
11198+ labelButton.textContent = isFavorite ? '🌟' : '⭐';
11199+ labelButton.title = isFavorite ? 'Favorit entfernen' : 'Als Favorit markieren';
11200+
11201+ console.log(`🔍 Button State für ${entityId}: ${isFavorite ? 'Favorit' : 'Nicht-Favorit'}`);
11202+
11203+ } catch (error) {
11204+ console.error('❌ Fehler beim Aktualisieren des Button-Status:', error);
11205+ // Fallback
11206+ labelButton.textContent = '⭐';
11207+ labelButton.title = 'Als Favorit markieren';
11208+ }
11209+ }
11210+
11211+ debugUserFavorites() {
11212+ const userId = this._hass.user?.id || 'unknown_user';
1115311213 const favoritesHelper = this._hass.states['input_text.fast_search_favorites'];
11154- let favorites = [];
11214+
11215+ console.log('=== FAVORITEN DEBUG ===');
11216+ console.log('👤 Current User ID:', userId);
11217+ console.log('🏠 Helper State:', favoritesHelper?.state);
1115511218
1115611219 if (favoritesHelper && favoritesHelper.state) {
1115711220 try {
11158- favorites = JSON.parse(favoritesHelper.state);
11221+ const parsed = JSON.parse(favoritesHelper.state);
11222+ console.log('📊 Parsed Data:', parsed);
11223+
11224+ if (typeof parsed === 'object' && !Array.isArray(parsed)) {
11225+ console.log('👥 All Users:', Object.keys(parsed));
11226+ console.log('⭐ My Favorites:', parsed[userId] || []);
11227+ }
1115911228 } catch (e) {
11160- favorites = [] ;
11229+ console.error('❌ Parse Error:', e) ;
1116111230 }
1116211231 }
11163-
11164- const isFavorite = favorites.includes(entityId);
11165-
11166- // Button Text und Style ändern
11167- labelButton.textContent = isFavorite ? '🌟' : '⭐';
11168- labelButton.title = isFavorite ? 'Favorit entfernen' : 'Als Favorit markieren';
11169- }
11232+ console.log('=== END DEBUG ===');
11233+ }
1117011234
1117111235
1117211236
0 commit comments