Compare commits
8 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
043d529143 | ||
|
|
f877df3f0a | ||
|
|
21c7628da1 | ||
|
|
48b80ef09f | ||
|
|
6bbbd73deb | ||
|
|
6144f04180 | ||
|
|
0bf441b49d | ||
|
|
6cc87dacc6 |
14 changed files with 47 additions and 17 deletions
|
|
@ -111,8 +111,8 @@ android {
|
|||
applicationId "com.mattermost.rnbeta"
|
||||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode 532
|
||||
versionName "2.18.0"
|
||||
versionCode 544
|
||||
versionName "2.19.0"
|
||||
testBuildType System.getProperty('testBuildType', 'debug')
|
||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@
|
|||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE"/>
|
||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
|
||||
|
||||
<!-- Request legacy Bluetooth permissions on older devices. -->
|
||||
<uses-permission android:name="android.permission.BLUETOOTH"
|
||||
|
|
@ -116,5 +117,15 @@
|
|||
android:foregroundServiceType="microphone"
|
||||
android:exported="false"
|
||||
/>
|
||||
|
||||
<!-- Android 14 requires the correct Foreground Service (FGS) type for RNShare -->
|
||||
<service
|
||||
android:name="androidx.work.impl.foreground.SystemForegroundService"
|
||||
android:foregroundServiceType="dataSync"
|
||||
android:exported="false"
|
||||
android:stopWithTask="false"
|
||||
tools:node="merge"
|
||||
/>
|
||||
|
||||
</application>
|
||||
</manifest>
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
import {fetchConfigAndLicense} from '@actions/remote/systems';
|
||||
import DatabaseManager from '@database/manager';
|
||||
import {getServerCredentials} from '@init/credentials';
|
||||
import PerformanceMetricsManager from '@managers/performance_metrics_manager';
|
||||
import WebsocketManager from '@managers/websocket_manager';
|
||||
|
||||
type AfterLoginArgs = {
|
||||
|
|
@ -16,6 +17,11 @@ export async function loginEntry({serverUrl}: AfterLoginArgs): Promise<{error?:
|
|||
return {error: `${serverUrl} database not found`};
|
||||
}
|
||||
|
||||
// There are cases where the target may be reset and a performance metric
|
||||
// be added after login. This would be done with a wrong value, so we make
|
||||
// sure we don't do this by skipping the load metric here.
|
||||
PerformanceMetricsManager.skipLoadMetric();
|
||||
|
||||
try {
|
||||
const clData = await fetchConfigAndLicense(serverUrl, false);
|
||||
if (clData.error) {
|
||||
|
|
|
|||
|
|
@ -48,6 +48,10 @@ class PerformanceMetricsManager {
|
|||
this.target = target;
|
||||
}
|
||||
|
||||
public skipLoadMetric() {
|
||||
this.hasRegisteredLoad = true;
|
||||
}
|
||||
|
||||
public finishLoad(location: Target, serverUrl: string) {
|
||||
this.finishLoadWithRetries(location, serverUrl, 0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@ const Servers = React.forwardRef<ServersRef>((_, ref) => {
|
|||
bottomSheet({
|
||||
closeButtonId,
|
||||
renderContent,
|
||||
footerComponent: AddServerButton,
|
||||
footerComponent: isTablet ? undefined : AddServerButton,
|
||||
snapPoints,
|
||||
theme,
|
||||
title: intl.formatMessage({id: 'your.servers', defaultMessage: 'Your servers'}),
|
||||
|
|
|
|||
|
|
@ -331,7 +331,7 @@ const LoginForm = ({config, extra, serverDisplayName, launchError, launchType, l
|
|||
disableFullscreenUI={true}
|
||||
enablesReturnKeyAutomatically={true}
|
||||
error={error}
|
||||
keyboardType='default'
|
||||
keyboardType={isPasswordVisible ? 'visible-password' : 'default'}
|
||||
label={intl.formatMessage({id: 'login.password', defaultMessage: 'Password'})}
|
||||
onChangeText={onPasswordChange}
|
||||
onSubmitEditing={onLogin}
|
||||
|
|
|
|||
|
|
@ -1980,7 +1980,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CURRENT_PROJECT_VERSION = 532;
|
||||
CURRENT_PROJECT_VERSION = 544;
|
||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||
ENABLE_BITCODE = NO;
|
||||
HEADER_SEARCH_PATHS = "$(inherited)";
|
||||
|
|
@ -2022,7 +2022,7 @@
|
|||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CURRENT_PROJECT_VERSION = 532;
|
||||
CURRENT_PROJECT_VERSION = 544;
|
||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||
ENABLE_BITCODE = NO;
|
||||
HEADER_SEARCH_PATHS = "$(inherited)";
|
||||
|
|
@ -2165,7 +2165,7 @@
|
|||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
CURRENT_PROJECT_VERSION = 532;
|
||||
CURRENT_PROJECT_VERSION = 544;
|
||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
|
|
@ -2215,7 +2215,7 @@
|
|||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||
CODE_SIGN_STYLE = Automatic;
|
||||
COPY_PHASE_STRIP = NO;
|
||||
CURRENT_PROJECT_VERSION = 532;
|
||||
CURRENT_PROJECT_VERSION = 544;
|
||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.18.0</string>
|
||||
<string>2.19.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
</dict>
|
||||
</array>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>532</string>
|
||||
<string>544</string>
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.18.0</string>
|
||||
<string>2.19.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>532</string>
|
||||
<string>544</string>
|
||||
<key>UIAppFonts</key>
|
||||
<array>
|
||||
<string>OpenSans-Bold.ttf</string>
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>2.18.0</string>
|
||||
<string>2.19.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>532</string>
|
||||
<string>544</string>
|
||||
<key>NSExtension</key>
|
||||
<dict>
|
||||
<key>NSExtensionPointIdentifier</key>
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package com.mattermost.rnshare
|
||||
|
||||
import android.content.pm.ServiceInfo
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import androidx.core.app.NotificationCompat
|
||||
|
|
@ -147,7 +148,7 @@ class ShareWorker(context: Context, workerParameters: WorkerParameters) : Worker
|
|||
.setSmallIcon(applicationContext.resources.getIdentifier("ic_notification", "mipmap", applicationContext.packageName))
|
||||
.setOngoing(true)
|
||||
.build()
|
||||
return ForegroundInfo(1, notification)
|
||||
return ForegroundInfo(1, notification, ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC)
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
2
package-lock.json
generated
2
package-lock.json
generated
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "mattermost-mobile",
|
||||
"version": "2.18.0",
|
||||
"version": "2.19.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "mattermost-mobile",
|
||||
"version": "2.18.0",
|
||||
"version": "2.19.0",
|
||||
"description": "Mattermost Mobile with React Native",
|
||||
"repository": "git@github.com:mattermost/mattermost-mobile.git",
|
||||
"author": "Mattermost, Inc.",
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import {Appearance, BackHandler} from 'react-native';
|
|||
import {getDefaultThemeByAppearance} from '@context/theme';
|
||||
import {DEFAULT_LOCALE, getTranslations} from '@i18n';
|
||||
import {initialize} from '@init/app';
|
||||
import PerformanceMetricsManager from '@managers/performance_metrics_manager';
|
||||
import {extractStartLink, isValidUrl} from '@utils/url';
|
||||
|
||||
import ChannelsScreen from './screens/channels';
|
||||
|
|
@ -63,6 +64,13 @@ const ShareExtension = () => {
|
|||
return data?.filter((i) => !i.isString) || [];
|
||||
}, [data]);
|
||||
|
||||
useEffect(() => {
|
||||
// Since the share functionality inits the app, the init mark gets set
|
||||
// at this point. Therefore, any check on load times after this is done
|
||||
// over the wrong value.
|
||||
PerformanceMetricsManager.skipLoadMetric();
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
initialize().finally(async () => {
|
||||
const items = await MattermostShare.getSharedData();
|
||||
|
|
|
|||
Loading…
Reference in a new issue