scala.scalajs.concurrent.JSExecutionContext.Implicits.queue Scala Examples

The following examples show how to use scala.scalajs.concurrent.JSExecutionContext.Implicits.queue. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example.
Example 1
Source File: StaticTranslationBinding.scala    From udash-core   with Apache License 2.0 5 votes vote down vote up
package io.udash.benchmarks.i18n

import io.udash.i18n._
import japgolly.scalajs.benchmark._
import japgolly.scalajs.benchmark.gui._

import scala.concurrent.Future
import scalatags.JsDom.all._

object StaticTranslationBinding {

  val instantSuccessTranslations = Benchmark("instant success translation") {
    div(
      (1 to 50).map { _ =>
        span(
          translatedAttr(Future.successful(Translated("Test")), "data-test"),
          translated(Future.successful(Translated("Test")))
        ).render
      }
    ).render
  }

  val futureTranslations = Benchmark("future translation") {
    import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
    div(
      (1 to 50).map { _ =>
        span(
          translatedAttr(Future(Translated("Test")), "data-test"),
          translated(Future(Translated("Test")))
        ).render
      }
    ).render
  }

  val suite = GuiSuite(
    Suite("StaticTranslations")(
      instantSuccessTranslations,
      futureTranslations
    )
  )
} 
Example 2
Source File: Main.scala    From hammock   with MIT License 5 votes vote down vote up
package examplenode

import hammock._
import hammock.marshalling._
import hammock.circe.implicits._
import io.circe.generic.auto._
import cats.effect.IO
import scala.util.{Failure, Success}
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import hammock.fetch.Interpreter._

object Main {
  implicit val cs = IO.contextShift(queue)

  def main(args: Array[String]): Unit = {

    val endpoint = uri"http://www.mocky.io/v2/5185415ba171ea3a00704eed"
    case class Req(name: String, number: Int)
    case class Resp(hello: String)
    val request = Hammock
      .request(Method.POST, endpoint, Map(), Some(Req("name", 4)))
      .as[Resp]
      .exec[IO]
    request.unsafeToFuture.onComplete {
      case Success(resp) => println("hello: " + resp)
      case Failure(ex)   => println(ex)
    }
  }
} 
Example 3
Source File: DNSTest.scala    From nodejs   with Apache License 2.0 5 votes vote down vote up
package io.scalajs.nodejs
package dns

import io.scalajs.util.JSONHelper._
import org.scalatest.FunSpec

import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import scala.scalajs.js


class DNSTest extends FunSpec {
  private val domain = "yahoo.com"

  describe("DNS") {

    it("supports lookup") {
      DNS.lookup(domain, (err, ipAddress) => {
        Assert.equal(err, null, err.toJson)
        info(s"lookup - ipAddress: $ipAddress")
      })
    }

    it("supports lookupFuture") {
      DNS.lookupFuture(domain) map { ipAddress =>
        info(s"lookupFuture - ipAddress: $ipAddress")
      }
    }

    it("supports lookupService:SSH") {
      DNS.lookupService("127.0.0.1", 22, (err, hostname, service) => {
        Assert.equal(err, null, err.toJson)
        info(s"lookupService - hostname => $hostname, service => $service")
      })
    }

    it("supports lookupServiceFuture:SSH") {
      DNS.lookupServiceFuture("127.0.0.1", 22) map { case (hostname, service) =>
        info(s"lookupServiceFuture - hostname: $hostname, service => $service")
      }
    }

    it("supports resolve:NS") {
      DNS.resolve(domain, "NS", (err: DnsError, addresses: js.Array[String]) => {
        Assert.equal(err, null, err.toJson)
        info(s"resolve:NS - addresses: ${addresses.mkString(", ")}")
      })
    }

    it("supports resolveFuture:MX") {
      DNS.resolveFuture[js.Array[MX]](domain, RRTYPE_MX) map { response =>
        info(s"resolveFuture:MX - response: ${response.toJson}")
      }
    }

    it("supports resolveFuture:NS") {
      DNS.resolveFuture[js.Array[String]](domain, "NS") map { addresses =>
        info(s"resolveFuture - addresses: ${addresses.mkString(", ")}")
      }
    }

    it("supports resolveFuture:SOA") {
      DNS.resolveFuture[SOA](domain, RRTYPE_SOA) foreach { response =>
        info(s"resolveFuture:SOA: response: ${response.toJson}")
      }
    }

    it("supports reverseFuture") {
      DNS.reverseFuture("216.58.218.142") map { hostnames =>
        info(s"reverseFuture - hostname: ${hostnames.mkString(", ")}")
      }
    }

  }

} 
Example 4
Source File: SPACircuit.scala    From scalajs-spa-tutorial   with Apache License 2.0 5 votes vote down vote up
package spatutorial.client.services

import autowire._
import diode._
import diode.data._
import diode.util._
import diode.react.ReactConnector
import spatutorial.shared.{TodoItem, Api}
import boopickle.Default._
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue

// Actions
case object RefreshTodos extends Action

case class UpdateAllTodos(todos: Seq[TodoItem]) extends Action

case class UpdateTodo(item: TodoItem) extends Action

case class DeleteTodo(item: TodoItem) extends Action

case class UpdateMotd(potResult: Pot[String] = Empty) extends PotAction[String, UpdateMotd] {
  override def next(value: Pot[String]) = UpdateMotd(value)
}

// The base model of our application
case class RootModel(todos: Pot[Todos], motd: Pot[String])

case class Todos(items: Seq[TodoItem]) {
  def updated(newItem: TodoItem) = {
    items.indexWhere(_.id == newItem.id) match {
      case -1 =>
        // add new
        Todos(items :+ newItem)
      case idx =>
        // replace old
        Todos(items.updated(idx, newItem))
    }
  }
  def remove(item: TodoItem) = Todos(items.filterNot(_ == item))
}


class MotdHandler[M](modelRW: ModelRW[M, Pot[String]]) extends ActionHandler(modelRW) {
  implicit val runner = new RunAfterJS

  override def handle = {
    case action: UpdateMotd =>
      val updateF = action.effect(AjaxClient[Api].welcomeMsg("User X").call())(identity _)
      action.handleWith(this, updateF)(PotAction.handler())
  }
}

// Application circuit
object SPACircuit extends Circuit[RootModel] with ReactConnector[RootModel] {
  // initial application model
  override protected def initialModel = RootModel(Empty, Empty)
  // combine all handlers into one
  override protected val actionHandler = composeHandlers(
    new TodoHandler(zoomRW(_.todos)((m, v) => m.copy(todos = v))),
    new MotdHandler(zoomRW(_.motd)((m, v) => m.copy(motd = v)))
  )
} 
Example 5
Source File: RPC.scala    From scaladex   with BSD 3-Clause "New" or "Revised" License 5 votes vote down vote up
package ch.epfl.scala.index.client
package rpc

import ch.epfl.scala.index.api.{AutocompletionResponse, SearchRequest}
import org.scalajs.dom.ext.Ajax
import play.api.libs.json.{Json, Reads}

import scala.concurrent.Future
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue

object RPC {
  def autocomplete(
      request: SearchRequest
  ): Future[List[AutocompletionResponse]] = {
    val params = request.toHttpParams
      .map { case (key, value) => s"$key=$value" }
      .mkString("&")

    Ajax
      .get(s"/api/autocomplete?$params")
      .map(_.responseText)
      .map(read[List[AutocompletionResponse]](_))
  }

  private def read[T: Reads](p: String): T = Json.parse(p).as[T]
} 
Example 6
Source File: ContextMenus.scala    From scala-js-chrome   with MIT License 5 votes vote down vote up
package chrome.contextMenus

import chrome.ChromeAPI
import chrome.contextMenus.bindings.{CreateProperties, MenuInfo, UpdateProperties}
import chrome.events.EventSource
import chrome.events.EventSourceImplicits._
import chrome.permissions.Permission.API
import chrome.tabs.bindings.Tab

import scala.concurrent.{Future, Promise}
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import scala.scalajs.js
import scala.scalajs.js.|

object ContextMenus extends ChromeAPI {

  def onClicked: EventSource[(MenuInfo, Tab)] = bindings.ContextMenus.onClicked

  val requiredPermissions: Set[API] = Set(API.ContextMenus)

  def create(createProperties: CreateProperties): String | Int =
    bindings.ContextMenus.create(createProperties)

  def create(id: String, title: String, contexts: List[String]): String | Int =
    create(
        bindings
          .CreateProperties(id, title, contexts = js.Array(contexts: _*)))

  def update(id: String | Int, properties: UpdateProperties): Unit =
    bindings.ContextMenus.update(id, properties)

  def remove(menuItemId: String | Int): Future[String | Int] = {
    val promise = Promise[Unit]
    val result = bindings.ContextMenus
      .remove(menuItemId, js.Any.fromFunction0[Unit](() => {
        promise.success(Unit)
      }))
    promise.future.map(_ => result)
  }

  def removeAll(): Future[Unit] = {
    val promise = Promise[Unit]
    bindings.ContextMenus.removeAll(js.Any.fromFunction0[Unit](() => {
      promise.success(Unit)
    }))
    promise.future
  }

} 
Example 7
Source File: Socket.scala    From scala-js-chrome   with MIT License 5 votes vote down vote up
package chrome.sockets.tcpServer

import chrome.events.EventSource
import chrome.sockets.tcp
import chrome.sockets.tcpServer.bindings._

import scala.concurrent.Future
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import scala.scalajs.js

class Socket(val socketId: SocketId) {

  val onAccept = TCPServer.onAccept
    .filter(_.socketId == socketId)
    .map(event => Socket.Accepted(tcp.Socket(event.clientSocketId)))
  val onAcceptError = TCPServer.onAcceptError
    .filter(_.socketId == socketId)
    .map(event => Socket.Error(event.resultCode))
  val all: EventSource[Socket.AcceptEvent] = onAccept.merge(onAcceptError)

  def update(properties: SocketProperties): Future[Unit] = {
    TCPServer.update(socketId, properties)
  }

  def setPaused(paused: Boolean): Future[Unit] = {
    TCPServer.setPaused(socketId, paused)
  }

  def listen(address: String,
             port: Int,
             backlog: js.UndefOr[Int] = js.undefined): Future[Int] = {
    TCPServer.listen(socketId, address, port, backlog)
  }

  def disconnect: Future[Unit] = {
    TCPServer.disconnect(socketId)
  }

  def close: Future[Unit] = {
    TCPServer.close(socketId)
  }

  def getInfo: Future[SocketInfo] = {
    TCPServer.getInfo(socketId)
  }

}

object Socket {

  sealed trait AcceptEvent
  case class Accepted(client: chrome.sockets.tcp.Socket) extends AcceptEvent
  case class Error(code: Int) extends AcceptEvent

  def apply(id: SocketId): Socket = new Socket(id)

  def apply(name: String = "", persistent: Boolean): Future[Socket] = {
    TCPServer
      .create(SocketProperties(persistent, name))
      .map(i => Socket(i.socketId))
  }

} 
Example 8
Source File: Socket.scala    From scala-js-chrome   with MIT License 5 votes vote down vote up
package chrome.sockets.tcp

import chrome.events.EventSource
import chrome.sockets.tcp.bindings._

import scala.concurrent.Future
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import scala.scalajs.js
import scala.scalajs.js.typedarray.ArrayBuffer

class Socket(val socketId: SocketId) {

  val onReceive = TCP.onReceive
    .filter(_.socketId == socketId)
    .map((event) => Socket.Received(event.data))
  val onReceiveError = TCP.onReceiveError
    .filter(_.socketId == socketId)
    .map((event) => Socket.Error(event.resultCode))
  val all: EventSource[Socket.ReceiveEvent] = onReceive.merge(onReceiveError)

  def update(properties: SocketProperties): Future[Unit] = {
    TCP.update(socketId, properties)
  }

  def setPaused(paused: Boolean): Future[Unit] = {
    TCP.setPaused(socketId, paused)
  }

  def setKeepAlive(enable: Boolean,
                   delay: js.UndefOr[Int] = js.undefined): Future[Int] = {
    TCP.setKeepAlive(socketId, enable, delay)
  }

  def setNoDelay(noDelay: Boolean): Future[Int] = {
    TCP.setNoDelay(socketId, noDelay)
  }

  def connect(peerAddress: String, peerPort: Int): Future[Int] = {
    TCP.connect(socketId, peerAddress, peerPort)
  }

  def disconnect: Future[Unit] = {
    TCP.disconnect(socketId)
  }

  def secure(options: js.UndefOr[SecureOptions]): Future[Unit] = {
    TCP.secure(socketId, options)
  }

  def send(data: ArrayBuffer): Future[SendInfo] = {
    TCP.send(socketId, data)
  }

  def close: Future[Unit] = {
    TCP.close(socketId)
  }

  def getInfo: Future[SocketInfo] = {
    TCP.getInfo(socketId)
  }

}

object Socket {

  sealed trait ReceiveEvent
  case class Received(data: ArrayBuffer) extends ReceiveEvent
  case class Error(code: Int) extends ReceiveEvent

  def apply(id: SocketId): Socket = new Socket(id)

  def apply(name: String = "",
            persistent: Boolean,
            bufferSize: Int): Future[Socket] = {
    TCP
      .create(SocketProperties(persistent, name, bufferSize))
      .map(i => Socket(i.socketId))
  }

} 
Example 9
Source File: ScalaJSExample.scala    From Full-Stack-Scala-Starter   with Apache License 2.0 5 votes vote down vote up
package example

import com.thoughtworks.binding.Binding.Var
import com.thoughtworks.binding.{Binding, dom}
import org.scalajs.dom.document
import org.scalajs.dom.ext.Ajax
import org.scalajs.dom.raw.{Event, HTMLElement}

import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import scala.scalajs.js
import scala.scalajs.js.JSON



object ScalaJSExample extends js.JSApp {

  implicit def makeIntellijHappy(x: scala.xml.Elem): Binding[HTMLElement] = ???

  
  def countRequest(data: Var[String]) = {
    val url = "http://localhost:9000/count"
    Ajax.get(url).foreach { case xhr =>
      data.value = JSON.parse(xhr.responseText).count.toString
    }
  }

  @dom
  def render = {
    val data = Var("")
    countRequest(data) // initial population
    <div>
      <button onclick={event: Event => countRequest(data) }>
        Boop
      </button>
      From Play: The server has been booped { data.bind } times. Shared Message: {shared.SharedMessages.itWorks}.
    </div>
  }

  def main(): Unit = {
    dom.render(document.body, render)
  }
} 
Example 10
Source File: HighchartsTestApp.scala    From scalajs-highcharts   with MIT License 5 votes vote down vote up
package com.highcharts.test.frontend

import com.highcharts.CleanJsObject
import com.highcharts.HighchartsUtils._
import com.highcharts.test.frontend.charts.{Test3dPieChartConfig, TestBarChartConfig, TestCombinationChartConfig, TestStockChartConfig}
import org.scalajs.dom
import org.scalajs.jquery._

import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import scala.scalajs.js
import scala.scalajs.js.JSApp
import scala.scalajs.js.annotation.JSExport
import scalatags.JsDom.all._

@JSExport
object HighchartsTestApp extends JSApp {
  private def renderChart(chartConfig: CleanJsObject[js.Object]): dom.Element = {
    dom.console.log(chartConfig)
    val container = div().render
    jQuery(container).highcharts(chartConfig)
    container
  }

  private def fixChartSizes(): Unit = {
    jQuery("div[data-highcharts-chart]").each { (_: Int, e: dom.Element) ⇒
      jQuery(e).highcharts().foreach(_.reflow()).asInstanceOf[js.Any]
    }
  }

  @JSExport
  override def main(): Unit = {
    jQuery(() ⇒ {
      // Create charts
      val barChart = renderChart(new TestBarChartConfig)
      val pieChart = renderChart(new Test3dPieChartConfig)
      val comboChart = renderChart(new TestCombinationChartConfig)
      val stockChart = div().render

      // Create navigation elements
      val tabs = new NavigationBar("highcharts-test",
        NavigationTab("Bar chart", "bar", "briefcase", barChart, active = true),
        NavigationTab("Pie chart", "pie", "adjust", pieChart),
        NavigationTab("Combination chart", "combo", "tasks", comboChart),
        NavigationTab("Stock chart", "stock", "usd", stockChart)
      )

      // Bootstrap container
      val container = div(id := "main-container", `class` := "container")(
        div(`class` := "row", div(`class` := "col-md-12")(
          tabs.content
        ))
      ).render

      // Render page
      val body = dom.document.body
      body.appendChild(tabs.navbar("Scala.js Highcharts Test").render)
      body.appendChild(container)

      TestStockChartConfig.loadSampleData().foreach { data ⇒
        val config: CleanJsObject[TestStockChartConfig] = new TestStockChartConfig(data)
        dom.console.log(config)
        jQuery(stockChart).highstock(config)
      }

      // Size fix
      jQuery(dom.document).on("shown.bs.tab", "a[data-toggle=\"tab\"]", (_: JQueryEventObject) ⇒ fixChartSizes())
      fixChartSizes()
    })
  }
} 
Example 11
Source File: Image.scala    From slinky   with MIT License 5 votes vote down vote up
package slinky.native

import slinky.core.ExternalComponent
import slinky.core.annotations.react
import slinky.core.facade.ReactElement

import scala.concurrent.Future
import scala.scalajs.js
import scala.scalajs.js.annotation.JSImport
import scala.scalajs.js.|
import scala.scalajs.js.JSConverters._

case class ImageURISource(
  uri: js.UndefOr[String] = js.undefined,
  bundle: js.UndefOr[String] = js.undefined,
  method: js.UndefOr[String] = js.undefined,
  headers: js.UndefOr[js.Object] = js.undefined,
  body: js.UndefOr[String] = js.undefined,
  cache: js.UndefOr[String] = js.undefined,
  width: js.UndefOr[Int] = js.undefined,
  height: js.UndefOr[Int] = js.undefined,
  scale: js.UndefOr[Double] = js.undefined
)

@js.native
trait ImageInterface extends js.Object

case class ImageErrorEvent(error: js.Error)

case class ImageProgressEvent(loaded: Int, total: Int)

@react object Image extends ExternalComponent {
  case class Props(
    style: js.UndefOr[js.Object] = js.undefined,
    blurRadius: js.UndefOr[Int] = js.undefined,
    onLayout: js.UndefOr[NativeSyntheticEvent[LayoutChangeEvent] => Unit] = js.undefined,
    onLoad: js.UndefOr[() => Unit] = js.undefined,
    onLoadEnd: js.UndefOr[() => Unit] = js.undefined,
    onLoadStart: js.UndefOr[() => Unit] = js.undefined,
    resizeMode: js.UndefOr[String] = js.undefined,
    source: js.UndefOr[ImageURISource | Int | Seq[ImageURISource]] = js.undefined,
    loadingIndicatorSource: js.UndefOr[Seq[ImageURISource | Int]] = js.undefined,
    onError: js.UndefOr[NativeSyntheticEvent[ImageErrorEvent] => Unit] = js.undefined,
    testID: js.UndefOr[String] = js.undefined,
    resizeMethod: js.UndefOr[String] = js.undefined,
    accessibilityLabel: js.UndefOr[ReactElement] = js.undefined,
    accessible: js.UndefOr[Boolean] = js.undefined,
    capInsets: js.UndefOr[BoundingBox] = js.undefined,
    defaultSource: js.UndefOr[js.Object | Int] = js.undefined,
    onPartialLoad: js.UndefOr[() => Unit] = js.undefined,
    onProgress: js.UndefOr[NativeSyntheticEvent[ImageProgressEvent] => Unit] = js.undefined
  )

  @js.native
  @JSImport("react-native", "Image")
  object Component extends js.Object {
    def getSize(
      uri: String,
      success: js.Function2[Int, Int, Unit],
      failure: js.UndefOr[js.Function1[js.Error, Unit]]
    ): Unit                                                                   = js.native
    def prefetch(uri: String): Int | Unit                                     = js.native
    def abortPrefetch(requestId: Int): Unit                                   = js.native
    def queryCache(urls: js.Array[String]): js.Promise[js.Dictionary[String]] = js.native
  }

  override val component = Component

  def getSize(uri: String, success: (Int, Int) => Unit, failure: js.UndefOr[(js.Error) => Unit] = js.undefined): Unit =
    Component.getSize(uri, success, failure.map(v => v))

  def prefetch(uri: String): Int | Unit = Component.prefetch(uri)

  def abortPrefetch(requestId: Int): Unit = Component.abortPrefetch(requestId)

  def queryCache(urls: Seq[String]): Future[Map[String, String]] = {
    import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
    Component.queryCache(urls.toJSArray).toFuture.map(_.toMap)
  }
} 
Example 12
Source File: JsWriterTest.scala    From scalajs-react-bridge   with MIT License 5 votes vote down vote up
package com.payalabs.scalajs.react.bridge.test

import scala.concurrent.Future
import scala.scalajs.concurrent.JSExecutionContext.Implicits.queue
import scala.scalajs.js

import com.payalabs.scalajs.react.bridge._
import org.scalatest.funsuite.AnyFunSuite


class JsWriterTest extends AnyFunSuite {
  test("unionWriter") {
    val writer = unionWriter[Seq[String], Future[String]]
    val value1 = Seq("hello", "goodbye")
    val value2 = Future.successful("hello")
    val res1 = writer.toJs(value1)
    val res2 = writer.toJs(value2)
    assert(res1.isInstanceOf[js.Array[_]])
    assert(!res1.isInstanceOf[js.Promise[_]])
    assert(!res2.isInstanceOf[js.Array[_]])
    assert(res2.isInstanceOf[js.Promise[_]])
  }
}