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"
|
applicationId "com.mattermost.rnbeta"
|
||||||
minSdkVersion rootProject.ext.minSdkVersion
|
minSdkVersion rootProject.ext.minSdkVersion
|
||||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||||
versionCode 532
|
versionCode 544
|
||||||
versionName "2.18.0"
|
versionName "2.19.0"
|
||||||
testBuildType System.getProperty('testBuildType', 'debug')
|
testBuildType System.getProperty('testBuildType', 'debug')
|
||||||
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,7 @@
|
||||||
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
|
<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_MICROPHONE"/>
|
||||||
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
|
||||||
|
|
||||||
<!-- Request legacy Bluetooth permissions on older devices. -->
|
<!-- Request legacy Bluetooth permissions on older devices. -->
|
||||||
<uses-permission android:name="android.permission.BLUETOOTH"
|
<uses-permission android:name="android.permission.BLUETOOTH"
|
||||||
|
|
@ -116,5 +117,15 @@
|
||||||
android:foregroundServiceType="microphone"
|
android:foregroundServiceType="microphone"
|
||||||
android:exported="false"
|
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>
|
</application>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
import {fetchConfigAndLicense} from '@actions/remote/systems';
|
import {fetchConfigAndLicense} from '@actions/remote/systems';
|
||||||
import DatabaseManager from '@database/manager';
|
import DatabaseManager from '@database/manager';
|
||||||
import {getServerCredentials} from '@init/credentials';
|
import {getServerCredentials} from '@init/credentials';
|
||||||
|
import PerformanceMetricsManager from '@managers/performance_metrics_manager';
|
||||||
import WebsocketManager from '@managers/websocket_manager';
|
import WebsocketManager from '@managers/websocket_manager';
|
||||||
|
|
||||||
type AfterLoginArgs = {
|
type AfterLoginArgs = {
|
||||||
|
|
@ -16,6 +17,11 @@ export async function loginEntry({serverUrl}: AfterLoginArgs): Promise<{error?:
|
||||||
return {error: `${serverUrl} database not found`};
|
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 {
|
try {
|
||||||
const clData = await fetchConfigAndLicense(serverUrl, false);
|
const clData = await fetchConfigAndLicense(serverUrl, false);
|
||||||
if (clData.error) {
|
if (clData.error) {
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,10 @@ class PerformanceMetricsManager {
|
||||||
this.target = target;
|
this.target = target;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public skipLoadMetric() {
|
||||||
|
this.hasRegisteredLoad = true;
|
||||||
|
}
|
||||||
|
|
||||||
public finishLoad(location: Target, serverUrl: string) {
|
public finishLoad(location: Target, serverUrl: string) {
|
||||||
this.finishLoadWithRetries(location, serverUrl, 0);
|
this.finishLoadWithRetries(location, serverUrl, 0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ const Servers = React.forwardRef<ServersRef>((_, ref) => {
|
||||||
bottomSheet({
|
bottomSheet({
|
||||||
closeButtonId,
|
closeButtonId,
|
||||||
renderContent,
|
renderContent,
|
||||||
footerComponent: AddServerButton,
|
footerComponent: isTablet ? undefined : AddServerButton,
|
||||||
snapPoints,
|
snapPoints,
|
||||||
theme,
|
theme,
|
||||||
title: intl.formatMessage({id: 'your.servers', defaultMessage: 'Your servers'}),
|
title: intl.formatMessage({id: 'your.servers', defaultMessage: 'Your servers'}),
|
||||||
|
|
|
||||||
|
|
@ -331,7 +331,7 @@ const LoginForm = ({config, extra, serverDisplayName, launchError, launchType, l
|
||||||
disableFullscreenUI={true}
|
disableFullscreenUI={true}
|
||||||
enablesReturnKeyAutomatically={true}
|
enablesReturnKeyAutomatically={true}
|
||||||
error={error}
|
error={error}
|
||||||
keyboardType='default'
|
keyboardType={isPasswordVisible ? 'visible-password' : 'default'}
|
||||||
label={intl.formatMessage({id: 'login.password', defaultMessage: 'Password'})}
|
label={intl.formatMessage({id: 'login.password', defaultMessage: 'Password'})}
|
||||||
onChangeText={onPasswordChange}
|
onChangeText={onPasswordChange}
|
||||||
onSubmitEditing={onLogin}
|
onSubmitEditing={onLogin}
|
||||||
|
|
|
||||||
|
|
@ -1980,7 +1980,7 @@
|
||||||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CURRENT_PROJECT_VERSION = 532;
|
CURRENT_PROJECT_VERSION = 544;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
HEADER_SEARCH_PATHS = "$(inherited)";
|
HEADER_SEARCH_PATHS = "$(inherited)";
|
||||||
|
|
@ -2022,7 +2022,7 @@
|
||||||
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
CODE_SIGN_ENTITLEMENTS = Mattermost/Mattermost.entitlements;
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CURRENT_PROJECT_VERSION = 532;
|
CURRENT_PROJECT_VERSION = 544;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
ENABLE_BITCODE = NO;
|
ENABLE_BITCODE = NO;
|
||||||
HEADER_SEARCH_PATHS = "$(inherited)";
|
HEADER_SEARCH_PATHS = "$(inherited)";
|
||||||
|
|
@ -2165,7 +2165,7 @@
|
||||||
CODE_SIGN_IDENTITY = "iPhone Developer";
|
CODE_SIGN_IDENTITY = "iPhone Developer";
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
CURRENT_PROJECT_VERSION = 532;
|
CURRENT_PROJECT_VERSION = 544;
|
||||||
DEBUG_INFORMATION_FORMAT = dwarf;
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
|
@ -2215,7 +2215,7 @@
|
||||||
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
|
||||||
CODE_SIGN_STYLE = Automatic;
|
CODE_SIGN_STYLE = Automatic;
|
||||||
COPY_PHASE_STRIP = NO;
|
COPY_PHASE_STRIP = NO;
|
||||||
CURRENT_PROJECT_VERSION = 532;
|
CURRENT_PROJECT_VERSION = 544;
|
||||||
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
||||||
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
DEVELOPMENT_TEAM = UQ8HT4Q2XM;
|
||||||
GCC_C_LANGUAGE_STANDARD = gnu11;
|
GCC_C_LANGUAGE_STANDARD = gnu11;
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>APPL</string>
|
<string>APPL</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2.18.0</string>
|
<string>2.19.0</string>
|
||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleURLTypes</key>
|
<key>CFBundleURLTypes</key>
|
||||||
|
|
@ -37,7 +37,7 @@
|
||||||
</dict>
|
</dict>
|
||||||
</array>
|
</array>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>532</string>
|
<string>544</string>
|
||||||
<key>ITSAppUsesNonExemptEncryption</key>
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
<false/>
|
<false/>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,9 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>XPC!</string>
|
<string>XPC!</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2.18.0</string>
|
<string>2.19.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>532</string>
|
<string>544</string>
|
||||||
<key>UIAppFonts</key>
|
<key>UIAppFonts</key>
|
||||||
<array>
|
<array>
|
||||||
<string>OpenSans-Bold.ttf</string>
|
<string>OpenSans-Bold.ttf</string>
|
||||||
|
|
|
||||||
|
|
@ -19,9 +19,9 @@
|
||||||
<key>CFBundlePackageType</key>
|
<key>CFBundlePackageType</key>
|
||||||
<string>XPC!</string>
|
<string>XPC!</string>
|
||||||
<key>CFBundleShortVersionString</key>
|
<key>CFBundleShortVersionString</key>
|
||||||
<string>2.18.0</string>
|
<string>2.19.0</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>532</string>
|
<string>544</string>
|
||||||
<key>NSExtension</key>
|
<key>NSExtension</key>
|
||||||
<dict>
|
<dict>
|
||||||
<key>NSExtensionPointIdentifier</key>
|
<key>NSExtensionPointIdentifier</key>
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.mattermost.rnshare
|
package com.mattermost.rnshare
|
||||||
|
|
||||||
|
import android.content.pm.ServiceInfo
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import androidx.core.app.NotificationCompat
|
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))
|
.setSmallIcon(applicationContext.resources.getIdentifier("ic_notification", "mipmap", applicationContext.packageName))
|
||||||
.setOngoing(true)
|
.setOngoing(true)
|
||||||
.build()
|
.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",
|
"name": "mattermost-mobile",
|
||||||
"version": "2.18.0",
|
"version": "2.19.0",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "mattermost-mobile",
|
"name": "mattermost-mobile",
|
||||||
"version": "2.18.0",
|
"version": "2.19.0",
|
||||||
"description": "Mattermost Mobile with React Native",
|
"description": "Mattermost Mobile with React Native",
|
||||||
"repository": "git@github.com:mattermost/mattermost-mobile.git",
|
"repository": "git@github.com:mattermost/mattermost-mobile.git",
|
||||||
"author": "Mattermost, Inc.",
|
"author": "Mattermost, Inc.",
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,7 @@ import {Appearance, BackHandler} from 'react-native';
|
||||||
import {getDefaultThemeByAppearance} from '@context/theme';
|
import {getDefaultThemeByAppearance} from '@context/theme';
|
||||||
import {DEFAULT_LOCALE, getTranslations} from '@i18n';
|
import {DEFAULT_LOCALE, getTranslations} from '@i18n';
|
||||||
import {initialize} from '@init/app';
|
import {initialize} from '@init/app';
|
||||||
|
import PerformanceMetricsManager from '@managers/performance_metrics_manager';
|
||||||
import {extractStartLink, isValidUrl} from '@utils/url';
|
import {extractStartLink, isValidUrl} from '@utils/url';
|
||||||
|
|
||||||
import ChannelsScreen from './screens/channels';
|
import ChannelsScreen from './screens/channels';
|
||||||
|
|
@ -63,6 +64,13 @@ const ShareExtension = () => {
|
||||||
return data?.filter((i) => !i.isString) || [];
|
return data?.filter((i) => !i.isString) || [];
|
||||||
}, [data]);
|
}, [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(() => {
|
useEffect(() => {
|
||||||
initialize().finally(async () => {
|
initialize().finally(async () => {
|
||||||
const items = await MattermostShare.getSharedData();
|
const items = await MattermostShare.getSharedData();
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue