Skip to content

Commit 153f29c

Browse files
authored
Update fast-search-card.js
1 parent 7de1051 commit 153f29c

File tree

1 file changed

+88
-24
lines changed

1 file changed

+88
-24
lines changed

dist/fast-search-card.js

Lines changed: 88 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)