diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 42cfaa3f..f74ec779 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -32,6 +32,10 @@ android { buildConfigField("boolean", "EVENT_AND_CRASH_LOGGING_ENABLED", "false") buildConfigField("String", "PSPDFKIT_KEY", "\"\"") manifestPlaceholders["enableCrashReporting"] = false + + ndk { + abiFilters += listOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64") + } } signingConfigs { create("release") { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 36541a7a..9fe18dc4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -37,9 +37,9 @@ tools:ignore="GoogleAppIndexingWarning" tools:replace="android:requestLegacyExternalStorage" tools:targetApi="n"> - - - + diff --git a/app/src/main/java/org/zotero/android/ZoteroApplication.kt b/app/src/main/java/org/zotero/android/ZoteroApplication.kt index ff56cdf6..1c7ddd93 100644 --- a/app/src/main/java/org/zotero/android/ZoteroApplication.kt +++ b/app/src/main/java/org/zotero/android/ZoteroApplication.kt @@ -5,7 +5,6 @@ import androidx.lifecycle.DefaultLifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.ProcessLifecycleOwner import com.google.gson.Gson -import com.pspdfkit.PSPDFKit import dagger.hilt.android.HiltAndroidApp import org.zotero.android.BuildConfig.EVENT_AND_CRASH_LOGGING_ENABLED import org.zotero.android.api.ForGsonWithRoundedDecimals @@ -56,13 +55,6 @@ open class ZoteroApplication: Application(), DefaultLifecycleObserver { controllers.init() ProcessLifecycleOwner.get().lifecycle.addObserver(this) - initializePspdfKit() - } - - private fun initializePspdfKit() { - if (BuildConfig.PSPDFKIT_KEY.isNotBlank()) { - PSPDFKit.initialize(this, BuildConfig.PSPDFKIT_KEY) - } } override fun onStart(owner: LifecycleOwner) { diff --git a/app/src/main/java/org/zotero/android/architecture/navigation/phone/DashboardRootPhoneNavigation.kt b/app/src/main/java/org/zotero/android/architecture/navigation/phone/DashboardRootPhoneNavigation.kt index 966a2f33..f9e3c728 100644 --- a/app/src/main/java/org/zotero/android/architecture/navigation/phone/DashboardRootPhoneNavigation.kt +++ b/app/src/main/java/org/zotero/android/architecture/navigation/phone/DashboardRootPhoneNavigation.kt @@ -11,6 +11,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.navigation.NavHostController import com.google.accompanist.insets.navigationBarsPadding import com.google.accompanist.navigation.animation.composable @@ -71,6 +72,8 @@ internal fun DashboardRootPhoneNavigation( val navigation = remember(navController) { ZoteroNavigation(navController, dispatcher) } + val context = LocalContext.current + Box{ Column(modifier = Modifier.background(color = CustomTheme.colors.surface)) { ZoteroNavHost( @@ -114,7 +117,7 @@ internal fun DashboardRootPhoneNavigation( navigateToZoterWebViewScreen = navigation::toZoteroWebViewScreen, navigateToTagFilter = navigation::toTagFilter, navigateToCollectionPicker = navigation::toCollectionPicker, - onShowPdf = navigation::toPdfScreen, + onShowPdf = { navigation.toPdfScreen(context) }, ) itemDetailsScreen( navigateToCreatorEdit = navigation::toCreatorEdit, @@ -128,7 +131,7 @@ internal fun DashboardRootPhoneNavigation( onOpenFile = onOpenFile, onOpenWebpage = onOpenWebpage, onPickFile = { onPickFile(EventBusConstants.FileWasSelected.CallPoint.ItemDetails) }, - onShowPdf = navigation::toPdfScreen, + onShowPdf = { navigation.toPdfScreen(context) }, ) composable( diff --git a/app/src/main/java/org/zotero/android/architecture/navigation/tablet/DashboardRootTopLevelTabletNavigation.kt b/app/src/main/java/org/zotero/android/architecture/navigation/tablet/DashboardRootTopLevelTabletNavigation.kt index 1c1965bf..1e04051c 100644 --- a/app/src/main/java/org/zotero/android/architecture/navigation/tablet/DashboardRootTopLevelTabletNavigation.kt +++ b/app/src/main/java/org/zotero/android/architecture/navigation/tablet/DashboardRootTopLevelTabletNavigation.kt @@ -6,6 +6,7 @@ import androidx.activity.compose.LocalOnBackPressedDispatcherOwner import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.navigation.NavGraphBuilder import com.google.accompanist.insets.navigationBarsPadding import com.google.accompanist.navigation.animation.composable @@ -31,6 +32,7 @@ internal fun DashboardRootTopLevelTabletNavigation( onOpenWebpage: (uri: Uri) -> Unit, viewModel: DashboardViewModel, ) { + val context = LocalContext.current val navController = rememberAnimatedNavController() val dispatcher = LocalOnBackPressedDispatcherOwner.current?.onBackPressedDispatcher val navigation = remember(navController) { @@ -47,7 +49,7 @@ internal fun DashboardRootTopLevelTabletNavigation( onOpenFile = onOpenFile, onOpenWebpage = onOpenWebpage, viewModel = viewModel, - onShowPdf = navigation::toPdfScreen, + onShowPdf = { navigation.toPdfScreen(context) }, toAddOrEditNote = navigation::toAddOrEditNote, toZoteroWebViewScreen = navigation::toZoteroWebViewScreen, ) diff --git a/app/src/main/java/org/zotero/android/pdf/PdfReaderNavigation.kt b/app/src/main/java/org/zotero/android/pdf/PdfReaderNavigation.kt index d148f1b9..2085607b 100644 --- a/app/src/main/java/org/zotero/android/pdf/PdfReaderNavigation.kt +++ b/app/src/main/java/org/zotero/android/pdf/PdfReaderNavigation.kt @@ -1,12 +1,16 @@ package org.zotero.android.pdf +import android.content.Context import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.width import androidx.compose.ui.Modifier import androidx.compose.ui.unit.dp import androidx.navigation.NavGraphBuilder import com.google.accompanist.navigation.animation.composable +import com.pspdfkit.PSPDFKit +import org.zotero.android.BuildConfig +import org.zotero.android.androidx.content.longToast import org.zotero.android.architecture.navigation.ZoteroNavigation import org.zotero.android.architecture.navigation.dialogFixedDimens import org.zotero.android.pdf.annotation.PdfAnnotationNavigation @@ -21,6 +25,7 @@ import org.zotero.android.pdf.settings.PdfSettingsScreen import org.zotero.android.pdffilter.PdfFilterNavigation import org.zotero.android.pdffilter.pdfFilterNavScreens import org.zotero.android.pdffilter.toPdfFilterScreen +import timber.log.Timber internal fun NavGraphBuilder.pdfReaderScreenAndNavigationForTablet( navigation: ZoteroNavigation, @@ -150,8 +155,25 @@ private object PdfReaderDestinations { const val PDF_ANNOTATION_MORE_NAVIGATION = "pdfAnnotationMoreNavigation" } -fun ZoteroNavigation.toPdfScreen() { - navController.navigate(PdfReaderDestinations.PDF_SCREEN) +fun ZoteroNavigation.toPdfScreen(context: Context) { + if (initializePspdfKit(context)) { + navController.navigate(PdfReaderDestinations.PDF_SCREEN) + } +} + +private fun initializePspdfKit(context: Context): Boolean { + try { + if (BuildConfig.PSPDFKIT_KEY.isNotBlank()) { + PSPDFKit.initialize(context, BuildConfig.PSPDFKIT_KEY) + } else { + PSPDFKit.initialize(context, null) + } + } catch (e: Exception) { + Timber.e(e, "Unable to initialize PSPDFKIT") + context.longToast("Unable to initialize PSPDFKIT") + return false + } + return true } private fun ZoteroNavigation.toPdfFilterNavigation() {