app/javascript/js/controllers/dashboard_card_controller.js

Summary

Maintainability
A
0 mins
Test Coverage
import { Controller } from '@hotwired/stimulus'

export default class extends Controller {
  static targets = ['card']

  interval

  get parentTurboFrame() {
    return this.context.scope.element.closest('turbo-frame')
  }

  get refreshInterval() {
    if (this.cardTarget.dataset.refreshEvery) {
      return parseInt(this.cardTarget.dataset.refreshEvery, 10) * 1000
    }

    return undefined
  }

  connect() {
    if (this.refreshInterval) {
      this.interval = setInterval(() => {
        this.parentTurboFrame.reload()
      }, this.refreshInterval)
    }
  }

  cardTargetDisconnected() {
    if (this.interval) {
      clearInterval(this.interval)
    }
  }
}