mirror of
https://github.com/laurent22/joplin.git
synced 2024-12-21 09:38:01 +02:00
Mobile: Show WebView version in settings (#10518)
This commit is contained in:
parent
f94c16b22e
commit
efb48e6145
@ -694,6 +694,7 @@ packages/app-mobile/utils/fs-driver/tarExtract.js
|
|||||||
packages/app-mobile/utils/fs-driver/testUtil/createFilesFromPathRecord.js
|
packages/app-mobile/utils/fs-driver/testUtil/createFilesFromPathRecord.js
|
||||||
packages/app-mobile/utils/fs-driver/testUtil/verifyDirectoryMatches.js
|
packages/app-mobile/utils/fs-driver/testUtil/verifyDirectoryMatches.js
|
||||||
packages/app-mobile/utils/getPackageInfo.js
|
packages/app-mobile/utils/getPackageInfo.js
|
||||||
|
packages/app-mobile/utils/getVersionInfoText.js
|
||||||
packages/app-mobile/utils/initializeCommandService.js
|
packages/app-mobile/utils/initializeCommandService.js
|
||||||
packages/app-mobile/utils/ipc/RNToWebViewMessenger.js
|
packages/app-mobile/utils/ipc/RNToWebViewMessenger.js
|
||||||
packages/app-mobile/utils/ipc/WebViewToRNMessenger.js
|
packages/app-mobile/utils/ipc/WebViewToRNMessenger.js
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -673,6 +673,7 @@ packages/app-mobile/utils/fs-driver/tarExtract.js
|
|||||||
packages/app-mobile/utils/fs-driver/testUtil/createFilesFromPathRecord.js
|
packages/app-mobile/utils/fs-driver/testUtil/createFilesFromPathRecord.js
|
||||||
packages/app-mobile/utils/fs-driver/testUtil/verifyDirectoryMatches.js
|
packages/app-mobile/utils/fs-driver/testUtil/verifyDirectoryMatches.js
|
||||||
packages/app-mobile/utils/getPackageInfo.js
|
packages/app-mobile/utils/getPackageInfo.js
|
||||||
|
packages/app-mobile/utils/getVersionInfoText.js
|
||||||
packages/app-mobile/utils/initializeCommandService.js
|
packages/app-mobile/utils/initializeCommandService.js
|
||||||
packages/app-mobile/utils/ipc/RNToWebViewMessenger.js
|
packages/app-mobile/utils/ipc/RNToWebViewMessenger.js
|
||||||
packages/app-mobile/utils/ipc/WebViewToRNMessenger.js
|
packages/app-mobile/utils/ipc/WebViewToRNMessenger.js
|
||||||
|
@ -11,6 +11,7 @@ import com.facebook.react.defaults.DefaultNewArchitectureEntryPoint.load
|
|||||||
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
|
import com.facebook.react.defaults.DefaultReactHost.getDefaultReactHost
|
||||||
import com.facebook.react.defaults.DefaultReactNativeHost
|
import com.facebook.react.defaults.DefaultReactNativeHost
|
||||||
import com.facebook.soloader.SoLoader
|
import com.facebook.soloader.SoLoader
|
||||||
|
import net.cozic.joplin.versioninfo.SystemVersionInformationPackage
|
||||||
import net.cozic.joplin.share.SharePackage
|
import net.cozic.joplin.share.SharePackage
|
||||||
import net.cozic.joplin.ssl.SslPackage
|
import net.cozic.joplin.ssl.SslPackage
|
||||||
import net.cozic.joplin.textinput.TextInputPackage
|
import net.cozic.joplin.textinput.TextInputPackage
|
||||||
@ -23,6 +24,7 @@ class MainApplication : Application(), ReactApplication {
|
|||||||
add(SharePackage())
|
add(SharePackage())
|
||||||
add(SslPackage())
|
add(SslPackage())
|
||||||
add(TextInputPackage())
|
add(TextInputPackage())
|
||||||
|
add(SystemVersionInformationPackage())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getJSMainModuleName(): String = "index"
|
override fun getJSMainModuleName(): String = "index"
|
||||||
|
@ -0,0 +1,61 @@
|
|||||||
|
package net.cozic.joplin.versioninfo;
|
||||||
|
|
||||||
|
import android.content.pm.PackageInfo;
|
||||||
|
import android.os.Build;
|
||||||
|
import android.webkit.WebView;
|
||||||
|
|
||||||
|
import com.facebook.react.ReactPackage;
|
||||||
|
import com.facebook.react.bridge.NativeModule;
|
||||||
|
import com.facebook.react.bridge.Promise;
|
||||||
|
import com.facebook.react.bridge.ReactApplicationContext;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import com.facebook.react.bridge.ReactContextBaseJavaModule;
|
||||||
|
import com.facebook.react.uimanager.ViewManager;
|
||||||
|
import com.facebook.react.bridge.ReactMethod;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class SystemVersionInformationPackage implements ReactPackage {
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
|
||||||
|
return Collections.singletonList(new SystemVersionInformationModule(reactContext));
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
|
||||||
|
return Collections.emptyList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class SystemVersionInformationModule extends ReactContextBaseJavaModule {
|
||||||
|
public SystemVersionInformationModule(@NonNull ReactApplicationContext context) {
|
||||||
|
super(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Map<String, Object> getConstants() {
|
||||||
|
final Map<String, Object> result = new HashMap<String, Object>();
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
|
PackageInfo webViewPackage = WebView.getCurrentWebViewPackage();
|
||||||
|
|
||||||
|
if (webViewPackage != null) {
|
||||||
|
result.put("webViewVersion", webViewPackage.versionName);
|
||||||
|
result.put("webViewPackage", webViewPackage.packageName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return "SystemVersionInformationModule";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -33,8 +33,7 @@ import PluginUploadButton, { canInstallPluginsFromFile, buttonLabel as pluginUpl
|
|||||||
import NoteImportButton, { importButtonDefaultTitle, importButtonDescription } from './NoteExportSection/NoteImportButton';
|
import NoteImportButton, { importButtonDefaultTitle, importButtonDescription } from './NoteExportSection/NoteImportButton';
|
||||||
import SectionDescription from './SectionDescription';
|
import SectionDescription from './SectionDescription';
|
||||||
import EnablePluginSupportPage from './plugins/EnablePluginSupportPage';
|
import EnablePluginSupportPage from './plugins/EnablePluginSupportPage';
|
||||||
import getPackageInfo from '../../../utils/getPackageInfo';
|
import getVersionInfoText from '../../../utils/getVersionInfoText';
|
||||||
import versionInfo from '@joplin/lib/versionInfo';
|
|
||||||
|
|
||||||
interface ConfigScreenState {
|
interface ConfigScreenState {
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
||||||
@ -619,15 +618,7 @@ class ConfigScreenComponent extends BaseScreenComponent<ConfigScreenProps, Confi
|
|||||||
addSettingLink('website_link', _('Joplin website'), 'https://joplinapp.org/');
|
addSettingLink('website_link', _('Joplin website'), 'https://joplinapp.org/');
|
||||||
addSettingLink('privacy_link', _('Privacy Policy'), 'https://joplinapp.org/privacy/');
|
addSettingLink('privacy_link', _('Privacy Policy'), 'https://joplinapp.org/privacy/');
|
||||||
|
|
||||||
const packageInfo = getPackageInfo();
|
const versionInfoText = getVersionInfoText(settings['plugins.states']);
|
||||||
const appInfo = versionInfo(packageInfo, PluginService.instance().enabledPlugins(settings['plugins.states']));
|
|
||||||
const versionInfoText = [
|
|
||||||
appInfo.body,
|
|
||||||
'',
|
|
||||||
_('FTS enabled: %d', this.props.settings['db.ftsEnabled']),
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Old code before rule was applied
|
|
||||||
_('Hermes enabled: %d', (global as any).HermesInternal ? 1 : 0),
|
|
||||||
].join('\n');
|
|
||||||
|
|
||||||
addSettingText('version_info', versionInfoText);
|
addSettingText('version_info', versionInfoText);
|
||||||
addSettingButton('copy_app_info', _('Copy version info'), () => {
|
addSettingButton('copy_app_info', _('Copy version info'), () => {
|
||||||
|
50
packages/app-mobile/utils/getVersionInfoText.ts
Normal file
50
packages/app-mobile/utils/getVersionInfoText.ts
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import versionInfo from '@joplin/lib/versionInfo';
|
||||||
|
import { Platform, NativeModules } from 'react-native';
|
||||||
|
import getPackageInfo from './getPackageInfo';
|
||||||
|
import PluginService, { PluginSettings } from '@joplin/lib/services/plugins/PluginService';
|
||||||
|
import Setting from '@joplin/lib/models/Setting';
|
||||||
|
import { _ } from '@joplin/lib/locale';
|
||||||
|
|
||||||
|
const getWebViewVersionText = () => {
|
||||||
|
if (Platform.OS === 'android') {
|
||||||
|
const constants = NativeModules.SystemVersionInformationModule.getConstants();
|
||||||
|
return [
|
||||||
|
_('WebView version: %s', constants.webViewVersion),
|
||||||
|
_('WebView package: %s', constants.webViewPackage),
|
||||||
|
].join('\n');
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
};
|
||||||
|
|
||||||
|
const getOSVersion = (): string => {
|
||||||
|
if (Platform.OS === 'android') {
|
||||||
|
return _('Android API level: %d', Platform.Version);
|
||||||
|
} else {
|
||||||
|
return _('iOS version: %s', Platform.Version);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const getVersionInfoText = (pluginStates: PluginSettings) => {
|
||||||
|
const packageInfo = getPackageInfo();
|
||||||
|
const appInfo = versionInfo(packageInfo, PluginService.instance().enabledPlugins(pluginStates));
|
||||||
|
const versionInfoLines = [
|
||||||
|
appInfo.body,
|
||||||
|
'',
|
||||||
|
getOSVersion(),
|
||||||
|
];
|
||||||
|
|
||||||
|
const webViewVersion = getWebViewVersionText();
|
||||||
|
if (webViewVersion) {
|
||||||
|
versionInfoLines.push(webViewVersion);
|
||||||
|
}
|
||||||
|
|
||||||
|
versionInfoLines.push(
|
||||||
|
_('FTS enabled: %d', Setting.value('db.ftsEnabled')),
|
||||||
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- Partially refactored old code before rule was applied
|
||||||
|
_('Hermes enabled: %d', (global as any).HermesInternal ? 1 : 0),
|
||||||
|
);
|
||||||
|
|
||||||
|
return versionInfoLines.join('\n');
|
||||||
|
};
|
||||||
|
|
||||||
|
export default getVersionInfoText;
|
Loading…
Reference in New Issue
Block a user