Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,11 @@ android {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.appcompat:appcompat:1.1.0-alpha05'
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'

implementation "io.reactivex.rxjava2:rxjava:2.2.8"
implementation "io.reactivex.rxjava2:rxkotlin:2.3.0"
Expand All @@ -37,5 +37,5 @@ dependencies {
implementation "org.jetbrains.anko:anko:$anko_version"
implementation 'com.jakewharton.rxrelay2:rxrelay:2.1.0'

implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha05'
implementation 'androidx.recyclerview:recyclerview:1.1.0-beta03'
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ package com.github.skyfe79.android.library.app
import androidx.lifecycle.ViewModelProviders
import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.github.skyfe79.android.library.app.action.ResetRouteAction
import com.github.skyfe79.android.library.app.examples.collectionview.CollectionViewActivity
import com.github.skyfe79.android.library.app.examples.counter.CounterActivity
import com.github.skyfe79.android.library.app.examples.counter.CounterActivity2
Expand Down Expand Up @@ -40,11 +39,6 @@ class MainActivity : AppCompatActivity() {
.disposedBy(disposeBag)
}

override fun onPause() {
super.onPause()
viewModel.dispatch(ResetRouteAction)
}

private fun handleRoute(route: MainRoute) = when (route) {
MainRoute.CounterExample -> startActivity<CounterActivity>()
MainRoute.CounterExample2 -> startActivity<CounterActivity2>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import com.github.skyfe79.android.reactcomponentkit.redux.Output
import com.github.skyfe79.android.reactcomponentkit.redux.State
import com.github.skyfe79.android.reactcomponentkit.viewmodel.RootViewModelType
import com.github.skyfe79.android.library.app.redux.routeReducer
import com.github.skyfe79.android.library.app.redux.reset

enum class MainRoute {
None,
Expand All @@ -23,13 +22,11 @@ class MainViewModel: RootViewModelType<MainState>() {
override fun setupStore() {
store.set(
initialState = MainState(MainRoute.None),
middlewares = arrayOf(::reset),
reducers = arrayOf(::routeReducer),
postwares = arrayOf()
reducers = arrayOf(::routeReducer)
)
}

override fun on(newState: MainState) {
route.acceptWithoutCompare(newState.route)
route.accept(newState.route).afterReset(MainRoute.None)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package com.github.skyfe79.android.library.app.action

import com.github.skyfe79.android.reactcomponentkit.redux.Action

object ResetRouteAction: Action
object ClickCounterExampleButtonAction: Action
object ClickCounterExample2ButtonAction: Action
object ClickRecyclerViewExampleButtonAction: Action
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package com.github.skyfe79.android.library.app.examples.emojicollection

import com.github.skyfe79.android.library.app.examples.emojicollection.middlewares.reset
import com.github.skyfe79.android.library.app.examples.emojicollection.middlewares.route
import com.github.skyfe79.android.library.app.examples.emojicollection.postwares.*
import com.github.skyfe79.android.library.app.examples.emojicollection.reducers.addEmoji
Expand Down Expand Up @@ -30,14 +29,14 @@ class EmojiCollectionViewModel: RootViewModelType<EmojiCollectionState>() {
override fun setupStore() {
store.set(
initialState = EmojiCollectionState(listOf(), listOf()),
middlewares = arrayOf(::reset, ::route),
middlewares = arrayOf(::route),
reducers = arrayOf(::addEmoji, ::removeEmoji, ::shuffleEmoji),
postwares = arrayOf(::makeItemModels)
)
}

override fun on(newState: EmojiCollectionState) {
itemModels.accept(newState.itemModels)
routes.accept(newState.route)
routes.accept(newState.route).afterReset(EmojiRoute.None)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ import com.github.skyfe79.android.reactcomponentkit.redux.Action

data class AddEmojiAction(val emoji: String): Action
object RemoveEmojiAction: Action
object ShuffleEmojiAction: Action
object ShuffleEmojiAction: Action
object MakeItemModelsAction: Action
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.github.skyfe79.android.library.app.examples.emojicollection.afters

import com.github.skyfe79.android.library.app.examples.emojicollection.EmojiCollectionState
import com.github.skyfe79.android.library.app.examples.emojicollection.EmojiRoute

fun reset(state: EmojiCollectionState): EmojiCollectionState {
return state.copy(route = EmojiRoute.None)
}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.github.skyfe79.android.library.app.examples.emojicollection.postware
import com.github.skyfe79.android.library.app.examples.emojicollection.EmojiCollectionState
import com.github.skyfe79.android.library.app.examples.emojicollection.EmojiCollectionViewModel
import com.github.skyfe79.android.library.app.examples.emojicollection.actions.AddEmojiAction
import com.github.skyfe79.android.library.app.examples.emojicollection.actions.MakeItemModelsAction
import com.github.skyfe79.android.library.app.examples.emojicollection.actions.RemoveEmojiAction
import com.github.skyfe79.android.library.app.examples.emojicollection.actions.ShuffleEmojiAction
import com.github.skyfe79.android.library.app.examples.emojicollection.models.EmojiBoxModel
Expand All @@ -14,7 +15,7 @@ fun EmojiCollectionViewModel.makeItemModels(state: State, action: Action): Obser
val emojiCollectionState = (state as? EmojiCollectionState) ?: return Observable.just(state)

return when (action) {
is AddEmojiAction, RemoveEmojiAction, ShuffleEmojiAction -> {
is MakeItemModelsAction -> {
val emojiBoxModels = emojiCollectionState.emojis.map { EmojiBoxModel(it) }
val mutatedState = emojiCollectionState.copy(itemModels = emojiBoxModels)
Observable.just(mutatedState)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,46 @@ package com.github.skyfe79.android.library.app.examples.emojicollection.reducers
import com.github.skyfe79.android.library.app.examples.emojicollection.EmojiCollectionState
import com.github.skyfe79.android.library.app.examples.emojicollection.EmojiCollectionViewModel
import com.github.skyfe79.android.library.app.examples.emojicollection.actions.AddEmojiAction
import com.github.skyfe79.android.library.app.examples.emojicollection.actions.MakeItemModelsAction
import com.github.skyfe79.android.library.app.examples.emojicollection.actions.RemoveEmojiAction
import com.github.skyfe79.android.library.app.examples.emojicollection.actions.ShuffleEmojiAction
import com.github.skyfe79.android.library.app.examples.emojicollection.util.EmojiHelper
import com.github.skyfe79.android.reactcomponentkit.redux.Action
import com.github.skyfe79.android.reactcomponentkit.redux.State
import io.reactivex.Observable
import io.reactivex.Single
import io.reactivex.rxkotlin.subscribeBy
import java.lang.Exception
import kotlin.random.Random

fun asyncAPI(): Single<Int> {
return Single.create {
Thread.sleep(500L)
it.onSuccess(1)
}
}

fun EmojiCollectionViewModel.addEmoji(state: State, action: Action): Observable<State> {
val emojiCollectionState = (state as? EmojiCollectionState) ?: return Observable.just(state)

return when (action) {
is AddEmojiAction -> {
val mutableEmojiList = emojiCollectionState.emojis.toMutableList()
val index = if (mutableEmojiList.isEmpty()) 0 else (0 until mutableEmojiList.size).random()
mutableEmojiList.add(index, EmojiHelper.emoji)
val mutatedState = emojiCollectionState.copy(emojis = mutableEmojiList)
Observable.just(mutatedState)
Single.create<State> { emitter ->
asyncAPI().subscribeBy(
onSuccess = {
val mutableEmojiList = emojiCollectionState.emojis.toMutableList()
val index = if (mutableEmojiList.isEmpty()) 0 else (0 until mutableEmojiList.size).random()
mutableEmojiList.add(index, EmojiHelper.emoji)
emitter.onSuccess(emojiCollectionState.copy(emojis = mutableEmojiList))
nextDispatch(MakeItemModelsAction, applyNewState = true)
//nextDispatch(AddEmojiAction(EmojiHelper.emoji), applyNewState = true)
},
onError = {
emitter.onError(it)
}
)
}.toObservable()

}
else -> Observable.just(state)
}
Expand All @@ -31,11 +54,17 @@ fun EmojiCollectionViewModel.removeEmoji(state: State, action: Action): Observab

return when (action) {
is RemoveEmojiAction -> {
val mutableEmojiList = emojiCollectionState.emojis.toMutableList()
val index = if (mutableEmojiList.isEmpty()) 0 else (0 until mutableEmojiList.size).random()
mutableEmojiList.removeAt(index)
val mutatedState = emojiCollectionState.copy(emojis = mutableEmojiList)
Observable.just(mutatedState)
return try {
val mutableEmojiList = emojiCollectionState.emojis.toMutableList()
val index = if (mutableEmojiList.isEmpty()) 0 else (0 until mutableEmojiList.size).random()
mutableEmojiList.removeAt(index)
val mutatedState = emojiCollectionState.copy(emojis = mutableEmojiList)
nextDispatch(MakeItemModelsAction, applyNewState = true)
Observable.just(mutatedState)
} catch (e: Exception) {
// ignore
Observable.just(state)
}
}
else -> Observable.just(state)
}
Expand All @@ -49,6 +78,7 @@ fun EmojiCollectionViewModel.shuffleEmoji(state: State, action: Action): Observa
val mutableEmojiList = emojiCollectionState.emojis.toMutableList()
mutableEmojiList.shuffle()
val mutatedState = emojiCollectionState.copy(emojis = mutableEmojiList)
nextDispatch(MakeItemModelsAction, applyNewState = true)
Observable.just(mutatedState)
}
else -> Observable.just(state)
Expand Down

This file was deleted.

4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
ext.kotlin_version = '1.3.31'
ext.kotlin_version = '1.3.41'
ext.lifecycleExtensionsVersion = '2.0.0'
ext.anko_version = '0.10.8'
repositories {
Expand All @@ -10,7 +10,7 @@ buildscript {

}
dependencies {
classpath 'com.android.tools.build:gradle:3.4.2'
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
Expand Down
4 changes: 2 additions & 2 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#Mon May 13 22:37:32 KST 2019
#Thu Aug 22 11:37:10 KST 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
14 changes: 7 additions & 7 deletions reactcomponentkit/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ publish {
userOrg = 'skyfe79'
groupId = 'com.github.skyfe79.android'
artifactId = 'reactcomponentkit'
publishVersion = '1.1.7'
publishVersion = '1.2.7'
desc = 'AndroidReactComponentKit = Component + MVVM + Redux for Android!!!'
website = 'https://github.com/ReactComponentKit/AndroidReactComponentKit'
}
Expand All @@ -29,8 +29,8 @@ android {
defaultConfig {
minSdkVersion 16
targetSdkVersion 28
versionCode 8
versionName "1.1.7"
versionCode 9
versionName "1.2.7"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand All @@ -52,10 +52,10 @@ tasks.withType(Javadoc).all {
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])

implementation 'androidx.appcompat:appcompat:1.1.0-alpha05'
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.1.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"

Expand All @@ -67,5 +67,5 @@ dependencies {

implementation "org.jetbrains.anko:anko:$anko_version"

implementation 'androidx.recyclerview:recyclerview:1.1.0-alpha05'
implementation 'androidx.recyclerview:recyclerview:1.1.0-beta03'
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.github.skyfe79.android.reactcomponentkit.redux

// Utility for something like as reset some state.
// Run it after dispatching new state to Components
typealias After<S> = (S) -> S
Loading