mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-10 17:21:38 -05:00
48 lines
No EOL
1.5 KiB
JavaScript
48 lines
No EOL
1.5 KiB
JavaScript
import { Controller } from "@hotwired/stimulus";
|
|
|
|
export default class extends Controller {
|
|
static targets = ["indicator"];
|
|
static values = {
|
|
enabled: Boolean
|
|
};
|
|
|
|
connect() {
|
|
console.log("Family navbar indicator controller connected");
|
|
this.updateIndicator();
|
|
|
|
// Listen for location sharing updates
|
|
document.addEventListener('location-sharing:updated', this.handleSharingUpdate.bind(this));
|
|
document.addEventListener('location-sharing:expired', this.handleSharingExpired.bind(this));
|
|
}
|
|
|
|
disconnect() {
|
|
document.removeEventListener('location-sharing:updated', this.handleSharingUpdate.bind(this));
|
|
document.removeEventListener('location-sharing:expired', this.handleSharingExpired.bind(this));
|
|
}
|
|
|
|
handleSharingUpdate(event) {
|
|
// Only update if this is the current user's sharing change
|
|
// (we're only showing the current user's status in navbar)
|
|
this.enabledValue = event.detail.enabled;
|
|
this.updateIndicator();
|
|
}
|
|
|
|
handleSharingExpired(event) {
|
|
this.enabledValue = false;
|
|
this.updateIndicator();
|
|
}
|
|
|
|
updateIndicator() {
|
|
if (!this.hasIndicatorTarget) return;
|
|
|
|
if (this.enabledValue) {
|
|
// Green pulsing indicator for enabled
|
|
this.indicatorTarget.className = "w-2 h-2 bg-green-500 rounded-full animate-pulse";
|
|
this.indicatorTarget.title = "Location sharing enabled";
|
|
} else {
|
|
// Gray indicator for disabled
|
|
this.indicatorTarget.className = "w-2 h-2 bg-gray-400 rounded-full";
|
|
this.indicatorTarget.title = "Location sharing disabled";
|
|
}
|
|
}
|
|
} |