File tree Expand file tree Collapse file tree 8 files changed +97
-0
lines changed
project/src/main/scala/definitions
redux/src/main/scala/scommons/react/redux Expand file tree Collapse file tree 8 files changed +97
-0
lines changed Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ language: scala
22sudo : false
33jdk :
44- oraclejdk8
5+ dist : trusty
56env :
67 global :
78 - TRAVIS_NODE_VERSION="8"
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ val scommonsReactVer = "1.0.0-SNAPSHOT"
1818libraryDependencies ++= Seq (
1919 " org.scommons.react" %%% " scommons-react-core" % scommonsReactVer,
2020 " org.scommons.react" %%% " scommons-react-dom" % scommonsReactVer,
21+ " org.scommons.react" %%% " scommons-react-redux" % scommonsReactVer,
2122
2223 " org.scommons.react" %%% " scommons-react-test" % scommonsReactVer % " test" ,
2324 " org.scommons.react" %%% " scommons-react-test-dom" % scommonsReactVer % " test"
Original file line number Diff line number Diff line change @@ -17,13 +17,15 @@ lazy val `scommons-react` = (project in file("."))
1717 .aggregate(
1818 `scommons-react-core`,
1919 `scommons-react-dom`,
20+ `scommons-react-redux`,
2021 `scommons-react-test`,
2122 `scommons-react-test-dom`,
2223 `scommons-react-showcase`
2324)
2425
2526lazy val `scommons-react-core` = ReactCore .definition
2627lazy val `scommons-react-dom` = ReactDom .definition
28+ lazy val `scommons-react-redux` = ReactRedux .definition
2729lazy val `scommons-react-test` = ReactTest .definition
2830lazy val `scommons-react-test-dom` = ReactTestDom .definition
2931lazy val `scommons-react-showcase` = ReactShowcase .definition
Original file line number Diff line number Diff line change 1+ package definitions
2+
3+ import common .{Libs , TestLibs }
4+ import sbt .Keys ._
5+ import sbt ._
6+
7+ import scalajsbundler .sbtplugin .ScalaJSBundlerPlugin .autoImport ._
8+
9+ object ReactRedux extends ScalaJsModule {
10+
11+ override val id : String = " scommons-react-redux"
12+
13+ override val base : File = file(" redux" )
14+
15+ override def definition : Project = super .definition
16+ .settings(
17+ description := " Scala.js facades for react-redux utilities and components" ,
18+
19+ requireJsDomEnv in Test := true
20+ )
21+
22+ override val internalDependencies : Seq [ClasspathDep [ProjectReference ]] = Seq (
23+ ReactCore .definition
24+ )
25+
26+ override val runtimeDependencies : Def .Initialize [Seq [ModuleID ]] = Def .setting(Seq (
27+ Libs .sjsReactJsRedux.value
28+ ))
29+
30+ override val testDependencies : Def .Initialize [Seq [ModuleID ]] = Def .setting(Seq (
31+ TestLibs .scalaTestJs.value,
32+ TestLibs .scalaMockJs.value
33+ ).map(_ % " test" ))
34+ }
Original file line number Diff line number Diff line change 1+ package scommons .react .redux
2+
3+ import io .github .shogowada .scalajs .reactjs .React .Props
4+ import io .github .shogowada .scalajs .reactjs .classes .ReactClass
5+ import io .github .shogowada .scalajs .reactjs .redux .ReactRedux
6+ import io .github .shogowada .scalajs .reactjs .redux .Redux .Dispatch
7+ import scommons .react .UiComponent
8+
9+ trait BaseStateController [S , P ] {
10+
11+ def apply (): ReactClass = reactClass
12+
13+ private lazy val reactClass = ReactRedux .connectAdvanced { dispatch : Dispatch =>
14+ (state : S , props : Props [Unit ]) =>
15+ mapStateToProps(dispatch, state, props)
16+ }(uiComponent.apply())
17+
18+ def uiComponent : UiComponent [P ]
19+
20+ def mapStateToProps (dispatch : Dispatch , state : S , props : Props [Unit ]): P
21+ }
Original file line number Diff line number Diff line change 1+ package scommons .react .redux .task
2+
3+ import scala .concurrent .Future
4+ import scala .scalajs .concurrent .JSExecutionContext .Implicits .queue
5+ import scala .util .Try
6+
7+ trait AbstractTask {
8+
9+ val startTime : Long = System .currentTimeMillis()
10+
11+ def message : String
12+
13+ def onComplete (f : Try [_] => Unit ): Unit
14+ }
15+
16+ case class FutureTask [T ](message : String , future : Future [T ]) extends AbstractTask {
17+
18+ def onComplete (f : (Try [_]) => Unit ): Unit = future.onComplete(f)
19+ }
Original file line number Diff line number Diff line change 1+ package scommons .react .redux .task
2+
3+ import io .github .shogowada .scalajs .reactjs .redux .Action
4+
5+ trait TaskAction extends Action {
6+
7+ def task : AbstractTask
8+ }
Original file line number Diff line number Diff line change 1+ package scommons .react .redux .task
2+
3+ object TaskReducer {
4+
5+ def apply (state : Option [AbstractTask ], action : Any ): Option [AbstractTask ] = {
6+ action match {
7+ case a : TaskAction => Some (a.task)
8+ case _ => state
9+ }
10+ }
11+ }
You can’t perform that action at this time.
0 commit comments