Gekidou Update deps (#5530)

This commit is contained in:
Elias Nahum
2021-07-11 07:52:44 -04:00
committed by GitHub
parent 134c4a49c5
commit c64277bdbf
54 changed files with 16537 additions and 23546 deletions

View File

@@ -2956,41 +2956,6 @@ SOFTWARE.
---
## rn-fetch-blob
This product contains a modified version of 'rn-fetch-blob' by Joltup.
A module provides upload, download, and files access API. Supports file stream read/write for process large files.
* HOMEPAGE:
* https://github.com/joltup/rn-fetch-blob#readme
* LICENSE: MIT
MIT License
Copyright (c) 2017 xeiyan@gmail.com
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
---
## rn-placeholder
This product contains a modified version of 'rn-placeholder' by Marvin FRACHET.

View File

@@ -17,7 +17,7 @@ export function getDeviceTimezone() {
return getTimeZone();
}
export const autoUpdateTimezone = async (serverUrl: string, {deviceTimezone, userId}: {deviceTimezone: string, userId: string}) => {
export const autoUpdateTimezone = async (serverUrl: string, {deviceTimezone, userId}: {deviceTimezone: string; userId: string}) => {
const database = DatabaseManager.serverDatabases[serverUrl].database;
if (!database) {
return {error: `No database present for ${serverUrl}`};

View File

@@ -20,7 +20,7 @@ const sortByNewest = (a: Session, b: Session) => {
export const scheduleExpiredNotification = async (serverUrl: string, intl: IntlShape) => {
const database = DatabaseManager.serverDatabases[serverUrl].database;
const {currentUserId, config}: {currentUserId: string, config: Partial<Config>} = await queryCommonSystemValues(database);
const {currentUserId, config}: {currentUserId: string; config: Partial<Config>} = await queryCommonSystemValues(database);
if (config.ExtendSessionLengthWithActivity === 'true') {
PushNotifications.cancelAllLocalNotifications();

View File

@@ -24,8 +24,8 @@ import type Role from '@typings/database/models/servers/role';
import type User from '@typings/database/models/servers/user';
type LoadedUser = {
currentUser?: RawUser,
error?: Client4Error
currentUser?: RawUser;
error?: Client4Error;
}
const HTTP_UNAUTHORIZED = 401;
@@ -36,7 +36,7 @@ export const completeLogin = async (serverUrl: string, user: RawUser) => {
return {error: `${serverUrl} database not found`};
}
const {config, license}: { config: Partial<Config>; license: Partial<License>; } = await queryCommonSystemValues(database);
const {config, license}: { config: Partial<Config>; license: Partial<License> } = await queryCommonSystemValues(database);
if (!Object.keys(config)?.length || !Object.keys(license)?.length) {
return null;

View File

@@ -16,7 +16,7 @@ export interface ClientChannelsMix {
convertChannelToPrivate: (channelId: string) => Promise<Channel>;
updateChannelPrivacy: (channelId: string, privacy: any) => Promise<Channel>;
patchChannel: (channelId: string, channelPatch: Partial<Channel>) => Promise<Channel>;
updateChannelNotifyProps: (props: ChannelNotifyProps & {channel_id: string, user_id: string}) => Promise<any>;
updateChannelNotifyProps: (props: ChannelNotifyProps & {channel_id: string; user_id: string}) => Promise<any>;
getChannel: (channelId: string) => Promise<Channel>;
getChannelByName: (teamId: string, channelName: string, includeDeleted?: boolean) => Promise<Channel>;
getChannelByNameAndTeamName: (teamName: string, channelName: string, includeDeleted?: boolean) => Promise<Channel>;
@@ -136,7 +136,7 @@ const ClientChannels = (superclass: any) => class extends superclass {
);
};
updateChannelNotifyProps = async (props: ChannelNotifyProps & {channel_id: string, user_id: string}) => {
updateChannelNotifyProps = async (props: ChannelNotifyProps & {channel_id: string; user_id: string}) => {
this.analytics.trackAPI('api_users_update_channel_notifications', {channel_id: props.channel_id});
return this.doFetch(

View File

@@ -33,7 +33,7 @@ export interface ClientUsersMix {
getUserByEmail: (email: string) => Promise<UserProfile>;
getProfilePictureUrl: (userId: string, lastPictureUpdate: number) => string;
getDefaultProfilePictureUrl: (userId: string) => string;
autocompleteUsers: (name: string, teamId: string, channelId: string, options?: Record<string, any>) => Promise<{users: UserProfile[], out_of_channel?: UserProfile[]}>;
autocompleteUsers: (name: string, teamId: string, channelId: string, options?: Record<string, any>) => Promise<{users: UserProfile[]; out_of_channel?: UserProfile[]}>;
getSessions: (userId: string) => Promise<Session[]>;
checkUserMfa: (loginId: string) => Promise<{mfa_required: boolean}>;
attachDevice: (deviceId: string) => Promise<any>;

View File

@@ -13,7 +13,7 @@ export type ClientErrorWithIntl = ClientError & {intl: {values?: Record<string,
type ErrorProps = {
error: ClientErrorWithIntl | string;
testID?: string;
textStyle?: StyleProp<ViewStyle> | StyleProp<TextStyle>
textStyle?: StyleProp<ViewStyle> | StyleProp<TextStyle>;
theme: Theme;
}

View File

@@ -10,7 +10,7 @@ type FormattedTextProps = {
defaultMessage: string;
values?: Record<string, any>;
testID?: string;
style?: StyleProp<ViewStyle> | StyleProp<TextStyle>
style?: StyleProp<ViewStyle> | StyleProp<TextStyle>;
}
const FormattedText = (props: FormattedTextProps) => {

View File

@@ -5,9 +5,9 @@ import React from 'react';
import {ActivityIndicator, StyleSheet, View, ViewStyle} from 'react-native';
type LoadingProps = {
color?: string,
size?: 'small' | 'large',
style?: ViewStyle,
color?: string;
size?: 'small' | 'large';
style?: ViewStyle;
}
const Loading = ({size = 'large', color = 'grey', style}: LoadingProps) => {

View File

@@ -1,17 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import React from 'react';
import {storiesOf} from '@storybook/react-native';
import {withKnobs, select} from '@storybook/addon-knobs';
import Loading from './index';
storiesOf('Loading Icon Story', module).
addDecorator(withKnobs).
add('loading icon', () => (
<Loading
size={select('size', {Large: 'large', Small: 'small'}, 'large')}
color={select('color', {Red: 'red', Blue: 'blue', Yellow: 'yellow', Black: 'black'}, 'red')}
/>
));

View File

@@ -5,7 +5,7 @@
* DataOperatorException: This exception can be used whenever an issue arises at the operator level. For example, if a required field is missing.
*/
class DataOperatorException extends Error {
error : Error | undefined;
error: Error | undefined;
constructor(message: string, error?: Error) {
super(message);
this.name = 'DatabaseOperatorException';

View File

@@ -5,6 +5,7 @@ import {Database, Q} from '@nozbe/watermelondb';
import SQLiteAdapter, {MigrationEvents} from '@nozbe/watermelondb/adapters/sqlite';
import logger from '@nozbe/watermelondb/utils/common/logger';
import {DeviceEventEmitter, Platform} from 'react-native';
import DeviceInfo from 'react-native-device-info';
import {FileSystem} from 'react-native-unimodules';
import urlParse from 'url-parse';
@@ -64,6 +65,14 @@ class DatabaseManager {
for await (const serverUrl of serverUrls) {
await this.initServerDatabase(serverUrl);
}
this.appDatabase?.operator.handleInfo({
info: [{
build_number: DeviceInfo.getBuildNumber(),
created_at: Date.now(),
version_number: DeviceInfo.getVersion(),
}],
prepareRecordsOnly: false,
});
};
/**

View File

@@ -48,7 +48,7 @@ export default class BaseDataOperator {
* @returns {Promise<{ProcessRecordResults}>}
*/
processRecords = async ({createOrUpdateRawValues, deleteRawValues = [], tableName, findMatchingRecordBy, fieldName}: ProcessRecordsArgs): Promise<ProcessRecordResults> => {
const getRecords = async (rawValues : RawValue[]) => {
const getRecords = async (rawValues: RawValue[]) => {
// We will query a table where one of its fields can match a range of values. Hence, here we are extracting all those potential values.
const columnValues: string[] = getRangeOfValues({fieldName, raws: rawValues});
@@ -81,7 +81,7 @@ export default class BaseDataOperator {
const createOrUpdateRaws = await getRecords(createOrUpdateRawValues);
if (createOrUpdateRawValues.length > 0) {
createOrUpdateRawValues.forEach((newElement: RawValue) => {
const findIndex = createOrUpdateRaws.findIndex((existing) => {
const findIndex = createOrUpdateRaws.findIndex((existing: Model) => {
return findMatchingRecordBy(existing, newElement);
});
@@ -128,7 +128,7 @@ export default class BaseDataOperator {
throw new DataOperatorException('Database not defined');
}
let preparedRecords: Promise<Model>[] = [];
let preparedRecords: Array<Promise<Model>> = [];
// create operation
if (createRaws?.length) {

View File

@@ -35,10 +35,10 @@ const {
} = MM_TABLES.SERVER;
export interface GroupHandlerMix {
handleGroupMembership : ({groupMemberships, prepareRecordsOnly}: HandleGroupMembershipArgs) => GroupMembership[] | boolean,
handleGroup : ({groups, prepareRecordsOnly}: HandleGroupArgs) => Group[] | boolean,
handleGroupsInTeam : ({groupsInTeams, prepareRecordsOnly} : HandleGroupsInTeamArgs) => GroupsInTeam[] | boolean,
handleGroupsInChannel : ({groupsInChannels, prepareRecordsOnly}: HandleGroupsInChannelArgs) => GroupsInChannel[] | boolean
handleGroupMembership: ({groupMemberships, prepareRecordsOnly}: HandleGroupMembershipArgs) => GroupMembership[] | boolean;
handleGroup: ({groups, prepareRecordsOnly}: HandleGroupArgs) => Group[] | boolean;
handleGroupsInTeam: ({groupsInTeams, prepareRecordsOnly}: HandleGroupsInTeamArgs) => GroupsInTeam[] | boolean;
handleGroupsInChannel: ({groupsInChannels, prepareRecordsOnly}: HandleGroupsInChannelArgs) => GroupsInChannel[] | boolean;
}
const GroupHandler = (superclass: any) => class extends superclass {
@@ -112,7 +112,7 @@ const GroupHandler = (superclass: any) => class extends superclass {
* @throws DataOperatorException
* @returns {GroupsInTeam[]}
*/
handleGroupsInTeam = async ({groupsInTeams, prepareRecordsOnly = true} : HandleGroupsInTeamArgs) => {
handleGroupsInTeam = async ({groupsInTeams, prepareRecordsOnly = true}: HandleGroupsInTeamArgs) => {
let records: GroupsInTeam[] = [];
if (!groupsInTeams.length) {

View File

@@ -49,7 +49,7 @@ const {
} = MM_TABLES.SERVER;
export interface PostHandlerMix {
handleDraft: ({drafts, prepareRecordsOnly}: HandleDraftArgs) => Draft[] | boolean
handleDraft: ({drafts, prepareRecordsOnly}: HandleDraftArgs) => Draft[] | boolean;
handleFiles: ({files, prepareRecordsOnly}: HandleFilesArgs) => Promise<File[] | any[]>;
handlePostMetadata: ({embeds, images, prepareRecordsOnly}: HandlePostMetadataArgs) => Promise<any[] | PostMetadata[]>;
handlePosts: ({orders, values, previousPostId}: HandlePostsArgs) => Promise<void>;
@@ -132,8 +132,8 @@ const PostHandler = (superclass: any) => class extends superclass {
const postsInThread = [];
let reactions: RawReaction[] = [];
let emojis: RawCustomEmoji[] = [];
const images: { images: Dictionary<PostImage>; postId: string }[] = [];
const embeds: { embed: RawEmbed[]; postId: string }[] = [];
const images: Array<{ images: Dictionary<PostImage>; postId: string }> = [];
const embeds: Array<{ embed: RawEmbed[]; postId: string }> = [];
// We create the 'chain of posts' by linking each posts' previousId to the post before it in the order array
const linkedRawPosts: RecordPair[] = createPostsChain({

View File

@@ -39,10 +39,10 @@ const {
} = MM_TABLES.SERVER;
export interface UserHandlerMix {
handleChannelMembership : ({channelMemberships, prepareRecordsOnly}: HandleChannelMembershipArgs) => Promise<ChannelMembership[]>;
handlePreferences : ({preferences, prepareRecordsOnly}: HandlePreferencesArgs) => Promise<Preference[]>;
handleReactions : ({reactions, prepareRecordsOnly}: HandleReactionsArgs) => Promise<(Reaction | CustomEmoji)[]>;
handleUsers : ({users, prepareRecordsOnly}: HandleUsersArgs) => Promise<User[]>;
handleChannelMembership: ({channelMemberships, prepareRecordsOnly}: HandleChannelMembershipArgs) => Promise<ChannelMembership[]>;
handlePreferences: ({preferences, prepareRecordsOnly}: HandlePreferencesArgs) => Promise<Preference[]>;
handleReactions: ({reactions, prepareRecordsOnly}: HandleReactionsArgs) => Promise<Array<Reaction | CustomEmoji>>;
handleUsers: ({users, prepareRecordsOnly}: HandleUsersArgs) => Promise<User[]>;
}
const UserHandler = (superclass: any) => class extends superclass {
@@ -117,7 +117,7 @@ const UserHandler = (superclass: any) => class extends superclass {
* @returns {Promise<(Reaction| CustomEmoji)[]>}
*/
handleReactions = async ({reactions, prepareRecordsOnly}: HandleReactionsArgs) => {
let batchRecords: (Reaction| CustomEmoji)[] = [];
let batchRecords: Array<Reaction| CustomEmoji> = [];
if (!reactions.length) {
throw new DataOperatorException(

View File

@@ -88,7 +88,7 @@ export const getRawRecordPairs = (raws: any[]): RecordPair[] => {
* @param {RawValue[]} raws
* @param {string} key
*/
export const getUniqueRawsBy = ({raws, key}:{ raws: RawValue[], key: string}) => {
export const getUniqueRawsBy = ({raws, key}: { raws: RawValue[]; key: string}) => {
return [...new Map(raws.map((item) => {
const curItemKey = item[key as keyof typeof item];
return [curItemKey, item];

View File

@@ -102,7 +102,7 @@ class GlobalEventHandler {
relaunchApp({launchType: LaunchType.Normal}, true);
};
onServerConfigChanged = ({serverUrl, config}: {serverUrl: string, config: ClientConfig}) => {
onServerConfigChanged = ({serverUrl, config}: {serverUrl: string; config: ClientConfig}) => {
this.configureAnalytics(serverUrl, config);
if (config.ExtendSessionLengthWithActivity === 'true') {
@@ -110,7 +110,7 @@ class GlobalEventHandler {
}
};
onServerVersionChanged = async ({serverUrl, serverVersion}: {serverUrl: string, serverVersion?: string}) => {
onServerVersionChanged = async ({serverUrl, serverVersion}: {serverUrl: string; serverVersion?: string}) => {
const match = serverVersion?.match(/^[0-9]*.[0-9]*.[0-9]*(-[a-zA-Z0-9.-]*)?/g);
const version = match && match[0];
const locale = DEFAULT_LOCALE;

View File

@@ -9,7 +9,7 @@ import type User from '@typings/database/models/servers/user';
import {queryCurrentUserId} from './system';
export const queryUserById = async ({userId, database}: { userId: string, database: Database}) => {
export const queryUserById = async ({userId, database}: { userId: string; database: Database}) => {
try {
const userRecord = (await database.collections.get(MM_TABLES.SERVER.USER).find(userId)) as User;
return userRecord;

View File

@@ -26,11 +26,11 @@ import {preventDoubleTap} from '@utils/tap';
import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme';
type MFAProps = {
config: Partial<Config>,
goToChannel: () => void,
license: Partial<License>,
loginId : string,
password: string,
config: Partial<Config>;
goToChannel: () => void;
license: Partial<License>;
loginId: string;
password: string;
serverUrl: string;
theme: Theme;
}

View File

@@ -284,7 +284,48 @@ export function showModal(name: string, title: string, passProps = {}, options =
export function showModalOverCurrentContext(name: string, passProps = {}, options = {}) {
const title = '';
const animationsEnabled = (Platform.OS === 'android').toString();
let animations;
switch (Platform.OS) {
case 'android':
animations = {
showModal: {
waitForRender: true,
alpha: {
from: 0,
to: 1,
duration: 250,
},
},
dismissModal: {
alpha: {
from: 1,
to: 0,
duration: 250,
},
},
};
break;
default:
animations = {
showModal: {
enter: {
enabled: false,
},
exit: {
enabled: false,
},
},
dismissModal: {
enter: {
enabled: false,
},
exit: {
enabled: false,
},
},
};
break;
}
const defaultOptions = {
modalPresentationStyle: 'overCurrentContext',
layout: {
@@ -295,28 +336,9 @@ export function showModalOverCurrentContext(name: string, passProps = {}, option
visible: false,
height: 0,
},
animations: {
showModal: {
waitForRender: true,
enabled: animationsEnabled,
alpha: {
from: 0,
to: 1,
duration: 250,
},
},
dismissModal: {
enabled: animationsEnabled,
alpha: {
from: 1,
to: 0,
duration: 250,
},
},
},
animations,
};
const mergeOptions = merge(defaultOptions, options);
showModal(name, title, passProps, mergeOptions);
}

View File

@@ -20,7 +20,7 @@ interface SSOWithRedirectURLProps {
loginUrl: string;
serverUrl: string;
setLoginError: (value: string) => void;
theme: Partial<Theme>
theme: Partial<Theme>;
}
const SSOWithRedirectURL = ({doSSOLogin, loginError, loginUrl, serverUrl, setLoginError, theme}: SSOWithRedirectURLProps) => {

View File

@@ -1,7 +1,7 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import CookieManager, {Cookies} from '@react-native-cookies/cookies';
import CookieManager, {Cookie, Cookies} from '@react-native-cookies/cookies';
import React, {useEffect} from 'react';
import {useIntl} from 'react-intl';
import {Alert, Platform, Text, View} from 'react-native';
@@ -63,7 +63,7 @@ interface SSOWithWebViewProps {
loginUrl: string;
serverUrl: string;
ssoType: string;
theme: Partial<Theme>
theme: Partial<Theme>;
}
const SSOWithWebView = ({completeUrlPath, doSSOLogin, loginError, loginUrl, serverUrl, ssoType, theme}: SSOWithWebViewProps) => {
@@ -87,10 +87,10 @@ const SSOWithWebView = ({completeUrlPath, doSSOLogin, loginError, loginUrl, serv
const removeCookiesFromVisited = () => {
if (Platform.OS === 'ios') {
visitedUrls.forEach((visited) => {
visitedUrls.forEach((visited: string) => {
CookieManager.get(visited, true).then(async (cookies: Cookies) => {
if (cookies) {
const values = Object.values(cookies);
const values = Object.values(cookies) as unknown as Cookie[];
for (const cookie of values) {
CookieManager.clearByName(visited, cookie.name, true);
}

View File

@@ -5,7 +5,7 @@ import {cleanUrlForLogging} from '@utils/logging';
export class ClientError extends Error {
details: Error;
intl?: {defaultMessage?: string; id: string;} | { defaultMessage?: string; id: string } | { id: string; defaultMessage?: string; values: any } | { id: string; defaultMessage?: string };
intl?: {defaultMessage?: string; id: string} | { defaultMessage?: string; id: string } | { id: string; defaultMessage?: string; values: any } | { id: string; defaultMessage?: string };
url: string;
server_error_id?: string | number;
status_code?: number;

View File

@@ -5,8 +5,8 @@ import {NativeModules} from 'react-native';
const {MattermostManaged} = NativeModules;
type IOSDeleteDatabase = { databaseName?: string, shouldRemoveDirectory?: boolean }
type IOSAppGroupDetails = { appGroupIdentifier: string, appGroupSharedDirectory: string, appGroupDatabase: string }
type IOSDeleteDatabase = { databaseName?: string; shouldRemoveDirectory?: boolean }
type IOSAppGroupDetails = { appGroupIdentifier: string; appGroupSharedDirectory: string; appGroupDatabase: string }
/**
* Retrieves information relative to the iOS AppGroup identifier and folders

View File

@@ -42,7 +42,6 @@
"mobile.oauth.failed_to_login": "Your login attempt failed. Please try again.",
"mobile.oauth.failed_to_open_link": "The link failed to open. Please try again.",
"mobile.oauth.failed_to_open_link_no_browser": "The link failed to open. Please verify if a browser is installed in the current space.",
"mobile.oauth.restart_login": "Restart login",
"mobile.oauth.something_wrong": "Something went wrong",
"mobile.oauth.something_wrong.okButon": "Ok",
"mobile.oauth.switch_to_browser": "Please use your browser to complete the login",

View File

@@ -26,7 +26,6 @@ if (__DEV__) {
'scaleY',
]);
LogBox.ignoreLogs(['Require cycle: node_modules/zod/lib/src/index.js']);
require('storybook/mattermost_storybook.ts');
}
setFontFamily();

View File

@@ -4,12 +4,21 @@ PODS:
- BVLinearGradient (2.5.6):
- React
- DoubleConversion (1.1.6)
- EXConstants (10.1.3):
- UMConstantsInterface
- EXConstants (11.0.1):
- ExpoModulesCore
- UMCore
- EXFileSystem (11.0.2):
- EXFileSystem (11.1.3):
- ExpoModulesCore
- UMCore
- ExpoModulesCore (0.2.0):
- ExpoModulesCore/Core (= 0.2.0)
- ExpoModulesCore/Interfaces (= 0.2.0)
- UMCore
- ExpoModulesCore/Core (0.2.0):
- UMCore
- ExpoModulesCore/Interfaces (0.2.0):
- ExpoModulesCore/Core
- UMCore
- UMFileSystemInterface
- FBLazyVector (0.64.2)
- FBReactNativeSpec (0.64.2):
- RCT-Folly (= 2020.01.13.00)
@@ -19,7 +28,7 @@ PODS:
- React-jsi (= 0.64.2)
- ReactCommon/turbomodule/core (= 0.64.2)
- glog (0.3.5)
- jail-monkey (2.4.0):
- jail-monkey (2.5.0):
- React-Core
- libwebp (1.2.0):
- libwebp/demux (= 1.2.0)
@@ -30,9 +39,9 @@ PODS:
- libwebp/mux (1.2.0):
- libwebp/demux
- libwebp/webp (1.2.0)
- Permission-Camera (3.0.4):
- Permission-Camera (3.0.5):
- RNPermissions
- Permission-PhotoLibrary (3.0.4):
- Permission-PhotoLibrary (3.0.5):
- RNPermissions
- RCT-Folly (2020.01.13.00):
- boost-for-react-native
@@ -236,7 +245,7 @@ PODS:
- React-Core
- react-native-document-picker (5.2.0):
- React-Core
- react-native-emm (1.1.3):
- react-native-emm (1.1.4):
- React-Core
- react-native-hw-keyboard-event (0.0.4):
- React
@@ -249,7 +258,7 @@ PODS:
- SwiftyJSON (~> 5.0)
- react-native-notifications (3.5.0):
- React-Core
- react-native-paste-input (0.1.3):
- react-native-paste-input (0.1.4):
- React-Core
- Swime (= 3.0.6)
- react-native-safe-area-context (3.2.0):
@@ -259,7 +268,7 @@ PODS:
- react-native-video/Video (= 5.1.1)
- react-native-video/Video (5.1.1):
- React-Core
- react-native-webview (11.6.4):
- react-native-webview (11.6.5):
- React-Core
- React-perflogger (0.64.2)
- React-RCTActionSheet (0.64.2):
@@ -329,17 +338,15 @@ PODS:
- React-Core
- ReactNativeKeyboardTrackingView (5.7.0):
- React
- ReactNativeNavigation (7.13.0):
- ReactNativeNavigation (7.17.1):
- React-Core
- React-RCTImage
- React-RCTText
- ReactNativeNavigation/Core (= 7.13.0)
- ReactNativeNavigation/Core (7.13.0):
- ReactNativeNavigation/Core (= 7.17.1)
- ReactNativeNavigation/Core (7.17.1):
- React-Core
- React-RCTImage
- React-RCTText
- rn-fetch-blob (0.12.0):
- React-Core
- RNCAsyncStorage (1.12.1):
- React-Core
- RNCClipboard (1.5.1):
@@ -352,7 +359,7 @@ PODS:
- React-Core
- React-Core/DevSupport
- React-RCTNetwork
- RNFastImage (8.3.4):
- RNFastImage (8.3.6):
- React-Core
- SDWebImage (~> 5.8)
- SDWebImageWebPCoder (~> 0.6.1)
@@ -364,7 +371,7 @@ PODS:
- React-Core
- RNLocalize (2.1.1):
- React-Core
- RNPermissions (3.0.4):
- RNPermissions (3.0.5):
- React-Core
- RNReactNativeHapticFeedback (1.11.0):
- React-Core
@@ -399,17 +406,17 @@ PODS:
- Yoga
- RNRudderSdk (1.0.0):
- React
- Rudder
- RNSentry (2.5.2):
- Rudder (>= 1.0.20)
- RNSentry (2.6.0):
- React-Core
- Sentry (= 7.0.0)
- RNShare (6.2.1):
- RNShare (6.2.3):
- React-Core
- RNSVG (12.1.1):
- React
- RNVectorIcons (8.1.0):
- React-Core
- Rudder (1.0.14)
- Rudder (1.0.20)
- SDWebImage (5.11.1):
- SDWebImage/Core (= 5.11.1)
- SDWebImage/Core (5.11.1)
@@ -422,27 +429,13 @@ PODS:
- Starscream (4.0.4)
- SwiftyJSON (5.0.1)
- Swime (3.0.6)
- UMAppLoader (2.1.0)
- UMBarCodeScannerInterface (6.1.0):
- UMCore
- UMCameraInterface (6.1.0):
- UMCore
- UMConstantsInterface (6.1.0):
- UMCore
- UMAppLoader (2.2.0)
- UMCore (7.1.1)
- UMFaceDetectorInterface (6.1.0)
- UMFileSystemInterface (6.1.0)
- UMFontInterface (6.1.0)
- UMImageLoaderInterface (6.1.0)
- UMPermissionsInterface (6.1.0):
- UMCore
- UMReactNativeAdapter (6.2.2):
- UMReactNativeAdapter (6.3.4):
- ExpoModulesCore
- React-Core
- UMCore
- UMFontInterface
- UMSensorsInterface (6.1.0):
- UMCore
- UMTaskManagerInterface (6.1.0):
- UMTaskManagerInterface (6.2.0):
- UMCore
- WatermelonDB (0.22.0):
- React
@@ -456,6 +449,7 @@ DEPENDENCIES:
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- EXConstants (from `../node_modules/expo-constants/ios`)
- EXFileSystem (from `../node_modules/expo-file-system/ios`)
- ExpoModulesCore (from `../node_modules/expo-modules-core/ios`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/React/FBReactNativeSpec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
@@ -503,7 +497,6 @@ DEPENDENCIES:
- ReactNativeExceptionHandler (from `../node_modules/react-native-exception-handler`)
- ReactNativeKeyboardTrackingView (from `../node_modules/react-native-keyboard-tracking-view`)
- ReactNativeNavigation (from `../node_modules/react-native-navigation`)
- rn-fetch-blob (from `../node_modules/rn-fetch-blob`)
- "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)"
- "RNCClipboard (from `../node_modules/@react-native-community/clipboard`)"
- "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)"
@@ -525,17 +518,8 @@ DEPENDENCIES:
- Starscream (from `https://github.com/mattermost/Starscream.git`, commit `1b4b93708fb63d2665625a11e57461772a65364a`)
- Swime (= 3.0.6)
- UMAppLoader (from `../node_modules/unimodules-app-loader/ios`)
- UMBarCodeScannerInterface (from `../node_modules/unimodules-barcode-scanner-interface/ios`)
- UMCameraInterface (from `../node_modules/unimodules-camera-interface/ios`)
- UMConstantsInterface (from `../node_modules/unimodules-constants-interface/ios`)
- "UMCore (from `../node_modules/@unimodules/core/ios`)"
- UMFaceDetectorInterface (from `../node_modules/unimodules-face-detector-interface/ios`)
- UMFileSystemInterface (from `../node_modules/unimodules-file-system-interface/ios`)
- UMFontInterface (from `../node_modules/unimodules-font-interface/ios`)
- UMImageLoaderInterface (from `../node_modules/unimodules-image-loader-interface/ios`)
- UMPermissionsInterface (from `../node_modules/unimodules-permissions-interface/ios`)
- "UMReactNativeAdapter (from `../node_modules/@unimodules/react-native-adapter/ios`)"
- UMSensorsInterface (from `../node_modules/unimodules-sensors-interface/ios`)
- UMTaskManagerInterface (from `../node_modules/unimodules-task-manager-interface/ios`)
- "WatermelonDB (from `../node_modules/@nozbe/watermelondb`)"
- XCDYouTubeKit (= 2.8.2)
@@ -564,6 +548,8 @@ EXTERNAL SOURCES:
:path: "../node_modules/expo-constants/ios"
EXFileSystem:
:path: "../node_modules/expo-file-system/ios"
ExpoModulesCore:
:path: "../node_modules/expo-modules-core/ios"
FBLazyVector:
:path: "../node_modules/react-native/Libraries/FBLazyVector"
FBReactNativeSpec:
@@ -654,8 +640,6 @@ EXTERNAL SOURCES:
:path: "../node_modules/react-native-keyboard-tracking-view"
ReactNativeNavigation:
:path: "../node_modules/react-native-navigation"
rn-fetch-blob:
:path: "../node_modules/rn-fetch-blob"
RNCAsyncStorage:
:path: "../node_modules/@react-native-community/async-storage"
RNCClipboard:
@@ -697,28 +681,10 @@ EXTERNAL SOURCES:
:git: https://github.com/mattermost/Starscream.git
UMAppLoader:
:path: "../node_modules/unimodules-app-loader/ios"
UMBarCodeScannerInterface:
:path: "../node_modules/unimodules-barcode-scanner-interface/ios"
UMCameraInterface:
:path: "../node_modules/unimodules-camera-interface/ios"
UMConstantsInterface:
:path: "../node_modules/unimodules-constants-interface/ios"
UMCore:
:path: "../node_modules/@unimodules/core/ios"
UMFaceDetectorInterface:
:path: "../node_modules/unimodules-face-detector-interface/ios"
UMFileSystemInterface:
:path: "../node_modules/unimodules-file-system-interface/ios"
UMFontInterface:
:path: "../node_modules/unimodules-font-interface/ios"
UMImageLoaderInterface:
:path: "../node_modules/unimodules-image-loader-interface/ios"
UMPermissionsInterface:
:path: "../node_modules/unimodules-permissions-interface/ios"
UMReactNativeAdapter:
:path: "../node_modules/@unimodules/react-native-adapter/ios"
UMSensorsInterface:
:path: "../node_modules/unimodules-sensors-interface/ios"
UMTaskManagerInterface:
:path: "../node_modules/unimodules-task-manager-interface/ios"
WatermelonDB:
@@ -736,15 +702,16 @@ SPEC CHECKSUMS:
boost-for-react-native: 39c7adb57c4e60d6c5479dd8623128eb5b3f0f2c
BVLinearGradient: e3aad03778a456d77928f594a649e96995f1c872
DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
EXConstants: c4dd28acc12039c999612507a5f935556f2c86ce
EXFileSystem: dcf2273f49431e5037347c733a2dc5d08e0d0a9e
EXConstants: 3babb61f8f4bb7dffe85b8b7d6eaa31d903e4d7e
EXFileSystem: 0a04aba8da751b9ac954065911bcf166503f8267
ExpoModulesCore: 2734852616127a6c1fc23012197890a6f3763dc7
FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b
FBReactNativeSpec: cef0cc6d50abc92e8cf52f140aa22b5371cfec0b
glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
jail-monkey: 01cd0a75aa1034d08fd851869e6e6c3b063242d7
jail-monkey: feb2bdedc4d67312cd41a455c22661d804bba985
libwebp: e90b9c01d99205d03b6bb8f2c8c415e5a4ef66f0
Permission-Camera: 74dc395c37a06ebe915069c5dca954c7a2a5a2e3
Permission-PhotoLibrary: 440f206f0d36e5951c4c9b28567f60471fdddfb5
Permission-Camera: ac603073e4128e51e6ca3c39129778f05b4082fa
Permission-PhotoLibrary: 0748c1a490fad126dfe36dbea8234dedfe59cc27
RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c
RCTRequired: 6d3e854f0e7260a648badd0d44fc364bc9da9728
RCTTypeSafety: c1f31d19349c6b53085766359caac425926fafaa
@@ -760,15 +727,15 @@ SPEC CHECKSUMS:
react-native-cameraroll: 88f4e62d9ecd0e1f253abe4f685474f2ea14bfa2
react-native-cookies: 2cb6ef472da68610dfcf0eaee68464c244943abd
react-native-document-picker: f1b5398801b332c77bc62ae0eae2116f49bdff26
react-native-emm: 1652c0f3ebc39ca0cb57a43f60b96f932b7b7f19
react-native-emm: 0bb1fcf708a59b20731033b53e1b11287df10086
react-native-hw-keyboard-event: b517cefb8d5c659a38049c582de85ff43337dc53
react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d
react-native-network-client: 30ab97e7e6c8d6f2d2b10cc1ebad0cbf9c894c6e
react-native-notifications: 89a73cd2cd2648e1734fa10e3507681c9e4f14de
react-native-paste-input: dbf0099efd191ddf53e55a4a454bea0783ce4e1d
react-native-paste-input: 4d6ecc3875153212b5503b6da093277db4ace241
react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79
react-native-video: 0bb76b6d6b77da3009611586c7dbf817b947f30e
react-native-webview: 1a19adb5578cdf7f005b7961dcc50c1c6b70f41b
react-native-webview: 2e8fe70dc32b50d3231c23043f8e8b5a5525d346
React-perflogger: 25373e382fed75ce768a443822f07098a15ab737
React-RCTActionSheet: af7796ba49ffe4ca92e7277a5d992d37203f7da5
React-RCTAnimation: 6a2e76ab50c6f25b428d81b76a5a45351c4d77aa
@@ -783,46 +750,36 @@ SPEC CHECKSUMS:
ReactCommon: 149906e01aa51142707a10665185db879898e966
ReactNativeExceptionHandler: b11ff67c78802b2f62eed0e10e75cb1ef7947c60
ReactNativeKeyboardTrackingView: 02137fac3b2ebd330d74fa54ead48b14750a2306
ReactNativeNavigation: 4c4ca87edc0da4ee818158a62cb6188088454e5c
rn-fetch-blob: 17961aec08caae68bb8fc0e5b40f93b3acfa6932
ReactNativeNavigation: 8ccac6aadb88ce59ff1594bfbe1f579b9bb5e81a
RNCAsyncStorage: b03032fdbdb725bea0bd9e5ec5a7272865ae7398
RNCClipboard: 41d8d918092ae8e676f18adada19104fa3e68495
RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489
RNDeviceInfo: 8d3a29207835f972bce883723882980143270d55
RNDevMenu: fd325b5554b61fe7f48d9205a3877cf5ee88cd7c
RNFastImage: d4870d58f5936111c56218dbd7fcfc18e65b58ff
RNFastImage: 044259b52d726b183fa401f3521b2e5a864afc0a
RNFileViewer: 83cc066ad795b1f986791d03b56fe0ee14b6a69f
RNGestureHandler: a479ebd5ed4221a810967000735517df0d2db211
RNKeychain: f75b8c8b2f17d3b2aa1f25b4a0ac5b83d947ff8f
RNLocalize: 82a569022724d35461e2dc5b5d015a13c3ca995b
RNPermissions: c46788f4cd402287425983e04a4c9bb4356036eb
RNPermissions: 7043bacbf928eae25808275cfe73799b8f618911
RNReactNativeHapticFeedback: 653a8c126a0f5e88ce15ffe280b3ff37e1fbb285
RNReanimated: 9c13c86454bfd54dab7505c1a054470bfecd2563
RNRudderSdk: 5d99b1a5a582ab55d6213b38018d35e98818af63
RNSentry: bfa1e2776c7413570e790cbbf79d2060dd0a565b
RNShare: 5ac8f6532ca4cd80fc71caef1cfbba1854a6a045
RNRudderSdk: 9aa881c2bf754dc3b05e392340a5e3663a970f0a
RNSentry: a2b02b326ae4fce91ce7c57d3f7dcf8df4f72269
RNShare: 16c78aeb7a78d19e8f5597e405e87f90d91f8eb9
RNSVG: 551acb6562324b1d52a4e0758f7ca0ec234e278f
RNVectorIcons: 31cebfcf94e8cf8686eb5303ae0357da64d7a5a4
Rudder: 40f3a255fab3f8bbe120e496f90019de68c1aca1
Rudder: 3eae52018e1a401d3610b3f16f6210026eb327c8
SDWebImage: a7f831e1a65eb5e285e3fb046a23fcfbf08e696d
SDWebImageWebPCoder: d0dac55073088d24b2ac1b191a71a8f8d0adac21
Sentry: 89d26e036063b9cb9caa59b6951dd2f8277aa13b
Starscream: 5178aed56b316f13fa3bc55694e583d35dd414d9
SwiftyJSON: 2f33a42c6fbc52764d96f13368585094bfd8aa5e
Swime: d7b2c277503b6cea317774aedc2dce05613f8b0b
UMAppLoader: fe2708bb0ac5cd70052bc207d06aa3b7e72b9e97
UMBarCodeScannerInterface: 79f92bea5f7af39b381a4c82298105ceb537408a
UMCameraInterface: 81ff46700da88435f17afedfc88915eaede7e6a6
UMConstantsInterface: bb94dd46039dcde276ed50225b29e22785e604bf
UMAppLoader: 21af63390e55c82e037fb9752d93114a80ecf16e
UMCore: 2f671796d7439604a1cf8ac7bbe5809cd5c50437
UMFaceDetectorInterface: 791eec55ffca1171992976b7eceb73e69e391c58
UMFileSystemInterface: f72245e90ce78fa6427180ff0b0904ead13d8161
UMFontInterface: 5843cff7db85a42ba629aaac53d33091c35524d3
UMImageLoaderInterface: 9ddffeb644b3f45d4eb0c2f51a2fd95fd5c8d1a4
UMPermissionsInterface: 40b72935a7d12a3f60dc6b7bb99ce47908380cb1
UMReactNativeAdapter: 65ada852a648fcb6674acfbfe72ccb095f2f5b75
UMSensorsInterface: a5e9db661e5d9ae214762033d725989880ae6993
UMTaskManagerInterface: 203c11259d2699b5b3a4eda4adbc466f5cb5c561
UMReactNativeAdapter: 684b07b79d5fe52b496d2b50bfe31f68d7daf71a
UMTaskManagerInterface: 2be431101b73604e64fbfffcf759336f9d8fccbb
WatermelonDB: 1da309a2b3fe35360e92f5a6bda2156543447955
XCDYouTubeKit: 79baadb0560673a67c771eba45f83e353fd12c1f
Yoga: 575c581c63e0d35c9a83f4b46d01d63abc1100ac

24733
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -8,47 +8,47 @@
"private": true,
"dependencies": {
"@babel/runtime": "7.14.6",
"@formatjs/intl-datetimeformat": "4.1.5",
"@formatjs/intl-getcanonicallocales": "1.7.0",
"@formatjs/intl-locale": "2.4.32",
"@formatjs/intl-numberformat": "7.1.4",
"@formatjs/intl-pluralrules": "4.0.27",
"@formatjs/intl-relativetimeformat": "9.1.6",
"@mattermost/react-native-emm": "1.1.3",
"@formatjs/intl-datetimeformat": "4.1.6",
"@formatjs/intl-getcanonicallocales": "1.7.1",
"@formatjs/intl-locale": "2.4.33",
"@formatjs/intl-numberformat": "7.1.5",
"@formatjs/intl-pluralrules": "4.0.28",
"@formatjs/intl-relativetimeformat": "9.1.7",
"@mattermost/react-native-emm": "1.1.4",
"@mattermost/react-native-network-client": "github:mattermost/react-native-network-client",
"@mattermost/react-native-paste-input": "0.1.3",
"@mattermost/react-native-paste-input": "0.1.4",
"@nozbe/watermelondb": "0.22.0",
"@nozbe/with-observables": "1.3.0",
"@nozbe/with-observables": "1.4.0",
"@react-native-community/async-storage": "1.12.1",
"@react-native-community/cameraroll": "4.0.4",
"@react-native-community/clipboard": "1.5.1",
"@react-native-cookies/cookies": "6.0.8",
"@react-native-community/masked-view": "0.1.11",
"@react-native-community/netinfo": "6.0.0",
"@rudderstack/rudder-sdk-react-native": "1.0.10",
"@sentry/react-native": "2.5.2",
"commonmark": "github:mattermost/commonmark.js#f6ab98dede6ce4b4e7adea140ac77249bfb2d6ce",
"commonmark-react-renderer": "github:mattermost/commonmark-react-renderer#3a2ac19cab725ad28b170fdc1d397dddedcf87eb",
"@react-native-cookies/cookies": "6.0.8",
"@rudderstack/rudder-sdk-react-native": "1.0.12",
"@sentry/react-native": "2.6.0",
"commonmark": "0.30.0",
"commonmark-react-renderer": "4.3.5",
"deep-equal": "2.0.5",
"deepmerge": "4.2.2",
"emoji-regex": "9.2.2",
"fuse.js": "6.4.6",
"jail-monkey": "2.4.0",
"jail-monkey": "2.5.0",
"mime-db": "1.48.0",
"moment-timezone": "0.5.33",
"nock": "13.1.0",
"nock": "13.1.1",
"prop-types": "15.7.2",
"react": "17.0.2",
"react-intl": "5.17.7",
"react-intl": "5.20.4",
"react-native": "0.64.2",
"react-native-android-open-settings": "1.3.0",
"react-native-button": "3.0.1",
"react-native-calendars": "1.1263.0",
"react-native-calendars": "1.1264.0",
"react-native-device-info": "8.1.3",
"react-native-document-picker": "5.2.0",
"react-native-elements": "3.4.2",
"react-native-exception-handler": "2.10.10",
"react-native-fast-image": "8.3.4",
"react-native-fast-image": "8.3.6",
"react-native-file-viewer": "2.1.4",
"react-native-gesture-handler": "1.10.3",
"react-native-haptic-feedback": "1.11.0",
@@ -58,21 +58,20 @@
"react-native-keychain": "7.0.0",
"react-native-linear-gradient": "2.5.6",
"react-native-localize": "2.1.1",
"react-native-navigation": "7.13.0",
"react-native-navigation": "7.17.1",
"react-native-notifications": "3.5.0",
"react-native-permissions": "3.0.4",
"react-native-permissions": "3.0.5",
"react-native-reanimated": "2.2.0",
"react-native-redash": "16.0.11",
"react-native-redash": "16.1.1",
"react-native-safe-area-context": "3.2.0",
"react-native-share": "6.2.1",
"react-native-share": "6.2.3",
"react-native-slider": "0.11.0",
"react-native-svg": "12.1.1",
"react-native-unimodules": "0.13.3",
"react-native-unimodules": "0.14.5",
"react-native-vector-icons": "8.1.0",
"react-native-video": "5.1.1",
"react-native-webview": "11.6.4",
"react-native-webview": "11.6.5",
"react-native-youtube": "2.0.2",
"rn-fetch-blob": "0.12.0",
"rn-placeholder": "3.0.3",
"semver": "7.3.5",
"serialize-error": "8.1.0",
@@ -87,57 +86,53 @@
"@babel/plugin-proposal-decorators": "7.14.5",
"@babel/plugin-transform-flow-strip-types": "7.14.5",
"@babel/plugin-transform-runtime": "7.14.5",
"@babel/preset-env": "7.14.5",
"@babel/preset-env": "7.14.7",
"@babel/preset-typescript": "7.14.5",
"@babel/register": "7.14.5",
"@react-native-community/eslint-config": "3.0.0",
"@storybook/addon-knobs": "6.2.9",
"@storybook/addon-ondevice-knobs": "5.3.25",
"@storybook/react-native": "5.3.25",
"@storybook/react-native-server": "5.3.23",
"@testing-library/react-native": "7.2.0",
"@types/jest": "26.0.23",
"@types/react": "17.0.11",
"@types/jest": "26.0.24",
"@types/react": "17.0.14",
"@types/react-intl": "3.0.0",
"@types/react-native": "0.64.10",
"@types/react-native": "0.64.11",
"@types/react-native-button": "3.0.0",
"@types/react-native-share": "3.3.2",
"@types/react-native-video": "5.0.6",
"@types/react-native-share": "3.3.3",
"@types/react-native-video": "5.0.8",
"@types/react-test-renderer": "17.0.1",
"@types/semver": "7.3.6",
"@types/semver": "7.3.7",
"@types/shallow-equals": "1.0.0",
"@types/tinycolor2": "1.4.2",
"@types/tinycolor2": "1.4.3",
"@types/url-parse": "1.4.3",
"@typescript-eslint/eslint-plugin": "4.28.0",
"@typescript-eslint/parser": "4.28.0",
"@typescript-eslint/eslint-plugin": "4.28.2",
"@typescript-eslint/parser": "4.28.2",
"babel-eslint": "10.1.0",
"babel-jest": "26.6.3",
"babel-jest": "27.0.6",
"babel-loader": "8.2.2",
"babel-plugin-module-resolver": "4.1.0",
"babel-plugin-transform-remove-console": "6.9.4",
"deep-freeze": "0.0.1",
"detox": "18.18.1",
"eslint": "7.29.0",
"eslint": "7.30.0",
"eslint-plugin-header": "3.1.1",
"eslint-plugin-jest": "24.3.6",
"eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#070ce792d105482ffb2b27cfc0b7e78b3d20acee",
"eslint-plugin-mattermost": "github:mattermost/eslint-plugin-mattermost#46ad99355644a719bf32082f472048f526605181",
"eslint-plugin-react": "7.24.0",
"eslint-plugin-react-hooks": "4.2.0",
"husky": "6.0.0",
"husky": "7.0.1",
"isomorphic-fetch": "3.0.0",
"jest": "26.6.3",
"jest-cli": "26.6.3",
"jetifier": "2.0.0",
"metro-react-native-babel-preset": "0.66.0",
"metro-react-native-babel-preset": "0.66.1",
"mmjstool": "github:mattermost/mattermost-utilities#519b99a4e51e6c67a0dbd46a6efdff27dc835aaa",
"mock-async-storage": "2.2.0",
"patch-package": "6.4.7",
"react-native-dev-menu": "4.0.2",
"react-native-dotenv": "2.5.5",
"react-native-dotenv": "3.0.0",
"react-native-storybook-loader": "2.0.4",
"react-test-renderer": "17.0.2",
"ts-jest": "27.0.3",
"typescript": "4.3.4",
"typescript": "4.3.5",
"underscore": "1.13.1",
"util": "0.12.4"
},

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,351 @@
diff --git a/node_modules/commonmark-react-renderer/src/commonmark-react-renderer.js b/node_modules/commonmark-react-renderer/src/commonmark-react-renderer.js
index 91b0001..05b80fa 100644
--- a/node_modules/commonmark-react-renderer/src/commonmark-react-renderer.js
+++ b/node_modules/commonmark-react-renderer/src/commonmark-react-renderer.js
@@ -12,7 +12,12 @@ var typeAliases = {
htmlblock: 'html_block',
htmlinline: 'html_inline',
codeblock: 'code_block',
- hardbreak: 'linebreak'
+ hardbreak: 'linebreak',
+ atmention: 'at_mention',
+ channellink: 'channel_link',
+ editedindicator: 'edited_indicator',
+ tableRow: 'table_row',
+ tableCell: 'table_cell'
};
var defaultRenderers = {
@@ -24,6 +29,7 @@ var defaultRenderers = {
link: 'a',
paragraph: 'p',
strong: 'strong',
+ del: 'del',
thematic_break: 'hr', // eslint-disable-line camelcase
html_block: HtmlRenderer, // eslint-disable-line camelcase
@@ -52,7 +58,71 @@ var defaultRenderers = {
},
text: null,
- softbreak: null
+ softbreak: null,
+
+ at_mention: function AtMention(props) {
+ var newProps = getCoreProps(props);
+ if (props.username) {
+ props['data-mention-name'] = props.username;
+ }
+
+ return createElement('span', newProps, props.children);
+ },
+ channel_link: function ChannelLink(props) {
+ var newProps = getCoreProps(props);
+ if (props.channelName) {
+ props['data-channel-name'] = props.channelName;
+ }
+
+ return createElement('span', newProps, props.children);
+ },
+ emoji: function Emoji(props) {
+ var newProps = getCoreProps(props);
+ if (props.emojiName) {
+ props['data-emoji-name'] = props.emojiName;
+ }
+
+ return createElement('span', newProps, props.children);
+ },
+ edited_indicator: null,
+ hashtag: function Hashtag(props) {
+ var newProps = getCoreProps(props);
+ if (props.hashtag) {
+ props['data-hashtag'] = props.hashtag;
+ }
+
+ return createElement('span', newProps, props.children);
+ },
+ mention_highlight: function MentionHighlight(props) {
+ var newProps = getCoreProps(props);
+ newProps['data-mention-highlight'] = 'true';
+ return createElement('span', newProps, props.children);
+ },
+ search_highlight: function SearchHighlight(props) {
+ var newProps = getCoreProps(props);
+ newProps['data-search-highlight'] = 'true';
+ return createElement('span', newProps, props.children);
+ },
+
+ table: function Table(props) {
+ var childrenArray = React.Children.toArray(props.children);
+
+ var children = [createElement('thead', {'key': 'thead'}, childrenArray.slice(0, 1))];
+ if (childrenArray.length > 1) {
+ children.push(createElement('tbody', {'key': 'tbody'}, childrenArray.slice(1)));
+ }
+
+ return createElement('table', getCoreProps(props), children);
+ },
+ table_row: 'tr',
+ table_cell: function TableCell(props) {
+ var newProps = getCoreProps(props);
+ if (props.align) {
+ newProps.className = 'align-' + props.align;
+ }
+
+ return createElement('td', newProps, props.children);
+ }
};
var coreTypes = Object.keys(defaultRenderers);
@@ -147,7 +217,7 @@ function flattenPosition(pos) {
}
// For some nodes, we want to include more props than for others
-function getNodeProps(node, key, opts, renderer) {
+function getNodeProps(node, key, opts, renderer, context) {
var props = { key: key }, undef;
// `sourcePos` is true if the user wants source information (line/column info from markdown source)
@@ -194,16 +264,49 @@ function getNodeProps(node, key, opts, renderer) {
// Commonmark treats image description as children. We just want the text
props.alt = node.react.children.join('');
- node.react.children = undef;
break;
case 'list':
props.start = node.listStart;
props.type = node.listType;
props.tight = node.listTight;
break;
+ case 'at_mention':
+ props.mentionName = node.mentionName;
+ break;
+ case 'channel_link':
+ props.channelName = node.channelName;
+ break;
+ case 'emoji':
+ props.emojiName = node.emojiName;
+ props.literal = node.literal;
+ break;
+ case 'hashtag':
+ props.hashtag = node.hashtag;
+ break;
+ case 'paragraph':
+ props.first = !(node._prev && node._prev.type === 'paragraph');
+ props.last = !(node._next && node._next.type === 'paragraph');
+ break;
+ case 'edited_indicator':
+ break;
+ case 'table':
+ props.numRows = countRows(node);
+ props.numColumns = countColumns(node);
+ break;
+ case 'table_row':
+ props.isHeading = node.isHeading;
+ break;
+ case 'table_cell':
+ props.isHeading = node.isHeading;
+ props.align = node.align;
+ break;
default:
}
+ if (opts.getExtraPropsForNode) {
+ props = Object.assign(props, opts.getExtraPropsForNode(node));
+ }
+
if (typeof renderer !== 'string') {
props.literal = node.literal;
}
@@ -213,9 +316,29 @@ function getNodeProps(node, key, opts, renderer) {
props.children = children.reduce(reduceChildren, []) || null;
}
+ props.context = context.slice();
+
return props;
}
+function countChildren(node) {
+ var count = 0;
+
+ for (var child = node.firstChild; child; child = child.next) {
+ count += 1;
+ }
+
+ return count;
+}
+
+function countRows(table) {
+ return countChildren(table);
+}
+
+function countColumns(table) {
+ return countChildren(table.firstChild);
+}
+
function getPosition(node) {
if (!node) {
return null;
@@ -238,26 +361,23 @@ function renderNodes(block) {
transformLinkUri: this.transformLinkUri,
transformImageUri: this.transformImageUri,
softBreak: this.softBreak,
- linkTarget: this.linkTarget
+ linkTarget: this.linkTarget,
+ getExtraPropsForNode: this.getExtraPropsForNode
};
- var e, node, entering, leaving, type, doc, key, nodeProps, prevPos, prevIndex = 0;
+ var e;
+ var doc;
+ var context = [];
+ var index = 0;
while ((e = walker.next())) {
- var pos = getPosition(e.node.sourcepos ? e.node : e.node.parent);
- if (prevPos === pos) {
- key = pos + prevIndex;
- prevIndex++;
- } else {
- key = pos;
- prevIndex = 0;
- }
+ var key = String(index);
+ index += 1;
- prevPos = pos;
- entering = e.entering;
- leaving = !entering;
- node = e.node;
- type = normalizeTypeName(node.type);
- nodeProps = null;
+ var entering = e.entering;
+ var leaving = !entering;
+ var node = e.node;
+ var type = normalizeTypeName(node.type);
+ var nodeProps = null;
// If we have not assigned a document yet, assume the current node is just that
if (!doc) {
@@ -270,7 +390,7 @@ function renderNodes(block) {
}
// In HTML, we don't want paragraphs inside of list items
- if (type === 'paragraph' && isGrandChildOfList(node)) {
+ if (!this.renderParagraphsInLists && type === 'paragraph' && isGrandChildOfList(node)) {
continue;
}
@@ -289,7 +409,7 @@ function renderNodes(block) {
if (this.allowNode && (isCompleteParent || !node.isContainer)) {
var nodeChildren = isCompleteParent ? node.react.children : [];
- nodeProps = getNodeProps(node, key, propOptions, renderer);
+ nodeProps = getNodeProps(node, key, propOptions, renderer, context);
disallowedByUser = !this.allowNode({
type: pascalCase(type),
renderer: this.renderers[type],
@@ -298,6 +418,30 @@ function renderNodes(block) {
});
}
+ if (node.isContainer) {
+ var contextType = node.type;
+ if (node.level) {
+ contextType = node.type + node.level;
+ } else if (node.type === 'table_row' && node.parent.firstChild === node) {
+ contextType = 'table_header_row';
+ } else {
+ contextType = node.type;
+ }
+
+ if (entering) {
+ context.push(contextType);
+ } else {
+ var popped = context.pop();
+
+ if (!popped) {
+ throw new Error('Attempted to pop empty stack');
+ } else if (!popped === contextType) {
+ throw new Error('Popped context of type `' + pascalCase(popped) +
+ '` when expecting context of type `' + pascalCase(contextType) + '`');
+ }
+ }
+ }
+
if (!isDocument && (disallowedByUser || disallowedByConfig)) {
if (!this.unwrapDisallowed && entering && node.isContainer) {
walker.resumeAt(node, false);
@@ -313,15 +457,25 @@ function renderNodes(block) {
);
}
- if (node.isContainer && entering) {
+ if (context.length > this.maxDepth) {
+ // Do nothing, we should not regularly be nested this deeply and we don't want to cause React to
+ // overflow the stack
+ } else if (node.isContainer && entering) {
node.react = {
component: renderer,
props: {},
children: []
};
} else {
- var childProps = nodeProps || getNodeProps(node, key, propOptions, renderer);
- if (renderer) {
+ var childProps = nodeProps || getNodeProps(node, key, propOptions, renderer, context);
+ if (renderer === ReactRenderer.forwardChildren) {
+ if (childProps.children) {
+ for (var i = 0; i < childProps.children.length; i++) {
+ var child = childProps.children[i];
+ addChild(node, child);
+ }
+ }
+ } else if (renderer) {
childProps = typeof renderer === 'string'
? childProps
: assign(childProps, {nodeKey: childProps.key});
@@ -341,6 +495,10 @@ function renderNodes(block) {
}
}
+ if (context.length !== 0) {
+ throw new Error('Expected context to be empty after rendering, but has `' + context.join(', ') + '`');
+ }
+
return doc.react.children;
}
@@ -401,21 +559,31 @@ function ReactRenderer(options) {
renderers: assign({}, defaultRenderers, normalizeRenderers(opts.renderers)),
escapeHtml: Boolean(opts.escapeHtml),
skipHtml: Boolean(opts.skipHtml),
+ renderParagraphsInLists: Boolean(opts.renderParagraphsInLists),
transformLinkUri: linkFilter,
transformImageUri: imageFilter,
allowNode: opts.allowNode,
allowedTypes: allowedTypes,
unwrapDisallowed: Boolean(opts.unwrapDisallowed),
render: renderNodes,
- linkTarget: opts.linkTarget || false
+ linkTarget: opts.linkTarget || false,
+ maxDepth: opts.maxDepth || 30,
+ getExtraPropsForNode: opts.getExtraPropsForNode
};
}
+function forwardChildren(props) {
+ return props.children;
+}
+
ReactRenderer.uriTransformer = defaultLinkUriFilter;
ReactRenderer.types = coreTypes.map(pascalCase);
ReactRenderer.renderers = coreTypes.reduce(function(renderers, type) {
renderers[pascalCase(type)] = defaultRenderers[type];
return renderers;
}, {});
+ReactRenderer.countRows = countRows;
+ReactRenderer.countColumns = countColumns;
+ReactRenderer.forwardChildren = forwardChildren;
module.exports = ReactRenderer;

View File

@@ -1,5 +1,5 @@
diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java
index 4e4f498..b7ddd86 100644
index 3b4e398..8e91f6b 100644
--- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java
+++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/react/NavigationModule.java
@@ -55,14 +55,18 @@ public class NavigationModule extends ReactContextBaseJavaModule {
@@ -29,7 +29,7 @@ index 4e4f498..b7ddd86 100644
}
});
}
@@ -201,8 +205,12 @@ public class NavigationModule extends ReactContextBaseJavaModule {
@@ -210,8 +214,12 @@ public class NavigationModule extends ReactContextBaseJavaModule {
protected void handle(Runnable task) {
UiThread.post(() -> {
@@ -44,6 +44,32 @@ index 4e4f498..b7ddd86 100644
}
});
}
diff --git a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java
index 1e5751e..f921605 100644
--- a/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java
+++ b/node_modules/react-native-navigation/lib/android/app/src/main/java/com/reactnativenavigation/viewcontrollers/viewcontroller/ViewController.java
@@ -1,10 +1,12 @@
package com.reactnativenavigation.viewcontrollers.viewcontroller;
import android.app.Activity;
+import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewManager;
import android.view.ViewTreeObserver;
+import android.view.inputmethod.InputMethodManager;
import androidx.annotation.CallSuper;
import androidx.annotation.CheckResult;
@@ -276,6 +278,8 @@ public abstract class ViewController<T extends ViewGroup> implements ViewTreeObs
((Destroyable) view).destroy();
}
if (view != null) {
+ InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
+ imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
view.getViewTreeObserver().removeOnGlobalLayoutListener(this);
view.setOnHierarchyChangeListener(null);
if (view.getParent() instanceof ViewGroup) {
diff --git a/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m b/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m
index 815e1c6..a35a087 100644
--- a/node_modules/react-native-navigation/lib/ios/RNNOverlayWindow.m
@@ -68,19 +94,17 @@ index 815e1c6..a35a087 100644
}
diff --git a/node_modules/react-native-navigation/lib/ios/RNNViewLocation.m b/node_modules/react-native-navigation/lib/ios/RNNViewLocation.m
index 6b9981d..f725701 100644
index 2e60123..56830c8 100644
--- a/node_modules/react-native-navigation/lib/ios/RNNViewLocation.m
+++ b/node_modules/react-native-navigation/lib/ios/RNNViewLocation.m
@@ -31,11 +31,7 @@
@@ -21,8 +21,8 @@
self.toBounds = [self convertViewBounds:toElement];
self.fromCenter = [self convertViewCenter:fromElement];
self.toCenter = [self convertViewCenter:toElement];
- self.fromPath = [self resolveViewPath:fromElement withSuperView:fromElement.superview];
- self.toPath = [self resolveViewPath:toElement withSuperView:toElement.superview];
+ self.fromPath = fromElement.bounds;
+ self.toPath = toElement.bounds;
- (CATransform3D)getTransform:(UIView *)view {
if (view) {
- if (!CATransform3DEqualToTransform(view.layer.transform, CATransform3DIdentity)) {
- return view.layer.transform;
- } else {
- return [self getTransform:view.superview];
- }
+ return view.layer.transform;
}
return CATransform3DIdentity;
return self;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import '@storybook/addon-knobs/register';

View File

@@ -1,31 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {Platform} from 'react-native';
import {STORYBOOK_HOST, STORYBOOK_PORT} from '@env';
import {getStorybookUI, configure} from '@storybook/react-native';
// load react-native addons for storybook rn
import '@storybook/addon-ondevice-knobs/register';
import {loadStories} from './storyLoader';
// import stories
configure(() => {
loadStories();
}, module);
// this seems to be required to get react-native-dotenv to load the env variables
// properly. Possibly something related to babel-loader
const port = STORYBOOK_PORT;
const host = STORYBOOK_HOST;
// Refer to https://github.com/storybookjs/storybook/tree/master/app/react-native#start-command-parameters
// To find allowed options for getStorybookUI
const StorybookUIRoot = getStorybookUI({
port: port || 7007,
host: host || (Platform.OS === 'ios' ? 'localhost' : '10.0.2.2'),
onDeviceUI: true,
resetStorybook: true,
});
export default StorybookUIRoot;

View File

@@ -1,8 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {Navigation} from 'react-native-navigation';
import {goToScreen} from '@screens/navigation';
import DevMenu from 'react-native-dev-menu';
DevMenu.addItem('StoryBook', () => goToScreen('StoryBook', 'StoryBook'));
Navigation.registerComponent('StoryBook', () => require('../storybook').default, () => require('../storybook').default);

View File

@@ -1,13 +0,0 @@
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
function loadStories() {
// require('../app/components/loading.stories');
}
const stories = [];
module.exports = {
loadStories,
stories,
};

View File

@@ -231,6 +231,7 @@ jest.mock('react-native-navigation', () => {
const RNN = jest.requireActual('react-native-navigation');
RNN.Navigation.setLazyComponentRegistrator = jest.fn();
RNN.Navigation.setDefaultOptions = jest.fn();
RNN.Navigation.registerComponent = jest.fn();
return {
...RNN,
Navigation: {

View File

@@ -3,7 +3,7 @@
interface ClientErrorProps extends Error {
details: Error;
intl?: {defaultMessage?: string; id: string;} | { defaultMessage?: string; id: string } | { id: string; defaultMessage?: string; values: any } | { id: string; defaultMessage?: string };
intl?: {defaultMessage?: string; id: string} | { defaultMessage?: string; id: string } | { id: string; defaultMessage?: string; values: any } | { id: string; defaultMessage?: string };
url: string;
server_error_id?: string | number;
status_code?: number;

View File

@@ -26,7 +26,7 @@ type CustomEmoji = {
type SystemEmoji = {
filename: string;
aliases: Array<string>;
aliases: string[];
category: EmojiCategory;
batch: number;
};

View File

@@ -23,7 +23,7 @@ type FileInfo = {
type FilesState = {
files: Dictionary<FileInfo>;
fileIdsByPostId: Dictionary<Array<string>>;
fileIdsByPostId: Dictionary<string[]>;
filePublicLink?: string;
};

View File

@@ -47,8 +47,8 @@ type GroupChannel = {
update_at: number;
};
type GroupSyncables = {
teams: Array<GroupTeam>;
channels: Array<GroupChannel>;
teams: GroupTeam[];
channels: GroupChannel[];
};
type GroupsState = {
syncables: {

View File

@@ -67,7 +67,7 @@ type DialogElement = {
min_length: number;
max_length: number;
data_source: string;
options: Array<DialogOption>;
options: DialogOption[];
};
type InteractiveDialogConfig = {

18
types/api/posts.d.ts vendored
View File

@@ -32,11 +32,11 @@ type PostImage = {
};
type PostMetadata = {
embeds: Array<PostEmbed>;
emojis: Array<CustomEmoji>;
files: Array<FileInfo>;
embeds: PostEmbed[];
emojis: CustomEmoji[];
files: FileInfo[];
images: Dictionary<PostImage>;
reactions: Array<Reaction>;
reactions: Reaction[];
};
type Post = {
@@ -60,7 +60,7 @@ type Post = {
file_ids?: any[];
metadata: PostMetadata;
failed?: boolean;
user_activity_posts?: Array<Post>;
user_activity_posts?: Post[];
state?: 'DELETED';
ownPost?: boolean;
};
@@ -77,13 +77,13 @@ type PostWithFormatData = Post & {
};
type PostOrderBlock = {
order: Array<string>;
order: string[];
recent?: boolean;
oldest?: boolean;
};
type MessageHistory = {
messages: Array<string>;
messages: string[];
index: {
post: number;
comment: number;
@@ -92,11 +92,11 @@ type MessageHistory = {
type PostsState = {
posts: IDMappedObjects<Post>;
postsInChannel: Dictionary<Array<PostOrderBlock>>;
postsInChannel: Dictionary<PostOrderBlock[]>;
postsInThread: RelationOneToMany<Post, Post>;
reactions: RelationOneToOne<Post, Dictionary<Reaction>>;
openGraph: RelationOneToOne<Post, any>;
pendingPostIds: Array<string>;
pendingPostIds: string[];
selectedPostId: string;
currentFocusedPostId: string;
messagesHistory: MessageHistory;

View File

@@ -11,7 +11,7 @@ type Role = {
create_at: number;
update_at: number;
delete_at: number;
permissions: Array<string>;
permissions: string[];
scheme_managed: boolean;
built_in: boolean;
};

View File

@@ -2,7 +2,7 @@
// See LICENSE.txt for license information.
interface Session {
id: string,
id: string;
create_at: string|number;
device_id?: string;
expires_at: string|number;

View File

@@ -45,7 +45,7 @@ type UserProfile = {
type UsersState = {
currentUserId: string;
isManualStatus: RelationOneToOne<UserProfile, boolean>;
mySessions: Array<any>;
mySessions: any[];
profiles: IDMappedObjects<UserProfile>;
profilesInTeam: RelationOneToMany<Team, UserProfile>;
profilesNotInTeam: RelationOneToMany<Team, UserProfile>;

View File

@@ -59,7 +59,7 @@ export type OperationArgs = {
transformer: (TransformerArgs) => Promise<Model>;
};
export type Models = Class<Model>[];
export type Models = Array<Class<Model>>;
// The elements needed to create a new database
export type CreateServerDatabaseArgs = {
@@ -78,8 +78,8 @@ export type HandleFilesArgs = {
};
export type HandlePostMetadataArgs = {
embeds?: { embed: RawEmbed[]; postId: string }[];
images?: { images: Dictionary<PostImage>; postId: string }[];
embeds?: Array<{ embed: RawEmbed[]; postId: string }>;
images?: Array<{ images: Dictionary<PostImage>; postId: string }>;
prepareRecordsOnly: boolean;
};
@@ -151,29 +151,29 @@ type PrepareOnly = {
}
export type HandleInfoArgs = PrepareOnly & {
info: RawInfo[]
info: RawInfo[];
}
export type HandleServersArgs = PrepareOnly & {
servers: RawServers[]
servers: RawServers[];
}
export type HandleGlobalArgs = PrepareOnly & {
global: RawGlobal[]
global: RawGlobal[];
}
export type HandleRoleArgs = PrepareOnly & {
roles: RawRole[]
roles: RawRole[];
}
export type HandleCustomEmojiArgs = PrepareOnly & {
emojis: RawCustomEmoji[]
emojis: RawCustomEmoji[];
}
export type HandleSystemArgs = PrepareOnly & {
systems: RawSystem[]
systems: RawSystem[];
}
export type HandleTOSArgs = PrepareOnly & {
termOfService: RawTermsOfService[]
termOfService: RawTermsOfService[];
}
export type HandleMyChannelArgs = PrepareOnly & {
@@ -309,7 +309,7 @@ export type RawChannelInfo = {
};
export type RawChannelMembership = {
id? : string;
id?: string;
channel_id: string;
user_id: string;
roles: string;
@@ -543,7 +543,7 @@ export type RawPreference = {
};
export type RawReaction = {
id? : string;
id?: string;
create_at: number;
delete_at: number;
emoji_name: string;
@@ -592,7 +592,7 @@ export type RawTeamChannelHistory = {
};
export type RawTeamMembership = {
id? : string;
id?: string;
delete_at: number;
explicit_roles: string;
roles: string;

View File

@@ -2,32 +2,32 @@
// See LICENSE.txt for license information.
export type License = {
Announcement: string,
Cloud: string,
Cluster: string,
Company: string,
Compliance: string,
CustomPermissionsSchemes: string,
CustomTermsOfService: string,
DataRetention: string,
Elasticsearch: string,
EmailNotificationContents: string,
GoogleOAuth: string,
GuestAccounts: string,
GuestAccountsPermissions: string,
IDLoadedPushNotifications: string,
IsLicensed: string,
LDAP: string,
LDAPGroups: string,
LockTeammateNameDisplay: string,
MFA: string,
MHPNS: string,
MessageExport: string,
Metrics: string,
Office365OAuth: string,
OpenId: string,
RemoteClusterService: string,
SAML: string,
SharedChannels: string,
Users: string
Announcement: string;
Cloud: string;
Cluster: string;
Company: string;
Compliance: string;
CustomPermissionsSchemes: string;
CustomTermsOfService: string;
DataRetention: string;
Elasticsearch: string;
EmailNotificationContents: string;
GoogleOAuth: string;
GuestAccounts: string;
GuestAccountsPermissions: string;
IDLoadedPushNotifications: string;
IsLicensed: string;
LDAP: string;
LDAPGroups: string;
LockTeammateNameDisplay: string;
MFA: string;
MHPNS: string;
MessageExport: string;
Metrics: string;
Office365OAuth: string;
OpenId: string;
RemoteClusterService: string;
SAML: string;
SharedChannels: string;
Users: string;
}

View File

@@ -10,7 +10,7 @@ interface NativeNotificationPreferences {
selectedUri?: string;
shouldBlink: boolean;
shouldVibrate: boolean;
sounds: Array<NativeNotificationSound>;
sounds: NativeNotificationSound[];
}
interface NativeNotification {

View File

@@ -20,46 +20,46 @@ declare module 'react-native-slider' {
* *This is not a controlled component*, e.g. if you don't update
* the value, the component won't be reset to its inital value.
*/
value?: number
value?: number;
/**
* If true the user won't be able to move the slider.
* Default value is false.
*/
disabled?: boolean
disabled?: boolean;
/**
* Initial minimum value of the slider. Default value is 0.
*/
minimumValue?: number
minimumValue?: number;
/**
* Initial maximum value of the slider. Default value is 1.
*/
maximumValue?: number
maximumValue?: number;
/**
* Step value of the slider. The value should be between 0 and
* (maximumValue - minimumValue). Default value is 0.
*/
step?: number
step?: number;
/**
* The color used for the track to the left of the button. Overrides the
* default blue gradient image.
*/
minimumTrackTintColor?: string
minimumTrackTintColor?: string;
/**
* The color used for the track to the right of the button. Overrides the
* default blue gradient image.
*/
maximumTrackTintColor?: string
maximumTrackTintColor?: string;
/**
* The color used for the thumb.
*/
thumbTintColor?: string
thumbTintColor?: string;
/**
* The size of the touch area that allows moving the thumb.
@@ -68,64 +68,64 @@ declare module 'react-native-slider' {
* to move it easily.
* The default is {width: 40, height: 40}.
*/
thumbTouchSize?: { width: number; height: number }
thumbTouchSize?: { width: number; height: number };
/**
* Callback continuously called while the user is dragging the slider.
*/
onValueChange: (value: number) => void
onValueChange: (value: number) => void;
/**
* Callback called when the user starts changing the value (e.g. when
* the slider is pressed).
*/
onSlidingStart?: (value: number) => void
onSlidingStart?: (value: number) => void;
/**
* Callback called when the user finishes changing the value (e.g. when
* the slider is released).
*/
onSlidingComplete?: (value: number) => void
onSlidingComplete?: (value: number) => void;
/**
* The style applied to the slider container.
*/
style?: StyleProp<ViewStyle>
style?: StyleProp<ViewStyle>;
/**
* The style applied to the track.
*/
trackStyle?: StyleProp<ViewStyle>
trackStyle?: StyleProp<ViewStyle>;
/**
* The style applied to the thumb.
*/
thumbStyle?: StyleProp<ViewStyle>
thumbStyle?: StyleProp<ViewStyle>;
/**
* Sets an image for the thumb.
*/
thumbImage?: ImageSourcePropType
thumbImage?: ImageSourcePropType;
/**
* Set this to true to visually see the thumb touch rect in green.
*/
debugTouchArea?: boolean
debugTouchArea?: boolean;
/**
* Set to true to animate values with default 'timing' animation type
*/
animateTransitions?: boolean
animateTransitions?: boolean;
/**
* Custom Animation type. 'spring' or 'timing'.
*/
animationType?: 'spring' | 'timing'
animationType?: 'spring' | 'timing';
/**
* Used to configure the animation parameters. These are the same parameters in the Animated library.
*/
animationConfig?: SpringAnimationConfig | TimingAnimationConfig
animationConfig?: SpringAnimationConfig | TimingAnimationConfig;
}
const Slider: ComponentClass<SliderProps>;

View File

@@ -55,7 +55,7 @@ export interface FooterRef {
}
export interface GalleryProps {
files: Array<FileInfo>;
files: FileInfo[];
footerVisible: boolean;
height: number;
initialIndex: number;
@@ -104,11 +104,11 @@ export interface ToastProps {
}
export interface ToastRef {
show: ShowToast
show: ShowToast;
}
export interface ToastState {
animation?: Animated.CompositeAnimation,
animation?: Animated.CompositeAnimation;
duration?: number;
callback?: () => void;
}