joplin: Free joplin from non-free camera module

This commit is contained in:
Tobias Mueller 2023-03-06 07:06:34 +00:00 committed by Licaon_Kter
parent 2affbb2ac8
commit bcfa8dc3a2
3 changed files with 266 additions and 110 deletions

View file

@ -13,121 +13,36 @@ RepoType: git
Repo: https://github.com/laurent22/joplin.git
Builds:
- versionName: 2.7.2
versionCode: 2097667
disable: com/google/android/gms/vision
commit: android-v2.7.2
- versionName: 2.10.8
versionCode: 2097684
commit: 405c528ef00dee550dbf1586505c27bbff2d69e8
subdir: packages/app-mobile/android/app
sudo:
- sysctl fs.inotify.max_user_watches=524288
- apt-get update
- apt-get install -y --no-install-recommends g++ build-essential libexpat1-dev
gtk-doc-tools gobject-introspection libtiff5-dev libjpeg62-turbo-dev libpng-dev
librsvg2-dev libexif-dev libgif-dev libpoppler-glib-dev liblcms2-dev libpango1.0-dev
- curl -Lo node.tar.xz https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
- echo "0570b9354959f651b814e56a4ce98d4a067bf2385b9a0e6be075739bc65b0fae node.tar.xz"
- apt-get install -y automake build-essential gobject-introspection gtk-doc-tools
libexif-dev libexpat1-dev libgif-dev liblcms2-dev libpango1.0-dev libpng-dev
libpoppler-glib-dev librsvg2-dev libtiff5-dev libtool python-is-python3
- curl -Lo node.tar.gz https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.gz
- echo "2c69e7b040c208b61ebf9735c63d2e5bcabfed32ef05a9b8dd5823489ea50d6b node.tar.gz"
| sha256sum -c -
- tar xJf node.tar.xz
- cp -a node-v16.14.0-linux-x64/. /usr/local/
- tar xzf node.tar.gz --strip-components=1 -C /usr/local/
- corepack enable
gradle:
- yes
srclibs:
- react-native-sharp@v0.26.3
- libvips@v8.10.0
rm:
- packages/tools/PortableAppsLauncher/
- packages/app-cli
- packages/plugin-repo-cli
- packages/app-desktop
- packages/app-clipper
- packages/server
prebuild:
- sed -i -e '\!ACCESS_NETWORK_STATE!a<uses-permission android:name="com.android.vending.CHECK_LICENSE"
tools:node="remove" />' -e 's!xmlns:android!xmlns:tools="http://schemas.android.com/tools"
xmlns:android!' src/main/AndroidManifest.xml
- pushd ../../../..
- find -name "package-lock.json" -delete
- yarn install
- sed -i -e '13,15d' packages/app-mobile/node_modules/react-native-rsa-native/android/build.gradle
- sed -i -e '10,12d' packages/app-mobile/node_modules/react-native-rsa-native/android/bin/build.gradle
- rm -rf packages/app-mobile/node_modules/sharp/vendor/lib/*
- rm -rf packages/tools/node_modules/sharp/vendor/lib/*
- rm packages/app-mobile/node_modules/sharp/build/Release/sharp.node
- rm packages/app-mobile/node_modules/sqlite3/lib/binding/napi-v3-linux-x64/node_sqlite3.node
- rm packages/lib/node_modules/sharp/build/Release/sharp.node
- rm packages/lib/node_modules/sqlite3/lib/binding/napi-v3-linux-x64/node_sqlite3.node
- rm packages/tools/node_modules/sharp/build/Release/sharp.node
- rm packages/tools/node_modules/sqlite3/lib/binding/napi-v3-linux-x64/node_sqlite3.node
scanignore:
- packages/app-mobile/android/build.gradle
- packages/app-mobile/node_modules/joplin-rn-alarm-notification/android/build.gradle
- packages/app-mobile/node_modules/@react-native-community/netinfo/android/build.gradle
- packages/app-mobile/node_modules/react-native-get-random-values/android/build.gradle
- packages/app-mobile/node_modules/react-native-securerandom/android/build.gradle
- packages/app-mobile/node_modules/react-native-vector-icons/android/build.gradle
- packages/app-mobile/node_modules/react-native-image-picker/android/build.gradle
- packages/app-mobile/node_modules/react-native-rsa-native/android/build.gradle
- packages/app-mobile/node_modules/react-native-webview/android/build.gradle
- packages/app-mobile/node_modules/react-native-camera/android/build.gradle
- packages/app-mobile/node_modules/react-native-share/android/build.gradle
- packages/app-mobile/node_modules/react-native/android
- packages/app-mobile/node_modules/jsc-android
- packages/app-mobile/node_modules/hermes-engine
- packages/app-mobile/node_modules/react-native/ReactAndroid/build.gradle
- packages/app-mobile/node_modules/react-native-rsa-native/android/bin/build.gradle
scandelete:
- packages/fork-htmlparser2/node_modules
- packages/generator-joplin/node_modules
- packages/app-mobile/node_modules
- packages/renderer/node_modules
- packages/tools/node_modules
- packages/lib/node_modules
- node_modules
- .yarn/cache/
- .yarn/install-state.gz
build:
- pushd $$libvips$$
- mkdir build
- ./autogen.sh --prefix=$$libvips$$/build/
- make -j$(nproc)
- make install
- popd
- pushd $$react-native-sharp$$
- export PKG_CONFIG_PATH=$$libvips$$/build/lib/pkgconfig/
- npm install --build-from-source
- popd
- versionName: 2.8.1
versionCode: 2097668
disable: com/google/android/gms/vision
commit: 2af051a6ec26e197484d64b75b4609f1e8fb0146
subdir: packages/app-mobile/android/app
sudo:
- sysctl fs.inotify.max_user_watches=524288
- apt-get update
- apt-get install -y --no-install-recommends g++ build-essential libexpat1-dev
gtk-doc-tools gobject-introspection libtiff5-dev libjpeg62-turbo-dev libpng-dev
librsvg2-dev libexif-dev libgif-dev libpoppler-glib-dev liblcms2-dev libpango1.0-dev
- curl -Lo node.tar.xz https://nodejs.org/dist/v16.14.0/node-v16.14.0-linux-x64.tar.xz
- echo "0570b9354959f651b814e56a4ce98d4a067bf2385b9a0e6be075739bc65b0fae node.tar.xz"
| sha256sum -c -
- tar xJf node.tar.xz --strip-components=1 -C /usr/local/
- corepack enable
- pushd build/srclib/cpython
- ./configure
- make -j`nproc`
- make altinstall
- popd
init:
- pushd ../../../..
- PYTHON=python3.9 YARN_ENABLE_IMMUTABLE_INSTALLS=false yarn install
- yarn --version
- YARN_ENABLE_IMMUTABLE_INSTALLS=false BUILD_SEQUENCIAL=1 yarn install
- yarn remove --all react-native-camera
- rm packages/app-mobile/components/CameraView.js
- rm packages/app-mobile/components/screens/Note.js
patch:
- remove-camera.patch
- 0001-android-remove-legacy-support.patch
gradle:
- yes
srclibs:
- react-native-sharp@v0.26.3
- libvips@v8.10.0
- cpython@v3.9.6
rm:
- packages/tools/PortableAppsLauncher/
- packages/app-cli
@ -135,36 +50,45 @@ Builds:
- packages/app-desktop
- packages/app-clipper
- packages/server
- packages/app-mobile/components/CameraView.tsx
prebuild:
- pushd ../../../..
- yarn --version
- YARN_ENABLE_IMMUTABLE_INSTALLS=false BUILD_SEQUENCIAL=1 yarn install
- sed -i '/android.permission.CAMERA/d' packages/app-mobile/android/app/src/main/AndroidManifest.xml
- popd
- sed -i -e '\!ACCESS_NETWORK_STATE!a<uses-permission android:name="com.android.vending.CHECK_LICENSE"
tools:node="remove" />' -e 's!xmlns:android!xmlns:tools="http://schemas.android.com/tools"
xmlns:android!' src/main/AndroidManifest.xml
- cd ../../../../packages/app-mobile/node_modules/react-native-rsa-native/android
- sed -i '/:react-native-camera/{N;N;d}' build.gradle
- pushd ../../../../packages/app-mobile/node_modules/react-native-rsa-native/android
- sed -i -e 's|maven.fabric.io/public|jitpack.io|' build.gradle bin/build.gradle
- popd
scanignore:
- packages/app-mobile/android/build.gradle
- packages/app-mobile/node_modules/joplin-rn-alarm-notification/android/build.gradle
- packages/app-mobile/node_modules/@react-native-community/netinfo/android/build.gradle
- packages/app-mobile/node_modules/react-native-get-random-values/android/build.gradle
- packages/app-mobile/node_modules/react-native-securerandom/android/build.gradle
- packages/app-mobile/node_modules/react-native-vector-icons/android/build.gradle
- packages/app-mobile/node_modules/react-native-image-picker/android/build.gradle
- packages/app-mobile/node_modules/react-native-rsa-native/android/build.gradle
- packages/app-mobile/node_modules/react-native-webview/android/build.gradle
- packages/app-mobile/node_modules/react-native-camera/android/build.gradle
- packages/app-mobile/node_modules/react-native-share/android/build.gradle
- packages/app-mobile/node_modules/react-native/android
- packages/app-mobile/node_modules/react-native/sdks/hermesc/linux64-bin/hermesc
- packages/app-mobile/node_modules/jsc-android
- packages/app-mobile/node_modules/hermes-engine
- packages/app-mobile/node_modules/react-native/ReactAndroid/build.gradle
- packages/app-mobile/node_modules/react-native-rsa-native/android/bin/build.gradle
- packages/app-mobile/node_modules/react-native-document-picker/android/build.gradle
- packages/app-mobile/node_modules/react-native-safe-area-context/android/build.gradle
- packages/app-mobile/node_modules/@react-native-community/datetimepicker/android/build.gradle
- packages/react-native-alarm-notification/android/build.gradle
- packages/react-native-saf-x/android/build.gradle
scandelete:
- packages/fork-htmlparser2/node_modules
- packages/generator-joplin/node_modules
- packages/app-mobile/node_modules
- packages/renderer/node_modules
- packages/tools/node_modules
- packages/lib/node_modules
- packages/react-native-alarm-notification/node_modules
- packages/react-native-saf-x/node_modules
- node_modules
- .yarn/cache/
- .yarn/install-state.gz

View file

@ -0,0 +1,188 @@
From 3510f6846192014800e89a51fd64ecb68199a6ef Mon Sep 17 00:00:00 2001
From: Tobias Mueller <muelli@cryptobitch.de>
Date: Fri, 24 Feb 2023 12:55:01 +0100
Subject: [PATCH] android: remove legacy support
This depends on non-free software.
That, in turn, prevents other software, which depends on r-n-f-s
to become non-free.
---
android/build.gradle | 6 -
.../ReactNativeFingerprintScannerModule.java | 109 ------------------
2 files changed, 115 deletions(-)
diff --git a/packages/app-mobile/node_modules/react-native-fingerprint-scanner/android/build.gradle b/packages/app-mobile/node_modules/react-native-fingerprint-scanner/android/build.gradle
index eaf3829..d25f678 100644
--- a/packages/app-mobile/node_modules/react-native-fingerprint-scanner/android/build.gradle
+++ b/packages/app-mobile/node_modules/react-native-fingerprint-scanner/android/build.gradle
@@ -44,10 +44,4 @@ dependencies {
implementation 'com.facebook.react:react-native:+'
// androidx:biometric now supports fingerprint back to Android v23
implementation "androidx.biometric:biometric:1.0.1"
-
- // retain fingerprintScanner lib for compat with Android v16-23 device-specific drivers (Samsung & MeiZu)
- // 1.2.3 is the minimum version compatible with androidx.
- // See https://github.com/uccmawei/FingerprintIdentify/issues/74
- // (translation https://translate.google.com/translate?sl=zh-CN&tl=en&u=https://github.com/uccmawei/FingerprintIdentify/issues/74)
- implementation "com.wei.android.lib:fingerprintidentify:${safeExtGet("fingerprintidentify", "1.2.6")}"
}
diff --git a/packages/app-mobile/node_modules/react-native-fingerprint-scanner/android/src/main/java/com/hieuvp/fingerprint/ReactNativeFingerprintScannerModule.java b/packages/app-mobile/node_modules/react-native-fingerprint-scanner/android/src/main/java/com/hieuvp/fingerprint/ReactNativeFingerprintScannerModule.java
index fd3a6f6..81673e2 100644
--- a/packages/app-mobile/node_modules/react-native-fingerprint-scanner/android/src/main/java/com/hieuvp/fingerprint/ReactNativeFingerprintScannerModule.java
+++ b/packages/app-mobile/node_modules/react-native-fingerprint-scanner/android/src/main/java/com/hieuvp/fingerprint/ReactNativeFingerprintScannerModule.java
@@ -20,13 +20,6 @@ import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.bridge.UiThreadUtil;
-// for Samsung/MeiZu compat, Android v16-23
-import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter;
-import com.wei.android.lib.fingerprintidentify.FingerprintIdentify;
-import com.wei.android.lib.fingerprintidentify.base.BaseFingerprint.ExceptionListener;
-import com.wei.android.lib.fingerprintidentify.base.BaseFingerprint.IdentifyListener;
-
-
@ReactModule(name="ReactNativeFingerprintScanner")
public class ReactNativeFingerprintScannerModule
extends ReactContextBaseJavaModule
@@ -39,9 +32,6 @@ public class ReactNativeFingerprintScannerModule
private final ReactApplicationContext mReactContext;
private BiometricPrompt biometricPrompt;
- // for Samsung/MeiZu compat, Android v16-23
- private FingerprintIdentify mFingerprintIdentify;
-
public ReactNativeFingerprintScannerModule(ReactApplicationContext reactContext) {
super(reactContext);
mReactContext = reactContext;
@@ -194,10 +184,6 @@ public class ReactNativeFingerprintScannerModule
@ReactMethod
public void authenticate(String title, String subtitle, String description, String cancelButton, final Promise promise) {
- if (requiresLegacyAuthentication()) {
- legacyAuthenticate(promise);
- }
- else {
final String errorName = getSensorError();
if (errorName != null) {
promise.reject(errorName, TYPE_BIOMETRICS);
@@ -206,16 +192,10 @@ public class ReactNativeFingerprintScannerModule
}
biometricAuthenticate(title, subtitle, description, cancelButton, promise);
- }
}
@ReactMethod
public void release() {
- if (requiresLegacyAuthentication()) {
- getFingerprintIdentify().cancelIdentify();
- mFingerprintIdentify = null;
- }
-
// consistent across legacy and current API
if (biometricPrompt != null) {
biometricPrompt.cancelAuthentication(); // if release called from eg React
@@ -226,16 +206,6 @@ public class ReactNativeFingerprintScannerModule
@ReactMethod
public void isSensorAvailable(final Promise promise) {
- if (requiresLegacyAuthentication()) {
- String errorMessage = legacyGetErrorMessage();
- if (errorMessage != null) {
- promise.reject(errorMessage, TYPE_FINGERPRINT_LEGACY);
- } else {
- promise.resolve(TYPE_FINGERPRINT_LEGACY);
- }
- return;
- }
-
// current API
String errorName = getSensorError();
if (errorName != null) {
@@ -244,83 +214,4 @@ public class ReactNativeFingerprintScannerModule
promise.resolve(TYPE_BIOMETRICS);
}
}
-
-
- // for Samsung/MeiZu compat, Android v16-23
- private FingerprintIdentify getFingerprintIdentify() {
- if (mFingerprintIdentify != null) {
- return mFingerprintIdentify;
- }
- mReactContext.addLifecycleEventListener(this);
- mFingerprintIdentify = new FingerprintIdentify(mReactContext);
- mFingerprintIdentify.setSupportAndroidL(true);
- mFingerprintIdentify.setExceptionListener(
- new ExceptionListener() {
- @Override
- public void onCatchException(Throwable exception) {
- mReactContext.removeLifecycleEventListener(ReactNativeFingerprintScannerModule.this);
- }
- }
- );
- mFingerprintIdentify.init();
- return mFingerprintIdentify;
- }
-
- private String legacyGetErrorMessage() {
- if (!getFingerprintIdentify().isHardwareEnable()) {
- return "FingerprintScannerNotSupported";
- } else if (!getFingerprintIdentify().isRegisteredFingerprint()) {
- return "FingerprintScannerNotEnrolled";
- } else if (!getFingerprintIdentify().isFingerprintEnable()) {
- return "FingerprintScannerNotAvailable";
- }
-
- return null;
- }
-
-
- private void legacyAuthenticate(final Promise promise) {
- final String errorMessage = legacyGetErrorMessage();
- if (errorMessage != null) {
- promise.reject(errorMessage, TYPE_FINGERPRINT_LEGACY);
- ReactNativeFingerprintScannerModule.this.release();
- return;
- }
-
- getFingerprintIdentify().resumeIdentify();
- getFingerprintIdentify().startIdentify(MAX_AVAILABLE_TIMES, new IdentifyListener() {
- @Override
- public void onSucceed() {
- promise.resolve(true);
- }
-
- @Override
- public void onNotMatch(int availableTimes) {
- if (availableTimes <= 0) {
- mReactContext.getJSModule(RCTDeviceEventEmitter.class)
- .emit("FINGERPRINT_SCANNER_AUTHENTICATION", "DeviceLocked");
-
- } else {
- mReactContext.getJSModule(RCTDeviceEventEmitter.class)
- .emit("FINGERPRINT_SCANNER_AUTHENTICATION", "AuthenticationNotMatch");
- }
- }
-
- @Override
- public void onFailed(boolean isDeviceLocked) {
- if(isDeviceLocked){
- promise.reject("AuthenticationFailed", "DeviceLocked");
- } else {
- promise.reject("AuthenticationFailed", TYPE_FINGERPRINT_LEGACY);
- }
- ReactNativeFingerprintScannerModule.this.release();
- }
-
- @Override
- public void onStartFailedByDeviceLocked() {
- // the first start failed because the device was locked temporarily
- promise.reject("AuthenticationFailed", "DeviceLocked");
- }
- });
- }
}
--
2.25.1

View file

@ -0,0 +1,44 @@
From 2433d6303e8097f528bd6f458585aa418df54dd8 Mon Sep 17 00:00:00 2001
From: Tobias Mueller <muelli@cryptobitch.de>
Date: Tue, 31 Jan 2023 11:49:01 +0100
Subject: [PATCH] remove any links to CameraView
---
packages/app-mobile/components/screens/Note.tsx | 7 +------
1 file changed, 1 insertion(+), 6 deletions(-)
diff --git a/packages/app-mobile/components/screens/Note.tsx b/packages/app-mobile/components/screens/Note.tsx
index 8552bd5e63e..b2bdf556198 100644
--- a/packages/app-mobile/components/screens/Note.tsx
+++ b/packages/app-mobile/components/screens/Note.tsx
@@ -41,7 +41,6 @@ const shared = require('@joplin/lib/components/shared/note-screen-shared.js');
import { ImagePickerResponse, launchImageLibrary } from 'react-native-image-picker';
import SelectDateTimeDialog from '../SelectDateTimeDialog';
import ShareExtension from '../../utils/ShareExtension.js';
-import CameraView from '../CameraView';
import { NoteEntity } from '@joplin/lib/services/database/types';
import Logger from '@joplin/lib/Logger';
const urlUtils = require('@joplin/lib/urlUtils');
@@ -867,7 +866,7 @@ class NoteScreenComponent extends BaseScreenComponent {
// Disabled on Android because it doesn't work due to permission issues, but enabled on iOS
// because that's only way to browse photos from the camera roll.
if (Platform.OS === 'ios') buttons.push({ text: _('Attach photo'), id: 'attachPhoto' });
- buttons.push({ text: _('Take photo'), id: 'takePhoto' });
+ // buttons.push({ text: _('Take photo'), id: 'takePhoto' });
const buttonId = await dialogs.pop(this, _('Choose an option'), buttons);
@@ -1051,10 +1050,6 @@ class NoteScreenComponent extends BaseScreenComponent {
const note: NoteEntity = this.state.note;
const isTodo = !!Number(note.is_todo);
- if (this.state.showCamera) {
- return <CameraView themeId={this.props.themeId} style={{ flex: 1 }} onPhoto={this.cameraView_onPhoto} onCancel={this.cameraView_onCancel} />;
- }
-
// Currently keyword highlighting is supported only when FTS is available.
const keywords = this.props.searchQuery && !!this.props.ftsEnabled ? this.props.highlightedWords : emptyArray;
--
2.25.1