Merge branch 'develop' into new.drawer-omnichannel

This commit is contained in:
Gerzon Z 2022-04-26 13:17:31 -04:00
commit 7bbfaa63c8
59 changed files with 777 additions and 601 deletions

View File

@ -339,7 +339,7 @@ jobs:
lint-testunit: lint-testunit:
<<: *defaults <<: *defaults
docker: docker:
- image: circleci/node:15 - image: cimg/node:16.14
resource_class: large resource_class: large
environment: environment:
CODECOV_TOKEN: caa771ab-3d45-4756-8e2a-e1f25996fef6 CODECOV_TOKEN: caa771ab-3d45-4756-8e2a-e1f25996fef6
@ -372,7 +372,7 @@ jobs:
android-build-experimental: android-build-experimental:
<<: *defaults <<: *defaults
docker: docker:
- image: circleci/android:api-29-node - image: cimg/android:2022.03.1-node
environment: environment:
<<: *android-env <<: *android-env
<<: *bash-env <<: *bash-env
@ -383,7 +383,7 @@ jobs:
android-build-official: android-build-official:
<<: *defaults <<: *defaults
docker: docker:
- image: circleci/android:api-29-node - image: cimg/android:2022.03.1-node
environment: environment:
<<: *android-env <<: *android-env
<<: *bash-env <<: *bash-env
@ -394,7 +394,7 @@ jobs:
android-internal-app-sharing-experimental: android-internal-app-sharing-experimental:
<<: *defaults <<: *defaults
docker: docker:
- image: circleci/android:api-28-node - image: cimg/android:2022.03.1-node
steps: steps:
- upload-to-internal-app-sharing - upload-to-internal-app-sharing
@ -402,7 +402,7 @@ jobs:
android-google-play-beta-experimental: android-google-play-beta-experimental:
<<: *defaults <<: *defaults
docker: docker:
- image: circleci/android:api-29-node - image: cimg/android:2022.03.1-node
steps: steps:
- upload-to-google-play-beta: - upload-to-google-play-beta:
@ -411,14 +411,14 @@ jobs:
android-google-play-production-experimental: android-google-play-production-experimental:
<<: *defaults <<: *defaults
docker: docker:
- image: circleci/android:api-29-node - image: cimg/android:2022.03.1-node
steps: steps:
- upload-to-google-play-production - upload-to-google-play-production
android-google-play-beta-official: android-google-play-beta-official:
<<: *defaults <<: *defaults
docker: docker:
- image: circleci/android:api-29-node - image: cimg/android:2022.03.1-node
steps: steps:
- upload-to-google-play-beta: - upload-to-google-play-beta:

View File

@ -144,7 +144,7 @@ android {
minSdkVersion rootProject.ext.minSdkVersion minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion
versionCode VERSIONCODE as Integer versionCode VERSIONCODE as Integer
versionName "4.26.2" versionName "4.27.0"
vectorDrawables.useSupportLibrary = true vectorDrawables.useSupportLibrary = true
if (!isFoss) { if (!isFoss) {
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String] manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]

View File

@ -32,7 +32,7 @@ class AvatarContainer extends React.Component<IAvatar, any> {
shouldComponentUpdate(nextProps: IAvatar, nextState: { avatarETag: string }) { shouldComponentUpdate(nextProps: IAvatar, nextState: { avatarETag: string }) {
const { avatarETag } = this.state; const { avatarETag } = this.state;
const { text, type, externalProviderUrl } = this.props; const { text, type, size, externalProviderUrl } = this.props;
if (nextProps.externalProviderUrl !== externalProviderUrl) { if (nextProps.externalProviderUrl !== externalProviderUrl) {
return true; return true;
} }
@ -45,6 +45,10 @@ class AvatarContainer extends React.Component<IAvatar, any> {
if (nextProps.type !== type) { if (nextProps.type !== type) {
return true; return true;
} }
if (nextProps.size !== size) {
return true;
}
return false; return false;
} }

View File

@ -10,7 +10,7 @@ import { CustomIcon } from '../../lib/Icons';
import sharedStyles from '../../views/Styles'; import sharedStyles from '../../views/Styles';
import { themes } from '../../lib/constants'; import { themes } from '../../lib/constants';
import { useTheme } from '../../theme'; import { useTheme } from '../../theme';
import { ROW_HEIGHT } from '../../presentation/RoomItem'; import { ROW_HEIGHT } from '../RoomItem';
import { goRoom } from '../../utils/goRoom'; import { goRoom } from '../../utils/goRoom';
import Navigation from '../../lib/navigation/appNavigation'; import Navigation from '../../lib/navigation/appNavigation';
import { useOrientation } from '../../dimensions'; import { useOrientation } from '../../dimensions';

View File

@ -6,32 +6,13 @@ import { isRTL } from '../../i18n';
import { CustomIcon } from '../../lib/Icons'; import { CustomIcon } from '../../lib/Icons';
import { DisplayMode, themes } from '../../lib/constants'; import { DisplayMode, themes } from '../../lib/constants';
import styles, { ACTION_WIDTH, LONG_SWIPE, ROW_HEIGHT_CONDENSED } from './styles'; import styles, { ACTION_WIDTH, LONG_SWIPE, ROW_HEIGHT_CONDENSED } from './styles';
import { TSupportedThemes } from '../../theme'; import { ILeftActionsProps, IRightActionsProps } from './interfaces';
interface ILeftActions {
theme: TSupportedThemes;
transX: any;
isRead: boolean;
width: number;
onToggleReadPress(): void;
displayMode: string;
}
interface IRightActions {
theme: TSupportedThemes;
transX: any;
favorite: boolean;
width: number;
toggleFav(): void;
onHidePress(): void;
displayMode: string;
}
const reverse = new Animated.Value(isRTL() ? -1 : 1); const reverse = new Animated.Value(isRTL() ? -1 : 1);
const CONDENSED_ICON_SIZE = 24; const CONDENSED_ICON_SIZE = 24;
const EXPANDED_ICON_SIZE = 28; const EXPANDED_ICON_SIZE = 28;
export const LeftActions = React.memo(({ theme, transX, isRead, width, onToggleReadPress, displayMode }: ILeftActions) => { export const LeftActions = React.memo(({ theme, transX, isRead, width, onToggleReadPress, displayMode }: ILeftActionsProps) => {
const translateX = Animated.multiply( const translateX = Animated.multiply(
transX.interpolate({ transX.interpolate({
inputRange: [0, ACTION_WIDTH], inputRange: [0, ACTION_WIDTH],
@ -44,7 +25,7 @@ export const LeftActions = React.memo(({ theme, transX, isRead, width, onToggleR
const viewHeight = isCondensed ? { height: ROW_HEIGHT_CONDENSED } : null; const viewHeight = isCondensed ? { height: ROW_HEIGHT_CONDENSED } : null;
return ( return (
<View style={[styles.actionsContainer, styles.actionLeftContainer]} pointerEvents='box-none'> <View style={[styles.actionsContainer, styles.actionsLeftContainer]} pointerEvents='box-none'>
<Animated.View <Animated.View
style={[ style={[
styles.actionLeftButtonContainer, styles.actionLeftButtonContainer,
@ -71,7 +52,7 @@ export const LeftActions = React.memo(({ theme, transX, isRead, width, onToggleR
}); });
export const RightActions = React.memo( export const RightActions = React.memo(
({ transX, favorite, width, toggleFav, onHidePress, theme, displayMode }: IRightActions) => { ({ transX, favorite, width, toggleFav, onHidePress, theme, displayMode }: IRightActionsProps) => {
const translateXFav = Animated.multiply( const translateXFav = Animated.multiply(
transX.interpolate({ transX.interpolate({
inputRange: [-width / 2, -ACTION_WIDTH * 2, 0], inputRange: [-width / 2, -ACTION_WIDTH * 2, 0],

View File

@ -2,7 +2,7 @@ import React from 'react';
import { View } from 'react-native'; import { View } from 'react-native';
import PropTypes from 'prop-types'; import PropTypes from 'prop-types';
import Avatar from '../../containers/Avatar'; import Avatar from '../Avatar';
import { DisplayMode } from '../../lib/constants'; import { DisplayMode } from '../../lib/constants';
import TypeIcon from './TypeIcon'; import TypeIcon from './TypeIcon';
import styles from './styles'; import styles from './styles';

View File

@ -3,28 +3,11 @@ import { dequal } from 'dequal';
import I18n from '../../i18n'; import I18n from '../../i18n';
import styles from './styles'; import styles from './styles';
import { MarkdownPreview } from '../../containers/markdown'; import { MarkdownPreview } from '../markdown';
import { E2E_MESSAGE_TYPE, E2E_STATUS, themes } from '../../lib/constants'; import { E2E_MESSAGE_TYPE, E2E_STATUS, themes } from '../../lib/constants';
import { TSupportedThemes } from '../../theme'; import { ILastMessageProps } from './interfaces';
interface ILastMessage { const formatMsg = ({ lastMessage, type, showLastMessage, username, useRealName }: Partial<ILastMessageProps>) => {
theme: TSupportedThemes;
lastMessage: {
u: any;
pinned: boolean;
t: string;
attachments: any;
msg: string;
e2e: string;
};
type: string;
showLastMessage: boolean;
username: string;
useRealName: boolean;
alert: boolean;
}
const formatMsg = ({ lastMessage, type, showLastMessage, username, useRealName }: Partial<ILastMessage>) => {
if (!showLastMessage) { if (!showLastMessage) {
return ''; return '';
} }
@ -64,7 +47,7 @@ const formatMsg = ({ lastMessage, type, showLastMessage, username, useRealName }
const arePropsEqual = (oldProps: any, newProps: any) => dequal(oldProps, newProps); const arePropsEqual = (oldProps: any, newProps: any) => dequal(oldProps, newProps);
const LastMessage = React.memo( const LastMessage = React.memo(
({ lastMessage, type, showLastMessage, username, alert, useRealName, theme }: ILastMessage) => ( ({ lastMessage, type, showLastMessage, username, alert, useRealName, theme }: ILastMessageProps) => (
<MarkdownPreview <MarkdownPreview
msg={formatMsg({ msg={formatMsg({
lastMessage, lastMessage,

View File

@ -3,7 +3,7 @@ import { View } from 'react-native';
import styles from './styles'; import styles from './styles';
import Wrapper from './Wrapper'; import Wrapper from './Wrapper';
import UnreadBadge from '../../containers/UnreadBadge'; import UnreadBadge from '../UnreadBadge';
import TypeIcon from './TypeIcon'; import TypeIcon from './TypeIcon';
import LastMessage from './LastMessage'; import LastMessage from './LastMessage';
import Title from './Title'; import Title from './Title';
@ -12,58 +12,7 @@ import Touchable from './Touchable';
import Tag from './Tag'; import Tag from './Tag';
import I18n from '../../i18n'; import I18n from '../../i18n';
import { DisplayMode } from '../../lib/constants'; import { DisplayMode } from '../../lib/constants';
import { TUserStatus, IOmnichannelSource } from '../../definitions'; import { IRoomItemProps } from './interfaces';
import { TSupportedThemes } from '../../theme';
interface IRoomItem {
rid: string;
type: string;
prid: string;
name: string;
avatar: string;
showLastMessage: boolean;
username: string;
avatarSize: number;
testID: string;
width: number;
status: TUserStatus;
useRealName: boolean;
theme: TSupportedThemes;
isFocused: boolean;
isGroupChat: boolean;
isRead: boolean;
teamMain: boolean;
date: string;
accessibilityLabel: string;
lastMessage: {
u: any;
pinned: boolean;
t: string;
attachments: any;
msg: string;
e2e: string;
};
favorite: boolean;
alert: boolean;
hideUnreadStatus: boolean;
unread: number;
userMentions: number;
groupMentions: number;
tunread: [];
tunreadUser: [];
tunreadGroup: [];
swipeEnabled: boolean;
toggleFav(): void;
toggleRead(): void;
onPress(): void;
onLongPress(): void;
hideChannel(): void;
autoJoin: boolean;
size?: number;
showAvatar: boolean;
displayMode: string;
sourceType: IOmnichannelSource;
}
const RoomItem = ({ const RoomItem = ({
rid, rid,
@ -72,7 +21,6 @@ const RoomItem = ({
name, name,
avatar, avatar,
width, width,
avatarSize = 48,
username, username,
showLastMessage, showLastMessage,
status = 'offline', status = 'offline',
@ -105,7 +53,7 @@ const RoomItem = ({
showAvatar, showAvatar,
displayMode, displayMode,
sourceType sourceType
}: IRoomItem) => ( }: IRoomItemProps) => (
<Touchable <Touchable
onPress={onPress} onPress={onPress}
onLongPress={onLongPress} onLongPress={onLongPress}
@ -125,7 +73,6 @@ const RoomItem = ({
<Wrapper <Wrapper
accessibilityLabel={accessibilityLabel} accessibilityLabel={accessibilityLabel}
avatar={avatar} avatar={avatar}
avatarSize={avatarSize}
type={type} type={type}
theme={theme} theme={theme}
rid={rid} rid={rid}

View File

@ -3,16 +3,9 @@ import { Text } from 'react-native';
import styles from './styles'; import styles from './styles';
import { themes } from '../../lib/constants'; import { themes } from '../../lib/constants';
import { TSupportedThemes } from '../../theme'; import { ITitleProps } from './interfaces';
interface ITitle { const Title = React.memo(({ name, theme, hideUnreadStatus, alert }: ITitleProps) => (
name: string;
theme: TSupportedThemes;
hideUnreadStatus: boolean;
alert: boolean;
}
const Title = React.memo(({ name, theme, hideUnreadStatus, alert }: ITitle) => (
<Text <Text
style={[styles.title, alert && !hideUnreadStatus && styles.alert, { color: themes[theme].titleText }]} style={[styles.title, alert && !hideUnreadStatus && styles.alert, { color: themes[theme].titleText }]}
ellipsizeMode='tail' ellipsizeMode='tail'

View File

@ -1,46 +1,28 @@
import React from 'react'; import React from 'react';
import { Animated } from 'react-native'; import { Animated } from 'react-native';
import { LongPressGestureHandler, PanGestureHandler, State } from 'react-native-gesture-handler'; import {
GestureEvent,
HandlerStateChangeEventPayload,
LongPressGestureHandler,
PanGestureHandler,
PanGestureHandlerEventPayload,
State
} from 'react-native-gesture-handler';
import Touch from '../../utils/touch'; import Touch from '../../utils/touch';
import { ACTION_WIDTH, LONG_SWIPE, SMALL_SWIPE } from './styles'; import { ACTION_WIDTH, LONG_SWIPE, SMALL_SWIPE } from './styles';
import { isRTL } from '../../i18n'; import { isRTL } from '../../i18n';
import { themes } from '../../lib/constants'; import { themes } from '../../lib/constants';
import { LeftActions, RightActions } from './Actions'; import { LeftActions, RightActions } from './Actions';
import { TSupportedThemes } from '../../theme'; import { ITouchableProps } from './interfaces';
interface ITouchableProps {
children: JSX.Element;
type: string;
onPress(): void;
onLongPress(): void;
testID: string;
width: number;
favorite: boolean;
isRead: boolean;
rid: string;
toggleFav: Function;
toggleRead: Function;
hideChannel: Function;
theme: TSupportedThemes;
isFocused: boolean;
swipeEnabled: boolean;
displayMode: string;
}
class Touchable extends React.Component<ITouchableProps, any> { class Touchable extends React.Component<ITouchableProps, any> {
private dragX: Animated.Value; private dragX: Animated.Value;
private rowOffSet: Animated.Value; private rowOffSet: Animated.Value;
private reverse: Animated.Value; private reverse: Animated.Value;
private transX: Animated.AnimatedAddition; private transX: Animated.AnimatedAddition;
private transXReverse: Animated.AnimatedMultiplication; private transXReverse: Animated.AnimatedMultiplication;
private _onGestureEvent: (event: GestureEvent<PanGestureHandlerEventPayload>) => void;
private _onGestureEvent: (...args: any[]) => void;
private _value: number; private _value: number;
constructor(props: ITouchableProps) { constructor(props: ITouchableProps) {
@ -57,19 +39,19 @@ class Touchable extends React.Component<ITouchableProps, any> {
this._value = 0; this._value = 0;
} }
_onHandlerStateChange = ({ nativeEvent }: any) => { _onHandlerStateChange = ({ nativeEvent }: { nativeEvent: HandlerStateChangeEventPayload & PanGestureHandlerEventPayload }) => {
if (nativeEvent.oldState === State.ACTIVE) { if (nativeEvent.oldState === State.ACTIVE) {
this._handleRelease(nativeEvent); this._handleRelease(nativeEvent);
} }
}; };
onLongPressHandlerStateChange = ({ nativeEvent }: any) => { onLongPressHandlerStateChange = ({ nativeEvent }: { nativeEvent: HandlerStateChangeEventPayload }) => {
if (nativeEvent.state === State.ACTIVE) { if (nativeEvent.state === State.ACTIVE) {
this.onLongPress(); this.onLongPress();
} }
}; };
_handleRelease = (nativeEvent: any) => { _handleRelease = (nativeEvent: PanGestureHandlerEventPayload) => {
const { translationX } = nativeEvent; const { translationX } = nativeEvent;
const { rowState } = this.state; const { rowState } = this.state;
this._value += translationX; this._value += translationX;
@ -155,7 +137,7 @@ class Touchable extends React.Component<ITouchableProps, any> {
this._animateRow(toValue); this._animateRow(toValue);
}; };
_animateRow = (toValue: any) => { _animateRow = (toValue: number) => {
this.rowOffSet.setValue(this._value); this.rowOffSet.setValue(this._value);
this._value = toValue; this._value = toValue;
this.dragX.setValue(0); this.dragX.setValue(0);

View File

@ -0,0 +1,17 @@
import React from 'react';
import RoomTypeIcon from '../RoomTypeIcon';
import { ITypeIconProps } from './interfaces';
const TypeIcon = React.memo(({ type, prid, status, isGroupChat, teamMain, size, style }: ITypeIconProps) => (
<RoomTypeIcon
type={prid ? 'discussion' : type}
isGroupChat={isGroupChat}
status={status}
teamMain={teamMain}
size={size}
style={style}
/>
));
export default TypeIcon;

View File

@ -4,16 +4,9 @@ import { Text } from 'react-native';
import styles from './styles'; import styles from './styles';
import { themes } from '../../lib/constants'; import { themes } from '../../lib/constants';
import { capitalize } from '../../utils/room'; import { capitalize } from '../../utils/room';
import { TSupportedThemes } from '../../theme'; import { IUpdatedAtProps } from './interfaces';
interface IUpdatedAt { const UpdatedAt = React.memo(({ date, theme, hideUnreadStatus, alert }: IUpdatedAtProps) => {
date: string;
theme: TSupportedThemes;
hideUnreadStatus: boolean;
alert: boolean;
}
const UpdatedAt = React.memo(({ date, theme, hideUnreadStatus, alert }: IUpdatedAt) => {
if (!date) { if (!date) {
return null; return null;
} }

View File

@ -2,30 +2,11 @@ import React from 'react';
import { View } from 'react-native'; import { View } from 'react-native';
import { DisplayMode, themes } from '../../lib/constants'; import { DisplayMode, themes } from '../../lib/constants';
import { IOmnichannelSource } from '../../definitions';
import { TSupportedThemes } from '../../theme';
import IconOrAvatar from './IconOrAvatar'; import IconOrAvatar from './IconOrAvatar';
import { IWrapperProps } from './interfaces';
import styles from './styles'; import styles from './styles';
interface IWrapper { const Wrapper = ({ accessibilityLabel, theme, children, displayMode, ...props }: IWrapperProps): React.ReactElement => (
accessibilityLabel: string;
avatar: string;
avatarSize: number;
type: string;
theme: TSupportedThemes;
rid: string;
children: JSX.Element;
displayMode: string;
prid: string;
showLastMessage: boolean;
status: string;
isGroupChat: boolean;
teamMain: boolean;
showAvatar: boolean;
sourceType: IOmnichannelSource;
}
const Wrapper = ({ accessibilityLabel, theme, children, displayMode, ...props }: IWrapper) => (
<View <View
style={[styles.container, displayMode === DisplayMode.Condensed && styles.containerCondensed]} style={[styles.container, displayMode === DisplayMode.Condensed && styles.containerCondensed]}
accessibilityLabel={accessibilityLabel}> accessibilityLabel={accessibilityLabel}>

View File

@ -5,37 +5,10 @@ import I18n from '../../i18n';
import { ROW_HEIGHT, ROW_HEIGHT_CONDENSED } from './styles'; import { ROW_HEIGHT, ROW_HEIGHT_CONDENSED } from './styles';
import { formatDate } from '../../utils/room'; import { formatDate } from '../../utils/room';
import RoomItem from './RoomItem'; import RoomItem from './RoomItem';
import { TUserStatus } from '../../definitions'; import { ISubscription, TUserStatus } from '../../definitions';
import { TSupportedThemes } from '../../theme'; import { IRoomItemContainerProps } from './interfaces';
export { ROW_HEIGHT, ROW_HEIGHT_CONDENSED }; export { ROW_HEIGHT, ROW_HEIGHT_CONDENSED };
interface IRoomItemContainerProps {
item: any;
showLastMessage: boolean;
id: string;
onPress: Function;
onLongPress: Function;
username: string;
avatarSize: number;
width: number;
status: TUserStatus;
toggleFav(): void;
toggleRead(): void;
hideChannel(): void;
useRealName: boolean;
getUserPresence: Function;
connected: boolean;
theme: TSupportedThemes;
isFocused: boolean;
getRoomTitle: Function;
getRoomAvatar: Function;
getIsGroupChat: Function;
getIsRead: Function;
swipeEnabled: boolean;
autoJoin: boolean;
showAvatar: boolean;
displayMode: string;
}
const attrs = [ const attrs = [
'width', 'width',
@ -51,12 +24,9 @@ const attrs = [
]; ];
class RoomItemContainer extends React.Component<IRoomItemContainerProps, any> { class RoomItemContainer extends React.Component<IRoomItemContainerProps, any> {
private mounted: boolean; private roomSubscription: ISubscription | undefined;
private roomSubscription: any;
static defaultProps: Partial<IRoomItemContainerProps> = { static defaultProps: Partial<IRoomItemContainerProps> = {
avatarSize: 48,
status: 'offline', status: 'offline',
getUserPresence: () => {}, getUserPresence: () => {},
getRoomTitle: () => 'title', getRoomTitle: () => 'title',
@ -68,24 +38,22 @@ class RoomItemContainer extends React.Component<IRoomItemContainerProps, any> {
constructor(props: IRoomItemContainerProps) { constructor(props: IRoomItemContainerProps) {
super(props); super(props);
this.mounted = false;
this.init(); this.init();
} }
componentDidMount() { componentDidMount() {
this.mounted = true;
const { connected, getUserPresence, id } = this.props; const { connected, getUserPresence, id } = this.props;
if (connected && this.isDirect) { if (connected && this.isDirect) {
getUserPresence(id); getUserPresence(id);
} }
} }
shouldComponentUpdate(nextProps: any) { shouldComponentUpdate(nextProps: IRoomItemContainerProps) {
const { props }: any = this; const { props } = this;
return !attrs.every(key => props[key] === nextProps[key]); return !attrs.every(key => props[key] === nextProps[key]);
} }
componentDidUpdate(prevProps: any) { componentDidUpdate(prevProps: IRoomItemContainerProps) {
const { connected, getUserPresence, id } = this.props; const { connected, getUserPresence, id } = this.props;
if (prevProps.connected !== connected && connected && this.isDirect) { if (prevProps.connected !== connected && connected && this.isDirect) {
getUserPresence(id); getUserPresence(id);
@ -107,7 +75,7 @@ class RoomItemContainer extends React.Component<IRoomItemContainerProps, any> {
const { const {
item: { t }, item: { t },
id id
}: any = this.props; } = this.props;
return t === 'd' && id && !this.isGroupChat; return t === 'd' && id && !this.isGroupChat;
} }
@ -145,7 +113,6 @@ class RoomItemContainer extends React.Component<IRoomItemContainerProps, any> {
hideChannel, hideChannel,
theme, theme,
isFocused, isFocused,
avatarSize,
status, status,
showLastMessage, showLastMessage,
username, username,
@ -178,7 +145,6 @@ class RoomItemContainer extends React.Component<IRoomItemContainerProps, any> {
} }
return ( return (
// @ts-ignore
<RoomItem <RoomItem
name={name} name={name}
avatar={avatar} avatar={avatar}
@ -198,7 +164,6 @@ class RoomItemContainer extends React.Component<IRoomItemContainerProps, any> {
type={item.t} type={item.t}
theme={theme} theme={theme}
isFocused={isFocused} isFocused={isFocused}
size={avatarSize}
prid={item.prid} prid={item.prid}
status={status} status={status}
hideUnreadStatus={item.hideUnreadStatus} hideUnreadStatus={item.hideUnreadStatus}

View File

@ -0,0 +1,166 @@
import React from 'react';
import { Animated } from 'react-native';
import { TSupportedThemes } from '../../theme';
import { TUserStatus, ILastMessage, SubscriptionType, IOmnichannelSource } from '../../definitions';
export interface ILeftActionsProps {
theme: TSupportedThemes;
transX: Animated.AnimatedAddition | Animated.AnimatedMultiplication;
isRead: boolean;
width: number;
onToggleReadPress(): void;
displayMode: string;
}
export interface IRightActionsProps {
theme: TSupportedThemes;
transX: Animated.AnimatedAddition | Animated.AnimatedMultiplication;
favorite: boolean;
width: number;
toggleFav(): void;
onHidePress(): void;
displayMode: string;
}
export interface ITitleProps {
name: string;
theme: TSupportedThemes;
hideUnreadStatus: boolean;
alert: boolean;
}
export interface IUpdatedAtProps {
date: string;
theme: TSupportedThemes;
hideUnreadStatus: boolean;
alert: boolean;
}
export interface IWrapperProps {
accessibilityLabel: string;
avatar: string;
type: string;
theme: TSupportedThemes;
rid: string;
children: React.ReactElement;
displayMode: string;
prid: string;
showLastMessage: boolean;
status: string;
isGroupChat: boolean;
teamMain: boolean;
showAvatar: boolean;
sourceType: IOmnichannelSource;
}
export interface ITypeIconProps {
type: string;
status: TUserStatus;
prid: string;
isGroupChat: boolean;
teamMain: boolean;
theme?: TSupportedThemes;
size?: number;
style?: object;
sourceType: IOmnichannelSource;
}
export interface IRoomItemContainerProps {
[key: string]: string | boolean | Function | number;
item: any;
showLastMessage: boolean;
id: string;
onPress: (item: any) => void;
onLongPress: (item: any) => Promise<void>;
username: string;
width: number;
status: TUserStatus;
toggleFav(): void;
toggleRead(): void;
hideChannel(): void;
useRealName: boolean;
getUserPresence: (uid: string) => void;
connected: boolean;
theme: TSupportedThemes;
isFocused: boolean;
getRoomTitle: (item: any) => string;
getRoomAvatar: (item: any) => string;
getIsGroupChat: (item: any) => boolean;
getIsRead: (item: any) => boolean;
swipeEnabled: boolean;
autoJoin: boolean;
showAvatar: boolean;
displayMode: string;
}
export interface IRoomItemProps {
rid: string;
type: SubscriptionType;
prid: string;
name: string;
avatar: string;
showLastMessage: boolean;
username: string;
testID: string;
width: number;
status: TUserStatus;
useRealName: boolean;
theme: TSupportedThemes;
isFocused: boolean;
isGroupChat: boolean;
isRead: boolean;
teamMain: boolean;
date: string;
accessibilityLabel: string;
lastMessage: ILastMessage;
favorite: boolean;
alert: boolean;
hideUnreadStatus: boolean;
unread: number;
userMentions: number;
groupMentions: number;
tunread: [];
tunreadUser: [];
tunreadGroup: [];
swipeEnabled: boolean;
toggleFav(): void;
toggleRead(): void;
onPress(): void;
onLongPress(): void;
hideChannel(): void;
autoJoin: boolean;
size?: number;
showAvatar: boolean;
displayMode: string;
sourceType: IOmnichannelSource;
}
export interface ILastMessageProps {
theme: TSupportedThemes;
lastMessage: ILastMessage;
type: SubscriptionType;
showLastMessage: boolean;
username: string;
useRealName: boolean;
alert: boolean;
}
export interface ITouchableProps {
children: JSX.Element;
type: string;
onPress(): void;
onLongPress(): void;
testID: string;
width: number;
favorite: boolean;
isRead: boolean;
rid: string;
toggleFav: Function;
toggleRead: Function;
hideChannel: Function;
theme: TSupportedThemes;
isFocused: boolean;
swipeEnabled: boolean;
displayMode: string;
}

View File

@ -8,7 +8,7 @@ export const ACTION_WIDTH = 80;
export const SMALL_SWIPE = ACTION_WIDTH / 2; export const SMALL_SWIPE = ACTION_WIDTH / 2;
export const LONG_SWIPE = ACTION_WIDTH * 3; export const LONG_SWIPE = ACTION_WIDTH * 3;
export default StyleSheet.create<any>({ export default StyleSheet.create({
flex: { flex: {
flex: 1 flex: 1
}, },

View File

@ -354,7 +354,8 @@ class MessageContainer extends React.Component<IMessageContainerProps, IMessageC
blocks, blocks,
autoTranslate: autoTranslateMessage, autoTranslate: autoTranslateMessage,
replies, replies,
md md,
comment
} = item; } = item;
let message = msg; let message = msg;
@ -435,6 +436,7 @@ class MessageContainer extends React.Component<IMessageContainerProps, IMessageC
callJitsi={callJitsi} callJitsi={callJitsi}
blockAction={blockAction} blockAction={blockAction}
highlighted={highlighted} highlighted={highlighted}
comment={comment}
/> />
</MessageContext.Provider> </MessageContext.Provider>
); );

View File

@ -59,6 +59,7 @@ export interface IMessageContent {
useRealName?: boolean; useRealName?: boolean;
isIgnored: boolean; isIgnored: boolean;
type: string; type: string;
comment?: string;
} }
export interface IMessageEmoji { export interface IMessageEmoji {

View File

@ -55,7 +55,9 @@ export const SYSTEM_MESSAGES = [
'user-converted-to-team', 'user-converted-to-team',
'user-converted-to-channel', 'user-converted-to-channel',
'user-deleted-room-from-team', 'user-deleted-room-from-team',
'user-removed-room-from-team' 'user-removed-room-from-team',
'omnichannel_placed_chat_on_hold',
'omnichannel_on_hold_chat_resumed'
]; ];
export const SYSTEM_MESSAGE_TYPES = { export const SYSTEM_MESSAGE_TYPES = {
@ -73,7 +75,9 @@ export const SYSTEM_MESSAGE_TYPES = {
CONVERTED_TO_TEAM: 'user-converted-to-team', CONVERTED_TO_TEAM: 'user-converted-to-team',
CONVERTED_TO_CHANNEL: 'user-converted-to-channel', CONVERTED_TO_CHANNEL: 'user-converted-to-channel',
DELETED_ROOM_FROM_TEAM: 'user-deleted-room-from-team', DELETED_ROOM_FROM_TEAM: 'user-deleted-room-from-team',
REMOVED_ROOM_FROM_TEAM: 'user-removed-room-from-team' REMOVED_ROOM_FROM_TEAM: 'user-removed-room-from-team',
OMNICHANNEL_PLACED_CHAT_ON_HOLD: 'omnichannel_placed_chat_on_hold',
OMNICHANNEL_ON_HOLD_CHAT_RESUMED: 'omnichannel_on_hold_chat_resumed'
}; };
export const SYSTEM_MESSAGE_TYPES_WITH_AUTHOR_NAME = [ export const SYSTEM_MESSAGE_TYPES_WITH_AUTHOR_NAME = [
@ -99,9 +103,10 @@ type TInfoMessage = {
role: string; role: string;
msg: string; msg: string;
author: { username: string }; author: { username: string };
comment?: string;
}; };
export const getInfoMessage = ({ type, role, msg, author }: TInfoMessage): string => { export const getInfoMessage = ({ type, role, msg, author, comment }: TInfoMessage): string => {
const { username } = author; const { username } = author;
if (type === 'rm') { if (type === 'rm') {
return I18n.t('Message_removed'); return I18n.t('Message_removed');
@ -193,6 +198,12 @@ export const getInfoMessage = ({ type, role, msg, author }: TInfoMessage): strin
if (type === 'user-removed-room-from-team') { if (type === 'user-removed-room-from-team') {
return I18n.t('Removed__roomName__from_this_team', { roomName: msg }); return I18n.t('Removed__roomName__from_this_team', { roomName: msg });
} }
if (type === 'omnichannel_placed_chat_on_hold') {
return I18n.t('Omnichannel_placed_chat_on_hold', { comment });
}
if (type === 'omnichannel_on_hold_chat_resumed') {
return I18n.t('Omnichannel_on_hold_chat_resumed', { comment });
}
return ''; return '';
}; };

View File

@ -42,16 +42,16 @@ export interface ITranslations {
export type E2EType = 'pending' | 'done'; export type E2EType = 'pending' | 'done';
export interface ILastMessage { export interface ILastMessage {
_id: string; _id?: string;
rid: string; rid?: string;
tshow?: boolean; tshow?: boolean;
t?: MessageType; t?: MessageType;
tmid?: string; tmid?: string;
msg?: string; msg?: string;
e2e?: E2EType; e2e?: E2EType;
ts: string | Date; ts?: string | Date;
u: IUserMessage; u: IUserMessage;
_updatedAt: string | Date; _updatedAt?: string | Date;
urls?: IUrlFromServer[]; urls?: IUrlFromServer[];
mentions?: IUserMention[]; mentions?: IUserMention[];
channels?: IUserChannel[]; channels?: IUserChannel[];
@ -59,7 +59,9 @@ export interface ILastMessage {
attachments?: IAttachment[]; attachments?: IAttachment[];
reactions?: IReaction[]; reactions?: IReaction[];
unread?: boolean; unread?: boolean;
pinned?: boolean;
status?: number; status?: number;
token?: string;
} }
interface IMessageFile { interface IMessageFile {
@ -140,6 +142,7 @@ export interface IMessage extends IMessageFromServer {
blocks?: any; blocks?: any;
e2e?: E2EType; e2e?: E2EType;
tshow?: boolean; tshow?: boolean;
comment?: string;
subscription?: { id: string }; subscription?: { id: string };
} }

View File

@ -55,6 +55,8 @@ export interface IRoom {
uids: Array<string>; uids: Array<string>;
lm?: Date; lm?: Date;
sysMes?: string[]; sysMes?: string[];
onHold?: boolean;
waitingResponse?: boolean;
} }
export enum OmnichannelSourceType { export enum OmnichannelSourceType {

View File

@ -98,6 +98,7 @@ export interface ISubscription {
teamMain?: boolean; teamMain?: boolean;
unsubscribe: () => Promise<any>; unsubscribe: () => Promise<any>;
separator?: boolean; separator?: boolean;
onHold?: boolean;
source?: IOmnichannelSource; source?: IOmnichannelSource;
// https://nozbe.github.io/WatermelonDB/Relation.html#relation-api // https://nozbe.github.io/WatermelonDB/Relation.html#relation-api
messages: RelationModified<TMessageModel>; messages: RelationModified<TMessageModel>;

View File

@ -17,6 +17,9 @@ export const getInquiriesQueued = () => sdk.get('livechat/inquiries.queued');
// RC 2.4.0 // RC 2.4.0
export const takeInquiry = (inquiryId: string) => sdk.methodCallWrapper('livechat:takeInquiry', inquiryId); export const takeInquiry = (inquiryId: string) => sdk.methodCallWrapper('livechat:takeInquiry', inquiryId);
// RC 4.26
export const takeResume = (roomId: string) => sdk.methodCallWrapper('livechat:resumeOnHold', roomId);
class Omnichannel { class Omnichannel {
private inquirySub: { stop: () => void } | null; private inquirySub: { stop: () => void } | null;
constructor() { constructor() {

View File

@ -6,7 +6,7 @@ import { connect } from 'react-redux';
import { dequal } from 'dequal'; import { dequal } from 'dequal';
import I18n from '../../../i18n'; import I18n from '../../../i18n';
import RoomItem, { ROW_HEIGHT } from '../../../presentation/RoomItem'; import RoomItem, { ROW_HEIGHT } from '../../../containers/RoomItem';
import { isIOS, isTablet } from '../../../utils/deviceInfo'; import { isIOS, isTablet } from '../../../utils/deviceInfo';
import { getUserSelector } from '../../../selectors/login'; import { getUserSelector } from '../../../selectors/login';
import { TSupportedThemes, withTheme } from '../../../theme'; import { TSupportedThemes, withTheme } from '../../../theme';

View File

@ -358,7 +358,6 @@
"Offline": "غير متصل", "Offline": "غير متصل",
"Oops": "عفوًا!", "Oops": "عفوًا!",
"Omnichannel": "القنوات الموحدة", "Omnichannel": "القنوات الموحدة",
"Open_Livechats": "محادثات مباشرة جارية",
"Omnichannel_enable_alert": "أنت غير متاح ", "Omnichannel_enable_alert": "أنت غير متاح ",
"Onboarding_description": "مساحة عمل هي مساحة لفريقك ومنظمتك للتعاون. اطلب من المشرف العنوان للانضمام أو أنشئ لفريقك", "Onboarding_description": "مساحة عمل هي مساحة لفريقك ومنظمتك للتعاون. اطلب من المشرف العنوان للانضمام أو أنشئ لفريقك",
"Onboarding_join_workspace": "انضم لمساحة عمل", "Onboarding_join_workspace": "انضم لمساحة عمل",

View File

@ -363,7 +363,6 @@
"Offline": "Offline", "Offline": "Offline",
"Oops": "Hoppla!", "Oops": "Hoppla!",
"Omnichannel": "Omnichannel", "Omnichannel": "Omnichannel",
"Open_Livechats": "Offene Chats",
"Omnichannel_enable_alert": "Sie sind in Omnichannel nicht verfügbar. Möchten Sie erreichbar sein?", "Omnichannel_enable_alert": "Sie sind in Omnichannel nicht verfügbar. Möchten Sie erreichbar sein?",
"Onboarding_description": "Ein Arbeitsbereich ist der Ort für die Zusammenarbeit deines Teams oder Organisation. Bitten Sie den Admin des Arbeitsbereichs um eine Adresse, um ihm beizutreten, oder erstellen Sie einen Arbeitsbereich für Ihr Team.", "Onboarding_description": "Ein Arbeitsbereich ist der Ort für die Zusammenarbeit deines Teams oder Organisation. Bitten Sie den Admin des Arbeitsbereichs um eine Adresse, um ihm beizutreten, oder erstellen Sie einen Arbeitsbereich für Ihr Team.",
"Onboarding_join_workspace": "Einem Arbeitsbereich beiteten", "Onboarding_join_workspace": "Einem Arbeitsbereich beiteten",

View File

@ -364,7 +364,6 @@
"Offline": "Offline", "Offline": "Offline",
"Oops": "Oops!", "Oops": "Oops!",
"Omnichannel": "Omnichannel", "Omnichannel": "Omnichannel",
"Open_Livechats": "Chats in Progress",
"Omnichannel_enable_alert": "You're not available on Omnichannel. Would you like to be available?", "Omnichannel_enable_alert": "You're not available on Omnichannel. Would you like to be available?",
"Onboarding_description": "A workspace is your team or organizations space to collaborate. Ask the workspace admin for address to join or create one for your team.", "Onboarding_description": "A workspace is your team or organizations space to collaborate. Ask the workspace admin for address to join or create one for your team.",
"Onboarding_join_workspace": "Join a workspace", "Onboarding_join_workspace": "Join a workspace",
@ -810,6 +809,14 @@
"Removed__username__from_team": "removed @{{user_removed}} from this Team", "Removed__username__from_team": "removed @{{user_removed}} from this Team",
"User_joined_team": "joined this Team", "User_joined_team": "joined this Team",
"User_left_team": "left this Team", "User_left_team": "left this Team",
"Place_chat_on_hold": "Place chat on-hold",
"Would_like_to_place_on_hold": "Would you like to place this chat On-Hold?",
"Open_Livechats": "Omnichannel chats in progress",
"On_hold_Livechats": "Omnichannel chats on hold",
"Chat_is_on_hold": "This chat is on-hold due to inactivity",
"Resume": "Resume",
"Omnichannel_placed_chat_on_hold": "Chat On Hold: {{comment}}",
"Omnichannel_on_hold_chat_resumed": "On Hold Chat Resumed: {{comment}}",
"Omnichannel_queue": "Omnichannel queue", "Omnichannel_queue": "Omnichannel queue",
"Empty": "Empty" "Empty": "Empty"
} }

View File

@ -363,7 +363,6 @@
"Offline": "Hors ligne", "Offline": "Hors ligne",
"Oops": "Oups !", "Oops": "Oups !",
"Omnichannel": "Omnicanal", "Omnichannel": "Omnicanal",
"Open_Livechats": "Discussions en cours",
"Omnichannel_enable_alert": "Vous n'êtes pas disponible sur Omnicanal. Souhaitez-vous être disponible ?", "Omnichannel_enable_alert": "Vous n'êtes pas disponible sur Omnicanal. Souhaitez-vous être disponible ?",
"Onboarding_description": "Un espace de travail est l'espace de collaboration de votre équipe ou organisation. Demandez à l'administrateur de l'espace de travail l'adresse pour rejoindre ou créez-en une pour votre équipe.", "Onboarding_description": "Un espace de travail est l'espace de collaboration de votre équipe ou organisation. Demandez à l'administrateur de l'espace de travail l'adresse pour rejoindre ou créez-en une pour votre équipe.",
"Onboarding_join_workspace": "Rejoindre un espace de travail", "Onboarding_join_workspace": "Rejoindre un espace de travail",

View File

@ -352,7 +352,6 @@
"Offline": "Offline", "Offline": "Offline",
"Oops": "Oops!", "Oops": "Oops!",
"Omnichannel": "Omnichannel", "Omnichannel": "Omnichannel",
"Open_Livechats": "Chat in corso",
"Omnichannel_enable_alert": "Non sei ancora su Onmichannel. Vuoi attivarlo?", "Omnichannel_enable_alert": "Non sei ancora su Onmichannel. Vuoi attivarlo?",
"Onboarding_description": "Un workspace è lo spazio dove il tuo team o la tua organizzazione possono collaborare. Chiedi l'indirizzo all'amministratore del tuo workspace oppure creane uno per il tuo team.", "Onboarding_description": "Un workspace è lo spazio dove il tuo team o la tua organizzazione possono collaborare. Chiedi l'indirizzo all'amministratore del tuo workspace oppure creane uno per il tuo team.",
"Onboarding_join_workspace": "Unisciti", "Onboarding_join_workspace": "Unisciti",

View File

@ -363,7 +363,6 @@
"Offline": "Offline", "Offline": "Offline",
"Oops": "Oeps!", "Oops": "Oeps!",
"Omnichannel": "Omnichannel", "Omnichannel": "Omnichannel",
"Open_Livechats": "Bezig met chatten",
"Omnichannel_enable_alert": "Je bent niet beschikbaar op Omnichannel. Wil je beschikbaar zijn?", "Omnichannel_enable_alert": "Je bent niet beschikbaar op Omnichannel. Wil je beschikbaar zijn?",
"Onboarding_description": "Een werkruimte is de ruimte van jouw team of organisatie om samen te werken. Vraag aan de beheerder van de werkruimte een adres om lid te worden of maak er een aan voor jouw team.", "Onboarding_description": "Een werkruimte is de ruimte van jouw team of organisatie om samen te werken. Vraag aan de beheerder van de werkruimte een adres om lid te worden of maak er een aan voor jouw team.",
"Onboarding_join_workspace": "Word lid van een werkruimte", "Onboarding_join_workspace": "Word lid van een werkruimte",

View File

@ -339,7 +339,6 @@
"Offline": "Offline", "Offline": "Offline",
"Oops": "Ops!", "Oops": "Ops!",
"Omnichannel": "Omnichannel", "Omnichannel": "Omnichannel",
"Open_Livechats": "Bate-papos em Andamento",
"Omnichannel_enable_alert": "Você não está disponível no Omnichannel. Você quer ficar disponível?", "Omnichannel_enable_alert": "Você não está disponível no Omnichannel. Você quer ficar disponível?",
"Onboarding_description": "Workspace é o espaço de colaboração do seu time ou organização. Peça um convite ou o endereço ao seu administrador ou crie uma workspace para o seu time.", "Onboarding_description": "Workspace é o espaço de colaboração do seu time ou organização. Peça um convite ou o endereço ao seu administrador ou crie uma workspace para o seu time.",
"Onboarding_join_workspace": "Entre numa workspace", "Onboarding_join_workspace": "Entre numa workspace",

View File

@ -359,7 +359,6 @@
"Offline": "Desligado", "Offline": "Desligado",
"Oops": "Oops!", "Oops": "Oops!",
"Omnichannel": "Omnichannel", "Omnichannel": "Omnichannel",
"Open_Livechats": "Chats em andamento",
"Omnichannel_enable_alert": "Você não está disponível no Omnichannel. Você gostaria de estar disponível?", "Omnichannel_enable_alert": "Você não está disponível no Omnichannel. Você gostaria de estar disponível?",
"Onboarding_description": "Um espaço de trabalho é o espaço da sua equipa ou organização para colaborar. Peça ao administrador do espaço de trabalho um endereço para se juntar ou criar um para a sua equipa.", "Onboarding_description": "Um espaço de trabalho é o espaço da sua equipa ou organização para colaborar. Peça ao administrador do espaço de trabalho um endereço para se juntar ou criar um para a sua equipa.",
"Onboarding_join_workspace": "Junte-se a um espaço de trabalho", "Onboarding_join_workspace": "Junte-se a um espaço de trabalho",

View File

@ -363,7 +363,6 @@
"Offline": "Офлайн", "Offline": "Офлайн",
"Oops": "Упс!", "Oops": "Упс!",
"Omnichannel": "Omnichannel", "Omnichannel": "Omnichannel",
"Open_Livechats": "Чаты в Работе",
"Omnichannel_enable_alert": "Вы не доступны в Omnichannel. Хотите стать доступными?", "Omnichannel_enable_alert": "Вы не доступны в Omnichannel. Хотите стать доступными?",
"Onboarding_description": "Сервер это пространство для взаимодействия вашей команды или организации. Уточните адрес сервера у вашего администратора или создайте свой сервер для команды.", "Onboarding_description": "Сервер это пространство для взаимодействия вашей команды или организации. Уточните адрес сервера у вашего администратора или создайте свой сервер для команды.",
"Onboarding_join_workspace": "Присоединиться к серверу", "Onboarding_join_workspace": "Присоединиться к серверу",

View File

@ -353,7 +353,6 @@
"Offline": "Çevrimdışı", "Offline": "Çevrimdışı",
"Oops": "Ahh!", "Oops": "Ahh!",
"Omnichannel": "Çoklu Kanal", "Omnichannel": "Çoklu Kanal",
"Open_Livechats": "Devam Eden Sohbetler",
"Omnichannel_enable_alert": "Çoklu Kanal'da mevcut değilsiniz. Erişilebilir olmak ister misiniz?", "Omnichannel_enable_alert": "Çoklu Kanal'da mevcut değilsiniz. Erişilebilir olmak ister misiniz?",
"Onboarding_description": "Çalışma alanı, ekibinizin veya kuruluşunuzun işbirliği alanıdır. Çalışma alanı yöneticisinden bir ekibe katılmak veya bir ekip oluşturmak için yardım isteyin.", "Onboarding_description": "Çalışma alanı, ekibinizin veya kuruluşunuzun işbirliği alanıdır. Çalışma alanı yöneticisinden bir ekibe katılmak veya bir ekip oluşturmak için yardım isteyin.",
"Onboarding_join_workspace": "Bir çalışma alanına katılın", "Onboarding_join_workspace": "Bir çalışma alanına katılın",

View File

@ -350,7 +350,6 @@
"Offline": "离线", "Offline": "离线",
"Oops": "哎呀!", "Oops": "哎呀!",
"Omnichannel": "Omnichannel", "Omnichannel": "Omnichannel",
"Open_Livechats": "打开即时聊天",
"Omnichannel_enable_alert": "您尚未启用 Omnichannel是否想要启用", "Omnichannel_enable_alert": "您尚未启用 Omnichannel是否想要启用",
"Onboarding_description": "工作区是团队或组织协作的空间。向工作区管理员询问要加入的地址或为您的团队创建一个。", "Onboarding_description": "工作区是团队或组织协作的空间。向工作区管理员询问要加入的地址或为您的团队创建一个。",
"Onboarding_join_workspace": "加入一个工作区", "Onboarding_join_workspace": "加入一个工作区",

View File

@ -352,7 +352,6 @@
"Offline": "離線", "Offline": "離線",
"Oops": "哎呀!", "Oops": "哎呀!",
"Omnichannel": "Omnichannel", "Omnichannel": "Omnichannel",
"Open_Livechats": "打開即時聊天",
"Omnichannel_enable_alert": "您尚未啟用 Omnichannel是否想要啟用", "Omnichannel_enable_alert": "您尚未啟用 Omnichannel是否想要啟用",
"Onboarding_description": "工作區是團隊或組織協作的空間。向工作區管理員詢問要加入的地址或為您的團隊創建一個。", "Onboarding_description": "工作區是團隊或組織協作的空間。向工作區管理員詢問要加入的地址或為您的團隊創建一個。",
"Onboarding_join_workspace": "加入一個工作區", "Onboarding_join_workspace": "加入一個工作區",

View File

@ -206,6 +206,9 @@ export const defaultSettings = {
Canned_Responses_Enable: { Canned_Responses_Enable: {
type: 'valueAsBoolean' type: 'valueAsBoolean'
}, },
Livechat_allow_manual_on_hold: {
type: 'valueAsBoolean'
},
Accounts_AvatarExternalProviderUrl: { Accounts_AvatarExternalProviderUrl: {
type: 'valueAsString' type: 'valueAsString'
} }

View File

@ -83,4 +83,6 @@ export default class Message extends Model {
@field('tshow') tshow; @field('tshow') tshow;
@json('md', sanitizer) md; @json('md', sanitizer) md;
@field('comment') comment;
} }

View File

@ -131,5 +131,7 @@ export default class Subscription extends Model {
@field('team_main') teamMain; @field('team_main') teamMain;
@field('on_hold') onHold;
@json('source', sanitizer) source; @json('source', sanitizer) source;
} }

View File

@ -217,6 +217,19 @@ export default schemaMigrations({
columns: [{ name: 'source', type: 'string', isOptional: true }] columns: [{ name: 'source', type: 'string', isOptional: true }]
}) })
] ]
},
{
toVersion: 17,
steps: [
addColumns({
table: 'subscriptions',
columns: [{ name: 'on_hold', type: 'boolean', isOptional: true }]
}),
addColumns({
table: 'messages',
columns: [{ name: 'comment', type: 'string', isOptional: true }]
})
]
} }
] ]
}); });

View File

@ -1,7 +1,7 @@
import { appSchema, tableSchema } from '@nozbe/watermelondb'; import { appSchema, tableSchema } from '@nozbe/watermelondb';
export default appSchema({ export default appSchema({
version: 16, version: 17,
tables: [ tables: [
tableSchema({ tableSchema({
name: 'subscriptions', name: 'subscriptions',
@ -60,6 +60,7 @@ export default appSchema({
{ name: 'avatar_etag', type: 'string', isOptional: true }, { name: 'avatar_etag', type: 'string', isOptional: true },
{ name: 'team_id', type: 'string', isIndexed: true }, { name: 'team_id', type: 'string', isIndexed: true },
{ name: 'team_main', type: 'boolean', isOptional: true }, // Use `Q.notEq(true)` to get false or null { name: 'team_main', type: 'boolean', isOptional: true }, // Use `Q.notEq(true)` to get false or null
{ name: 'on_hold', type: 'boolean', isOptional: true },
{ name: 'source', type: 'string', isOptional: true } { name: 'source', type: 'string', isOptional: true }
] ]
}), }),
@ -117,7 +118,8 @@ export default appSchema({
{ name: 'blocks', type: 'string', isOptional: true }, { name: 'blocks', type: 'string', isOptional: true },
{ name: 'e2e', type: 'string', isOptional: true }, { name: 'e2e', type: 'string', isOptional: true },
{ name: 'tshow', type: 'boolean', isOptional: true }, { name: 'tshow', type: 'boolean', isOptional: true },
{ name: 'md', type: 'string', isOptional: true } { name: 'md', type: 'string', isOptional: true },
{ name: 'comment', type: 'string', isOptional: true }
] ]
}), }),
tableSchema({ tableSchema({

View File

@ -26,7 +26,8 @@ import {
TMessageModel, TMessageModel,
TRoomModel, TRoomModel,
TThreadMessageModel, TThreadMessageModel,
TThreadModel TThreadModel,
SubscriptionType
} from '../../../definitions'; } from '../../../definitions';
import sdk from '../../services/sdk'; import sdk from '../../services/sdk';
import { IDDPMessage } from '../../../definitions/IDDPMessage'; import { IDDPMessage } from '../../../definitions/IDDPMessage';
@ -99,7 +100,8 @@ const createOrUpdateSubscription = async (subscription: ISubscription, room: ISe
encrypted: s.encrypted, encrypted: s.encrypted,
e2eKeyId: s.e2eKeyId, e2eKeyId: s.e2eKeyId,
E2EKey: s.E2EKey, E2EKey: s.E2EKey,
avatarETag: s.avatarETag avatarETag: s.avatarETag,
onHold: s.onHold
} as ISubscription; } as ISubscription;
} catch (error) { } catch (error) {
try { try {
@ -251,6 +253,11 @@ const debouncedUpdate = (subscription: ISubscription) => {
createOrUpdateSubscription(sub, room); createOrUpdateSubscription(sub, room);
} else { } else {
const room = batch[key] as IRoom; const room = batch[key] as IRoom;
// If the omnichannel's chat is onHold and waitingResponse we shouldn't create or update the chat,
// because it should go to Queue
if (room.t === SubscriptionType.OMNICHANNEL && room.onHold && room.waitingResponse) {
return null;
}
const subQueueId = getSubQueueId(room._id); const subQueueId = getSubQueueId(room._id);
const sub = batch[subQueueId] as ISubscription; const sub = batch[subQueueId] as ISubscription;
delete batch[subQueueId]; delete batch[subQueueId];

View File

@ -360,6 +360,8 @@ export const returnLivechat = (rid: string): Promise<boolean> =>
// RC 0.72.0 // RC 0.72.0
sdk.methodCallWrapper('livechat:returnAsInquiry', rid); sdk.methodCallWrapper('livechat:returnAsInquiry', rid);
export const onHoldLivechat = (roomId: string) => sdk.post('livechat/room.onHold', { roomId });
export const forwardLivechat = (transferData: any) => export const forwardLivechat = (transferData: any) =>
// RC 0.36.0 // RC 0.36.0
sdk.methodCallWrapper('livechat:transfer', transferData); sdk.methodCallWrapper('livechat:transfer', transferData);

View File

@ -1,7 +1,7 @@
import { select, takeLatest } from 'redux-saga/effects'; import { select, takeLatest } from 'redux-saga/effects';
import RocketChat from '../lib/rocketchat'; import RocketChat from '../lib/rocketchat';
import { setBadgeCount } from '../lib/notifications/push'; import Push from '../lib/notifications/push';
import log from '../utils/log'; import log from '../utils/log';
import { localAuthenticate, saveLastLocalAuthenticationSession } from '../utils/localAuthentication'; import { localAuthenticate, saveLastLocalAuthenticationSession } from '../utils/localAuthentication';
import { APP_STATE } from '../actions/actionsTypes'; import { APP_STATE } from '../actions/actionsTypes';
@ -20,7 +20,7 @@ const appHasComeBackToForeground = function* appHasComeBackToForeground() {
try { try {
yield localAuthenticate(server.server); yield localAuthenticate(server.server);
RocketChat.checkAndReopen(); RocketChat.checkAndReopen();
setBadgeCount(); Push.setBadgeCount();
return yield RocketChat.setUserPresenceOnline(); return yield RocketChat.setUserPresenceOnline();
} catch (e) { } catch (e) {
log(e); log(e);

View File

@ -227,6 +227,7 @@ export default {
ROOM_MSG_ACTION_REPORT: 'room_msg_action_report', ROOM_MSG_ACTION_REPORT: 'room_msg_action_report',
ROOM_MSG_ACTION_REPORT_F: 'room_msg_action_report_f', ROOM_MSG_ACTION_REPORT_F: 'room_msg_action_report_f',
ROOM_JOIN: 'room_join', ROOM_JOIN: 'room_join',
ROOM_RESUME: 'room_resume',
ROOM_GO_RA: 'room_go_ra', ROOM_GO_RA: 'room_go_ra',
ROOM_TOGGLE_FOLLOW_THREADS: 'room_toggle_follow_threads', ROOM_TOGGLE_FOLLOW_THREADS: 'room_toggle_follow_threads',
ROOM_GO_TEAM_CHANNELS: 'room_go_team_channels', ROOM_GO_TEAM_CHANNELS: 'room_go_team_channels',

View File

@ -61,6 +61,8 @@ interface IRoomActionsViewProps extends IBaseScreen<ChatsStackParamList, 'RoomAc
createTeamPermission?: string[]; createTeamPermission?: string[];
addTeamChannelPermission?: string[]; addTeamChannelPermission?: string[];
convertTeamPermission?: string[]; convertTeamPermission?: string[];
viewCannedResponsesPermission?: string[];
livechatAllowManualOnHold?: boolean;
} }
interface IRoomActionsViewState { interface IRoomActionsViewState {
@ -77,6 +79,8 @@ interface IRoomActionsViewState {
canCreateTeam: boolean; canCreateTeam: boolean;
canAddChannelToTeam: boolean; canAddChannelToTeam: boolean;
canConvertTeam: boolean; canConvertTeam: boolean;
canPlaceLivechatOnHold: boolean;
isOnHold: boolean;
} }
class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomActionsViewState> { class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomActionsViewState> {
@ -127,13 +131,15 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
canToggleEncryption: false, canToggleEncryption: false,
canCreateTeam: false, canCreateTeam: false,
canAddChannelToTeam: false, canAddChannelToTeam: false,
canConvertTeam: false canConvertTeam: false,
canPlaceLivechatOnHold: false,
isOnHold: false
}; };
if (room && room.observe && room.rid) { if (room && room.observe && room.rid) {
this.roomObservable = room.observe(); this.roomObservable = room.observe();
this.subscription = this.roomObservable.subscribe(changes => { this.subscription = this.roomObservable.subscribe(changes => {
if (this.mounted) { if (this.mounted) {
this.setState({ room: changes }); this.setState({ room: changes, isOnHold: !!changes?.onHold });
} else { } else {
// @ts-ignore // @ts-ignore
this.state.room = changes; this.state.room = changes;
@ -201,6 +207,25 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
canAddChannelToTeam, canAddChannelToTeam,
canConvertTeam canConvertTeam
}); });
// livechat permissions
if (room.t === 'l') {
const canPlaceLivechatOnHold = this.canPlaceLivechatOnHold();
this.setState({ canPlaceLivechatOnHold });
}
}
}
componentDidUpdate(prevProps: IRoomActionsViewProps, prevState: IRoomActionsViewState) {
const { livechatAllowManualOnHold } = this.props;
const { room, isOnHold } = this.state;
if (
room.t === 'l' &&
(isOnHold !== prevState.isOnHold || prevProps.livechatAllowManualOnHold !== livechatAllowManualOnHold)
) {
const canPlaceLivechatOnHold = this.canPlaceLivechatOnHold();
this.setState({ canPlaceLivechatOnHold });
} }
} }
@ -334,6 +359,13 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
return result; return result;
}; };
canPlaceLivechatOnHold = (): boolean => {
const { livechatAllowManualOnHold } = this.props;
const { room } = this.state;
return !!(livechatAllowManualOnHold && !room?.lastMessage?.token && room?.lastMessage?.u && !room.onHold);
};
renderEncryptedSwitch = () => { renderEncryptedSwitch = () => {
const { room, canToggleEncryption, canEdit } = this.state; const { room, canToggleEncryption, canEdit } = this.state;
const { encrypted } = room; const { encrypted } = room;
@ -358,6 +390,24 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
dispatch(closeRoom(rid)); dispatch(closeRoom(rid));
}; };
placeOnHoldLivechat = () => {
const { navigation } = this.props;
const { room } = this.state;
showConfirmationAlert({
title: I18n.t('Are_you_sure_question_mark'),
message: I18n.t('Would_like_to_place_on_hold'),
confirmationText: I18n.t('Yes'),
onPress: async () => {
try {
await RocketChat.onHoldLivechat(room.rid);
navigation.navigate('RoomsListView');
} catch (e: any) {
showErrorAlert(e.data?.error, I18n.t('Oops'));
}
}
});
};
returnLivechat = () => { returnLivechat = () => {
const { const {
room: { rid } room: { rid }
@ -960,7 +1010,7 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
}; };
renderOmnichannelSection = () => { renderOmnichannelSection = () => {
const { room } = this.state; const { room, canPlaceLivechatOnHold } = this.state;
const { rid, t } = room; const { rid, t } = room;
const { theme } = this.props; const { theme } = this.props;
@ -987,6 +1037,22 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
</> </>
) : null} ) : null}
{['l'].includes(t) && !this.isOmnichannelPreview && canPlaceLivechatOnHold ? (
<>
<List.Item
title='Place_chat_on_hold'
onPress={() =>
this.onPressTouchable({
event: this.placeOnHoldLivechat
})
}
left={() => <List.Icon name='pause' />}
showActionIndicator
/>
<List.Separator />
</>
) : null}
{this.omnichannelPermissions.canReturnQueue ? ( {this.omnichannelPermissions.canReturnQueue ? (
<> <>
<List.Item <List.Item
@ -1277,7 +1343,8 @@ const mapStateToProps = (state: IApplicationState) => ({
viewBroadcastMemberListPermission: state.permissions['view-broadcast-member-list'], viewBroadcastMemberListPermission: state.permissions['view-broadcast-member-list'],
createTeamPermission: state.permissions['create-team'], createTeamPermission: state.permissions['create-team'],
addTeamChannelPermission: state.permissions['add-team-channel'], addTeamChannelPermission: state.permissions['add-team-channel'],
convertTeamPermission: state.permissions['convert-team'] convertTeamPermission: state.permissions['convert-team'],
livechatAllowManualOnHold: state.settings.Livechat_allow_manual_on_hold as boolean
}); });
export default connect(mapStateToProps)(withTheme(withDimensions(RoomActionsView))); export default connect(mapStateToProps)(withTheme(withDimensions(RoomActionsView)));

View File

@ -46,7 +46,7 @@ import Navigation from '../../lib/navigation/appNavigation';
import SafeAreaView from '../../containers/SafeAreaView'; import SafeAreaView from '../../containers/SafeAreaView';
import { withDimensions } from '../../dimensions'; import { withDimensions } from '../../dimensions';
import { getHeaderTitlePosition } from '../../containers/Header'; import { getHeaderTitlePosition } from '../../containers/Header';
import { takeInquiry } from '../../ee/omnichannel/lib'; import { takeInquiry, takeResume } from '../../ee/omnichannel/lib';
import Loading from '../../containers/Loading'; import Loading from '../../containers/Loading';
import { goRoom, TGoRoomItem } from '../../utils/goRoom'; import { goRoom, TGoRoomItem } from '../../utils/goRoom';
import getThreadName from '../../lib/methods/getThreadName'; import getThreadName from '../../lib/methods/getThreadName';
@ -120,7 +120,8 @@ const roomAttrsUpdate = [
'joinCodeRequired', 'joinCodeRequired',
'teamMain', 'teamMain',
'teamId', 'teamId',
'status' 'status',
'onHold'
] as const; ] as const;
interface IRoomViewProps extends IBaseScreen<ChatsStackParamList, 'RoomView'> { interface IRoomViewProps extends IBaseScreen<ChatsStackParamList, 'RoomView'> {
@ -1006,6 +1007,22 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
} }
}; };
resumeRoom = async () => {
logEvent(events.ROOM_RESUME);
try {
const { room } = this.state;
if (this.isOmnichannel) {
if ('rid' in room) {
await takeResume(room.rid);
}
this.onJoin();
}
} catch (e) {
log(e);
}
};
getThreadName = (tmid: string, messageId: string) => { getThreadName = (tmid: string, messageId: string) => {
const { rid } = this.state.room; const { rid } = this.state.room;
return getThreadName(rid, tmid, messageId); return getThreadName(rid, tmid, messageId);
@ -1296,6 +1313,24 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
if (!this.rid) { if (!this.rid) {
return null; return null;
} }
if ('onHold' in room && room.onHold) {
return (
<View style={styles.joinRoomContainer} key='room-view-chat-on-hold' testID='room-view-chat-on-hold'>
<Text accessibilityLabel={I18n.t('Chat_is_on_hold')} style={[styles.previewMode, { color: themes[theme].titleText }]}>
{I18n.t('Chat_is_on_hold')}
</Text>
<Touch
onPress={this.resumeRoom}
style={[styles.joinRoomButton, { backgroundColor: themes[theme].actionTintColor }]}
enabled={!loading}
theme={theme}>
<Text style={[styles.joinRoomText, { color: themes[theme].buttonText }]} testID='room-view-chat-on-hold-button'>
{I18n.t('Resume')}
</Text>
</Touch>
</View>
);
}
if (!joined && !this.tmid) { if (!joined && !this.tmid) {
return ( return (
<View style={styles.joinRoomContainer} key='room-view-join' testID='room-view-join'> <View style={styles.joinRoomContainer} key='room-view-join' testID='room-view-join'>

View File

@ -10,7 +10,7 @@ import { StackNavigationOptions } from '@react-navigation/stack';
import database from '../../lib/database'; import database from '../../lib/database';
import RocketChat from '../../lib/rocketchat'; import RocketChat from '../../lib/rocketchat';
import RoomItem, { ROW_HEIGHT, ROW_HEIGHT_CONDENSED } from '../../presentation/RoomItem'; import RoomItem, { ROW_HEIGHT, ROW_HEIGHT_CONDENSED } from '../../containers/RoomItem';
import log, { logEvent, events } from '../../utils/log'; import log, { logEvent, events } from '../../utils/log';
import I18n from '../../i18n'; import I18n from '../../i18n';
import { closeSearchHeader, closeServerDropdown, openSearchHeader, roomsRequest } from '../../actions/rooms'; import { closeSearchHeader, closeServerDropdown, openSearchHeader, roomsRequest } from '../../actions/rooms';
@ -88,7 +88,8 @@ interface IRoomsListViewState {
searching: boolean; searching: boolean;
search: ISubscription[]; search: ISubscription[];
loading: boolean; loading: boolean;
chatsUpdate: []; chatsUpdate: string[];
omnichannelsUpdate: string[];
chats: ISubscription[]; chats: ISubscription[];
item: ISubscription; item: ISubscription;
canCreateRoom: boolean; canCreateRoom: boolean;
@ -107,7 +108,8 @@ const DISCUSSIONS_HEADER = 'Discussions';
const TEAMS_HEADER = 'Teams'; const TEAMS_HEADER = 'Teams';
const CHANNELS_HEADER = 'Channels'; const CHANNELS_HEADER = 'Channels';
const DM_HEADER = 'Direct_Messages'; const DM_HEADER = 'Direct_Messages';
const OMNICHANNEL_HEADER = 'Open_Livechats'; const OMNICHANNEL_HEADER_IN_PROGRESS = 'Open_Livechats';
const OMNICHANNEL_HEADER_ON_HOLD = 'On_hold_Livechats';
const QUERY_SIZE = 20; const QUERY_SIZE = 20;
const filterIsUnread = (s: TSubscriptionModel) => (s.unread > 0 || s.tunread?.length > 0 || s.alert) && !s.hideUnreadStatus; const filterIsUnread = (s: TSubscriptionModel) => (s.unread > 0 || s.tunread?.length > 0 || s.alert) && !s.hideUnreadStatus;
@ -172,6 +174,7 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
search: [], search: [],
loading: true, loading: true,
chatsUpdate: [], chatsUpdate: [],
omnichannelsUpdate: [],
chats: [], chats: [],
item: {} as ISubscription, item: {} as ISubscription,
canCreateRoom: false canCreateRoom: false
@ -231,7 +234,7 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
} }
shouldComponentUpdate(nextProps: IRoomsListViewProps, nextState: IRoomsListViewState) { shouldComponentUpdate(nextProps: IRoomsListViewProps, nextState: IRoomsListViewState) {
const { chatsUpdate, searching, item, canCreateRoom } = this.state; const { chatsUpdate, searching, item, canCreateRoom, omnichannelsUpdate } = this.state;
// eslint-disable-next-line react/destructuring-assignment // eslint-disable-next-line react/destructuring-assignment
const propsUpdated = shouldUpdateProps.some(key => nextProps[key] !== this.props[key]); const propsUpdated = shouldUpdateProps.some(key => nextProps[key] !== this.props[key]);
if (propsUpdated) { if (propsUpdated) {
@ -260,6 +263,12 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
this.shouldUpdate = true; this.shouldUpdate = true;
} }
const omnichannelsNotEqual = !dequal(nextState.omnichannelsUpdate, omnichannelsUpdate);
if (omnichannelsNotEqual) {
this.shouldUpdate = true;
}
if (nextState.searching !== searching) { if (nextState.searching !== searching) {
return true; return true;
} }
@ -295,7 +304,7 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
return true; return true;
} }
// If it's focused and there are changes, update // If it's focused and there are changes, update
if (chatsNotEqual) { if (chatsNotEqual || omnichannelsNotEqual) {
this.shouldUpdate = false; this.shouldUpdate = false;
return true; return true;
} }
@ -480,21 +489,21 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
observable = await db observable = await db
.get('subscriptions') .get('subscriptions')
.query(...defaultWhereClause) .query(...defaultWhereClause)
.observeWithColumns(['alert']); .observeWithColumns(['alert', 'on_hold']);
// When we're NOT grouping // When we're NOT grouping
} else { } else {
this.count += QUERY_SIZE; this.count += QUERY_SIZE;
observable = await db observable = await db
.get('subscriptions') .get('subscriptions')
.query(...defaultWhereClause, Q.experimentalSkip(0), Q.experimentalTake(this.count)) .query(...defaultWhereClause, Q.experimentalSkip(0), Q.experimentalTake(this.count))
.observe(); .observeWithColumns(['on_hold']);
} }
this.querySubscription = observable.subscribe(data => { this.querySubscription = observable.subscribe(data => {
let tempChats = [] as TSubscriptionModel[]; let tempChats = [] as TSubscriptionModel[];
let chats = data; let chats = data;
let omnichannelsUpdate: string[] = [];
let chatsUpdate = []; let chatsUpdate = [];
if (showUnread) { if (showUnread) {
/** /**
@ -513,8 +522,12 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
const isOmnichannelAgent = user?.roles?.includes('livechat-agent'); const isOmnichannelAgent = user?.roles?.includes('livechat-agent');
if (isOmnichannelAgent) { if (isOmnichannelAgent) {
const omnichannel = chats.filter(s => filterIsOmnichannel(s)); const omnichannel = chats.filter(s => filterIsOmnichannel(s));
const omnichannelInProgress = omnichannel.filter(s => !s.onHold);
const omnichannelOnHold = omnichannel.filter(s => s.onHold);
chats = chats.filter(s => !filterIsOmnichannel(s)); chats = chats.filter(s => !filterIsOmnichannel(s));
tempChats = this.addRoomsGroup(omnichannel, OMNICHANNEL_HEADER, tempChats); omnichannelsUpdate = omnichannelInProgress.map(s => s.rid);
tempChats = this.addRoomsGroup(omnichannelInProgress, OMNICHANNEL_HEADER_IN_PROGRESS, tempChats);
tempChats = this.addRoomsGroup(omnichannelOnHold, OMNICHANNEL_HEADER_ON_HOLD, tempChats);
} }
// unread // unread
@ -551,6 +564,7 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
this.internalSetState({ this.internalSetState({
chats: tempChats, chats: tempChats,
chatsUpdate, chatsUpdate,
omnichannelsUpdate,
loading: false loading: false
}); });
} else { } else {
@ -559,6 +573,8 @@ class RoomsListView extends React.Component<IRoomsListViewProps, IRoomsListViewS
// @ts-ignore // @ts-ignore
this.state.chatsUpdate = chatsUpdate; this.state.chatsUpdate = chatsUpdate;
// @ts-ignore // @ts-ignore
this.state.omnichannelsUpdate = omnichannelsUpdate;
// @ts-ignore
this.state.loading = false; this.state.loading = false;
} }
}); });

View File

@ -24,7 +24,7 @@ import I18n from '../i18n';
import database from '../lib/database'; import database from '../lib/database';
import { CustomIcon } from '../lib/Icons'; import { CustomIcon } from '../lib/Icons';
import RocketChat from '../lib/rocketchat'; import RocketChat from '../lib/rocketchat';
import RoomItem, { ROW_HEIGHT } from '../presentation/RoomItem'; import RoomItem, { ROW_HEIGHT } from '../containers/RoomItem';
import { getUserSelector } from '../selectors/login'; import { getUserSelector } from '../selectors/login';
import { ChatsStackParamList } from '../stacks/types'; import { ChatsStackParamList } from '../stacks/types';
import { TSupportedThemes, withTheme } from '../theme'; import { TSupportedThemes, withTheme } from '../theme';

View File

@ -39,14 +39,14 @@ PODS:
- UMCore - UMCore
- EXWebBrowser (9.2.0): - EXWebBrowser (9.2.0):
- UMCore - UMCore
- FBLazyVector (0.64.2) - FBLazyVector (0.64.2-rocket)
- FBReactNativeSpec (0.64.2): - FBReactNativeSpec (0.64.2-rocket):
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTRequired (= 0.64.2) - RCTRequired (= 0.64.2-rocket)
- RCTTypeSafety (= 0.64.2) - RCTTypeSafety (= 0.64.2-rocket)
- React-Core (= 0.64.2) - React-Core (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (= 0.64.2) - ReactCommon/turbomodule/core (= 0.64.2-rocket)
- Firebase/Analytics (6.27.1): - Firebase/Analytics (6.27.1):
- Firebase/Core - Firebase/Core
- Firebase/Core (6.27.1): - Firebase/Core (6.27.1):
@ -201,200 +201,200 @@ PODS:
- DoubleConversion - DoubleConversion
- glog - glog
- libevent - libevent
- RCTRequired (0.64.2) - RCTRequired (0.64.2-rocket)
- RCTTypeSafety (0.64.2): - RCTTypeSafety (0.64.2-rocket):
- FBLazyVector (= 0.64.2) - FBLazyVector (= 0.64.2-rocket)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTRequired (= 0.64.2) - RCTRequired (= 0.64.2-rocket)
- React-Core (= 0.64.2) - React-Core (= 0.64.2-rocket)
- React (0.64.2): - React (0.64.2-rocket):
- React-Core (= 0.64.2) - React-Core (= 0.64.2-rocket)
- React-Core/DevSupport (= 0.64.2) - React-Core/DevSupport (= 0.64.2-rocket)
- React-Core/RCTWebSocket (= 0.64.2) - React-Core/RCTWebSocket (= 0.64.2-rocket)
- React-RCTActionSheet (= 0.64.2) - React-RCTActionSheet (= 0.64.2-rocket)
- React-RCTAnimation (= 0.64.2) - React-RCTAnimation (= 0.64.2-rocket)
- React-RCTBlob (= 0.64.2) - React-RCTBlob (= 0.64.2-rocket)
- React-RCTImage (= 0.64.2) - React-RCTImage (= 0.64.2-rocket)
- React-RCTLinking (= 0.64.2) - React-RCTLinking (= 0.64.2-rocket)
- React-RCTNetwork (= 0.64.2) - React-RCTNetwork (= 0.64.2-rocket)
- React-RCTSettings (= 0.64.2) - React-RCTSettings (= 0.64.2-rocket)
- React-RCTText (= 0.64.2) - React-RCTText (= 0.64.2-rocket)
- React-RCTVibration (= 0.64.2) - React-RCTVibration (= 0.64.2-rocket)
- React-callinvoker (0.64.2) - React-callinvoker (0.64.2-rocket)
- React-Core (0.64.2): - React-Core (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default (= 0.64.2) - React-Core/Default (= 0.64.2-rocket)
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/CoreModulesHeaders (0.64.2): - React-Core/CoreModulesHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/Default (0.64.2): - React-Core/Default (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/DevSupport (0.64.2): - React-Core/DevSupport (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default (= 0.64.2) - React-Core/Default (= 0.64.2-rocket)
- React-Core/RCTWebSocket (= 0.64.2) - React-Core/RCTWebSocket (= 0.64.2-rocket)
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-jsinspector (= 0.64.2) - React-jsinspector (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/Hermes (0.64.2): - React-Core/Hermes (0.64.2-rocket):
- glog - glog
- hermes-engine - hermes-engine
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCT-Folly/Futures - RCT-Folly/Futures
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTActionSheetHeaders (0.64.2): - React-Core/RCTActionSheetHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTAnimationHeaders (0.64.2): - React-Core/RCTAnimationHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTBlobHeaders (0.64.2): - React-Core/RCTBlobHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTImageHeaders (0.64.2): - React-Core/RCTImageHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTLinkingHeaders (0.64.2): - React-Core/RCTLinkingHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTNetworkHeaders (0.64.2): - React-Core/RCTNetworkHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTSettingsHeaders (0.64.2): - React-Core/RCTSettingsHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTTextHeaders (0.64.2): - React-Core/RCTTextHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTVibrationHeaders (0.64.2): - React-Core/RCTVibrationHeaders (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default - React-Core/Default
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-Core/RCTWebSocket (0.64.2): - React-Core/RCTWebSocket (0.64.2-rocket):
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/Default (= 0.64.2) - React-Core/Default (= 0.64.2-rocket)
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsiexecutor (= 0.64.2) - React-jsiexecutor (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- Yoga - Yoga
- React-CoreModules (0.64.2): - React-CoreModules (0.64.2-rocket):
- FBReactNativeSpec (= 0.64.2) - FBReactNativeSpec (= 0.64.2-rocket)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2) - RCTTypeSafety (= 0.64.2-rocket)
- React-Core/CoreModulesHeaders (= 0.64.2) - React-Core/CoreModulesHeaders (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-RCTImage (= 0.64.2) - React-RCTImage (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (= 0.64.2) - ReactCommon/turbomodule/core (= 0.64.2-rocket)
- React-cxxreact (0.64.2): - React-cxxreact (0.64.2-rocket):
- boost-for-react-native (= 1.63.0) - boost-for-react-native (= 1.63.0)
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-callinvoker (= 0.64.2) - React-callinvoker (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-jsinspector (= 0.64.2) - React-jsinspector (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- React-runtimeexecutor (= 0.64.2) - React-runtimeexecutor (= 0.64.2-rocket)
- React-jsi (0.64.2): - React-jsi (0.64.2-rocket):
- boost-for-react-native (= 1.63.0) - boost-for-react-native (= 1.63.0)
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-jsi/Default (= 0.64.2) - React-jsi/Default (= 0.64.2-rocket)
- React-jsi/Default (0.64.2): - React-jsi/Default (0.64.2-rocket):
- boost-for-react-native (= 1.63.0) - boost-for-react-native (= 1.63.0)
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-jsiexecutor (0.64.2): - React-jsiexecutor (0.64.2-rocket):
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- React-jsinspector (0.64.2) - React-jsinspector (0.64.2-rocket)
- react-native-appearance (0.3.4): - react-native-appearance (0.3.4):
- React - React
- react-native-background-timer (2.4.1): - react-native-background-timer (2.4.1):
@ -430,70 +430,70 @@ PODS:
- React - React
- react-native-webview (10.3.2): - react-native-webview (10.3.2):
- React - React
- React-perflogger (0.64.2) - React-perflogger (0.64.2-rocket)
- React-RCTActionSheet (0.64.2): - React-RCTActionSheet (0.64.2-rocket):
- React-Core/RCTActionSheetHeaders (= 0.64.2) - React-Core/RCTActionSheetHeaders (= 0.64.2-rocket)
- React-RCTAnimation (0.64.2): - React-RCTAnimation (0.64.2-rocket):
- FBReactNativeSpec (= 0.64.2) - FBReactNativeSpec (= 0.64.2-rocket)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2) - RCTTypeSafety (= 0.64.2-rocket)
- React-Core/RCTAnimationHeaders (= 0.64.2) - React-Core/RCTAnimationHeaders (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (= 0.64.2) - ReactCommon/turbomodule/core (= 0.64.2-rocket)
- React-RCTBlob (0.64.2): - React-RCTBlob (0.64.2-rocket):
- FBReactNativeSpec (= 0.64.2) - FBReactNativeSpec (= 0.64.2-rocket)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/RCTBlobHeaders (= 0.64.2) - React-Core/RCTBlobHeaders (= 0.64.2-rocket)
- React-Core/RCTWebSocket (= 0.64.2) - React-Core/RCTWebSocket (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-RCTNetwork (= 0.64.2) - React-RCTNetwork (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (= 0.64.2) - ReactCommon/turbomodule/core (= 0.64.2-rocket)
- React-RCTImage (0.64.2): - React-RCTImage (0.64.2-rocket):
- FBReactNativeSpec (= 0.64.2) - FBReactNativeSpec (= 0.64.2-rocket)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2) - RCTTypeSafety (= 0.64.2-rocket)
- React-Core/RCTImageHeaders (= 0.64.2) - React-Core/RCTImageHeaders (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-RCTNetwork (= 0.64.2) - React-RCTNetwork (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (= 0.64.2) - ReactCommon/turbomodule/core (= 0.64.2-rocket)
- React-RCTLinking (0.64.2): - React-RCTLinking (0.64.2-rocket):
- FBReactNativeSpec (= 0.64.2) - FBReactNativeSpec (= 0.64.2-rocket)
- React-Core/RCTLinkingHeaders (= 0.64.2) - React-Core/RCTLinkingHeaders (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (= 0.64.2) - ReactCommon/turbomodule/core (= 0.64.2-rocket)
- React-RCTNetwork (0.64.2): - React-RCTNetwork (0.64.2-rocket):
- FBReactNativeSpec (= 0.64.2) - FBReactNativeSpec (= 0.64.2-rocket)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2) - RCTTypeSafety (= 0.64.2-rocket)
- React-Core/RCTNetworkHeaders (= 0.64.2) - React-Core/RCTNetworkHeaders (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (= 0.64.2) - ReactCommon/turbomodule/core (= 0.64.2-rocket)
- React-RCTSettings (0.64.2): - React-RCTSettings (0.64.2-rocket):
- FBReactNativeSpec (= 0.64.2) - FBReactNativeSpec (= 0.64.2-rocket)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- RCTTypeSafety (= 0.64.2) - RCTTypeSafety (= 0.64.2-rocket)
- React-Core/RCTSettingsHeaders (= 0.64.2) - React-Core/RCTSettingsHeaders (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (= 0.64.2) - ReactCommon/turbomodule/core (= 0.64.2-rocket)
- React-RCTText (0.64.2): - React-RCTText (0.64.2-rocket):
- React-Core/RCTTextHeaders (= 0.64.2) - React-Core/RCTTextHeaders (= 0.64.2-rocket)
- React-RCTVibration (0.64.2): - React-RCTVibration (0.64.2-rocket):
- FBReactNativeSpec (= 0.64.2) - FBReactNativeSpec (= 0.64.2-rocket)
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-Core/RCTVibrationHeaders (= 0.64.2) - React-Core/RCTVibrationHeaders (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (= 0.64.2) - ReactCommon/turbomodule/core (= 0.64.2-rocket)
- React-runtimeexecutor (0.64.2): - React-runtimeexecutor (0.64.2-rocket):
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- ReactCommon/turbomodule/core (0.64.2): - ReactCommon/turbomodule/core (0.64.2-rocket):
- DoubleConversion - DoubleConversion
- glog - glog
- RCT-Folly (= 2020.01.13.00) - RCT-Folly (= 2020.01.13.00)
- React-callinvoker (= 0.64.2) - React-callinvoker (= 0.64.2-rocket)
- React-Core (= 0.64.2) - React-Core (= 0.64.2-rocket)
- React-cxxreact (= 0.64.2) - React-cxxreact (= 0.64.2-rocket)
- React-jsi (= 0.64.2) - React-jsi (= 0.64.2-rocket)
- React-perflogger (= 0.64.2) - React-perflogger (= 0.64.2-rocket)
- ReactNativeART (1.2.0): - ReactNativeART (1.2.0):
- React - React
- ReactNativeUiLib (3.0.4): - ReactNativeUiLib (3.0.4):
@ -959,8 +959,8 @@ SPEC CHECKSUMS:
ExpoModulesCore: 2734852616127a6c1fc23012197890a6f3763dc7 ExpoModulesCore: 2734852616127a6c1fc23012197890a6f3763dc7
EXVideoThumbnails: 442c3abadb51a81551a3b53705b7560de390e6f7 EXVideoThumbnails: 442c3abadb51a81551a3b53705b7560de390e6f7
EXWebBrowser: 76783ba5dcb8699237746ecf41a9643d428a4cc5 EXWebBrowser: 76783ba5dcb8699237746ecf41a9643d428a4cc5
FBLazyVector: e686045572151edef46010a6f819ade377dfeb4b FBLazyVector: c9b6dfcde9b3d497793c40d4ccbfbfb05092e0df
FBReactNativeSpec: 686ac17e193dcf7d5df4d772b224504dd2f3ad81 FBReactNativeSpec: c39f7fc0cd6cc64f0a2a5beffc64b1aa5d42740e
Firebase: 919186c8e119dd9372a45fd1dd17a8a942bc1892 Firebase: 919186c8e119dd9372a45fd1dd17a8a942bc1892
FirebaseAnalytics: 5fa308e1b13f838d0f6dc74719ac2a72e8c5afc4 FirebaseAnalytics: 5fa308e1b13f838d0f6dc74719ac2a72e8c5afc4
FirebaseCore: 8cd4f8ea22075e0ee582849b1cf79d8816506085 FirebaseCore: 8cd4f8ea22075e0ee582849b1cf79d8816506085
@ -990,16 +990,16 @@ SPEC CHECKSUMS:
OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b OpenSSL-Universal: 1aa4f6a6ee7256b83db99ec1ccdaa80d10f9af9b
PromisesObjC: b48e0338dbbac2207e611750777895f7a5811b75 PromisesObjC: b48e0338dbbac2207e611750777895f7a5811b75
RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c RCT-Folly: ec7a233ccc97cc556cf7237f0db1ff65b986f27c
RCTRequired: 6d3e854f0e7260a648badd0d44fc364bc9da9728 RCTRequired: 908e7c492c5403cd74fc849bda4dbb13faaa07d7
RCTTypeSafety: c1f31d19349c6b53085766359caac425926fafaa RCTTypeSafety: 7d9dfd02b51d4b77ea76dff3172f9839fe5f599a
React: bda6b6d7ae912de97d7a61aa5c160db24aa2ad69 React: 20a0a14204dd5be4720ce4aaed23b495ad36f9a4
React-callinvoker: 9840ea7e8e88ed73d438edb725574820b29b5baa React-callinvoker: 3677f12b464e2a1d33fb912dac7476b962082933
React-Core: b5e385da7ce5f16a220fc60fd0749eae2c6120f0 React-Core: 46168a72406aaa3a8ce1b4a619041c7f8ca551d8
React-CoreModules: 17071a4e2c5239b01585f4aa8070141168ab298f React-CoreModules: 41bad0ec73eb552f24274128ca02d0dfaf4872cd
React-cxxreact: 9be7b6340ed9f7c53e53deca7779f07cd66525ba React-cxxreact: 12b704b000882b40a246372aa5d9a144d246fc63
React-jsi: 67747b9722f6dab2ffe15b011bcf6b3f2c3f1427 React-jsi: 173749c47ab10c5d2b34d06f849a67e6e44c188a
React-jsiexecutor: 80c46bd381fd06e418e0d4f53672dc1d1945c4c3 React-jsiexecutor: 3b4177ca75332c2db1436907a533a9de13bd2890
React-jsinspector: cc614ec18a9ca96fd275100c16d74d62ee11f0ae React-jsinspector: 669b8dc9d0ee3c3d97294b3e0c571ae4cb3f8f7b
react-native-appearance: 0f0e5fc2fcef70e03d48c8fe6b00b9158c2ba8aa react-native-appearance: 0f0e5fc2fcef70e03d48c8fe6b00b9158c2ba8aa
react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe react-native-background-timer: 17ea5e06803401a379ebf1f20505b793ac44d0fe
react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c react-native-blur: cad4d93b364f91e7b7931b3fa935455487e5c33c
@ -1016,18 +1016,18 @@ SPEC CHECKSUMS:
react-native-simple-crypto: 9b358cdfd34169031d384a8d4ac2ffc40b323876 react-native-simple-crypto: 9b358cdfd34169031d384a8d4ac2ffc40b323876
react-native-slider: e99fc201cefe81270fc9d81714a7a0f5e566b168 react-native-slider: e99fc201cefe81270fc9d81714a7a0f5e566b168
react-native-webview: 679b6f400176e2ea8a785acf7ae16cf282e7d1eb react-native-webview: 679b6f400176e2ea8a785acf7ae16cf282e7d1eb
React-perflogger: 25373e382fed75ce768a443822f07098a15ab737 React-perflogger: a9754427f4270feb5868631cfc669cde64b82a28
React-RCTActionSheet: af7796ba49ffe4ca92e7277a5d992d37203f7da5 React-RCTActionSheet: 6fbd3353009fe546806e815ad523f7c5cd9a48ed
React-RCTAnimation: 6a2e76ab50c6f25b428d81b76a5a45351c4d77aa React-RCTAnimation: 7883e219ea158fa9d005e709a872d186c8aedacb
React-RCTBlob: 02a2887023e0eed99391b6445b2e23a2a6f9226d React-RCTBlob: 1d8acfa1594ea73ded1ca18ba7b8003012bbc78f
React-RCTImage: ce5bf8e7438f2286d9b646a05d6ab11f38b0323d React-RCTImage: 9f1c50d5c3c31dfa6e52a4bd7d216a2ca6b5a409
React-RCTLinking: ccd20742de14e020cb5f99d5c7e0bf0383aefbd9 React-RCTLinking: b3e25ed51bdd43a8cdc106db4f5ddde4c96775ae
React-RCTNetwork: dfb9d089ab0753e5e5f55fc4b1210858f7245647 React-RCTNetwork: 7d33aa95c9d5d1233fd64f7fdb3c559d8dc4086e
React-RCTSettings: b14aef2d83699e48b410fb7c3ba5b66cd3291ae2 React-RCTSettings: ceb09d26b66911681cb83fa6fd1dec281e134f9e
React-RCTText: 41a2e952dd9adc5caf6fb68ed46b275194d5da5f React-RCTText: f91101f87b8a27177365908842704ca225bae878
React-RCTVibration: 24600e3b1aaa77126989bc58b6747509a1ba14f3 React-RCTVibration: a3ec9999fe20508f088fc1588d0964396a457369
React-runtimeexecutor: a9904c6d0218fb9f8b19d6dd88607225927668f9 React-runtimeexecutor: 65327536da4bde62f99fe73db131168350f598e6
ReactCommon: 149906e01aa51142707a10665185db879898e966 ReactCommon: 9ef7f16a55e1abf9f441ab6b2927e3ef86d5b926
ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab ReactNativeART: 78edc68dd4a1e675338cd0cd113319cf3a65f2ab
ReactNativeUiLib: cde7263a7d308b60161cd286f95c9433e79f2f7d ReactNativeUiLib: cde7263a7d308b60161cd286f95c9433e79f2f7d
rn-extensions-share: 5fd84a80e6594706f0dfa1884f2d6d591b382cf5 rn-extensions-share: 5fd84a80e6594706f0dfa1884f2d6d591b382cf5
@ -1062,7 +1062,7 @@ SPEC CHECKSUMS:
UMReactNativeAdapter: d03cefd0e4e4179ab8c490408589f1c8a6c8b785 UMReactNativeAdapter: d03cefd0e4e4179ab8c490408589f1c8a6c8b785
UMTaskManagerInterface: 2be431101b73604e64fbfffcf759336f9d8fccbb UMTaskManagerInterface: 2be431101b73604e64fbfffcf759336f9d8fccbb
WatermelonDB: 577c61fceff16e9f9103b59d14aee4850c0307b6 WatermelonDB: 577c61fceff16e9f9103b59d14aee4850c0307b6
Yoga: 575c581c63e0d35c9a83f4b46d01d63abc1100ac Yoga: b2ad1ced89cee9b06c558f85bbd4816f39f71f0c
YogaKit: f782866e155069a2cca2517aafea43200b01fd5a YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
PODFILE CHECKSUM: 9a08139598e951c19d2daf7ac39687272634d547 PODFILE CHECKSUM: 9a08139598e951c19d2daf7ac39687272634d547

View File

@ -1573,7 +1573,7 @@
"$(inherited)", "$(inherited)",
"$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**",
"$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**",
$PODS_CONFIGURATION_BUILD_DIR/Firebase, "$PODS_CONFIGURATION_BUILD_DIR/Firebase",
); );
INFOPLIST_FILE = ShareRocketChatRN/Info.plist; INFOPLIST_FILE = ShareRocketChatRN/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
@ -1639,7 +1639,7 @@
"$(inherited)", "$(inherited)",
"$(SRCROOT)/../node_modules/rn-extensions-share/ios/**", "$(SRCROOT)/../node_modules/rn-extensions-share/ios/**",
"$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**", "$(SRCROOT)/../node_modules/react-native-firebase/ios/RNFirebase/**",
$PODS_CONFIGURATION_BUILD_DIR/Firebase, "$PODS_CONFIGURATION_BUILD_DIR/Firebase",
); );
INFOPLIST_FILE = ShareRocketChatRN/Info.plist; INFOPLIST_FILE = ShareRocketChatRN/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
@ -1683,7 +1683,7 @@
INFOPLIST_FILE = NotificationService/Info.plist; INFOPLIST_FILE = NotificationService/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 4.26.2; MARKETING_VERSION = 4.27.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
@ -1720,7 +1720,7 @@
INFOPLIST_FILE = NotificationService/Info.plist; INFOPLIST_FILE = NotificationService/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 4.26.2; MARKETING_VERSION = 4.27.0;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService; PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";

View File

@ -26,7 +26,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>4.26.2</string> <string>4.27.0</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleURLTypes</key> <key>CFBundleURLTypes</key>

View File

@ -26,7 +26,7 @@
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>XPC!</string> <string>XPC!</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>4.26.2</string> <string>4.27.0</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>1</string> <string>1</string>
<key>KeychainGroup</key> <key>KeychainGroup</key>

View File

@ -76,20 +76,18 @@ platform :ios do
output_path: './' output_path: './'
) )
update_project_provisioning( update_code_signing_settings(
xcodeproj: 'RocketChatRN.xcodeproj', profile_name: "match AppStore chat.rocket.ios.NotificationService",
profile: "AppStore_chat.rocket.ios.NotificationService.mobileprovision", build_configurations: "Release",
target_filter: "NotificationService", code_sign_identity: "iPhone Distribution",
build_configuration: 'Release', targets: "NotificationService",
code_signing_identity: 'iPhone Distribution'
) )
update_project_provisioning( update_code_signing_settings(
xcodeproj: 'RocketChatRN.xcodeproj', profile_name: "match AppStore chat.rocket.ios.Rocket-Chat-ShareExtension",
profile: "AppStore_chat.rocket.ios.Rocket-Chat-ShareExtension.mobileprovision", build_configurations: "Release",
target_filter: "ShareRocketChatRN", code_sign_identity: "iPhone Distribution",
build_configuration: 'Release', targets: "ShareRocketChatRN",
code_signing_identity: 'iPhone Distribution'
) )
gym( gym(

View File

@ -1,6 +1,6 @@
{ {
"name": "rocket-chat-reactnative", "name": "rocket-chat-reactnative",
"version": "4.26.2", "version": "4.27.0",
"private": true, "private": true,
"scripts": { "scripts": {
"start": "react-native start", "start": "react-native start",

View File

@ -4,7 +4,7 @@ import { Dimensions, ScrollView } from 'react-native';
import { storiesOf } from '@storybook/react-native'; import { storiesOf } from '@storybook/react-native';
import { Provider } from 'react-redux'; import { Provider } from 'react-redux';
import RoomItemComponent from '../../app/presentation/RoomItem/RoomItem'; import RoomItemComponent from '../../app/containers/RoomItem/RoomItem';
import { longText } from '../utils'; import { longText } from '../utils';
import { DisplayMode, themes } from '../../app/lib/constants'; import { DisplayMode, themes } from '../../app/lib/constants';
import { store } from './index'; import { store } from './index';

File diff suppressed because one or more lines are too long

185
yarn.lock
View File

@ -116,24 +116,24 @@
source-map "^0.5.0" source-map "^0.5.0"
"@babel/core@^7.1.6": "@babel/core@^7.1.6":
version "7.17.8" version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.8.tgz#3dac27c190ebc3a4381110d46c80e77efe172e1a" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.17.9.tgz#6bae81a06d95f4d0dec5bb9d74bbc1f58babdcfe"
integrity sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ== integrity sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==
dependencies: dependencies:
"@ampproject/remapping" "^2.1.0" "@ampproject/remapping" "^2.1.0"
"@babel/code-frame" "^7.16.7" "@babel/code-frame" "^7.16.7"
"@babel/generator" "^7.17.7" "@babel/generator" "^7.17.9"
"@babel/helper-compilation-targets" "^7.17.7" "@babel/helper-compilation-targets" "^7.17.7"
"@babel/helper-module-transforms" "^7.17.7" "@babel/helper-module-transforms" "^7.17.7"
"@babel/helpers" "^7.17.8" "@babel/helpers" "^7.17.9"
"@babel/parser" "^7.17.8" "@babel/parser" "^7.17.9"
"@babel/template" "^7.16.7" "@babel/template" "^7.16.7"
"@babel/traverse" "^7.17.3" "@babel/traverse" "^7.17.9"
"@babel/types" "^7.17.0" "@babel/types" "^7.17.0"
convert-source-map "^1.7.0" convert-source-map "^1.7.0"
debug "^4.1.0" debug "^4.1.0"
gensync "^1.0.0-beta.2" gensync "^1.0.0-beta.2"
json5 "^2.1.2" json5 "^2.2.1"
semver "^6.3.0" semver "^6.3.0"
"@babel/core@^7.12.9", "@babel/core@^7.7.2": "@babel/core@^7.12.9", "@babel/core@^7.7.2":
@ -223,10 +223,10 @@
jsesc "^2.5.1" jsesc "^2.5.1"
source-map "^0.5.0" source-map "^0.5.0"
"@babel/generator@^7.17.3", "@babel/generator@^7.17.7", "@babel/generator@^7.5.0": "@babel/generator@^7.17.9", "@babel/generator@^7.5.0":
version "7.17.7" version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.7.tgz#8da2599beb4a86194a3b24df6c085931d9ee45ad" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.17.9.tgz#f4af9fd38fa8de143c29fce3f71852406fc1e2fc"
integrity sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w== integrity sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==
dependencies: dependencies:
"@babel/types" "^7.17.0" "@babel/types" "^7.17.0"
jsesc "^2.5.1" jsesc "^2.5.1"
@ -358,14 +358,14 @@
"@babel/helper-split-export-declaration" "^7.14.5" "@babel/helper-split-export-declaration" "^7.14.5"
"@babel/helper-create-class-features-plugin@^7.16.7": "@babel/helper-create-class-features-plugin@^7.16.7":
version "7.17.6" version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.6.tgz#3778c1ed09a7f3e65e6d6e0f6fbfcc53809d92c9" resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz#71835d7fb9f38bd9f1378e40a4c0902fdc2ea49d"
integrity sha512-SogLLSxXm2OkBbSsHZMM4tUi8fUzjs63AT/d0YQIzr6GSd8Hxsbk2KYDX0k0DweAzGMj/YWeiCsorIdtdcW8Eg== integrity sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==
dependencies: dependencies:
"@babel/helper-annotate-as-pure" "^7.16.7" "@babel/helper-annotate-as-pure" "^7.16.7"
"@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7"
"@babel/helper-function-name" "^7.16.7" "@babel/helper-function-name" "^7.17.9"
"@babel/helper-member-expression-to-functions" "^7.16.7" "@babel/helper-member-expression-to-functions" "^7.17.7"
"@babel/helper-optimise-call-expression" "^7.16.7" "@babel/helper-optimise-call-expression" "^7.16.7"
"@babel/helper-replace-supers" "^7.16.7" "@babel/helper-replace-supers" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7"
@ -471,14 +471,13 @@
"@babel/template" "^7.15.4" "@babel/template" "^7.15.4"
"@babel/types" "^7.15.4" "@babel/types" "^7.15.4"
"@babel/helper-function-name@^7.16.7": "@babel/helper-function-name@^7.17.9":
version "7.16.7" version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz#f1ec51551fb1c8956bc8dd95f38523b6cf375f8f" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz#136fcd54bc1da82fcb47565cf16fd8e444b1ff12"
integrity sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA== integrity sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==
dependencies: dependencies:
"@babel/helper-get-function-arity" "^7.16.7"
"@babel/template" "^7.16.7" "@babel/template" "^7.16.7"
"@babel/types" "^7.16.7" "@babel/types" "^7.17.0"
"@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5": "@babel/helper-function-name@^7.8.3", "@babel/helper-function-name@^7.9.5":
version "7.9.5" version "7.9.5"
@ -510,13 +509,6 @@
dependencies: dependencies:
"@babel/types" "^7.15.4" "@babel/types" "^7.15.4"
"@babel/helper-get-function-arity@^7.16.7":
version "7.16.7"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz#ea08ac753117a669f1508ba06ebcc49156387419"
integrity sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==
dependencies:
"@babel/types" "^7.16.7"
"@babel/helper-get-function-arity@^7.8.3": "@babel/helper-get-function-arity@^7.8.3":
version "7.8.3" version "7.8.3"
resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5"
@ -566,7 +558,7 @@
dependencies: dependencies:
"@babel/types" "^7.15.4" "@babel/types" "^7.15.4"
"@babel/helper-member-expression-to-functions@^7.16.7": "@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7":
version "7.17.7" version "7.17.7"
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4"
integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw== integrity sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==
@ -980,13 +972,13 @@
"@babel/traverse" "^7.14.5" "@babel/traverse" "^7.14.5"
"@babel/types" "^7.14.5" "@babel/types" "^7.14.5"
"@babel/helpers@^7.17.8": "@babel/helpers@^7.17.9":
version "7.17.8" version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.8.tgz#288450be8c6ac7e4e44df37bcc53d345e07bc106" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.17.9.tgz#b2af120821bfbe44f9907b1826e168e819375a1a"
integrity sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw== integrity sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==
dependencies: dependencies:
"@babel/template" "^7.16.7" "@babel/template" "^7.16.7"
"@babel/traverse" "^7.17.3" "@babel/traverse" "^7.17.9"
"@babel/types" "^7.17.0" "@babel/types" "^7.17.0"
"@babel/helpers@^7.9.0": "@babel/helpers@^7.9.0":
@ -1026,9 +1018,9 @@
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@babel/highlight@^7.16.7": "@babel/highlight@^7.16.7":
version "7.16.10" version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.16.10.tgz#744f2eb81579d6eea753c227b0f570ad785aba88" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.17.9.tgz#61b2ee7f32ea0454612def4fccdae0de232b73e3"
integrity sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw== integrity sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==
dependencies: dependencies:
"@babel/helper-validator-identifier" "^7.16.7" "@babel/helper-validator-identifier" "^7.16.7"
chalk "^2.0.0" chalk "^2.0.0"
@ -1043,10 +1035,10 @@
chalk "^2.0.0" chalk "^2.0.0"
js-tokens "^4.0.0" js-tokens "^4.0.0"
"@babel/parser@^7.0.0", "@babel/parser@^7.1.6", "@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8": "@babel/parser@^7.0.0", "@babel/parser@^7.1.6", "@babel/parser@^7.16.7", "@babel/parser@^7.17.9":
version "7.17.8" version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.8.tgz#2817fb9d885dd8132ea0f8eb615a6388cca1c240" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.9.tgz#9c94189a6062f0291418ca021077983058e171ef"
integrity sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ== integrity sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==
"@babel/parser@^7.1.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6": "@babel/parser@^7.1.0", "@babel/parser@^7.8.6", "@babel/parser@^7.9.6":
version "7.9.6" version "7.9.6"
@ -1797,9 +1789,9 @@
babel-plugin-dynamic-import-node "^2.3.3" babel-plugin-dynamic-import-node "^2.3.3"
"@babel/plugin-transform-modules-commonjs@^7.1.0": "@babel/plugin-transform-modules-commonjs@^7.1.0":
version "7.17.7" version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.7.tgz#d86b217c8e45bb5f2dbc11eefc8eab62cf980d19" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz#274be1a2087beec0254d4abd4d86e52442e1e5b6"
integrity sha512-ITPmR2V7MqioMJyrxUo2onHNC3e+MvfFiFIR0RP21d3PtlVb6sfzoxNKiphSZUOM9hEIdzCcZe83ieX3yoqjUA== integrity sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==
dependencies: dependencies:
"@babel/helper-module-transforms" "^7.17.7" "@babel/helper-module-transforms" "^7.17.7"
"@babel/helper-plugin-utils" "^7.16.7" "@babel/helper-plugin-utils" "^7.16.7"
@ -2441,18 +2433,18 @@
"@babel/parser" "^7.16.7" "@babel/parser" "^7.16.7"
"@babel/types" "^7.16.7" "@babel/types" "^7.16.7"
"@babel/traverse@^7.0.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.17.3": "@babel/traverse@^7.0.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9":
version "7.17.3" version "7.17.9"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.3.tgz#0ae0f15b27d9a92ba1f2263358ea7c4e7db47b57" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.9.tgz#1f9b207435d9ae4a8ed6998b2b82300d83c37a0d"
integrity sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw== integrity sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==
dependencies: dependencies:
"@babel/code-frame" "^7.16.7" "@babel/code-frame" "^7.16.7"
"@babel/generator" "^7.17.3" "@babel/generator" "^7.17.9"
"@babel/helper-environment-visitor" "^7.16.7" "@babel/helper-environment-visitor" "^7.16.7"
"@babel/helper-function-name" "^7.16.7" "@babel/helper-function-name" "^7.17.9"
"@babel/helper-hoist-variables" "^7.16.7" "@babel/helper-hoist-variables" "^7.16.7"
"@babel/helper-split-export-declaration" "^7.16.7" "@babel/helper-split-export-declaration" "^7.16.7"
"@babel/parser" "^7.17.3" "@babel/parser" "^7.17.9"
"@babel/types" "^7.17.0" "@babel/types" "^7.17.0"
debug "^4.1.0" debug "^4.1.0"
globals "^11.1.0" globals "^11.1.0"
@ -3565,9 +3557,9 @@
integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg== integrity sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==
"@jridgewell/trace-mapping@^0.3.0": "@jridgewell/trace-mapping@^0.3.0":
version "0.3.4" version "0.3.9"
resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz#f6a0832dffd5b8a6aaa633b7d9f8e8e94c83a0c3" resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9"
integrity sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ== integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
dependencies: dependencies:
"@jridgewell/resolve-uri" "^3.0.3" "@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10" "@jridgewell/sourcemap-codec" "^1.4.10"
@ -5723,9 +5715,9 @@ async-limiter@~1.0.0:
integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==
async@^2.4.0: async@^2.4.0:
version "2.6.3" version "2.6.4"
resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221"
integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==
dependencies: dependencies:
lodash "^4.17.14" lodash "^4.17.14"
@ -6359,10 +6351,10 @@ bplist-parser@0.2.0:
dependencies: dependencies:
big-integer "^1.6.44" big-integer "^1.6.44"
bplist-parser@0.3.0: bplist-parser@0.3.1:
version "0.3.0" version "0.3.1"
resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.0.tgz#ba50666370f61bbf94881636cd9f7d23c5286090" resolved "https://registry.yarnpkg.com/bplist-parser/-/bplist-parser-0.3.1.tgz#e1c90b2ca2a9f9474cc72f6862bbf3fee8341fd1"
integrity sha512-zgmaRvT6AN1JpPPV+S0a1/FAtoxSreYDccZGIqEMSvZl9DMe70mJ7MFzpxa1X+gHVdkToE2haRUHHMiW1OdejA== integrity sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==
dependencies: dependencies:
big-integer "1.6.x" big-integer "1.6.x"
@ -6780,9 +6772,9 @@ caniuse-lite@^1.0.30001264:
integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw== integrity sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==
caniuse-lite@^1.0.30001317: caniuse-lite@^1.0.30001317:
version "1.0.30001322" version "1.0.30001332"
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001322.tgz#2e4c09d11e1e8f852767dab287069a8d0c29d623" resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz#39476d3aa8d83ea76359c70302eafdd4a1d727dd"
integrity sha512-neRmrmIrCGuMnxGSoh+x7zYtQFFgnSY2jaomjU56sCkTA6JINqQrxutF459JpWcWRajvoyn95sOXq4Pqrnyjew== integrity sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==
capture-exit@^2.0.0: capture-exit@^2.0.0:
version "2.0.0" version "2.0.0"
@ -7751,9 +7743,9 @@ data-urls@^2.0.0:
whatwg-url "^8.0.0" whatwg-url "^8.0.0"
dayjs@^1.8.15: dayjs@^1.8.15:
version "1.11.0" version "1.11.1"
resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.0.tgz#009bf7ef2e2ea2d5db2e6583d2d39a4b5061e805" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.1.tgz#90b33a3dda3417258d48ad2771b415def6545eb0"
integrity sha512-JLC809s6Y948/FuCZPm5IX8rRhQwOiyMb2TfVVQEixG7P8Lm/gt5S7yoQZmC8x1UehI9Pb7sksEt4xx14m+7Ug== integrity sha512-ER7EjqVAMkRRsxNCC5YqJ9d9VQYuWdGt7aiH2qA5R5wt8ZmWaP2dLUSIK6y/kVzLMlmh1Tvu5xUf4M/wdGJ5KA==
debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9: debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.9:
version "2.6.9" version "2.6.9"
@ -8273,9 +8265,9 @@ electron-to-chromium@^1.3.857:
integrity sha512-o+FMbCD+hAUJ9S8bfz/FaqA0gE8OpCCm58KhhGogOEqiA1BLFSoVYLi+tW+S/ZavnqBn++n0XZm7HQiBVPs8Jg== integrity sha512-o+FMbCD+hAUJ9S8bfz/FaqA0gE8OpCCm58KhhGogOEqiA1BLFSoVYLi+tW+S/ZavnqBn++n0XZm7HQiBVPs8Jg==
electron-to-chromium@^1.4.84: electron-to-chromium@^1.4.84:
version "1.4.101" version "1.4.118"
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.101.tgz#71f3a10065146d7445ba5d4c06ba2cc063b0817a" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.118.tgz#2d917c71712dac9652cc01af46c7d0bd51552974"
integrity sha512-XJH+XmJjACx1S7ASl/b//KePcda5ocPnFH2jErztXcIS8LpP0SE6rX8ZxiY5/RaDPnaF1rj0fPaHfppzb0e2Aw== integrity sha512-maZIKjnYDvF7Fs35nvVcyr44UcKNwybr93Oba2n3HkKDFAtk0svERkLN/HyczJDS3Fo4wU9th9fUQd09ZLtj1w==
element-resize-detector@^1.2.1: element-resize-detector@^1.2.1:
version "1.2.2" version "1.2.2"
@ -9437,9 +9429,9 @@ flatted@^3.1.0:
integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA== integrity sha512-JaTY/wtrcSyvXJl4IMFHPKyFur1sE9AUqc0QnhOaJ0CxHtAoIV8pYDzeEfAaNEtGkOfq4gr3LBFmdXW5mOQFnA==
flow-parser@0.*: flow-parser@0.*:
version "0.174.1" version "0.176.2"
resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.174.1.tgz#bb81e17fe45a1e64d9752090e819a6744a539fa0" resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.176.2.tgz#e04ac9f766ea9491fd515c84a82ef360e3a0c659"
integrity sha512-nDMOvlFR+4doLpB3OJpseHZ7uEr3ENptlF6qMas/kzQmNcLzMwfQeFX0gGJ/+em7UdldB/nGsk55tDTOvjbCuw== integrity sha512-unqoh60i18C67h2rvK0SCFUBac/waUcx7CF1a5E4D0Cwj1NErTP42RF7yb7+dy25Tpyzt7uwVtXw13Wr17VzWA==
flow-parser@^0.121.0: flow-parser@^0.121.0:
version "0.121.0" version "0.121.0"
@ -9942,9 +9934,9 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6
integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==
graceful-fs@^4.1.3: graceful-fs@^4.1.3:
version "4.2.9" version "4.2.10"
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
graceful-fs@^4.2.2: graceful-fs@^4.2.2:
version "4.2.6" version "4.2.6"
@ -11897,6 +11889,11 @@ json5@^2.1.2:
dependencies: dependencies:
minimist "^1.2.5" minimist "^1.2.5"
json5@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.1.tgz#655d50ed1e6f95ad1a3caababd2b0efda10b395c"
integrity sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==
jsonfile@^2.1.0: jsonfile@^2.1.0:
version "2.4.0" version "2.4.0"
resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-2.4.0.tgz#3736a2b428b87bbda0cc83b53fa3d633a35c2ae8"
@ -13224,9 +13221,9 @@ node-releases@^1.1.77:
integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ== integrity sha512-rB1DUFUNAN4Gn9keO2K1efO35IDK7yKHCdCaIMvFO7yUYmmZYeDjnGKle26G4rwj+LKRQpjyUUvMkPglwGCYNQ==
node-releases@^2.0.2: node-releases@^2.0.2:
version "2.0.2" version "2.0.3"
resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.2.tgz#7139fe71e2f4f11b47d4d2986aaf8c48699e0c01" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.3.tgz#225ee7488e4a5e636da8da52854844f9d716ca96"
integrity sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg== integrity sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==
node-stream-zip@^1.9.1: node-stream-zip@^1.9.1:
version "1.15.0" version "1.15.0"
@ -14078,7 +14075,7 @@ plist@^3.0.1:
xmlbuilder "^9.0.7" xmlbuilder "^9.0.7"
xmldom "^0.5.0" xmldom "^0.5.0"
plist@^3.0.4: plist@^3.0.5:
version "3.0.5" version "3.0.5"
resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987" resolved "https://registry.yarnpkg.com/plist/-/plist-3.0.5.tgz#2cbeb52d10e3cdccccf0c11a63a85d830970a987"
integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA== integrity sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==
@ -14660,9 +14657,9 @@ react-dev-utils@^9.0.0:
text-table "0.2.0" text-table "0.2.0"
react-devtools-core@^4.6.0: react-devtools-core@^4.6.0:
version "4.24.3" version "4.24.4"
resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.3.tgz#371fef3f5c639db0dc59eeef334dd5e10ac61661" resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.24.4.tgz#adaa54569f87ce7c08384d12e0b35122a755cbae"
integrity sha512-+htKZxLxDN14jhRG3+IXRiJqNSGHUiPYrMtv9e7qlZxcbKeJjVs+C/hd8kZF5rydp3faBwFN6ZpTaZnLA3/ZGA== integrity sha512-jbX8Yqyq4YvFEobHyXVlGaH0Cs/+EOdb3PL911bxaR5BnzbB5TE4RFHC1iOgT4vRH3VxIIrVQ7lR9vsiFFCYCA==
dependencies: dependencies:
shell-quote "^1.6.1" shell-quote "^1.6.1"
ws "^7" ws "^7"
@ -15107,7 +15104,7 @@ react-native-webview@10.3.2:
react-native@RocketChat/react-native#0.64.2: react-native@RocketChat/react-native#0.64.2:
version "0.64.2-rocket" version "0.64.2-rocket"
resolved "https://codeload.github.com/RocketChat/react-native/tar.gz/4ad9cbc7e7aed429ba63cb7a78962d24d47f8e28" resolved "https://codeload.github.com/RocketChat/react-native/tar.gz/dc2e7828ac118d848fee1f5bdc837329bfadd205"
dependencies: dependencies:
"@jest/create-cache-key-function" "^27.0.2" "@jest/create-cache-key-function" "^27.0.2"
"@react-native-community/cli" "^5.0.1-alpha.1" "@react-native-community/cli" "^5.0.1-alpha.1"
@ -16194,13 +16191,13 @@ signal-exit@^3.0.0, signal-exit@^3.0.2, signal-exit@^3.0.3:
integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==
simple-plist@^1.0.0: simple-plist@^1.0.0:
version "1.3.0" version "1.3.1"
resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.0.tgz#f451997663eafd8ea6bad353a01caf49ef186d43" resolved "https://registry.yarnpkg.com/simple-plist/-/simple-plist-1.3.1.tgz#16e1d8f62c6c9b691b8383127663d834112fb017"
integrity sha512-uYWpeGFtZtVt2NhG4AHgpwx323zxD85x42heMJBan1qAiqqozIlaGrwrEt6kRjXWRWIXsuV1VLCvVmZan2B5dg== integrity sha512-iMSw5i0XseMnrhtIzRb7XpQEXepa9xhWxGUojHBL43SIpQuDQkh3Wpy67ZbDzZVr6EKxvwVChnVpdl8hEVLDiw==
dependencies: dependencies:
bplist-creator "0.1.0" bplist-creator "0.1.0"
bplist-parser "0.3.0" bplist-parser "0.3.1"
plist "^3.0.4" plist "^3.0.5"
simple-plist@^1.1.0: simple-plist@^1.1.0:
version "1.1.1" version "1.1.1"
@ -17305,9 +17302,9 @@ tslib@^1.8.1, tslib@^1.9.3:
integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==
tslib@^2.0.1: tslib@^2.0.1:
version "2.3.1" version "2.4.0"
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3"
integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==
tslib@^2.0.3: tslib@^2.0.3:
version "2.3.0" version "2.3.0"