Skip to content

Commit 6abaaa3

Browse files
committed
challenge browser
1 parent 1b1c57e commit 6abaaa3

16 files changed

Lines changed: 836 additions & 15 deletions

app/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,8 @@ dependencies {
197197

198198
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
199199

200+
implementation 'com.github.sephiroth74:NumberSlidingPicker:v1.0.3'
201+
200202
testImplementation 'com.nhaarman:mockito-kotlin-kt1.1:1.6.0'
201203
testImplementation 'junit:junit:4.13.2'
202204
testImplementation "io.insert-koin:koin-test-junit4:$koin_version"

app/src/main/java/io/zenandroid/onlinego/data/model/ogs/SeekGraphChallenge.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package io.zenandroid.onlinego.data.model.ogs
22

3+
import io.zenandroid.onlinego.data.ogs.TimeControl
34
import io.zenandroid.onlinego.utils.formatRank
45

56
/**
67
* Created by alex on 08/12/2017.
78
*/
89
data class SeekGraphChallenge (
9-
var challenge_id: Int? = null,
10+
var challenge_id: Long? = null,
11+
var game_started: Boolean = false,
1012
var delete: Int? = null,
1113
var name: String = "",
1214
var username: String = "",
@@ -15,10 +17,10 @@ data class SeekGraphChallenge (
1517
var min_rank: Double = 0.0,
1618
var max_rank: Double = 100.0,
1719
var handicap: Int = 0,
18-
var timePerMove: Int = 0,
20+
var time_per_move: Double? = null,
1921
var width: Int = 0,
20-
var height: Int = 0//,
21-
// var timeControlParameters: JSONObject? = null
22+
var height: Int = 0,
23+
var time_control_parameters: TimeControl? = null
2224
) {
2325
override fun toString(): String {
2426
return "$username (${formatRank(rank)})"

app/src/main/java/io/zenandroid/onlinego/data/ogs/OGSRestAPI.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,9 @@ interface OGSRestAPI {
8686
@Query("ended__gt") ended: String,
8787
@Query("page") page: Int = 1): Single<PagedResult<OGSGame>>
8888

89+
@POST("/api/v1/challenges/{challenge_id}/accept")
90+
fun acceptOpenChallenge(@Path("challenge_id") id: Long): Completable
91+
8992
@GET("/api/v1/me/challenges?page_size=100")
9093
fun fetchChallenges(): Single<PagedResult<OGSChallenge>>
9194

app/src/main/java/io/zenandroid/onlinego/data/ogs/OGSRestService.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,9 @@ class OGSRestService(
183183
}
184184
}
185185

186+
fun acceptOpenChallenge(id: Long): Completable =
187+
restApi.acceptOpenChallenge(id)
188+
186189
fun acceptChallenge(id: Long): Completable =
187190
restApi.acceptChallenge(id)
188191

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package io.zenandroid.onlinego.data.repositories
2+
3+
import android.util.Log
4+
import io.reactivex.disposables.CompositeDisposable
5+
import io.reactivex.schedulers.Schedulers
6+
import io.reactivex.subjects.BehaviorSubject
7+
import io.zenandroid.onlinego.data.model.ogs.SeekGraphChallenge
8+
import io.zenandroid.onlinego.data.ogs.OGSWebSocketService
9+
import io.zenandroid.onlinego.utils.addToDisposable
10+
11+
class SeekGraphRepository(
12+
private val socketService: OGSWebSocketService
13+
): SocketConnectedRepository {
14+
15+
private val subscriptions = CompositeDisposable()
16+
private var challenges = emptyMap<Long, SeekGraphChallenge>()
17+
val challengesSubject = BehaviorSubject.create<List<SeekGraphChallenge>>()
18+
19+
override fun onSocketConnected() {
20+
socketService.connectToChallenges()
21+
.subscribeOn(Schedulers.io())
22+
.subscribe(this::storeChallenge) { Log.e("SeekGraphRepository", it.toString()) }
23+
.addToDisposable(subscriptions)
24+
}
25+
26+
private fun storeChallenge(challenge: SeekGraphChallenge) {
27+
if (challenge.game_started) {
28+
} else if (challenge.delete != null) {
29+
challenges -= challenge.challenge_id!!
30+
} else {
31+
challenges += Pair(challenge.challenge_id!!, challenge)
32+
}
33+
challengesSubject.onNext(challenges.values.toList())
34+
}
35+
36+
override fun onSocketDisconnected() {
37+
subscriptions.clear()
38+
}
39+
}

app/src/main/java/io/zenandroid/onlinego/di/Modules.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import io.zenandroid.onlinego.data.repositories.FinishedGamesRepository
2525
import io.zenandroid.onlinego.data.repositories.JosekiRepository
2626
import io.zenandroid.onlinego.data.repositories.PlayersRepository
2727
import io.zenandroid.onlinego.data.repositories.PuzzleRepository
28+
import io.zenandroid.onlinego.data.repositories.SeekGraphRepository
2829
import io.zenandroid.onlinego.data.repositories.ServerNotificationsRepository
2930
import io.zenandroid.onlinego.data.repositories.SettingsRepository
3031
import io.zenandroid.onlinego.data.repositories.TutorialsRepository
@@ -88,6 +89,7 @@ private val repositoriesModule = module {
8889
get<ChallengesRepository>(),
8990
get<FinishedGamesRepository>(),
9091
get<ChatRepository>(),
92+
get<SeekGraphRepository>(),
9193
get<ServerNotificationsRepository>(),
9294
get<ClockDriftRepository>(),
9395
get<TutorialsRepository>()
@@ -103,6 +105,7 @@ private val repositoriesModule = module {
103105
single { JosekiRepository(get(), get()) }
104106
single { PuzzleRepository(get(), get()) }
105107
single { PlayersRepository(get(), get(), get()) }
108+
single { SeekGraphRepository(get()) }
106109
single { ServerNotificationsRepository(get()) }
107110
single { SettingsRepository() }
108111
single { UserSessionRepository() }

0 commit comments

Comments
 (0)