Skip to content

Commit

Permalink
add work manager
Browse files Browse the repository at this point in the history
  • Loading branch information
mutukuian committed Jun 20, 2024
1 parent 06acba8 commit 12783fc
Show file tree
Hide file tree
Showing 7 changed files with 76 additions and 9 deletions.
9 changes: 5 additions & 4 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -138,13 +138,14 @@ dependencies {

testImplementation ("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3")





//truth
testImplementation ("com.google.truth:truth:1.0.1")

// Hilt
implementation ("androidx.hilt:hilt-work:1.0.0")

// WorkManager
implementation ("androidx.work:work-runtime-ktx:2.8.1")



Expand Down
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@

<uses-permission android:name="android.permission.INTERNET"/>


<application
android:name=".ShipApplication"
android:usesCleartextTraffic="true"
Expand All @@ -16,6 +17,10 @@
android:supportsRtl="true"
android:theme="@style/Theme.KocelaInterview"
tools:targetApi="31">
<provider
android:name="androidx.startup.InitializationProvider"
android:authorities="${applicationId}.androidx-startup"
tools:node="remove" />
<activity
android:name=".presentation.MainActivity"
android:exported="true"
Expand Down
14 changes: 13 additions & 1 deletion app/src/main/java/com/example/kocelainterview/ShipApplication.kt
Original file line number Diff line number Diff line change
@@ -1,7 +1,19 @@
package com.example.kocelainterview

import android.app.Application

import androidx.hilt.work.HiltWorkerFactory
import androidx.work.Configuration
import dagger.hilt.android.HiltAndroidApp
import javax.inject.Inject

@HiltAndroidApp
class ShipApplication: Application()
class ShipApplication: Application(), Configuration.Provider{
@Inject lateinit var workerFactory:HiltWorkerFactory
override fun getWorkManagerConfiguration(): Configuration {
return Configuration.Builder()
.setWorkerFactory(workerFactory)
.build()
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -26,4 +26,5 @@ object AppModule {
.create(ShipsApi::class.java)
}


}
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.example.kocelainterview.data.workers

import android.content.Context
import androidx.hilt.work.HiltWorker
import androidx.work.CoroutineWorker
import androidx.work.WorkerParameters
import com.example.kocelainterview.domain.repository_interface.ShipRepository
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject


@HiltWorker
class ShipSyncWorker @AssistedInject constructor(
@Assisted appContext: Context,
@Assisted workerParams:WorkerParameters,
private val shipRepository: ShipRepository
):CoroutineWorker(appContext,workerParams) {
override suspend fun doWork(): Result {
return try {
shipRepository.getShips()
Result.success()
}catch (e:Exception){
Result.failure()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.navigation.compose.NavHost
import androidx.navigation.compose.composable
import androidx.navigation.compose.rememberNavController
import androidx.work.Constraints
import androidx.work.ExistingWorkPolicy
import androidx.work.NetworkType
import androidx.work.OneTimeWorkRequestBuilder
import androidx.work.WorkManager
import com.example.kocelainterview.data.workers.ShipSyncWorker
import com.example.kocelainterview.presentation.navigation.Screen
import com.example.kocelainterview.presentation.ship_details_screen.ShipDetailScreen
import com.example.kocelainterview.presentation.ships_screen.ShipListScreen
Expand All @@ -38,5 +44,24 @@ class MainActivity : ComponentActivity() {
}
}
}

startShipWorkSync()
}

private fun startShipWorkSync(){
val syncShipsWorkRequest = OneTimeWorkRequestBuilder<ShipSyncWorker>()
.setConstraints(
Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.setRequiresBatteryNotLow(true)
.build()
)
.build()

WorkManager.getInstance(applicationContext).enqueueUniqueWork(
"ShipSyncWorker",
ExistingWorkPolicy.KEEP,
syncShipsWorkRequest
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ fun ShipDetailImageCard(shipDetail: ShipDetail) {
.padding(4.dp)
) {

//Text(text = "Ship: ${shipDetail.ship_name}")


Text(text = "Home Port: ${shipDetail.home_port}")

Expand All @@ -121,9 +121,6 @@ fun ShipDetailImageCard(shipDetail: ShipDetail) {
)


//Text(text = "Ship Type: ${shipDetail.ship_type}")


Text(text = "Year Built: ${shipDetail.year_built}")

}
Expand Down

0 comments on commit 12783fc

Please sign in to comment.