From e1c38e75b555e242d4347778dd722bf564f84bbe Mon Sep 17 00:00:00 2001 From: wiryadev Date: Sun, 19 May 2024 18:41:13 +0700 Subject: [PATCH 1/2] adjust Composable function signature to make source mandatory --- .../rajat/sample/pdfviewer/ComposeActivity.kt | 7 +++--- .../java/com/rajat/pdfviewer/PdfSource.kt | 10 ++++++++ .../pdfviewer/compose/PdfRendererCompose.kt | 23 ++++++++++--------- 3 files changed, 26 insertions(+), 14 deletions(-) create mode 100644 pdfViewer/src/main/java/com/rajat/pdfviewer/PdfSource.kt diff --git a/app/src/main/java/com/rajat/sample/pdfviewer/ComposeActivity.kt b/app/src/main/java/com/rajat/sample/pdfviewer/ComposeActivity.kt index 1b7d954..e9bfa52 100644 --- a/app/src/main/java/com/rajat/sample/pdfviewer/ComposeActivity.kt +++ b/app/src/main/java/com/rajat/sample/pdfviewer/ComposeActivity.kt @@ -26,6 +26,7 @@ import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.rajat.pdfviewer.PdfRendererView +import com.rajat.pdfviewer.PdfSource import com.rajat.pdfviewer.compose.PdfRendererViewCompose import com.rajat.sample.pdfviewer.ui.theme.AndroidpdfviewerTheme import java.io.File @@ -102,8 +103,8 @@ fun MyPdfScreenFromUri(modifier: Modifier = Modifier) { fun MyPdfScreenFromUri(uri: Uri, modifier: Modifier = Modifier) { val lifecycleOwner = LocalLifecycleOwner.current PdfRendererViewCompose( + source = PdfSource.LocalUri(uri), modifier = modifier, - uri = uri, lifecycleOwner = lifecycleOwner, statusCallBack = object : PdfRendererView.StatusCallBack { override fun onPdfLoadStart() { @@ -137,8 +138,8 @@ fun MyPdfScreenFromUri(uri: Uri, modifier: Modifier = Modifier) { fun MyPdfScreenFromUrl(url: String, modifier: Modifier = Modifier) { val lifecycleOwner = LocalLifecycleOwner.current PdfRendererViewCompose( + source = PdfSource.Remote(url), modifier = modifier, - url = url, lifecycleOwner = lifecycleOwner, statusCallBack = object : PdfRendererView.StatusCallBack { override fun onPdfLoadStart() { @@ -174,7 +175,7 @@ fun MyPdfScreenFromFile() { val lifecycleOwner = LocalLifecycleOwner.current val pdfFile = File("path/to/your/file.pdf") // Replace with your file path PdfRendererViewCompose( - file = pdfFile, + source = PdfSource.LocalFile(pdfFile), lifecycleOwner = lifecycleOwner ) } diff --git a/pdfViewer/src/main/java/com/rajat/pdfviewer/PdfSource.kt b/pdfViewer/src/main/java/com/rajat/pdfviewer/PdfSource.kt new file mode 100644 index 0000000..55f356e --- /dev/null +++ b/pdfViewer/src/main/java/com/rajat/pdfviewer/PdfSource.kt @@ -0,0 +1,10 @@ +package com.rajat.pdfviewer + +import android.net.Uri +import java.io.File + +sealed interface PdfSource { + data class Remote(val url: String) : PdfSource + data class LocalFile(val file: File) : PdfSource + data class LocalUri(val uri: Uri) : PdfSource +} \ No newline at end of file diff --git a/pdfViewer/src/main/java/com/rajat/pdfviewer/compose/PdfRendererCompose.kt b/pdfViewer/src/main/java/com/rajat/pdfviewer/compose/PdfRendererCompose.kt index b70788d..378d625 100644 --- a/pdfViewer/src/main/java/com/rajat/pdfviewer/compose/PdfRendererCompose.kt +++ b/pdfViewer/src/main/java/com/rajat/pdfviewer/compose/PdfRendererCompose.kt @@ -1,6 +1,5 @@ package com.rajat.pdfviewer.compose -import android.net.Uri import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalLifecycleOwner @@ -9,14 +8,12 @@ import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.lifecycleScope import com.rajat.pdfviewer.HeaderData import com.rajat.pdfviewer.PdfRendererView -import java.io.File +import com.rajat.pdfviewer.PdfSource @Composable fun PdfRendererViewCompose( + source: PdfSource, modifier: Modifier = Modifier, - url: String? = null, - file: File? = null, - uri: Uri? = null, headers: HeaderData = HeaderData(), lifecycleOwner: LifecycleOwner = LocalLifecycleOwner.current, statusCallBack: PdfRendererView.StatusCallBack? = null @@ -29,12 +26,16 @@ fun PdfRendererViewCompose( if (statusCallBack != null) { statusListener = statusCallBack } - if (file != null) { - initWithFile(file) - } else if (url != null) { - initWithUrl(url, headers, lifecycleScope, lifecycleOwner.lifecycle) - } else if (uri != null) { - initWithUri(uri) + + when (source) { + is PdfSource.LocalFile -> initWithFile(source.file) + is PdfSource.LocalUri -> initWithUri(source.uri) + is PdfSource.Remote -> initWithUrl( + source.url, + headers, + lifecycleScope, + lifecycleOwner.lifecycle + ) } } }, From 2d5a540f71dcf801473df24dd0a2525357c1c41c Mon Sep 17 00:00:00 2001 From: wiryadev Date: Mon, 20 May 2024 19:34:12 +0700 Subject: [PATCH 2/2] update readme to reflect new function signature --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9dff033..9ba737c 100644 --- a/README.md +++ b/README.md @@ -159,7 +159,7 @@ For Jetpack Compose, utilize PdfRendererViewCompose: ```kotlin PdfRendererViewCompose( - url = "your_pdf_url_here", + source = PdfSource.Remote("your_pdf_url_here"), lifecycleOwner = LocalLifecycleOwner.current ) ```