Skip to content

Commit d3eda67

Browse files
authored
Merge pull request #6 from jitinsharma/refactor_to_viewmodel
Refactor to viewmodel
2 parents 5a6eb2f + 6015733 commit d3eda67

28 files changed

+497
-530
lines changed

app/build.gradle

+6-6
Original file line numberDiff line numberDiff line change
@@ -56,22 +56,22 @@ android {
5656
}
5757

5858
dependencies {
59-
implementation 'androidx.core:core-ktx:1.3.1'
59+
implementation 'androidx.core:core-ktx:1.3.2'
6060
implementation 'androidx.appcompat:appcompat:1.2.0'
6161
implementation 'com.google.android.material:material:1.2.1'
6262
implementation "androidx.compose.runtime:runtime:$compose_version"
6363
implementation "androidx.compose.ui:ui:$compose_version"
6464
implementation "androidx.compose.foundation:foundation-layout:$compose_version"
6565
implementation "androidx.compose.material:material:$compose_version"
66-
implementation "androidx.ui:ui-tooling:$compose_version"
66+
implementation "androidx.compose.ui:ui-tooling:$compose_version"
6767
implementation "androidx.compose.runtime:runtime-livedata:$compose_version"
6868
implementation "androidx.compose.foundation:foundation:$compose_version"
69-
testImplementation 'junit:junit:4.13'
69+
testImplementation 'junit:junit:4.13.1'
7070
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
7171
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
7272
implementation 'org.jsoup:jsoup:1.13.1'
73-
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9"
74-
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
73+
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.4.1"
74+
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.4.1"
7575
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0"
7676
implementation "androidx.lifecycle:lifecycle-runtime-ktx:2.2.0"
7777
implementation "androidx.lifecycle:lifecycle-livedata-ktx:2.2.0"
@@ -86,7 +86,7 @@ dependencies {
8686
implementation "org.rekotlin:rekotlin:1.0.4"
8787
implementation "org.koin:koin-androidx-scope:$koin_version"
8888
implementation "org.koin:koin-androidx-viewmodel:$koin_version"
89-
implementation "androidx.datastore:datastore-preferences:1.0.0-alpha01"
89+
implementation "androidx.datastore:datastore-preferences:1.0.0-alpha05"
9090

9191
implementation "androidx.work:work-runtime-ktx:2.4.0"
9292
}

app/src/main/java/in/jitinsharma/asg/conf/di/ConferenceModule.kt

+5-16
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,17 @@ package `in`.jitinsharma.asg.conf.di
22

33
import `in`.jitinsharma.asg.conf.database.AppDatabase
44
import `in`.jitinsharma.asg.conf.preferences.AppPreferences
5-
import `in`.jitinsharma.asg.conf.redux.middleware.ConferenceMiddleware
6-
import `in`.jitinsharma.asg.conf.redux.reducer.appReducer
75
import `in`.jitinsharma.asg.conf.repository.ConferenceRepository
8-
import kotlinx.coroutines.CoroutineScope
6+
import `in`.jitinsharma.asg.conf.viewmodel.ConferenceViewModel
7+
import `in`.jitinsharma.asg.conf.viewmodel.FilterScreenViewModel
98
import org.koin.android.ext.koin.androidApplication
9+
import org.koin.androidx.viewmodel.dsl.viewModel
1010
import org.koin.dsl.module
11-
import org.rekotlin.Store
1211

1312
val conferenceModule = module {
1413
single { AppDatabase.getDatabase(applicationContext = androidApplication()) }
1514
factory { ConferenceRepository(appDatabase = get()) }
16-
single { (coroutineScope: CoroutineScope) ->
17-
Store(
18-
state = null,
19-
reducer = ::appReducer,
20-
middleware = listOf(
21-
ConferenceMiddleware(
22-
coroutineScope = coroutineScope,
23-
conferenceRepository = get()
24-
)
25-
)
26-
)
27-
}
2815
single { AppPreferences(context = androidApplication()) }
16+
viewModel { ConferenceViewModel(get()) }
17+
viewModel { FilterScreenViewModel(get()) }
2918
}

app/src/main/java/in/jitinsharma/asg/conf/preferences/AppPreferences.kt

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package `in`.jitinsharma.asg.conf.preferences
22

33
import android.content.Context
4+
import androidx.datastore.preferences.core.edit
5+
import androidx.datastore.preferences.core.preferencesKey
46
import androidx.datastore.preferences.createDataStore
5-
import androidx.datastore.preferences.edit
6-
import androidx.datastore.preferences.preferencesKey
77
import kotlinx.coroutines.flow.Flow
88
import kotlinx.coroutines.flow.distinctUntilChanged
99
import kotlinx.coroutines.flow.map
@@ -13,9 +13,7 @@ val UPDATE_PREF_KEY = preferencesKey<Boolean>("UPDATE_PREF_KEY")
1313

1414
class AppPreferences(context: Context) {
1515

16-
private val appPreferencesStore = context.createDataStore(
17-
name = PREF_FILE
18-
)
16+
private val appPreferencesStore = context.createDataStore(name = PREF_FILE)
1917

2018
suspend fun setUpdatePreference(enabled: Boolean) {
2119
appPreferencesStore.edit { preferences ->

app/src/main/java/in/jitinsharma/asg/conf/redux/StoreAdapter.kt

-24
This file was deleted.

app/src/main/java/in/jitinsharma/asg/conf/redux/actions/Actions.kt

-21
This file was deleted.

app/src/main/java/in/jitinsharma/asg/conf/redux/middleware/ConferenceMiddleware.kt

-58
This file was deleted.

app/src/main/java/in/jitinsharma/asg/conf/redux/reducer/AppReducer.kt

-10
This file was deleted.

app/src/main/java/in/jitinsharma/asg/conf/redux/reducer/ConferenceListReducer.kt

-66
This file was deleted.

app/src/main/java/in/jitinsharma/asg/conf/redux/reducer/FilterScreenReducer.kt

-34
This file was deleted.

app/src/main/java/in/jitinsharma/asg/conf/redux/state/States.kt

-24
This file was deleted.

app/src/main/java/in/jitinsharma/asg/conf/repository/ConferenceRepository.kt

+7-4
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,9 @@ class ConferenceRepository(
3636
conferenceData.isPast
3737
}
3838
} catch (e: Exception) {
39-
println(e)
40-
return emptyList()
39+
throw e
40+
//println(e)
41+
//return emptyList()
4142
}
4243
}
4344

@@ -68,7 +69,9 @@ class ConferenceRepository(
6869
}
6970
}.trim()
7071
conferenceDataModel.id = conferenceDataModel.name + conferenceDataModel.city
71-
conferenceDataModel.parseCfpAndStatusData(childNode(5).toString())
72+
if (childNodeSize() > 5) {
73+
conferenceDataModel.parseCfpAndStatusData(childNode(5).toString())
74+
}
7275
return conferenceDataModel
7376
}
7477

@@ -79,7 +82,7 @@ class ConferenceRepository(
7982
val cfpData = ConferenceData.CfpData()
8083
//TODO Try replacing matchers by parsing line with Jsoup
8184
val cfpUrlMatcher =
82-
Pattern.compile("a href=(.*?)>", Pattern.DOTALL).matcher(line)
85+
Pattern.compile("href=(.*?)>", Pattern.DOTALL).matcher(line)
8386
val cfpDateMatcher = Pattern.compile(">(.*?)<", Pattern.DOTALL).matcher(line)
8487
while (cfpUrlMatcher.find()) {
8588
val match = cfpUrlMatcher.group(1)

app/src/main/java/in/jitinsharma/asg/conf/sync/ConferenceUpdateWorker.kt

+4-3
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ import androidx.work.PeriodicWorkRequestBuilder
1010
import androidx.work.WorkerParameters
1111
import kotlinx.coroutines.Dispatchers
1212
import kotlinx.coroutines.flow.collect
13-
import kotlinx.coroutines.runBlocking
1413
import kotlinx.coroutines.withContext
15-
import org.koin.core.KoinComponent
16-
import org.koin.core.inject
14+
import org.koin.core.component.KoinApiExtension
15+
import org.koin.core.component.KoinComponent
16+
import org.koin.core.component.inject
1717
import java.util.concurrent.TimeUnit
1818

19+
@KoinApiExtension
1920
class ConferenceUpdateWorker(appContext: Context, params: WorkerParameters) :
2021
CoroutineWorker(appContext, params), KoinComponent {
2122

0 commit comments

Comments
 (0)