diff --git a/core/src/main/java/org/openedx/core/module/TranscriptManager.kt b/core/src/main/java/org/openedx/core/module/TranscriptManager.kt index c08870a33..eb98a042b 100644 --- a/core/src/main/java/org/openedx/core/module/TranscriptManager.kt +++ b/core/src/main/java/org/openedx/core/module/TranscriptManager.kt @@ -6,6 +6,7 @@ import org.openedx.core.module.download.AbstractDownloader import org.openedx.core.utils.Directories import org.openedx.core.utils.FileUtil import org.openedx.core.utils.IOUtils +import org.openedx.core.utils.Logger import org.openedx.core.utils.Sha1Util import subtitleFile.FormatSRT import subtitleFile.TimedTextObject @@ -20,6 +21,8 @@ class TranscriptManager( val context: Context, ) { + private val logger = Logger(TAG) + private val transcriptDownloader = object : AbstractDownloader() { override val client: OkHttpClient get() = OkHttpClient.Builder().build() @@ -67,9 +70,11 @@ class TranscriptManager( ) if (result) { getInputStream(downloadLink)?.let { - val transcriptTimedTextObject = - convertIntoTimedTextObject(it) - transcriptObject = transcriptTimedTextObject + try { + transcriptObject = convertIntoTimedTextObject(it) + } catch (e: NullPointerException) { + logger.e(throwable = e, submitCrashReport = true) + } } } } @@ -83,7 +88,7 @@ class TranscriptManager( try { transcriptObject = convertIntoTimedTextObject(transcriptInputStream) } catch (e: Exception) { - e.printStackTrace() + logger.e(throwable = e, submitCrashReport = true) } } else { startTranscriptDownload(transcriptUrl) @@ -127,4 +132,8 @@ class TranscriptManager( } return null } + + private companion object { + const val TAG = "TranscriptManager" + } } diff --git a/core/src/main/java/org/openedx/core/utils/Logger.kt b/core/src/main/java/org/openedx/core/utils/Logger.kt index 41cd9a3a6..e08e2d357 100644 --- a/core/src/main/java/org/openedx/core/utils/Logger.kt +++ b/core/src/main/java/org/openedx/core/utils/Logger.kt @@ -1,9 +1,16 @@ package org.openedx.core.utils import android.util.Log +import com.google.firebase.crashlytics.FirebaseCrashlytics +import org.koin.core.component.KoinComponent +import org.koin.core.component.inject import org.openedx.core.BuildConfig +import org.openedx.core.config.Config + +class Logger(private val tag: String) : KoinComponent { + + private val config by inject() -class Logger(private val tag: String) { fun d(message: () -> String) { if (BuildConfig.DEBUG) Log.d(tag, message()) } @@ -12,6 +19,13 @@ class Logger(private val tag: String) { if (BuildConfig.DEBUG) Log.e(tag, message()) } + fun e(throwable: Throwable, submitCrashReport: Boolean = false) { + if (BuildConfig.DEBUG) throwable.printStackTrace() + if (submitCrashReport && config.getFirebaseConfig().enabled) { + FirebaseCrashlytics.getInstance().recordException(throwable) + } + } + fun i(message: () -> String) { if (BuildConfig.DEBUG) Log.i(tag, message()) }