dawarich/app/javascript/controllers/imports_controller.js
2024-11-07 13:30:58 +01:00

56 lines
1.6 KiB
JavaScript

import { Controller } from "@hotwired/stimulus";
import consumer from "../channels/consumer";
export default class extends Controller {
static targets = ["index"];
connect() {
if (!this.hasIndexTarget) {
console.log("No index target found, skipping subscription")
return
}
// console.log("Imports controller connected", {
// hasIndexTarget: this.hasIndexTarget,
// element: this.element,
// userId: this.element.dataset.userId
// });
this.setupSubscription();
}
setupSubscription() {
const userId = this.element.dataset.userId;
// console.log("Setting up subscription with userId:", userId);
this.channel = consumer.subscriptions.create(
{ channel: "ImportsChannel" },
{
connected: () => {
// console.log("Successfully connected to ImportsChannel");
// Test that we can receive messages
// console.log("Subscription object:", this.channel);
},
disconnected: () => {
// console.log("Disconnected from ImportsChannel");
},
received: (data) => {
// console.log("Received data:", data);
const row = this.element.querySelector(`tr[data-import-id="${data.import.id}"]`);
if (row) {
const pointsCell = row.querySelector('[data-points-count]');
if (pointsCell) {
pointsCell.textContent = new Intl.NumberFormat().format(data.import.points_count);
}
}
}
}
);
}
disconnect() {
if (this.channel) {
this.channel.unsubscribe();
}
}
}