Skip to content

Commit

Permalink
refactor (network): create NetworkDataSource with constructor
Browse files Browse the repository at this point in the history
  • Loading branch information
xeewii committed Aug 16, 2024
1 parent 1483acc commit bc0c979
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import com.personalization.sdk.data.repositories.recommendation.RecommendationDa
import com.personalization.sdk.data.repositories.user.UserSettingsDataSource
import dagger.Module
import dagger.Provides
import dagger.assisted.AssistedFactory
import javax.inject.Singleton

@Module
Expand All @@ -16,9 +17,10 @@ class DataSourcesModule {
@Singleton
fun providePreferencesDataSource() = PreferencesDataSource()

@Provides
@Singleton
fun provideNetworkDataSource() = NetworkDataSource()
@AssistedFactory
interface NetworkDataSourceFactory {
fun create(baseUrl: String): NetworkDataSource
}

@Provides
@Singleton
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,11 @@
package com.personalization.sdk.data.repositories.network

import javax.inject.Inject
import dagger.assisted.Assisted
import dagger.assisted.AssistedInject

class NetworkDataSource @Inject constructor() {

internal var baseUrl: String = ""

fun initialize(
baseUrl: String
) {
this.baseUrl = baseUrl
}
class NetworkDataSource @AssistedInject constructor(
@Assisted val baseUrl: String
) {

companion object {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.personalization.sdk.data.repositories.network
import android.net.Uri
import com.personalization.SDK
import com.personalization.api.OnApiCallbackListener
import com.personalization.sdk.data.di.DataSourcesModule
import com.personalization.sdk.data.repositories.user.UserSettingsDataSource
import com.personalization.sdk.domain.models.NetworkMethod
import com.personalization.sdk.domain.repositories.NetworkRepository
Expand All @@ -25,17 +26,19 @@ import java.util.Collections
import javax.inject.Inject

class NetworkRepositoryImpl @Inject constructor(
private val networkDataSource: NetworkDataSource,
private val networkDataSourceFactory: DataSourcesModule.NetworkDataSourceFactory,
private val userDataSource: UserSettingsDataSource,
private val notificationRepository: NotificationRepository
) : NetworkRepository {

private val queue: MutableList<Thread> = Collections.synchronizedList(ArrayList())

private var networkDataSource: NetworkDataSource? = null

override fun initialize(
baseUrl: String
) {
networkDataSource.initialize(
networkDataSource = networkDataSourceFactory.create(
baseUrl = baseUrl
)
}
Expand Down Expand Up @@ -227,7 +230,9 @@ class NetworkRepositoryImpl @Inject constructor(
networkMethod: NetworkMethod,
params: JSONObject
): Uri {
val builder = Uri.parse(networkDataSource.baseUrl + networkMethod.method).buildUpon()
if(networkDataSource == null) throw Exception("Network not initialized.")

val builder = Uri.parse(networkDataSource!!.baseUrl + networkMethod.method).buildUpon()

val it = params.keys()
while (it.hasNext()) {
Expand All @@ -242,8 +247,10 @@ class NetworkRepositoryImpl @Inject constructor(
networkMethod: NetworkMethod,
buildUri: Uri
) : URL {
if(networkDataSource == null) throw Exception("Network not initialized.")

return if (networkMethod is NetworkMethod.POST) {
URL(networkDataSource.baseUrl + networkMethod.method)
URL(networkDataSource!!.baseUrl + networkMethod.method)
} else {
URL(buildUri.toString())
}
Expand Down

0 comments on commit bc0c979

Please sign in to comment.