All Downloads are FREE. Search and download functionalities are using the official Maven repository.

chrome.alarms.Alarms.scala Maven / Gradle / Ivy

package chrome.alarms

import chrome.alarms.bindings.{AlarmInfo, Alarm}
import chrome.events.EventSource
import chrome.events.EventSourceImplicits._
import chrome.utils.ErrorHandling._

import scala.concurrent.{Future, Promise}
import scala.scalajs.js

object Alarms {

  val onAlarm: EventSource[Alarm] = bindings.Alarms.onAlarm

  def getAll(): Future[List[Alarm]] = {
    val promise = Promise[List[Alarm]]()
    bindings.Alarms.getAll((alarms: js.Array[bindings.Alarm]) => {
      promise.complete(lastErrorOrValue(alarms.toList))
    })
    promise.future
  }

  def clearAll(): Future[Boolean] = {
    val promise = Promise[Boolean]()
    bindings.Alarms.clearAll(js.Any.fromFunction1((wasCleared: Boolean) => {
      promise.complete(lastErrorOrValue(wasCleared))
    }))
    promise.future
  }

  def create(name: String = "", alarmInfo: AlarmInfo): Unit = {
    bindings.Alarms.create(name, alarmInfo)
  }

  def get(name: String): Future[Option[Alarm]] = {
    val promise = Promise[Option[Alarm]]
    bindings.Alarms.get(name, (alarm: js.UndefOr[Alarm]) => {
      promise.complete(lastErrorOrValue(alarm.toOption))
    })
    promise.future
  }

  def clear(name: String = ""): Future[Boolean] = {
    val promise = Promise[Boolean]()
    bindings.Alarms.clear(name, js.Any.fromFunction1((wasCleared: Boolean) => {
      promise.complete(lastErrorOrValue(wasCleared))
    }))
    promise.future
  }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy