Skip to content

Commit

Permalink
Added scommons-react-redux module
Browse files Browse the repository at this point in the history
  • Loading branch information
viktor-podzigun committed Jun 19, 2019
1 parent 98b9e87 commit 0e7515e
Show file tree
Hide file tree
Showing 15 changed files with 6,171 additions and 4,971 deletions.
1 change: 1 addition & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ language: scala
sudo: false
jdk:
- oraclejdk8
dist: trusty
env:
global:
- TRAVIS_NODE_VERSION="8"
Expand Down
8,168 changes: 4,703 additions & 3,465 deletions docs/showcase/assets/scommons-client-showcase-opt-library.js

Large diffs are not rendered by default.

2,808 changes: 1,440 additions & 1,368 deletions docs/showcase/assets/scommons-client-showcase-opt.js

Large diffs are not rendered by default.

7 changes: 3 additions & 4 deletions project/src/main/scala/common/Libs.scala
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,15 @@ import scommons.sbtplugin.project.CommonLibs

object Libs extends CommonLibs {

val scommonsReactVersion = "0.1.0"
private val scommonsApiVersion = "0.1.0"
val scommonsReactVersion = "1.0.0-SNAPSHOT"
private val scommonsApiVersion = "1.0.0-SNAPSHOT"
private val sjsReactJsVer = "0.14.0"

lazy val scommonsReactCore = Def.setting("org.scommons.react" %%% "scommons-react-core" % scommonsReactVersion)
lazy val scommonsReactDom = Def.setting("org.scommons.react" %%% "scommons-react-dom" % scommonsReactVersion)
lazy val scommonsReactRedux = Def.setting("org.scommons.react" %%% "scommons-react-redux" % scommonsReactVersion)
lazy val scommonsApiCore = Def.setting("org.scommons.api" %%% "scommons-api-core" % scommonsApiVersion)

lazy val sjsReactJsRouterDom = Def.setting("io.github.shogowada" %%% "scalajs-reactjs-router-dom" % sjsReactJsVer)
lazy val sjsReactJsRouterRedux = Def.setting("io.github.shogowada" %%% "scalajs-reactjs-router-redux" % sjsReactJsVer)
lazy val sjsReactJsRedux = Def.setting("io.github.shogowada" %%% "scalajs-reactjs-redux" % sjsReactJsVer)
lazy val sjsReactJsReduxDevTools = Def.setting("io.github.shogowada" %%% "scalajs-reactjs-redux-devtools" % sjsReactJsVer)
}
7 changes: 3 additions & 4 deletions project/src/main/scala/definitions/ClientUi.scala
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@ object ClientUi extends ScalaJsModule {
.settings(
description := "Common Scala.js, React.js web-client utilities and components",
coverageExcludedPackages := ".*Css" +
";.*BaseStateController" +
";.*BaseStateAndRouteController" +
";scommons.client.ui.popup.WithAutoHide" + // causes "a dangling UndefinedParam", see https://github.com/scoverage/scalac-scoverage-plugin/issues/196
";scommons.client.ui.popup.raw" +
Expand Down Expand Up @@ -54,6 +53,7 @@ object ClientUi extends ScalaJsModule {
("scommons-api", "scommons-api-coreJS", None),
("scommons-react", "scommons-react-core", None),
("scommons-react", "scommons-react-dom", None),
("scommons-react", "scommons-react-redux", None),

("scommons-react", "scommons-react-test", Some("test")),
("scommons-react", "scommons-react-test-dom", Some("test"))
Expand All @@ -62,12 +62,11 @@ object ClientUi extends ScalaJsModule {
override val runtimeDependencies: Def.Initialize[Seq[ModuleID]] = Def.setting(Seq(
Libs.scommonsReactCore.value,
Libs.scommonsReactDom.value,
Libs.scommonsReactRedux.value,
Libs.scommonsApiCore.value,

Libs.sjsReactJsRouterDom.value, // Optional. For react-router-dom facade
Libs.sjsReactJsRouterRedux.value, // Optional. For react-router-redux facade
Libs.sjsReactJsRedux.value, // Optional. For react-redux facade
Libs.sjsReactJsReduxDevTools.value // Optional. For redux-devtools facade
Libs.sjsReactJsRouterRedux.value // Optional. For react-router-redux facade
))

override val testDependencies: Def.Initialize[Seq[ModuleID]] = Def.setting(Seq(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package scommons.client.showcase

import scommons.client.showcase.demo._
import scommons.client.task.AbstractTask.AbstractTaskKey
import scommons.client.task.TaskAction
import scommons.client.ui.Buttons
import scommons.client.ui.tree._
import scommons.client.util.{ActionsData, BrowsePath}
import scommons.react.redux.task.{AbstractTask, TaskReducer}

case class ShowcaseState(currentTask: Option[AbstractTaskKey])
case class ShowcaseState(currentTask: Option[AbstractTask])

object ShowcaseReducer {

Expand Down Expand Up @@ -59,13 +58,6 @@ object ShowcaseReducer {
)

def reduce(state: Option[ShowcaseState], action: Any): ShowcaseState = ShowcaseState(
currentTask = currentTaskReducer(state.flatMap(_.currentTask), action)
currentTask = TaskReducer(state.flatMap(_.currentTask), action)
)

private def currentTaskReducer(currentTask: Option[AbstractTaskKey],
action: Any): Option[AbstractTaskKey] = action match {

case a: TaskAction => Some(a.task.key)
case _ => None
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ package scommons.client.showcase.action.api
import io.github.shogowada.scalajs.reactjs.redux.Action
import io.github.shogowada.scalajs.reactjs.redux.Redux.Dispatch
import scommons.api.{ApiStatus, StatusResponse}
import scommons.client.task.{FutureTask, TaskAction}
import scommons.react.redux.task.{FutureTask, TaskAction}

import scala.concurrent.ExecutionContext.Implicits.global
import scala.util.Success
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package scommons.client.controller
import io.github.shogowada.scalajs.reactjs.React.Props
import io.github.shogowada.scalajs.reactjs.redux.Redux.Dispatch
import io.github.shogowada.scalajs.reactjs.router.RouterProps._
import scommons.react.redux.BaseStateController

trait BaseStateAndRouteController[S, P] extends BaseStateController[S, P] {

Expand Down

This file was deleted.

29 changes: 0 additions & 29 deletions ui/src/main/scala/scommons/client/task/AbstractTask.scala

This file was deleted.

8 changes: 0 additions & 8 deletions ui/src/main/scala/scommons/client/task/TaskAction.scala

This file was deleted.

12 changes: 6 additions & 6 deletions ui/src/main/scala/scommons/client/task/TaskManager.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@ import io.github.shogowada.scalajs.reactjs.React.Self
import io.github.shogowada.scalajs.reactjs.VirtualDOM._
import io.github.shogowada.scalajs.reactjs.classes.ReactClass
import scommons.api.ApiResponse
import scommons.client.task.AbstractTask.AbstractTaskKey
import scommons.client.ui.popup.ErrorPopup
import scommons.react.UiComponent
import scommons.react.redux.task.AbstractTask

import scala.util.{Failure, Success, Try}

case class TaskManagerProps(startTask: Option[AbstractTaskKey])
case class TaskManagerProps(startTask: Option[AbstractTask])

/**
* Controls running tasks.
Expand All @@ -25,15 +25,15 @@ object TaskManager extends UiComponent[TaskManagerProps] {

protected def create(): ReactClass = React.createClass[PropsType, TaskManagerState](
getInitialState = { self =>
self.props.wrapped.startTask.foldLeft(TaskManagerState()) { (currState, taskKey) =>
onTaskStart(self, currState, taskKey.obj)
self.props.wrapped.startTask.foldLeft(TaskManagerState()) { (currState, task) =>
onTaskStart(self, currState, task)
}
},
componentWillReceiveProps = { (self, nextProps) =>
val props = nextProps.wrapped
if (self.props.wrapped != props) {
props.startTask.foreach { taskKey =>
self.setState(onTaskStart(self, self.state, taskKey.obj))
props.startTask.foreach { task =>
self.setState(onTaskStart(self, self.state, task))
}
}
},
Expand Down
12 changes: 0 additions & 12 deletions ui/src/main/scala/scommons/client/util/Identity.scala

This file was deleted.

19 changes: 10 additions & 9 deletions ui/src/test/scala/scommons/client/task/TaskManagerSpec.scala
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package scommons.client.task
import org.scalatest.Assertion
import scommons.api.{ApiStatus, StatusResponse}
import scommons.client.ui.popup._
import scommons.react.redux.task.FutureTask
import scommons.react.test.dom.AsyncTestSpec
import scommons.react.test.raw.ShallowInstance
import scommons.react.test.util.ShallowRendererUtils
Expand All @@ -14,7 +15,7 @@ class TaskManagerSpec extends AsyncTestSpec with ShallowRendererUtils {
it should "set status to None when onHideStatus" in {
//given
val task = FutureTask("Fetching data", Promise[Unit]().future)
val props = TaskManagerProps(Some(task.key))
val props = TaskManagerProps(Some(task))
val renderer = createRenderer()
renderer.render(<(TaskManager())(^.wrapped := props)())
val uiProps = findComponentProps(renderer.getRenderOutput(), TaskManagerUi)
Expand All @@ -32,7 +33,7 @@ class TaskManagerSpec extends AsyncTestSpec with ShallowRendererUtils {
//given
val promise = Promise[Unit]()
val task = FutureTask("Fetching data", promise.future)
val props = TaskManagerProps(Some(task.key))
val props = TaskManagerProps(Some(task))
val renderer = createRenderer()
renderer.render(<(TaskManager())(^.wrapped := props)())
val uiProps = findComponentProps(renderer.getRenderOutput(), TaskManagerUi)
Expand Down Expand Up @@ -67,7 +68,7 @@ class TaskManagerSpec extends AsyncTestSpec with ShallowRendererUtils {
it should "render loading and status" in {
//given
val task = FutureTask("Fetching data", Promise[Unit]().future)
val props = TaskManagerProps(Some(task.key))
val props = TaskManagerProps(Some(task))
val component = <(TaskManager())(^.wrapped := props)()

//when
Expand All @@ -84,7 +85,7 @@ class TaskManagerSpec extends AsyncTestSpec with ShallowRendererUtils {
//given
val promise = Promise[Unit]()
val task = FutureTask("Fetching data", promise.future)
val props = TaskManagerProps(Some(task.key))
val props = TaskManagerProps(Some(task))
val renderer = createRenderer()
renderer.render(<(TaskManager())(^.wrapped := props)())
val uiProps = findComponentProps(renderer.getRenderOutput(), TaskManagerUi)
Expand All @@ -109,7 +110,7 @@ class TaskManagerSpec extends AsyncTestSpec with ShallowRendererUtils {
//given
val promise = Promise[StatusResponse]()
val task = FutureTask("Fetching data", promise.future)
val props = TaskManagerProps(Some(task.key))
val props = TaskManagerProps(Some(task))
val renderer = createRenderer()
renderer.render(<(TaskManager())(^.wrapped := props)())
val uiProps = findComponentProps(renderer.getRenderOutput(), TaskManagerUi)
Expand All @@ -134,7 +135,7 @@ class TaskManagerSpec extends AsyncTestSpec with ShallowRendererUtils {
//given
val promise = Promise[StatusResponse]()
val task = FutureTask("Fetching data", promise.future)
val props = TaskManagerProps(Some(task.key))
val props = TaskManagerProps(Some(task))
val renderer = createRenderer()
renderer.render(<(TaskManager())(^.wrapped := props)())
val uiProps = findComponentProps(renderer.getRenderOutput(), TaskManagerUi)
Expand All @@ -158,7 +159,7 @@ class TaskManagerSpec extends AsyncTestSpec with ShallowRendererUtils {
it should "render status of already completed task" in {
//given
val task = FutureTask("Fetching data", Future.successful(()))
val props = TaskManagerProps(Some(task.key))
val props = TaskManagerProps(Some(task))
val renderer = createRenderer()
renderer.render(<(TaskManager())(^.wrapped := props)())
assertRenderingResult(renderer.getRenderOutput(), expected(
Expand All @@ -182,15 +183,15 @@ class TaskManagerSpec extends AsyncTestSpec with ShallowRendererUtils {
val renderer = createRenderer()
val promise1 = Promise[StatusResponse]()
val task1 = FutureTask("Fetching data 1", promise1.future)
renderer.render(<(TaskManager())(^.wrapped := TaskManagerProps(Some(task1.key)))())
renderer.render(<(TaskManager())(^.wrapped := TaskManagerProps(Some(task1)))())
assertRenderingResult(renderer.getRenderOutput(), expected(
showLoading = true,
status = Some(s"${task1.message}...")
))

val promise2 = Promise[StatusResponse]()
val task2 = FutureTask("Fetching data 2", promise2.future)
renderer.render(<(TaskManager())(^.wrapped := TaskManagerProps(Some(task2.key)))())
renderer.render(<(TaskManager())(^.wrapped := TaskManagerProps(Some(task2)))())
assertRenderingResult(renderer.getRenderOutput(), expected(
showLoading = true,
status = Some(s"${task2.message}...")
Expand Down
33 changes: 0 additions & 33 deletions ui/src/test/scala/scommons/client/util/IdentitySpec.scala

This file was deleted.

0 comments on commit 0e7515e

Please sign in to comment.