Skip to content

Commit 8a764b4

Browse files
authored
Merge pull request #594 from namehillsoftware/chore/remove-okhttp-datasource
[Chore] Remove OkHttp Datasource
2 parents 1b77a69 + 0da7505 commit 8a764b4

File tree

17 files changed

+44
-236
lines changed

17 files changed

+44
-236
lines changed

gradle/libs.versions.toml

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
[versions]
22
activityCompose = "1.11.0"
3-
agp = "8.13.0"
3+
agp = "8.13.1"
44
androidJunit5 = "1.14.0.0"
55
annotation = "1.9.1"
66
assertjCore = "3.27.6"
7-
commonsCodec = "1.19.0"
8-
commonsIo = "2.20.0"
7+
commonsCodec = "1.20.0"
8+
commonsIo = "2.21.0"
99
compose = "1.9.4"
1010
coreKtx = "1.17.0"
1111
desugar_jdk_libs = "2.1.5"
@@ -19,7 +19,7 @@ junitJupiterApi = "6.0.1"
1919
junitKtx = "1.3.0"
2020
kotlinxCoroutinesRx3 = "1.10.2"
2121
kotlin = "2.2.21"
22-
ktorVersion = "3.3.1"
22+
ktorVersion = "3.3.2"
2323
lazyJ = "0.11.0"
2424
lifecycle = "2.9.4"
2525
logbackAndroid = "3.0.0"
@@ -57,7 +57,6 @@ androidx-lifecycle-service = { module = "androidx.lifecycle:lifecycle-service",
5757
androidx-lifecycle-runtime-ktx = { module = "androidx.lifecycle:lifecycle-runtime-ktx", version.ref = "lifecycle" }
5858
androidx-lifecycle-viewmodel-ktx = { module = "androidx.lifecycle:lifecycle-viewmodel-ktx", version.ref = "lifecycle" }
5959
androidx-media = { module = "androidx.media:media", version.ref = "media" }
60-
androidx-media3-datasource-okhttp = { module = "androidx.media3:media3-datasource-okhttp", version.ref = "media3" }
6160
androidx-media3-exoplayer = { module = "androidx.media3:media3-exoplayer", version.ref = "media3" }
6261
androidx-palette-ktx = { module = "androidx.palette:palette-ktx", version.ref = "paletteKtx" }
6362
androidx-preference-ktx = { module = "androidx.preference:preference-ktx", version.ref = "preferenceKtx" }

projectBlueWater/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,6 @@ dependencies {
195195
implementation libs.androidx.lifecycle.service
196196
implementation libs.androidx.lifecycle.runtime.ktx
197197
implementation libs.androidx.media3.exoplayer
198-
implementation libs.androidx.media3.datasource.okhttp
199198
implementation libs.androidx.startup.runtime
200199
implementation libs.androidx.compose.ui
201200
implementation libs.androidx.compose.material

projectBlueWater/src/main/java/com/lasthopesoftware/bluewater/ApplicationDependenciesContainer.kt

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -132,11 +132,7 @@ object ApplicationDependenciesContainer {
132132
}
133133

134134
override val mediaCenterDataFactories by lazy {
135-
ServerHttpDataSourceProvider(
136-
mediaCenterHttpClients,
137-
okHttpClients.MediaCenterClient(),
138-
applicationFeatureConfiguration
139-
)
135+
ServerHttpDataSourceProvider(mediaCenterHttpClients)
140136
}
141137

142138
override val subsonicHttpClients by lazy {
@@ -148,11 +144,7 @@ object ApplicationDependenciesContainer {
148144
}
149145

150146
override val subsonicDataFactories by lazy {
151-
ServerHttpDataSourceProvider(
152-
subsonicHttpClients,
153-
okHttpClients.SubsonicClient(),
154-
applicationFeatureConfiguration
155-
)
147+
ServerHttpDataSourceProvider(subsonicHttpClients)
156148
}
157149

158150
override val audioCacheStreamSupplier by lazy {

projectBlueWater/src/main/java/com/lasthopesoftware/bluewater/client/connection/http/KtorFactory.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ class KtorFactory(private val context: Context) : ProvideHttpPromiseClients {
6767
.apply {
6868
install(HttpTimeout) {
6969
requestTimeoutMillis = null
70-
socketTimeoutMillis = 45.seconds.inWholeMilliseconds
70+
socketTimeoutMillis = 10.minutes.inWholeMilliseconds
7171
connectTimeoutMillis = 45.seconds.inWholeMilliseconds
7272
}
7373
}

projectBlueWater/src/main/java/com/lasthopesoftware/bluewater/client/connection/http/OkHttpFactory.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -100,14 +100,14 @@ class OkHttpFactory(private val context: Context) : ProvideHttpPromiseClients {
100100
return "$applicationName/$versionName (Linux;Android ${Build.VERSION.RELEASE})"
101101
}
102102

103-
inner class MediaCenterClient() : ProvideHttpPromiseServerClients<MediaCenterConnectionDetails>, ProvideOkHttpServerClients<MediaCenterConnectionDetails> {
103+
inner class MediaCenterClient() : ProvideHttpPromiseServerClients<MediaCenterConnectionDetails> {
104104
override fun promiseServerClient(connectionDetails: MediaCenterConnectionDetails): Promise<HttpPromiseClient> =
105105
OkHttpPromiseClient(getOkHttpClient(connectionDetails)).toPromise()
106106

107107
override fun promiseStreamingServerClient(connectionDetails: MediaCenterConnectionDetails): Promise<HttpPromiseClient> =
108108
OkHttpPromiseClient(getStreamingOkHttpClient(connectionDetails)).toPromise()
109109

110-
override fun getStreamingOkHttpClient(connectionDetails: MediaCenterConnectionDetails): OkHttpClient =
110+
fun getStreamingOkHttpClient(connectionDetails: MediaCenterConnectionDetails): OkHttpClient =
111111
getOkHttpClient(connectionDetails)
112112
.newBuilder()
113113
.configureForStreaming()
@@ -188,14 +188,14 @@ class OkHttpFactory(private val context: Context) : ProvideHttpPromiseClients {
188188
}
189189
}
190190

191-
inner class SubsonicClient() : ProvideHttpPromiseServerClients<SubsonicConnectionDetails>, ProvideOkHttpServerClients<SubsonicConnectionDetails> {
191+
inner class SubsonicClient() : ProvideHttpPromiseServerClients<SubsonicConnectionDetails> {
192192
override fun promiseServerClient(connectionDetails: SubsonicConnectionDetails): Promise<HttpPromiseClient> =
193193
OkHttpPromiseClient(getOkHttpClient(connectionDetails)).toPromise()
194194

195195
override fun promiseStreamingServerClient(connectionDetails: SubsonicConnectionDetails): Promise<HttpPromiseClient> =
196196
OkHttpPromiseClient(getStreamingOkHttpClient(connectionDetails)).toPromise()
197197

198-
override fun getStreamingOkHttpClient(connectionDetails: SubsonicConnectionDetails): OkHttpClient =
198+
fun getStreamingOkHttpClient(connectionDetails: SubsonicConnectionDetails): OkHttpClient =
199199
getOkHttpClient(connectionDetails)
200200
.newBuilder()
201201
.configureForStreaming()

projectBlueWater/src/main/java/com/lasthopesoftware/bluewater/client/connection/http/ProvideOkHttpServerClients.kt

Lines changed: 0 additions & 7 deletions
This file was deleted.
Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,14 @@
11
package com.lasthopesoftware.bluewater.client.playback.exoplayer
22

33
import androidx.media3.datasource.DataSource
4-
import androidx.media3.datasource.okhttp.OkHttpDataSource
5-
import com.lasthopesoftware.bluewater.client.connection.http.ProvideOkHttpServerClients
64
import com.lasthopesoftware.bluewater.client.connection.requests.ProvideHttpPromiseServerClients
7-
import com.lasthopesoftware.bluewater.features.access.HoldApplicationFeatureConfiguration
8-
import com.lasthopesoftware.promises.extensions.toPromise
95
import com.namehillsoftware.handoff.promises.Promise
106

117
class ServerHttpDataSourceProvider<TConnectionDetails>(
128
private val httpPromiseClients: ProvideHttpPromiseServerClients<TConnectionDetails>,
13-
private val okHttpClients: ProvideOkHttpServerClients<TConnectionDetails>,
14-
private val applicationFeatureConfiguration: HoldApplicationFeatureConfiguration,
159
): ProvideServerHttpDataSource<TConnectionDetails> {
1610
override fun promiseDataSourceFactory(connectionDetails: TConnectionDetails): Promise<DataSource.Factory> =
17-
applicationFeatureConfiguration
18-
.promiseFeatureConfiguration()
19-
.eventually { featureConfiguration ->
20-
when (featureConfiguration.httpDataSourceType ?: HttpDataSourceType.OkHttp) {
21-
HttpDataSourceType.HttpPromiseClient -> httpPromiseClients
22-
.promiseStreamingServerClient(connectionDetails)
23-
.then(HttpPromiseClientDataSource::Factory)
24-
HttpDataSourceType.OkHttp -> OkHttpDataSource.Factory(
25-
okHttpClients.getStreamingOkHttpClient(connectionDetails)
26-
).toPromise()
27-
}
28-
}
11+
httpPromiseClients
12+
.promiseStreamingServerClient(connectionDetails)
13+
.then(HttpPromiseClientDataSource::Factory)
2914
}

projectBlueWater/src/main/java/com/lasthopesoftware/bluewater/features/ApplicationFeatureConfiguration.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,9 @@ package com.lasthopesoftware.bluewater.features
33
import androidx.annotation.Keep
44
import com.lasthopesoftware.bluewater.client.connection.http.HttpClientType
55
import com.lasthopesoftware.bluewater.client.playback.engine.selection.PlaybackEngineType
6-
import com.lasthopesoftware.bluewater.client.playback.exoplayer.HttpDataSourceType
76

87
@Keep
98
data class ApplicationFeatureConfiguration(
109
val playbackEngineType: PlaybackEngineType? = null,
11-
val httpDataSourceType: HttpDataSourceType? = null,
1210
val httpClientType: HttpClientType? = null,
1311
)

projectBlueWater/src/main/java/com/lasthopesoftware/bluewater/settings/hidden/HiddenSettingsView.kt

Lines changed: 19 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ import com.lasthopesoftware.bluewater.android.ui.theme.Dimensions
3535
import com.lasthopesoftware.bluewater.android.ui.theme.Dimensions.rowPadding
3636
import com.lasthopesoftware.bluewater.android.ui.theme.LocalSurfaceColor
3737
import com.lasthopesoftware.bluewater.client.connection.http.HttpClientType
38-
import com.lasthopesoftware.bluewater.client.playback.exoplayer.HttpDataSourceType
3938
import com.lasthopesoftware.bluewater.shared.observables.subscribeAsState
4039

4140
private val optionsPadding = PaddingValues(start = 32.dp, end = 32.dp)
@@ -91,22 +90,22 @@ fun HiddenSettingsView(hiddenSettingsViewModel: HiddenSettingsViewModel) {
9190
.selectableGroup()
9291
) {
9392
Text(
94-
text = "HTTP Data Source Factory",
93+
text = "HTTP Client Type",
9594
modifier = Modifier.padding(rowPadding),
9695
)
9796

98-
val dataSourceType by hiddenSettingsViewModel.dataSourceType.subscribeAsState()
97+
val httpClientType by hiddenSettingsViewModel.httpClientType.subscribeAsState()
9998
Row(
10099
modifier = Modifier.padding(rowPadding)
101100
) {
102-
val dataSourceOption = HttpDataSourceType.OkHttp
101+
val httpClientOption = HttpClientType.OkHttp
103102
LabeledSelection(
104-
label = dataSourceOption.name,
105-
selected = dataSourceType == dataSourceOption,
106-
onSelected = { hiddenSettingsViewModel.promiseDataSourceUpdate(dataSourceOption) },
103+
label = httpClientOption.name,
104+
selected = httpClientType == httpClientOption,
105+
onSelected = { hiddenSettingsViewModel.promiseHttpClientType(httpClientOption) },
107106
{
108107
RadioButton(
109-
selected = dataSourceType == dataSourceOption,
108+
selected = httpClientType == httpClientOption,
110109
onClick = null,
111110
)
112111
},
@@ -117,71 +116,19 @@ fun HiddenSettingsView(hiddenSettingsViewModel: HiddenSettingsViewModel) {
117116
Row(
118117
modifier = Modifier.padding(rowPadding)
119118
) {
120-
Column {
121-
val dataSourceOption = HttpDataSourceType.HttpPromiseClient
122-
LabeledSelection(
123-
label = dataSourceOption.name,
124-
selected = dataSourceType == dataSourceOption,
125-
onSelected = { hiddenSettingsViewModel.promiseDataSourceUpdate(dataSourceOption) },
126-
{
127-
RadioButton(
128-
selected = dataSourceType == dataSourceOption,
129-
onClick = null,
130-
)
131-
},
132-
role = Role.RadioButton,
133-
)
134-
135-
Column(
136-
modifier = Modifier
137-
.padding(optionsPadding)
138-
.selectableGroup()
139-
) {
140-
Text(
141-
text = "HTTP Client Type",
142-
modifier = Modifier.padding(rowPadding),
119+
val httpClientOption = HttpClientType.Ktor
120+
LabeledSelection(
121+
label = httpClientOption.name,
122+
selected = httpClientType == httpClientOption,
123+
onSelected = { hiddenSettingsViewModel.promiseHttpClientType(httpClientOption) },
124+
{
125+
RadioButton(
126+
selected = httpClientType == httpClientOption,
127+
onClick = null,
143128
)
144-
145-
val httpClientType by hiddenSettingsViewModel.httpClientType.subscribeAsState()
146-
Row(
147-
modifier = Modifier.padding(rowPadding)
148-
) {
149-
val httpClientOption = HttpClientType.OkHttp
150-
LabeledSelection(
151-
label = httpClientOption.name,
152-
selected = httpClientType == httpClientOption,
153-
onSelected = { hiddenSettingsViewModel.promiseHttpClientType(httpClientOption) },
154-
{
155-
RadioButton(
156-
selected = httpClientType == httpClientOption,
157-
onClick = null,
158-
)
159-
},
160-
role = Role.RadioButton,
161-
enabled = dataSourceType == dataSourceOption
162-
)
163-
}
164-
165-
Row(
166-
modifier = Modifier.padding(rowPadding)
167-
) {
168-
val httpClientOption = HttpClientType.Ktor
169-
LabeledSelection(
170-
label = httpClientOption.name,
171-
selected = httpClientType == httpClientOption,
172-
onSelected = { hiddenSettingsViewModel.promiseHttpClientType(httpClientOption) },
173-
{
174-
RadioButton(
175-
selected = httpClientType == httpClientOption,
176-
onClick = null,
177-
)
178-
},
179-
role = Role.RadioButton,
180-
enabled = dataSourceType == dataSourceOption
181-
)
182-
}
183-
}
184-
}
129+
},
130+
role = Role.RadioButton,
131+
)
185132
}
186133
}
187134
}

projectBlueWater/src/main/java/com/lasthopesoftware/bluewater/settings/hidden/HiddenSettingsViewModel.kt

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.lasthopesoftware.bluewater.settings.hidden
33
import androidx.lifecycle.ViewModel
44
import com.lasthopesoftware.bluewater.client.browsing.TrackLoadedViewState
55
import com.lasthopesoftware.bluewater.client.connection.http.HttpClientType
6-
import com.lasthopesoftware.bluewater.client.playback.exoplayer.HttpDataSourceType
76
import com.lasthopesoftware.bluewater.features.access.HoldApplicationFeatureConfiguration
87
import com.lasthopesoftware.bluewater.settings.repository.access.HoldApplicationSettings
98
import com.lasthopesoftware.bluewater.shared.observables.MutableInteractionState
@@ -18,11 +17,9 @@ class HiddenSettingsViewModel(
1817

1918
private val mutableIsLoading = MutableInteractionState(false)
2019
private val mutableIsLoggingToFile = MutableInteractionState(false)
21-
private val mutableDataSourceType = MutableInteractionState(HttpDataSourceType.OkHttp)
2220
private val mutableHttpClientType = MutableInteractionState(HttpClientType.OkHttp)
2321

2422
val isLoggingToFile = mutableIsLoggingToFile.asInteractionState()
25-
val dataSourceType = mutableDataSourceType.asInteractionState()
2623
val httpClientType = mutableHttpClientType.asInteractionState()
2724

2825
override val isLoading = mutableIsLoading.asInteractionState()
@@ -32,7 +29,6 @@ class HiddenSettingsViewModel(
3229
val promisedApplicationFeatures = applicationFeatureConfiguration
3330
.promiseFeatureConfiguration()
3431
.then { f ->
35-
mutableDataSourceType.value = f.httpDataSourceType ?: HttpDataSourceType.OkHttp
3632
mutableHttpClientType.value = f.httpClientType ?: HttpClientType.OkHttp
3733
}
3834

@@ -54,11 +50,6 @@ class HiddenSettingsViewModel(
5450
return saveSettings()
5551
}
5652

57-
fun promiseDataSourceUpdate(dataSourceType: HttpDataSourceType): Promise<*> {
58-
mutableDataSourceType.value = dataSourceType
59-
return saveSettings()
60-
}
61-
6253
fun promiseHttpClientType(httpClientType: HttpClientType): Promise<*> {
6354
mutableHttpClientType.value = httpClientType
6455
return saveSettings()
@@ -78,7 +69,7 @@ class HiddenSettingsViewModel(
7869
val promisedFeaturesUpdate = applicationFeatureConfiguration
7970
.promiseFeatureConfiguration()
8071
.eventually { features ->
81-
val newFeatures = features.copy(httpDataSourceType = mutableDataSourceType.value, httpClientType = mutableHttpClientType.value)
72+
val newFeatures = features.copy(httpClientType = mutableHttpClientType.value)
8273
applicationFeatureConfiguration.promiseUpdatedFeatureConfiguration(newFeatures)
8374
}
8475
.unitResponse()

0 commit comments

Comments
 (0)