Skip to content

Commit fa38468

Browse files
authored
chore: Auto play videos when ready, Webview No Network Error (#402)
1 parent af3b8a9 commit fa38468

File tree

15 files changed

+54
-11
lines changed

15 files changed

+54
-11
lines changed

app/src/main/java/org/openedx/app/di/AppModule.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,14 @@ val appModule = module {
180180
DownloadWorkerController(get(), get(), get())
181181
}
182182

183-
single { AppData(versionName = BuildConfig.VERSION_NAME) }
183+
single {
184+
val resourceManager = get<ResourceManager>()
185+
AppData(
186+
appName = resourceManager.getString(R.string.app_name),
187+
versionName = BuildConfig.VERSION_NAME,
188+
applicationId = BuildConfig.APPLICATION_ID,
189+
)
190+
}
184191
factory { (activity: AppCompatActivity) -> AppReviewManager(activity, get(), get()) }
185192

186193
single { TranscriptManager(get(), get()) }

app/src/main/java/org/openedx/app/di/ScreenModule.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ val screenModule = module {
170170
get(),
171171
get(),
172172
get(),
173+
get(),
173174
)
174175
}
175176

@@ -227,6 +228,7 @@ val screenModule = module {
227228
get(),
228229
get(),
229230
get(),
231+
get(),
230232
)
231233
}
232234
viewModel { (courseId: String) ->
@@ -458,7 +460,7 @@ val screenModule = module {
458460
)
459461
}
460462

461-
viewModel { ProgramViewModel(get(), get(), get(), get(), get(), get(), get()) }
463+
viewModel { ProgramViewModel(get(), get(), get(), get(), get(), get(), get(), get()) }
462464

463465
viewModel { (courseId: String, courseTitle: String) ->
464466
CourseOfflineViewModel(
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
package org.openedx.core.presentation.global
22

33
data class AppData(
4+
val appName: String,
5+
val applicationId: String,
46
val versionName: String,
5-
)
7+
) {
8+
val appUserAgent get() = "$appName/$applicationId/$versionName"
9+
}

core/src/main/java/org/openedx/core/ui/ComposeCommon.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1215,7 +1215,7 @@ fun FullScreenErrorView(
12151215
modifier = Modifier
12161216
.widthIn(Dp.Unspecified, 162.dp),
12171217
text = stringResource(id = errorType.actionResId),
1218-
textColor = MaterialTheme.appColors.primaryButtonText,
1218+
textColor = MaterialTheme.appColors.secondaryButtonText,
12191219
backgroundColor = MaterialTheme.appColors.secondaryButtonBackground,
12201220
onClick = onReloadClick,
12211221
)

course/src/main/java/org/openedx/course/presentation/unit/html/HtmlUnitFragment.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ import androidx.fragment.app.Fragment
5252
import kotlinx.coroutines.launch
5353
import org.koin.androidx.viewmodel.ext.android.viewModel
5454
import org.koin.core.parameter.parametersOf
55-
import org.openedx.core.extension.equalsHost
5655
import org.openedx.core.extension.loadUrl
5756
import org.openedx.core.system.AppCookieManager
5857
import org.openedx.core.ui.FullScreenErrorView
@@ -359,7 +358,7 @@ private fun HTMLContentView(
359358
request: WebResourceRequest,
360359
error: WebResourceError
361360
) {
362-
if (view.url.equalsHost(request.url.host)) {
361+
if (request.url.toString() == view.url) {
363362
onWebPageLoadError()
364363
}
365364
super.onReceivedError(view, request, error)

course/src/main/java/org/openedx/course/presentation/unit/video/VideoUnitFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ class VideoUnitFragment : Fragment(R.layout.fragment_video_unit) {
222222
mediaItem,
223223
viewModel.exoPlayer?.currentPosition ?: 0L
224224
)
225-
viewModel.castPlayer?.playWhenReady = false
225+
viewModel.castPlayer?.playWhenReady = true
226226
showVideoControllerIndefinitely(true)
227227
}
228228

course/src/main/java/org/openedx/course/presentation/unit/video/VideoUnitViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ open class VideoUnitViewModel(
3030

3131
var videoUrl = ""
3232
var transcripts = emptyMap<String, String>()
33-
var isPlaying = false
33+
var isPlaying = true
3434
var transcriptLanguage = AppDataConstants.defaultLocale.language ?: "en"
3535
private set
3636

discovery/src/main/java/org/openedx/discovery/presentation/WebViewDiscoveryFragment.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ class WebViewDiscoveryFragment : Fragment() {
9797
isPreLogin = viewModel.isPreLogin,
9898
contentUrl = viewModel.discoveryUrl,
9999
uriScheme = viewModel.uriScheme,
100+
userAgent = viewModel.appUserAgent,
100101
isRegistrationEnabled = viewModel.isRegistrationEnabled,
101102
hasInternetConnection = hasInternetConnection,
102103
onWebViewUIAction = { action ->
@@ -195,6 +196,7 @@ private fun WebViewDiscoveryScreen(
195196
contentUrl: String,
196197
uriScheme: String,
197198
isRegistrationEnabled: Boolean,
199+
userAgent: String,
198200
hasInternetConnection: Boolean,
199201
onWebViewUIAction: (WebViewUIAction) -> Unit,
200202
onWebPageUpdated: (String) -> Unit,
@@ -275,6 +277,7 @@ private fun WebViewDiscoveryScreen(
275277
DiscoveryWebView(
276278
contentUrl = contentUrl,
277279
uriScheme = uriScheme,
280+
userAgent = userAgent,
278281
onWebPageLoaded = {
279282
if ((uiState is WebViewUIState.Error).not()) {
280283
onWebViewUIAction(WebViewUIAction.WEB_PAGE_LOADED)
@@ -316,6 +319,7 @@ private fun WebViewDiscoveryScreen(
316319
private fun DiscoveryWebView(
317320
contentUrl: String,
318321
uriScheme: String,
322+
userAgent: String,
319323
onWebPageLoaded: () -> Unit,
320324
onWebPageUpdated: (String) -> Unit,
321325
onUriClick: (String, WebViewLink.Authority) -> Unit,
@@ -324,6 +328,7 @@ private fun DiscoveryWebView(
324328
val webView = CatalogWebViewScreen(
325329
url = contentUrl,
326330
uriScheme = uriScheme,
331+
userAgent = userAgent,
327332
onWebPageLoaded = onWebPageLoaded,
328333
onWebPageUpdated = onWebPageUpdated,
329334
onUriClick = onUriClick,
@@ -396,6 +401,7 @@ private fun WebViewDiscoveryScreenPreview() {
396401
contentUrl = "https://www.example.com/",
397402
uriScheme = "",
398403
isRegistrationEnabled = true,
404+
userAgent = "",
399405
hasInternetConnection = false,
400406
onWebViewUIAction = {},
401407
onWebPageUpdated = {},

discovery/src/main/java/org/openedx/discovery/presentation/WebViewDiscoveryViewModel.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import kotlinx.coroutines.flow.StateFlow
66
import kotlinx.coroutines.flow.asStateFlow
77
import org.openedx.core.config.Config
88
import org.openedx.core.data.storage.CorePreferences
9+
import org.openedx.core.presentation.global.AppData
910
import org.openedx.core.presentation.global.ErrorType
1011
import org.openedx.core.presentation.global.webview.WebViewUIState
1112
import org.openedx.core.system.connection.NetworkConnection
@@ -14,6 +15,7 @@ import org.openedx.foundation.utils.UrlUtils
1415

1516
class WebViewDiscoveryViewModel(
1617
private val querySearch: String,
18+
private val appData: AppData,
1719
private val config: Config,
1820
private val networkConnection: NetworkConnection,
1921
private val corePreferences: CorePreferences,
@@ -30,6 +32,8 @@ class WebViewDiscoveryViewModel(
3032
val isPreLogin get() = config.isPreLoginExperienceEnabled() && corePreferences.user == null
3133
val isRegistrationEnabled: Boolean get() = config.isRegistrationEnabled()
3234

35+
val appUserAgent get() = appData.appUserAgent
36+
3337
private var _discoveryUrl = webViewConfig.baseUrl
3438
val discoveryUrl: String
3539
get() {

discovery/src/main/java/org/openedx/discovery/presentation/catalog/CatalogWebView.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import androidx.compose.foundation.isSystemInDarkTheme
88
import androidx.compose.runtime.Composable
99
import androidx.compose.runtime.remember
1010
import androidx.compose.ui.platform.LocalContext
11-
import org.openedx.core.extension.equalsHost
1211
import org.openedx.foundation.extension.applyDarkModeIfEnabled
1312
import org.openedx.discovery.presentation.catalog.WebViewLink.Authority as linkAuthority
1413

@@ -17,6 +16,7 @@ import org.openedx.discovery.presentation.catalog.WebViewLink.Authority as linkA
1716
fun CatalogWebViewScreen(
1817
url: String,
1918
uriScheme: String,
19+
userAgent: String,
2020
isAllLinksExternal: Boolean = false,
2121
onWebPageLoaded: () -> Unit,
2222
refreshSessionCookie: () -> Unit = {},
@@ -90,7 +90,7 @@ fun CatalogWebViewScreen(
9090
request: WebResourceRequest,
9191
error: WebResourceError
9292
) {
93-
if (view.url.equalsHost(request.url.host)) {
93+
if (request.url.toString() == view.url) {
9494
onWebPageLoadError()
9595
}
9696
super.onReceivedError(view, request, error)
@@ -104,6 +104,7 @@ fun CatalogWebViewScreen(
104104
setSupportZoom(true)
105105
loadsImagesAutomatically = true
106106
domStorageEnabled = true
107+
userAgentString = "$userAgentString $userAgent"
107108
}
108109
isVerticalScrollBarEnabled = false
109110
isHorizontalScrollBarEnabled = false

0 commit comments

Comments
 (0)