Merge 4.32.0 into single-server
This commit is contained in:
commit
1548c15356
|
@ -6,11 +6,13 @@ import RNBootSplash from 'react-native-bootsplash';
|
|||
import { selectServerRequest } from '../app/actions/server';
|
||||
import { mockedStore as store } from '../app/reducers/mockedStore';
|
||||
import database from '../app/lib/database';
|
||||
import { setUser } from '../app/actions/login';
|
||||
|
||||
RNBootSplash.hide();
|
||||
|
||||
const baseUrl = 'https://open.rocket.chat';
|
||||
store.dispatch(selectServerRequest(baseUrl));
|
||||
store.dispatch(setUser({ id: 'abc', username: 'rocket.cat', name: 'Rocket Cat' }));
|
||||
database.setActiveDB(baseUrl);
|
||||
|
||||
const StorybookUIRoot = getStorybookUI({});
|
||||
|
|
|
@ -30,6 +30,7 @@ const getStories = () => {
|
|||
require("../app/containers/markdown/new/NewMarkdown.stories.tsx"),
|
||||
require("../app/containers/message/Components/CollapsibleQuote/CollapsibleQuote.stories.tsx"),
|
||||
require("../app/containers/message/Message.stories.tsx"),
|
||||
require("../app/containers/ReactionsList/ReactionsList.stories.tsx"),
|
||||
require("../app/containers/RoomHeader/RoomHeader.stories.tsx"),
|
||||
require("../app/containers/RoomItem/RoomItem.stories.tsx"),
|
||||
require("../app/containers/SearchBox/SearchBox.stories.tsx"),
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -147,7 +147,7 @@ android {
|
|||
minSdkVersion rootProject.ext.minSdkVersion
|
||||
targetSdkVersion rootProject.ext.targetSdkVersion
|
||||
versionCode VERSIONCODE as Integer
|
||||
versionName "4.31.0"
|
||||
versionName "4.32.0"
|
||||
vectorDrawables.useSupportLibrary = true
|
||||
if (!isFoss) {
|
||||
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]
|
||||
|
@ -351,6 +351,7 @@ android {
|
|||
|
||||
dependencies {
|
||||
implementation project(':@react-native-community_viewpager')
|
||||
implementation "androidx.core:core-splashscreen:1.0.0"
|
||||
playImplementation project(':react-native-notifications')
|
||||
playImplementation 'com.google.firebase:firebase-core:16.0.0'
|
||||
playImplementation project(':@react-native-firebase_app')
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 22 KiB |
|
@ -13,17 +13,8 @@
|
|||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
android:requestLegacyExternalStorage="true"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme"
|
||||
android:theme="@style/BootTheme"
|
||||
tools:replace="android:allowBackup">
|
||||
<activity
|
||||
android:name="com.zoontek.rnbootsplash.RNBootSplashActivity"
|
||||
android:theme="@style/BootTheme"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name="chat.rocket.reactnative.MainActivity"
|
||||
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|screenSize|smallestScreenSize|uiMode"
|
||||
|
@ -56,6 +47,10 @@
|
|||
android:host="jitsi.rocket.chat"
|
||||
android:scheme="rocketchat" />
|
||||
</intent-filter>
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
<category android:name="android.intent.category.LAUNCHER" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
<activity
|
||||
android:name="chat.rocket.reactnative.share.ShareActivity"
|
||||
|
@ -63,7 +58,7 @@
|
|||
android:label="@string/share_extension_name"
|
||||
android:noHistory="true"
|
||||
android:screenOrientation="portrait"
|
||||
android:theme="@style/AppTheme"
|
||||
android:theme="@style/ShareTheme"
|
||||
android:exported="true">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.SEND" />
|
||||
|
|
|
@ -1,24 +1,23 @@
|
|||
package chat.rocket.reactnative;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.content.Intent;
|
||||
import android.content.res.Configuration;
|
||||
import android.os.Bundle;
|
||||
|
||||
import com.facebook.react.ReactRootView;
|
||||
import com.facebook.react.ReactActivityDelegate;
|
||||
import com.facebook.react.ReactActivity;
|
||||
import com.facebook.react.ReactActivityDelegate;
|
||||
import com.facebook.react.ReactRootView;
|
||||
import com.zoontek.rnbootsplash.RNBootSplash;
|
||||
|
||||
import expo.modules.ReactActivityDelegateWrapper;
|
||||
|
||||
import com.zoontek.rnbootsplash.RNBootSplash;
|
||||
|
||||
public class MainActivity extends ReactActivity {
|
||||
|
||||
@Override
|
||||
protected void onCreate(Bundle savedInstanceState) {
|
||||
RNBootSplash.init(this);
|
||||
// https://github.com/software-mansion/react-native-screens/issues/17#issuecomment-424704067
|
||||
super.onCreate(null);
|
||||
RNBootSplash.init(R.drawable.launch_screen, MainActivity.this);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
package chat.rocket.reactnative.share;
|
||||
|
||||
import com.facebook.react.ReactActivity;
|
||||
import com.facebook.react.ReactActivityDelegate;
|
||||
import com.facebook.react.ReactRootView;
|
||||
|
||||
public class ShareActivity extends ReactActivity {
|
||||
@Override
|
||||
|
|
|
@ -1,12 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
|
||||
<!-- the background color. it can be a system color or a custom one defined in colors.xml -->
|
||||
<item android:drawable="@color/splashBackground" />
|
||||
<item>
|
||||
<!-- the app logo, centered horizontally and vertically -->
|
||||
<bitmap
|
||||
android:src="@drawable/splash"
|
||||
android:gravity="center" />
|
||||
</item>
|
||||
</layer-list>
|
|
@ -7,26 +7,16 @@
|
|||
<!-- RN 0.68.2 -->
|
||||
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
|
||||
</style>
|
||||
|
||||
<style name="Share.Window" parent="android:Theme">
|
||||
<item name="android:windowEnterAnimation">@null</item>
|
||||
<item name="android:windowExitAnimation">@null</item>
|
||||
|
||||
<style name="ShareTheme" parent="AppTheme">
|
||||
<item name="android:navigationBarColor">@android:color/transparent</item>
|
||||
<item name="android:statusBarColor">@android:color/transparent</item>
|
||||
</style>
|
||||
|
||||
<style name="Theme.Share.Transparent" parent="android:Theme">
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowBackground">@color/primary_dark</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:windowIsFloating">true</item>
|
||||
<item name="android:backgroundDimEnabled">true</item>
|
||||
<item name="android:windowAnimationStyle">@style/Share.Window</item>
|
||||
</style>
|
||||
|
||||
<style name="BootTheme" parent="AppTheme">
|
||||
<item name="android:background">@drawable/launch_screen</item>
|
||||
<item name="colorPrimaryDark">@color/splashBackground</item>
|
||||
<item name="android:navigationBarColor">@color/splashBackground</item>
|
||||
<style name="BootTheme" parent="Theme.SplashScreen">
|
||||
<item name="windowSplashScreenBackground">@color/splashBackground</item>
|
||||
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_launcher_foreground</item>
|
||||
<item name="postSplashScreenTheme">@style/AppTheme</item>
|
||||
</style>
|
||||
|
||||
<!-- https://github.com/facebook/react-native/blob/d1ab03235cb4b93304150878d2b9057ab45bba77/ReactAndroid/src/main/res/views/modal/values/themes.xml#L5 -->
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 7.5 KiB |
|
@ -1,12 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" android:opacity="opaque">
|
||||
<!-- the background color. it can be a system color or a custom one defined in colors.xml -->
|
||||
<item android:drawable="@color/splashBackground" />
|
||||
<item>
|
||||
<!-- the app logo, centered horizontally and vertically -->
|
||||
<bitmap
|
||||
android:src="@drawable/splash"
|
||||
android:gravity="center" />
|
||||
</item>
|
||||
</layer-list>
|
|
@ -6,7 +6,6 @@
|
|||
android:name="chat.rocket.reactnative.MainPlayApplication"
|
||||
android:label="@string/app_name"
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:theme="@style/AppTheme"
|
||||
android:networkSecurityConfig="@xml/network_security_config"
|
||||
tools:replace="android:name"
|
||||
>
|
||||
|
|
|
@ -29,7 +29,8 @@ const styles = StyleSheet.create({
|
|||
},
|
||||
username: {
|
||||
fontSize: 16,
|
||||
...sharedStyles.textMedium
|
||||
...sharedStyles.textMedium,
|
||||
flexShrink: 1
|
||||
},
|
||||
time: {
|
||||
fontSize: 12,
|
||||
|
@ -67,7 +68,7 @@ const ReplyPreview = React.memo(
|
|||
<View style={[styles.container, { backgroundColor: themes[theme].messageboxBackground }]}>
|
||||
<View style={[styles.messageContainer, { backgroundColor: themes[theme].chatComponentBackground }]}>
|
||||
<View style={styles.header}>
|
||||
<Text style={[styles.username, { color: themes[theme].tintColor }]}>
|
||||
<Text numberOfLines={1} style={[styles.username, { color: themes[theme].tintColor }]}>
|
||||
{useRealName ? message.u?.name : message.u?.username}
|
||||
</Text>
|
||||
<Text style={[styles.time, { color: themes[theme].auxiliaryText }]}>{time}</Text>
|
||||
|
|
|
@ -1,145 +0,0 @@
|
|||
import React from 'react';
|
||||
import { StyleSheet, Text, Pressable, View, ScrollView } from 'react-native';
|
||||
import ScrollableTabView from 'react-native-scrollable-tab-view';
|
||||
import { FlatList } from 'react-native-gesture-handler';
|
||||
|
||||
import Emoji from './message/Emoji';
|
||||
import { useTheme } from '../theme';
|
||||
import { TGetCustomEmoji } from '../definitions/IEmoji';
|
||||
import { IReaction } from '../definitions';
|
||||
import Avatar from './Avatar';
|
||||
import sharedStyles from '../views/Styles';
|
||||
|
||||
const MIN_TAB_WIDTH = 70;
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
reactionsListContainer: { height: '100%', width: '100%' },
|
||||
tabBarItem: {
|
||||
paddingHorizontal: 10,
|
||||
paddingBottom: 10,
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
flexDirection: 'row'
|
||||
},
|
||||
reactionCount: { marginLeft: 5 },
|
||||
emojiName: { margin: 10 },
|
||||
userItemContainer: { marginHorizontal: 10, marginVertical: 5, flexDirection: 'row' },
|
||||
usernameContainer: { marginHorizontal: 10, justifyContent: 'center' },
|
||||
usernameText: { fontSize: 17, ...sharedStyles.textMedium },
|
||||
standardEmojiStyle: { fontSize: 20, color: '#fff' },
|
||||
customEmojiStyle: { width: 25, height: 25 }
|
||||
});
|
||||
|
||||
interface IReactionsListBase {
|
||||
baseUrl: string;
|
||||
getCustomEmoji: TGetCustomEmoji;
|
||||
}
|
||||
|
||||
interface IReactionsListProps extends IReactionsListBase {
|
||||
reactions?: IReaction[];
|
||||
width: number;
|
||||
}
|
||||
|
||||
interface ITabBarItem extends IReactionsListBase {
|
||||
tab: IReaction;
|
||||
index: number;
|
||||
goToPage?: (index: number) => void;
|
||||
}
|
||||
interface IReactionsTabBar extends IReactionsListBase {
|
||||
activeTab?: number;
|
||||
tabs?: IReaction[];
|
||||
goToPage?: (index: number) => void;
|
||||
width: number;
|
||||
}
|
||||
|
||||
const TabBarItem = ({ tab, index, goToPage, baseUrl, getCustomEmoji }: ITabBarItem) => {
|
||||
const { colors } = useTheme();
|
||||
return (
|
||||
<Pressable
|
||||
key={tab.emoji}
|
||||
onPress={() => {
|
||||
goToPage?.(index);
|
||||
}}
|
||||
style={({ pressed }: { pressed: boolean }) => ({
|
||||
opacity: pressed ? 0.7 : 1
|
||||
})}
|
||||
>
|
||||
<View style={styles.tabBarItem}>
|
||||
<Emoji
|
||||
content={tab.emoji}
|
||||
standardEmojiStyle={styles.standardEmojiStyle}
|
||||
customEmojiStyle={styles.customEmojiStyle}
|
||||
baseUrl={baseUrl}
|
||||
getCustomEmoji={getCustomEmoji}
|
||||
/>
|
||||
<Text style={[styles.reactionCount, { color: colors.auxiliaryTintColor }]}>{tab.usernames.length}</Text>
|
||||
</View>
|
||||
</Pressable>
|
||||
);
|
||||
};
|
||||
|
||||
const ReactionsTabBar = ({ tabs, activeTab, goToPage, baseUrl, getCustomEmoji, width }: IReactionsTabBar) => {
|
||||
const tabWidth = tabs && Math.max(width / tabs.length, MIN_TAB_WIDTH);
|
||||
const { colors } = useTheme();
|
||||
return (
|
||||
<View>
|
||||
<ScrollView horizontal={true} showsHorizontalScrollIndicator={false}>
|
||||
{tabs?.map((tab, index) => {
|
||||
const isActiveTab = activeTab === index;
|
||||
return (
|
||||
<View
|
||||
style={{
|
||||
width: tabWidth,
|
||||
borderBottomWidth: isActiveTab ? 2 : 1,
|
||||
borderColor: isActiveTab ? colors.tintActive : colors.separatorColor
|
||||
}}
|
||||
>
|
||||
<TabBarItem tab={tab} index={index} goToPage={goToPage} baseUrl={baseUrl} getCustomEmoji={getCustomEmoji} />
|
||||
</View>
|
||||
);
|
||||
})}
|
||||
</ScrollView>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
const UsersList = ({ tabLabel }: { tabLabel: IReaction }) => {
|
||||
const { colors } = useTheme();
|
||||
const { emoji, usernames } = tabLabel;
|
||||
return (
|
||||
<FlatList
|
||||
data={usernames}
|
||||
ListHeaderComponent={() => (
|
||||
<View style={styles.emojiName}>
|
||||
<Text style={{ color: colors.auxiliaryTintColor }}>{emoji}</Text>
|
||||
</View>
|
||||
)}
|
||||
renderItem={({ item }) => (
|
||||
<View style={styles.userItemContainer}>
|
||||
<Avatar text={item} size={36} />
|
||||
<View style={styles.usernameContainer}>
|
||||
<Text style={[styles.usernameText, { color: colors.titleText }]}>{item}</Text>
|
||||
</View>
|
||||
</View>
|
||||
)}
|
||||
keyExtractor={item => item}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
const ReactionsList = ({ reactions, baseUrl, getCustomEmoji, width }: IReactionsListProps): React.ReactElement => {
|
||||
// sorting reactions in descending order on the basic of number of users reacted
|
||||
const sortedReactions = reactions?.sort((reaction1, reaction2) => reaction2.usernames.length - reaction1.usernames.length);
|
||||
|
||||
return (
|
||||
<View style={styles.reactionsListContainer}>
|
||||
<ScrollableTabView renderTabBar={() => <ReactionsTabBar baseUrl={baseUrl} getCustomEmoji={getCustomEmoji} width={width} />}>
|
||||
{sortedReactions?.map(reaction => (
|
||||
<UsersList tabLabel={reaction} key={reaction.emoji} />
|
||||
))}
|
||||
</ScrollableTabView>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export default ReactionsList;
|
|
@ -0,0 +1,77 @@
|
|||
import React from 'react';
|
||||
import { Text, View, FlatList } from 'react-native';
|
||||
|
||||
import Emoji from '../message/Emoji';
|
||||
import { useTheme } from '../../theme';
|
||||
import { IReaction } from '../../definitions';
|
||||
import { TGetCustomEmoji } from '../../definitions/IEmoji';
|
||||
import I18n from '../../i18n';
|
||||
import styles from './styles';
|
||||
import { useAppSelector } from '../../lib/hooks';
|
||||
|
||||
interface IAllReactionsListItemProps {
|
||||
getCustomEmoji: TGetCustomEmoji;
|
||||
item: IReaction;
|
||||
}
|
||||
|
||||
interface IAllTabProps {
|
||||
getCustomEmoji: TGetCustomEmoji;
|
||||
tabLabel: IReaction;
|
||||
reactions?: IReaction[];
|
||||
}
|
||||
|
||||
const AllReactionsListItem = ({ item, getCustomEmoji }: IAllReactionsListItemProps) => {
|
||||
const { colors } = useTheme();
|
||||
const useRealName = useAppSelector(state => state.settings.UI_Use_Real_Name);
|
||||
const server = useAppSelector(state => state.server.server);
|
||||
const username = useAppSelector(state => state.login.user.username);
|
||||
const count = item.usernames.length;
|
||||
|
||||
let displayNames;
|
||||
if (useRealName && item.names) {
|
||||
displayNames = item.names
|
||||
.slice(0, 3)
|
||||
.map((name, index) => (item.usernames[index] === username ? I18n.t('you') : name))
|
||||
.join(', ');
|
||||
} else {
|
||||
displayNames = item.usernames
|
||||
.slice(0, 3)
|
||||
.map((otherUsername: string) => (username === otherUsername ? I18n.t('you') : otherUsername))
|
||||
.join(', ');
|
||||
}
|
||||
if (count > 3) {
|
||||
displayNames = `${displayNames} ${I18n.t('and_more')} ${count - 3}`;
|
||||
} else {
|
||||
displayNames = displayNames.replace(/,(?=[^,]*$)/, ` ${I18n.t('and')}`);
|
||||
}
|
||||
return (
|
||||
<View style={styles.listItemContainer}>
|
||||
<Emoji
|
||||
content={item.emoji}
|
||||
standardEmojiStyle={styles.allTabStandardEmojiStyle}
|
||||
customEmojiStyle={styles.allTabCustomEmojiStyle}
|
||||
baseUrl={server}
|
||||
getCustomEmoji={getCustomEmoji}
|
||||
/>
|
||||
<View style={styles.textContainer}>
|
||||
<Text style={[styles.allListNPeopleReacted, { color: colors.bodyText }]}>
|
||||
{count === 1 ? I18n.t('1_person_reacted') : I18n.t('N_people_reacted', { n: count })}
|
||||
</Text>
|
||||
<Text style={[styles.allListWhoReacted, { color: colors.auxiliaryText }]}>{displayNames}</Text>
|
||||
</View>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
const AllTab = ({ reactions, getCustomEmoji }: IAllTabProps): React.ReactElement => (
|
||||
<View style={styles.allTabContainer} testID='reactionsListAllTab'>
|
||||
<FlatList
|
||||
data={reactions}
|
||||
contentContainerStyle={styles.listContainer}
|
||||
renderItem={({ item }) => <AllReactionsListItem item={item} getCustomEmoji={getCustomEmoji} />}
|
||||
keyExtractor={item => item.emoji}
|
||||
/>
|
||||
</View>
|
||||
);
|
||||
|
||||
export default AllTab;
|
|
@ -0,0 +1,71 @@
|
|||
import React from 'react';
|
||||
import { View } from 'react-native';
|
||||
|
||||
import { TGetCustomEmoji, IEmoji } from '../../definitions';
|
||||
import ReactionsList from '.';
|
||||
import { mockedStore as store } from '../../reducers/mockedStore';
|
||||
import { updateSettings } from '../../actions/settings';
|
||||
|
||||
const getCustomEmoji: TGetCustomEmoji = content => {
|
||||
const customEmoji = {
|
||||
marioparty: { name: content, extension: 'gif' },
|
||||
react_rocket: { name: content, extension: 'png' },
|
||||
nyan_rocket: { name: content, extension: 'png' }
|
||||
}[content] as IEmoji;
|
||||
return customEmoji;
|
||||
};
|
||||
|
||||
const reactions = [
|
||||
{
|
||||
emoji: ':marioparty:',
|
||||
_id: 'marioparty',
|
||||
usernames: ['rocket.cat', 'diego.mello'],
|
||||
names: ['Rocket Cat', 'Diego Mello']
|
||||
},
|
||||
{
|
||||
emoji: ':react_rocket:',
|
||||
_id: 'react_rocket',
|
||||
usernames: ['rocket.cat', 'diego.mello'],
|
||||
names: ['Rocket Cat', 'Diego Mello']
|
||||
},
|
||||
{
|
||||
emoji: ':nyan_rocket:',
|
||||
_id: 'nyan_rocket',
|
||||
usernames: ['rocket.cat'],
|
||||
names: ['Rocket Cat']
|
||||
},
|
||||
{
|
||||
emoji: ':grinning:',
|
||||
_id: 'grinning',
|
||||
usernames: ['diego.mello'],
|
||||
names: ['Diego Mello']
|
||||
},
|
||||
{
|
||||
emoji: ':tada:',
|
||||
_id: 'tada',
|
||||
usernames: ['diego.mello'],
|
||||
names: ['Diego Mello']
|
||||
}
|
||||
];
|
||||
|
||||
export const ReactionsListStory = () => {
|
||||
store.dispatch(updateSettings('UI_Use_Real_Name', false));
|
||||
return (
|
||||
<View style={{ paddingVertical: 10, flex: 1 }}>
|
||||
<ReactionsList getCustomEmoji={getCustomEmoji} reactions={reactions} />
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export const ReactionsListFullName = () => {
|
||||
store.dispatch(updateSettings('UI_Use_Real_Name', true));
|
||||
return (
|
||||
<View style={{ paddingVertical: 10, flex: 1 }}>
|
||||
<ReactionsList getCustomEmoji={getCustomEmoji} reactions={reactions} />
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export default {
|
||||
title: 'ReactionsList'
|
||||
};
|
|
@ -0,0 +1,79 @@
|
|||
import React from 'react';
|
||||
import { fireEvent, render, within } from '@testing-library/react-native';
|
||||
import { Provider } from 'react-redux';
|
||||
|
||||
import ReactionsList from '.';
|
||||
import { mockedStore } from '../../reducers/mockedStore';
|
||||
|
||||
const getCustomEmoji = jest.fn();
|
||||
const reactions = [
|
||||
{
|
||||
emoji: 'marioparty',
|
||||
_id: 'marioparty',
|
||||
usernames: ['rocket.cat', 'diego.mello'],
|
||||
names: ['Rocket Cat', 'Diego Mello']
|
||||
},
|
||||
{
|
||||
emoji: 'react_rocket',
|
||||
_id: 'react_rocket',
|
||||
usernames: ['rocket.cat', 'diego.mello'],
|
||||
names: ['Rocket Cat', 'Diego Mello']
|
||||
},
|
||||
{
|
||||
emoji: 'nyan_rocket',
|
||||
_id: 'nyan_rocket',
|
||||
usernames: ['rocket.cat'],
|
||||
names: ['Rocket Cat']
|
||||
},
|
||||
{
|
||||
emoji: 'grinning',
|
||||
_id: 'grinning',
|
||||
usernames: ['diego.mello'],
|
||||
names: ['Diego Mello']
|
||||
}
|
||||
];
|
||||
|
||||
const Render = () => (
|
||||
<Provider store={mockedStore}>
|
||||
<ReactionsList getCustomEmoji={getCustomEmoji} reactions={reactions} />
|
||||
</Provider>
|
||||
);
|
||||
|
||||
describe('ReactionsList', () => {
|
||||
test('should render Reactions List', async () => {
|
||||
const { findByTestId } = render(<Render />);
|
||||
const ReactionsListView = await findByTestId('reactionsList');
|
||||
expect(ReactionsListView).toBeTruthy();
|
||||
});
|
||||
|
||||
test('should render tab bar', async () => {
|
||||
const { findByTestId } = render(<Render />);
|
||||
const AllTab = await findByTestId('reactionsTabBar');
|
||||
expect(AllTab).toBeTruthy();
|
||||
});
|
||||
|
||||
test('should render All tab', async () => {
|
||||
const { findByTestId } = render(<Render />);
|
||||
const AllTab = await findByTestId('reactionsListAllTab');
|
||||
expect(AllTab).toBeTruthy();
|
||||
});
|
||||
|
||||
test('correct tab on clicking tab item', async () => {
|
||||
const { findByTestId } = render(<Render />);
|
||||
const tab = await findByTestId(`tabBarItem-${reactions[0].emoji}`);
|
||||
fireEvent.press(tab);
|
||||
const usersList = await findByTestId(`usersList-${reactions[0].emoji}`);
|
||||
expect(usersList).toBeTruthy();
|
||||
const emojiName = await within(usersList).getByTestId(`usersListEmojiName`);
|
||||
expect(emojiName.props.children).toEqual(reactions[0].emoji);
|
||||
});
|
||||
|
||||
test('should render correct number of reactions', async () => {
|
||||
const { findByTestId } = render(<Render />);
|
||||
const tab = await findByTestId(`tabBarItem-${reactions[0].emoji}`);
|
||||
fireEvent.press(tab);
|
||||
const usersList = await findByTestId(`usersList-${reactions[0].emoji}`);
|
||||
const allReactions = await within(usersList).getAllByTestId('userItem');
|
||||
expect(allReactions).toHaveLength(reactions[0].usernames.length);
|
||||
});
|
||||
});
|
|
@ -0,0 +1,89 @@
|
|||
import React from 'react';
|
||||
import { Text, Pressable, View, ScrollView } from 'react-native';
|
||||
|
||||
import Emoji from '../message/Emoji';
|
||||
import { useTheme } from '../../theme';
|
||||
import { IReaction } from '../../definitions';
|
||||
import { TGetCustomEmoji } from '../../definitions/IEmoji';
|
||||
import I18n from '../../i18n';
|
||||
import styles, { MIN_TAB_WIDTH } from './styles';
|
||||
import { useDimensions, useOrientation } from '../../dimensions';
|
||||
import { useAppSelector } from '../../lib/hooks';
|
||||
|
||||
interface ITabBarItem {
|
||||
getCustomEmoji: TGetCustomEmoji;
|
||||
tab: IReaction;
|
||||
index: number;
|
||||
goToPage?: (index: number) => void;
|
||||
}
|
||||
interface IReactionsTabBar {
|
||||
getCustomEmoji: TGetCustomEmoji;
|
||||
activeTab?: number;
|
||||
tabs?: IReaction[];
|
||||
goToPage?: (index: number) => void;
|
||||
}
|
||||
|
||||
const TabBarItem = ({ tab, index, goToPage, getCustomEmoji }: ITabBarItem) => {
|
||||
const { colors } = useTheme();
|
||||
const server = useAppSelector(state => state.server.server);
|
||||
return (
|
||||
<Pressable
|
||||
key={tab.emoji}
|
||||
onPress={() => {
|
||||
goToPage?.(index);
|
||||
}}
|
||||
style={({ pressed }: { pressed: boolean }) => ({
|
||||
opacity: pressed ? 0.7 : 1
|
||||
})}
|
||||
testID={`tabBarItem-${tab.emoji}`}
|
||||
>
|
||||
<View style={styles.tabBarItem}>
|
||||
{tab._id === 'All' ? (
|
||||
<Text style={[styles.allTabItem, { color: colors.auxiliaryTintColor }]}>{I18n.t('All')}</Text>
|
||||
) : (
|
||||
<>
|
||||
<Emoji
|
||||
content={tab.emoji}
|
||||
standardEmojiStyle={styles.standardEmojiStyle}
|
||||
customEmojiStyle={styles.customEmojiStyle}
|
||||
baseUrl={server}
|
||||
getCustomEmoji={getCustomEmoji}
|
||||
/>
|
||||
<Text style={[styles.reactionCount, { color: colors.auxiliaryTintColor }]}>{tab.usernames.length}</Text>
|
||||
</>
|
||||
)}
|
||||
</View>
|
||||
</Pressable>
|
||||
);
|
||||
};
|
||||
|
||||
const ReactionsTabBar = ({ tabs, activeTab, goToPage, getCustomEmoji }: IReactionsTabBar): React.ReactElement => {
|
||||
const { isLandscape } = useOrientation();
|
||||
const { width } = useDimensions();
|
||||
const reactionsListWidth = isLandscape ? width / 2 : width;
|
||||
const tabWidth = tabs && Math.max(reactionsListWidth / tabs.length, MIN_TAB_WIDTH);
|
||||
const { colors } = useTheme();
|
||||
return (
|
||||
<View testID='reactionsTabBar'>
|
||||
<ScrollView horizontal={true} showsHorizontalScrollIndicator={false}>
|
||||
{tabs?.map((tab, index) => {
|
||||
const isActiveTab = activeTab === index;
|
||||
return (
|
||||
<View
|
||||
style={{
|
||||
width: tabWidth,
|
||||
borderBottomWidth: isActiveTab ? 2 : 1,
|
||||
borderColor: isActiveTab ? colors.tintActive : colors.separatorColor
|
||||
}}
|
||||
key={tab.emoji}
|
||||
>
|
||||
<TabBarItem tab={tab} index={index} goToPage={goToPage} getCustomEmoji={getCustomEmoji} />
|
||||
</View>
|
||||
);
|
||||
})}
|
||||
</ScrollView>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export default ReactionsTabBar;
|
|
@ -0,0 +1,47 @@
|
|||
import React from 'react';
|
||||
import { Text, View, FlatList } from 'react-native';
|
||||
import { useSelector } from 'react-redux';
|
||||
|
||||
import { useTheme } from '../../theme';
|
||||
import { IReaction, IApplicationState } from '../../definitions';
|
||||
import Avatar from '../Avatar';
|
||||
import styles from './styles';
|
||||
|
||||
const UsersList = ({ tabLabel }: { tabLabel: IReaction }): React.ReactElement => {
|
||||
const { colors } = useTheme();
|
||||
const useRealName = useSelector((state: IApplicationState) => state.settings.UI_Use_Real_Name);
|
||||
|
||||
const { emoji, usernames, names } = tabLabel;
|
||||
const users =
|
||||
names?.length > 0
|
||||
? usernames.map((username, index) => ({ username, name: names[index] }))
|
||||
: usernames.map(username => ({ username, name: '' }));
|
||||
|
||||
return (
|
||||
<FlatList
|
||||
data={users}
|
||||
contentContainerStyle={styles.listContainer}
|
||||
ListHeaderComponent={
|
||||
<View style={styles.emojiNameContainer}>
|
||||
<Text style={[styles.emojiName, { color: colors.auxiliaryText }]} testID='usersListEmojiName'>
|
||||
{emoji}
|
||||
</Text>
|
||||
</View>
|
||||
}
|
||||
renderItem={({ item }) => (
|
||||
<View style={styles.listItemContainer} testID='userItem'>
|
||||
<Avatar text={item.username} size={36} />
|
||||
<View style={styles.textContainer}>
|
||||
<Text style={[styles.usernameText, { color: colors.bodyText }]} numberOfLines={1}>
|
||||
{useRealName && item.name ? item.name : item.username}
|
||||
</Text>
|
||||
</View>
|
||||
</View>
|
||||
)}
|
||||
keyExtractor={item => item.username}
|
||||
testID={`usersList-${emoji}`}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export default UsersList;
|
|
@ -0,0 +1,34 @@
|
|||
import React from 'react';
|
||||
import { View } from 'react-native';
|
||||
import ScrollableTabView from 'react-native-scrollable-tab-view';
|
||||
|
||||
import { TGetCustomEmoji } from '../../definitions/IEmoji';
|
||||
import { IReaction } from '../../definitions';
|
||||
import I18n from '../../i18n';
|
||||
import styles from './styles';
|
||||
import AllTab from './AllTab';
|
||||
import UsersList from './UsersList';
|
||||
import ReactionsTabBar from './ReactionsTabBar';
|
||||
|
||||
interface IReactionsListProps {
|
||||
getCustomEmoji: TGetCustomEmoji;
|
||||
reactions?: IReaction[];
|
||||
}
|
||||
|
||||
const ReactionsList = ({ reactions, getCustomEmoji }: IReactionsListProps): React.ReactElement => {
|
||||
// sorting reactions in descending order on the basic of number of users reacted
|
||||
const sortedReactions = reactions?.sort((reaction1, reaction2) => reaction2.usernames.length - reaction1.usernames.length);
|
||||
const allTabLabel = { emoji: I18n.t('All'), usernames: [], names: [], _id: 'All' };
|
||||
return (
|
||||
<View style={styles.container} testID='reactionsList'>
|
||||
<ScrollableTabView renderTabBar={() => <ReactionsTabBar getCustomEmoji={getCustomEmoji} />}>
|
||||
<AllTab tabLabel={allTabLabel} reactions={sortedReactions} getCustomEmoji={getCustomEmoji} />
|
||||
{sortedReactions?.map(reaction => (
|
||||
<UsersList tabLabel={reaction} key={reaction.emoji} />
|
||||
))}
|
||||
</ScrollableTabView>
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
||||
export default ReactionsList;
|
|
@ -0,0 +1,88 @@
|
|||
import { StyleSheet } from 'react-native';
|
||||
|
||||
import sharedStyles from '../../views/Styles';
|
||||
|
||||
export const MIN_TAB_WIDTH = 70;
|
||||
|
||||
export default StyleSheet.create({
|
||||
container: {
|
||||
flex: 1
|
||||
},
|
||||
allTabContainer: {
|
||||
flex: 1
|
||||
},
|
||||
tabBarItem: {
|
||||
paddingBottom: 4,
|
||||
height: 44,
|
||||
justifyContent: 'center',
|
||||
alignItems: 'center',
|
||||
flexDirection: 'row'
|
||||
},
|
||||
listContainer: {
|
||||
marginHorizontal: 12,
|
||||
marginVertical: 8,
|
||||
paddingBottom: 30
|
||||
},
|
||||
reactionCount: {
|
||||
marginLeft: 4,
|
||||
...sharedStyles.textSemibold
|
||||
},
|
||||
emojiNameContainer: {
|
||||
marginVertical: 8
|
||||
},
|
||||
emojiName: {
|
||||
fontSize: 14,
|
||||
...sharedStyles.textMedium
|
||||
},
|
||||
listItemContainer: {
|
||||
marginVertical: 6,
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center'
|
||||
},
|
||||
textContainer: {
|
||||
flex: 1,
|
||||
marginLeft: 8,
|
||||
justifyContent: 'center'
|
||||
},
|
||||
usernameText: {
|
||||
fontSize: 16,
|
||||
...sharedStyles.textSemibold
|
||||
},
|
||||
standardEmojiStyle: {
|
||||
fontSize: 20,
|
||||
width: 24,
|
||||
height: 24,
|
||||
textAlign: 'center',
|
||||
color: '#fff'
|
||||
},
|
||||
customEmojiStyle: {
|
||||
width: 24,
|
||||
height: 24
|
||||
},
|
||||
allTabItem: {
|
||||
fontSize: 16,
|
||||
...sharedStyles.textSemibold
|
||||
},
|
||||
allTabStandardEmojiStyle: {
|
||||
fontSize: 30,
|
||||
width: 36,
|
||||
textAlign: 'center',
|
||||
color: '#fff'
|
||||
},
|
||||
allTabCustomEmojiStyle: {
|
||||
width: 36,
|
||||
height: 36
|
||||
},
|
||||
allListItemContainer: {
|
||||
flexDirection: 'row',
|
||||
alignItems: 'center'
|
||||
},
|
||||
allListNPeopleReacted: {
|
||||
fontSize: 14,
|
||||
...sharedStyles.textMedium
|
||||
},
|
||||
allListWhoReacted: {
|
||||
fontSize: 14,
|
||||
...sharedStyles.textRegular
|
||||
}
|
||||
});
|
|
@ -7,6 +7,7 @@ import { MarkdownPreview } from '../markdown';
|
|||
import RoomTypeIcon from '../RoomTypeIcon';
|
||||
import { TUserStatus, IOmnichannelSource } from '../../definitions';
|
||||
import { useTheme } from '../../theme';
|
||||
import { useAppSelector } from '../../lib/hooks';
|
||||
|
||||
const HIT_SLOP = {
|
||||
top: 5,
|
||||
|
@ -141,8 +142,9 @@ const Header = React.memo(
|
|||
const { colors } = useTheme();
|
||||
const portrait = height > width;
|
||||
let scale = 1;
|
||||
const isMasterDetail = useAppSelector(state => state.app.isMasterDetail);
|
||||
|
||||
if (!portrait && !tmid) {
|
||||
if (!portrait && !tmid && !isMasterDetail) {
|
||||
if (usersTyping.length > 0 || subtitle) {
|
||||
scale = 0.8;
|
||||
}
|
||||
|
|
|
@ -350,7 +350,7 @@ class Markdown extends PureComponent<IMarkdownProps, any> {
|
|||
let ast = parser.parse(m);
|
||||
ast = mergeTextNodes(ast);
|
||||
this.isMessageContainsOnlyEmoji = isOnlyEmoji(m) && emojiCount(m) <= 3;
|
||||
return this.renderer.render(ast);
|
||||
return this.renderer?.render(ast) || null;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -114,7 +114,16 @@ const Attachments: React.FC<IMessageAttachments> = React.memo(
|
|||
);
|
||||
}
|
||||
|
||||
return <Reply key={index} index={index} attachment={file} timeFormat={timeFormat} getCustomEmoji={getCustomEmoji} messageId={id} />;
|
||||
return (
|
||||
<Reply
|
||||
key={index}
|
||||
index={index}
|
||||
attachment={file}
|
||||
timeFormat={timeFormat}
|
||||
getCustomEmoji={getCustomEmoji}
|
||||
messageId={id}
|
||||
/>
|
||||
);
|
||||
});
|
||||
return <>{attachmentsElements}</>;
|
||||
},
|
||||
|
|
|
@ -45,7 +45,8 @@ const styles = StyleSheet.create({
|
|||
},
|
||||
author: {
|
||||
fontSize: 16,
|
||||
...sharedStyles.textMedium
|
||||
...sharedStyles.textMedium,
|
||||
flexShrink: 1
|
||||
},
|
||||
fieldsContainer: {
|
||||
flex: 1,
|
||||
|
@ -99,7 +100,9 @@ const Title = React.memo(
|
|||
return (
|
||||
<View style={styles.authorContainer}>
|
||||
{attachment.author_name ? (
|
||||
<Text style={[styles.author, { color: themes[theme].auxiliaryTintColor }]}>{attachment.author_name}</Text>
|
||||
<Text numberOfLines={1} style={[styles.author, { color: themes[theme].auxiliaryTintColor }]}>
|
||||
{attachment.author_name}
|
||||
</Text>
|
||||
) : null}
|
||||
{time ? <Text style={[messageStyles.time, { color: themes[theme].auxiliaryText }]}>{time}</Text> : null}
|
||||
{attachment.title ? <Text style={[styles.title, { color: themes[theme].bodyText }]}>{attachment.title}</Text> : null}
|
||||
|
|
|
@ -2,4 +2,5 @@ export interface IReaction {
|
|||
_id: string;
|
||||
emoji: string;
|
||||
usernames: string[];
|
||||
names: string[];
|
||||
}
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
import { LISTENER } from '../../../containers/Toast';
|
||||
import I18n from '../../../i18n';
|
||||
import EventEmitter from './events';
|
||||
import log from './log';
|
||||
import { Services } from '../../services';
|
||||
|
||||
export const handleIgnore = async (userId: string, ignore: boolean, rid: string) => {
|
||||
try {
|
||||
await Services.ignoreUser({
|
||||
rid,
|
||||
userId,
|
||||
ignore
|
||||
});
|
||||
const message = I18n.t(ignore ? 'User_has_been_ignored' : 'User_has_been_unignored');
|
||||
EventEmitter.emit(LISTENER, { message });
|
||||
} catch (e) {
|
||||
log(e);
|
||||
}
|
||||
};
|
|
@ -134,7 +134,7 @@ export const localAuthenticate = async (server: string): Promise<void> => {
|
|||
|
||||
// Make sure splash screen has been hidden
|
||||
try {
|
||||
await RNBootSplash.hide();
|
||||
await RNBootSplash.hide({ fade: true });
|
||||
} catch {
|
||||
// Do nothing
|
||||
}
|
||||
|
|
|
@ -280,6 +280,7 @@ export default {
|
|||
RI_GO_RI_EDIT: 'ri_go_ri_edit',
|
||||
RI_GO_LIVECHAT_EDIT: 'ri_go_livechat_edit',
|
||||
RI_GO_ROOM_USER: 'ri_go_room_user',
|
||||
RI_TOGGLE_BLOCK_USER: 'ri_toggle_block_user',
|
||||
|
||||
// ROOM INFO EDIT VIEW
|
||||
RI_EDIT_TOGGLE_ROOM_TYPE: 'ri_edit_toggle_room_type',
|
||||
|
|
|
@ -38,7 +38,8 @@ export default (msg: any): IMessage | IThreadResult | null => {
|
|||
msg.reactions = Object.keys(msg.reactions).map(key => ({
|
||||
_id: `${msg._id}${key}`,
|
||||
emoji: key,
|
||||
usernames: msg.reactions ? msg.reactions[key].usernames : []
|
||||
usernames: msg.reactions ? msg.reactions[key].usernames : [],
|
||||
names: msg.reactions ? msg.reactions[key].names : []
|
||||
}));
|
||||
}
|
||||
if (msg.translations && Object.keys(msg.translations).length) {
|
||||
|
|
|
@ -86,7 +86,7 @@ const restore = function* restore() {
|
|||
};
|
||||
|
||||
const start = function* start() {
|
||||
yield RNBootSplash.hide();
|
||||
yield RNBootSplash.hide({ fade: true });
|
||||
};
|
||||
|
||||
const root = function* root() {
|
||||
|
|
|
@ -165,7 +165,7 @@ const SettingsStackNavigator = () => {
|
|||
<SettingsStack.Navigator
|
||||
screenOptions={{ ...defaultHeader, ...themedHeader(theme), ...StackAnimation } as StackNavigationOptions}
|
||||
>
|
||||
<SettingsStack.Screen name='SettingsView' component={SettingsView} options={SettingsView.navigationOptions} />
|
||||
<SettingsStack.Screen name='SettingsView' component={SettingsView} />
|
||||
<SettingsStack.Screen name='SecurityPrivacyView' component={SecurityPrivacyView} />
|
||||
<SettingsStack.Screen
|
||||
name='E2EEncryptionSecurityView'
|
||||
|
|
|
@ -170,11 +170,7 @@ const ModalStackNavigator = React.memo(({ navigation }: INavigation) => {
|
|||
component={ReadReceiptsView}
|
||||
options={props => ReadReceiptsView.navigationOptions!({ ...props, isMasterDetail: true })}
|
||||
/>
|
||||
<ModalStack.Screen
|
||||
name='SettingsView'
|
||||
component={SettingsView}
|
||||
options={props => SettingsView.navigationOptions!({ ...props, isMasterDetail: true })}
|
||||
/>
|
||||
<ModalStack.Screen name='SettingsView' component={SettingsView} />
|
||||
<ModalStack.Screen name='LanguageView' component={LanguageView} />
|
||||
<ModalStack.Screen name='ThemeView' component={ThemeView} />
|
||||
<ModalStack.Screen name='DefaultBrowserView' component={DefaultBrowserView} />
|
||||
|
|
|
@ -68,6 +68,7 @@ export type ChatsStackParamList = {
|
|||
rid: string;
|
||||
t: SubscriptionType;
|
||||
showCloseModal?: boolean;
|
||||
fromRid?: string;
|
||||
};
|
||||
RoomInfoEditView: {
|
||||
rid: string;
|
||||
|
|
|
@ -40,6 +40,9 @@ const styles = StyleSheet.create({
|
|||
},
|
||||
changePasswordButton: {
|
||||
marginBottom: 4
|
||||
},
|
||||
separator: {
|
||||
marginBottom: 16
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -148,8 +151,7 @@ class E2EEncryptionSecurityView extends React.Component<IE2EEncryptionSecurityVi
|
|||
testID='e2e-encryption-security-view-change-password'
|
||||
/>
|
||||
</List.Section>
|
||||
|
||||
<List.Separator />
|
||||
<List.Separator style={styles.separator} />
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -760,7 +760,8 @@ class RoomActionsView extends React.Component<IRoomActionsViewProps, IRoomAction
|
|||
rid,
|
||||
t,
|
||||
room,
|
||||
member
|
||||
member,
|
||||
fromRid: room.rid
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
@ -36,6 +36,8 @@ import { ILivechatVisitor } from '../../definitions/ILivechatVisitor';
|
|||
import { callJitsi } from '../../lib/methods';
|
||||
import { getRoomTitle, getUidDirectMessage, hasPermission } from '../../lib/methods/helpers';
|
||||
import { Services } from '../../lib/services';
|
||||
import { getSubscriptionByRoomId } from '../../lib/database/services/Subscription';
|
||||
import { handleIgnore } from '../../lib/methods/helpers/handleIgnore';
|
||||
|
||||
interface IGetRoomTitle {
|
||||
room: ISubscription;
|
||||
|
@ -108,6 +110,7 @@ interface IRoomInfoViewState {
|
|||
room: ISubscription;
|
||||
roomUser: IUserParsed | ILivechatVisitorModified;
|
||||
showEdit: boolean;
|
||||
roomFromRid?: TSubscriptionModel;
|
||||
}
|
||||
|
||||
class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewState> {
|
||||
|
@ -121,22 +124,29 @@ class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewStat
|
|||
|
||||
private roomObservable?: Observable<TSubscriptionModel>;
|
||||
|
||||
private fromRid?: string;
|
||||
|
||||
private subscriptionRoomFromRid?: Subscription;
|
||||
|
||||
constructor(props: IRoomInfoViewProps) {
|
||||
super(props);
|
||||
const room = props.route.params?.room;
|
||||
const roomUser = props.route.params?.member;
|
||||
this.rid = props.route.params?.rid;
|
||||
this.t = props.route.params?.t;
|
||||
this.fromRid = props.route.params?.fromRid;
|
||||
this.state = {
|
||||
room: (room || { rid: this.rid, t: this.t }) as any,
|
||||
roomUser: roomUser || {},
|
||||
showEdit: false
|
||||
showEdit: false,
|
||||
roomFromRid: undefined
|
||||
};
|
||||
}
|
||||
|
||||
componentDidMount() {
|
||||
if (this.isDirect) {
|
||||
this.loadUser();
|
||||
this.loadRoomFromRid();
|
||||
} else {
|
||||
this.loadRoom();
|
||||
}
|
||||
|
@ -154,6 +164,9 @@ class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewStat
|
|||
if (this.subscription && this.subscription.unsubscribe) {
|
||||
this.subscription.unsubscribe();
|
||||
}
|
||||
if (this.subscriptionRoomFromRid && this.subscriptionRoomFromRid.unsubscribe) {
|
||||
this.subscriptionRoomFromRid.unsubscribe();
|
||||
}
|
||||
if (this.unsubscribeFocus) {
|
||||
this.unsubscribeFocus();
|
||||
}
|
||||
|
@ -266,6 +279,19 @@ class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewStat
|
|||
}
|
||||
};
|
||||
|
||||
loadRoomFromRid = async () => {
|
||||
if (this.fromRid) {
|
||||
try {
|
||||
const sub = await getSubscriptionByRoomId(this.fromRid);
|
||||
this.subscriptionRoomFromRid = sub?.observe().subscribe(roomFromRid => {
|
||||
this.setState({ roomFromRid });
|
||||
});
|
||||
} catch (e) {
|
||||
// do nothing
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
loadRoom = async () => {
|
||||
const { room: roomState } = this.state;
|
||||
const { route, editRoomPermission, editOmnichannelContact, editLivechatRoomCustomfields } = this.props;
|
||||
|
@ -351,11 +377,32 @@ class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewStat
|
|||
}
|
||||
};
|
||||
|
||||
handleCreateDirectMessage = async (onPress: () => void) => {
|
||||
try {
|
||||
if (this.isDirect) {
|
||||
await this.createDirect();
|
||||
}
|
||||
onPress();
|
||||
} catch {
|
||||
EventEmitter.emit(LISTENER, {
|
||||
message: I18n.t('error-action-not-allowed', { action: I18n.t('Create_Direct_Messages') })
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
videoCall = () => {
|
||||
const { room } = this.state;
|
||||
callJitsi(room);
|
||||
};
|
||||
|
||||
handleBlockUser = async (rid: string, blocked: string, block: boolean) => {
|
||||
logEvent(events.RI_TOGGLE_BLOCK_USER);
|
||||
try {
|
||||
await Services.toggleBlockUser(rid, blocked, block);
|
||||
} catch (e) {
|
||||
log(e);
|
||||
}
|
||||
};
|
||||
renderAvatar = (room: ISubscription, roomUser: IUserParsed) => {
|
||||
const { theme } = this.props;
|
||||
|
||||
|
@ -370,36 +417,54 @@ class RoomInfoView extends React.Component<IRoomInfoViewProps, IRoomInfoViewStat
|
|||
);
|
||||
};
|
||||
|
||||
renderButton = (onPress: () => void, iconName: TIconsName, text: string) => {
|
||||
renderButton = (onPress: () => void, iconName: TIconsName, text: string, danger?: boolean) => {
|
||||
const { theme } = this.props;
|
||||
|
||||
const onActionPress = async () => {
|
||||
try {
|
||||
if (this.isDirect) {
|
||||
await this.createDirect();
|
||||
}
|
||||
onPress();
|
||||
} catch {
|
||||
EventEmitter.emit(LISTENER, {
|
||||
message: I18n.t('error-action-not-allowed', { action: I18n.t('Create_Direct_Messages') })
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
const color = danger ? themes[theme].dangerColor : themes[theme].actionTintColor;
|
||||
return (
|
||||
<BorderlessButton onPress={onActionPress} style={styles.roomButton}>
|
||||
<CustomIcon name={iconName} size={30} color={themes[theme].actionTintColor} />
|
||||
<Text style={[styles.roomButtonText, { color: themes[theme].actionTintColor }]}>{text}</Text>
|
||||
<BorderlessButton testID={`room-info-view-${iconName}`} onPress={onPress} style={styles.roomButton}>
|
||||
<CustomIcon name={iconName} size={30} color={color} />
|
||||
<Text style={[styles.roomButtonText, { color }]}>{text}</Text>
|
||||
</BorderlessButton>
|
||||
);
|
||||
};
|
||||
|
||||
renderButtons = () => {
|
||||
const { roomFromRid, roomUser } = this.state;
|
||||
const { jitsiEnabled } = this.props;
|
||||
|
||||
const isFromDm = roomFromRid?.rid ? new RegExp(roomUser._id).test(roomFromRid.rid) : false;
|
||||
const isDirectFromSaved = this.isDirect && this.fromRid && roomFromRid;
|
||||
|
||||
// Following the web behavior, when is a DM with myself, shouldn't appear block or ignore option
|
||||
const isDmWithMyself = roomFromRid?.uids && roomFromRid.uids?.filter(uid => uid !== roomUser._id).length === 0;
|
||||
|
||||
const ignored = roomFromRid?.ignored;
|
||||
const isIgnored = ignored?.includes?.(roomUser._id);
|
||||
|
||||
const blocker = roomFromRid?.blocker;
|
||||
|
||||
return (
|
||||
<View style={styles.roomButtonsContainer}>
|
||||
{this.renderButton(this.goRoom, 'message', I18n.t('Message'))}
|
||||
{jitsiEnabled && this.isDirect ? this.renderButton(this.videoCall, 'camera', I18n.t('Video_call')) : null}
|
||||
{this.renderButton(() => this.handleCreateDirectMessage(this.goRoom), 'message', I18n.t('Message'))}
|
||||
{jitsiEnabled && this.isDirect
|
||||
? this.renderButton(() => this.handleCreateDirectMessage(this.videoCall), 'camera', I18n.t('Video_call'))
|
||||
: null}
|
||||
{isDirectFromSaved && !isFromDm && !isDmWithMyself
|
||||
? this.renderButton(
|
||||
() => handleIgnore(roomUser._id, !isIgnored, roomFromRid.rid),
|
||||
'ignore',
|
||||
I18n.t(isIgnored ? 'Unignore' : 'Ignore'),
|
||||
true
|
||||
)
|
||||
: null}
|
||||
{isDirectFromSaved && isFromDm
|
||||
? this.renderButton(
|
||||
() => this.handleBlockUser(roomFromRid.rid, roomUser._id, !blocker),
|
||||
'ignore',
|
||||
I18n.t(`${blocker ? 'Unblock' : 'Block'}_user`),
|
||||
true
|
||||
)
|
||||
: null}
|
||||
</View>
|
||||
);
|
||||
};
|
||||
|
|
|
@ -217,20 +217,6 @@ export const handleRemoveUserFromRoom = async (
|
|||
}
|
||||
};
|
||||
|
||||
export const handleIgnore = async (selectedUser: TUserModel, ignore: boolean, rid: string) => {
|
||||
try {
|
||||
await Services.ignoreUser({
|
||||
rid,
|
||||
userId: selectedUser._id,
|
||||
ignore
|
||||
});
|
||||
const message = I18n.t(ignore ? 'User_has_been_ignored' : 'User_has_been_unignored');
|
||||
EventEmitter.emit(LISTENER, { message });
|
||||
} catch (e) {
|
||||
log(e);
|
||||
}
|
||||
};
|
||||
|
||||
export const handleOwner = async (
|
||||
selectedUser: TUserModel,
|
||||
isOwner: boolean,
|
||||
|
|
|
@ -16,6 +16,7 @@ import { TSubscriptionModel, TUserModel } from '../../definitions';
|
|||
import I18n from '../../i18n';
|
||||
import { useAppSelector, usePermissions } from '../../lib/hooks';
|
||||
import { getRoomTitle, isGroupChat } from '../../lib/methods/helpers';
|
||||
import { handleIgnore } from '../../lib/methods/helpers/handleIgnore';
|
||||
import { showConfirmationAlert } from '../../lib/methods/helpers/info';
|
||||
import log from '../../lib/methods/helpers/log';
|
||||
import scrollPersistTaps from '../../lib/methods/helpers/scrollPersistTaps';
|
||||
|
@ -28,7 +29,6 @@ import ActionsSection from './components/ActionsSection';
|
|||
import {
|
||||
fetchRole,
|
||||
fetchRoomMembersRoles,
|
||||
handleIgnore,
|
||||
handleLeader,
|
||||
handleModerator,
|
||||
handleMute,
|
||||
|
@ -207,7 +207,7 @@ const RoomMembersView = (): React.ReactElement => {
|
|||
options.push({
|
||||
icon: 'ignore',
|
||||
title: I18n.t(isIgnored ? 'Unignore' : 'Ignore'),
|
||||
onPress: () => handleIgnore(selectedUser, !isIgnored, room.rid),
|
||||
onPress: () => handleIgnore(selectedUser._id, !isIgnored, room.rid),
|
||||
testID: 'action-sheet-ignore-user'
|
||||
});
|
||||
}
|
||||
|
|
|
@ -862,18 +862,11 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
|
||||
onReactionLongPress = (message: TAnyMessageModel) => {
|
||||
this.setState({ selectedMessage: message });
|
||||
const { showActionSheet, baseUrl, width } = this.props;
|
||||
const { showActionSheet } = this.props;
|
||||
const { selectedMessage } = this.state;
|
||||
this.messagebox?.current?.closeEmojiAndAction(showActionSheet, {
|
||||
children: (
|
||||
<ReactionsList
|
||||
reactions={selectedMessage?.reactions}
|
||||
baseUrl={baseUrl}
|
||||
getCustomEmoji={this.getCustomEmoji}
|
||||
width={width}
|
||||
/>
|
||||
),
|
||||
snaps: ['50%'],
|
||||
children: <ReactionsList reactions={selectedMessage?.reactions} getCustomEmoji={this.getCustomEmoji} />,
|
||||
snaps: ['50%', '80%'],
|
||||
enableContentPanningGesture: false
|
||||
});
|
||||
};
|
||||
|
@ -1116,10 +1109,13 @@ class RoomView extends React.Component<IRoomViewProps, IRoomViewState> {
|
|||
|
||||
navToRoomInfo = (navParam: any) => {
|
||||
const { navigation, user, isMasterDetail } = this.props;
|
||||
const { room } = this.state;
|
||||
|
||||
logEvent(events[`ROOM_GO_${navParam.t === 'd' ? 'USER' : 'ROOM'}_INFO`]);
|
||||
if (navParam.rid === user.id) {
|
||||
return;
|
||||
}
|
||||
navParam.fromRid = room.rid;
|
||||
if (isMasterDetail) {
|
||||
navParam.showCloseModal = true;
|
||||
// @ts-ignore
|
||||
|
|
|
@ -91,14 +91,15 @@ class ScreenLockConfigView extends React.Component<IScreenLockConfigViewProps, I
|
|||
const { server } = this.props;
|
||||
const serversDB = database.servers;
|
||||
const serversCollection = serversDB.get('servers');
|
||||
const hasBiometry = userPreferences.getBool(BIOMETRY_ENABLED_KEY) ?? DEFAULT_BIOMETRY;
|
||||
try {
|
||||
this.serverRecord = await serversCollection.find(server);
|
||||
this.setState({
|
||||
autoLock: this.serverRecord?.autoLock,
|
||||
autoLockTime: this.serverRecord?.autoLockTime === null ? DEFAULT_AUTO_LOCK : this.serverRecord?.autoLockTime,
|
||||
biometry: hasBiometry
|
||||
});
|
||||
this.setState(
|
||||
{
|
||||
autoLock: this.serverRecord?.autoLock,
|
||||
autoLockTime: this.serverRecord?.autoLockTime === null ? DEFAULT_AUTO_LOCK : this.serverRecord?.autoLockTime
|
||||
},
|
||||
() => this.hasBiometry()
|
||||
);
|
||||
} catch (error) {
|
||||
// Do nothing
|
||||
}
|
||||
|
@ -119,6 +120,11 @@ class ScreenLockConfigView extends React.Component<IScreenLockConfigViewProps, I
|
|||
});
|
||||
};
|
||||
|
||||
hasBiometry = () => {
|
||||
const biometry = userPreferences.getBool(BIOMETRY_ENABLED_KEY) ?? DEFAULT_BIOMETRY;
|
||||
this.setState({ biometry });
|
||||
};
|
||||
|
||||
changePasscode = async ({ force }: { force: boolean }) => {
|
||||
logEvent(events.SLC_CHANGE_PASSCODE);
|
||||
await changePasscode({ force });
|
||||
|
@ -133,6 +139,7 @@ class ScreenLockConfigView extends React.Component<IScreenLockConfigViewProps, I
|
|||
if (autoLock) {
|
||||
try {
|
||||
await checkHasPasscode({ force: false });
|
||||
this.hasBiometry();
|
||||
} catch {
|
||||
this.toggleAutoLock();
|
||||
}
|
||||
|
|
|
@ -1,62 +1,66 @@
|
|||
import CookieManager from '@react-native-cookies/cookies';
|
||||
import { StackNavigationOptions } from '@react-navigation/stack';
|
||||
import FastImage from 'react-native-fast-image';
|
||||
import React from 'react';
|
||||
import { Linking, Share } from 'react-native';
|
||||
import Clipboard from '@react-native-clipboard/clipboard';
|
||||
import { connect } from 'react-redux';
|
||||
import CookieManager from '@react-native-cookies/cookies';
|
||||
import { useNavigation } from '@react-navigation/native';
|
||||
import React, { useLayoutEffect } from 'react';
|
||||
import { Linking, Share } from 'react-native';
|
||||
import FastImage from 'react-native-fast-image';
|
||||
import { useDispatch } from 'react-redux';
|
||||
import { StackNavigationProp } from '@react-navigation/stack';
|
||||
|
||||
import { appStart } from '../../actions/app';
|
||||
import { logout } from '../../actions/login';
|
||||
import { selectServerRequest } from '../../actions/server';
|
||||
import { APP_STORE_LINK, FDROID_MARKET_LINK, LICENSE_LINK, PLAY_MARKET_LINK, isFDroidBuild, themes } from '../../lib/constants';
|
||||
import * as HeaderButton from '../../containers/HeaderButton';
|
||||
import * as List from '../../containers/List';
|
||||
import SafeAreaView from '../../containers/SafeAreaView';
|
||||
import StatusBar from '../../containers/StatusBar';
|
||||
import { LISTENER } from '../../containers/Toast';
|
||||
import { IApplicationState, IBaseScreen, IUser, RootEnum } from '../../definitions';
|
||||
import { RootEnum } from '../../definitions';
|
||||
import I18n from '../../i18n';
|
||||
import { APP_STORE_LINK, FDROID_MARKET_LINK, isFDroidBuild, LICENSE_LINK, PLAY_MARKET_LINK } from '../../lib/constants';
|
||||
import database from '../../lib/database';
|
||||
import { IServer } from '../../reducers/server';
|
||||
import { getUserSelector } from '../../selectors/login';
|
||||
import { SettingsStackParamList } from '../../stacks/types';
|
||||
import { withTheme } from '../../theme';
|
||||
import { useAppSelector } from '../../lib/hooks';
|
||||
import { clearCache } from '../../lib/methods';
|
||||
import { deleteAllAudioFiles } from '../../lib/methods/audioFile';
|
||||
import { getDeviceModel, getReadableVersion, isAndroid } from '../../lib/methods/helpers';
|
||||
import EventEmitter from '../../lib/methods/helpers/events';
|
||||
import { showConfirmationAlert, showErrorAlert } from '../../lib/methods/helpers/info';
|
||||
import { events, logEvent } from '../../lib/methods/helpers/log';
|
||||
import openLink from '../../lib/methods/helpers/openLink';
|
||||
import { onReviewPress } from '../../lib/methods/helpers/review';
|
||||
import SidebarView from '../SidebarView';
|
||||
import { clearCache } from '../../lib/methods';
|
||||
import { Services } from '../../lib/services';
|
||||
import { deleteAllAudioFiles } from '../../lib/methods/audioFile';
|
||||
import { getUserSelector } from '../../selectors/login';
|
||||
import { SettingsStackParamList } from '../../stacks/types';
|
||||
import { useTheme } from '../../theme';
|
||||
import SidebarView from '../SidebarView';
|
||||
|
||||
type TLogScreenName = 'SE_GO_LANGUAGE' | 'SE_GO_DEFAULTBROWSER' | 'SE_GO_THEME' | 'SE_GO_PROFILE' | 'SE_GO_SECURITYPRIVACY';
|
||||
|
||||
interface ISettingsViewProps extends IBaseScreen<SettingsStackParamList, 'SettingsView'> {
|
||||
server: IServer;
|
||||
user: IUser;
|
||||
}
|
||||
const SettingsView = (): React.ReactElement => {
|
||||
const { colors, theme } = useTheme();
|
||||
const navigation = useNavigation<StackNavigationProp<SettingsStackParamList, 'SettingsView'>>();
|
||||
const dispatch = useDispatch();
|
||||
const isMasterDetail = useAppSelector(state => state.app.isMasterDetail);
|
||||
const userId = useAppSelector(state => getUserSelector(state).id);
|
||||
const { server, version } = useAppSelector(state => state.server);
|
||||
|
||||
class SettingsView extends React.Component<ISettingsViewProps> {
|
||||
static navigationOptions = ({ navigation, isMasterDetail }: ISettingsViewProps): StackNavigationOptions => ({
|
||||
headerLeft: () =>
|
||||
isMasterDetail ? (
|
||||
<HeaderButton.CloseModal navigation={navigation} testID='settings-view-close' />
|
||||
) : (
|
||||
<HeaderButton.Drawer navigation={navigation} testID='settings-view-drawer' />
|
||||
),
|
||||
title: I18n.t('Settings')
|
||||
});
|
||||
useLayoutEffect(() => {
|
||||
navigation.setOptions({
|
||||
headerLeft: () =>
|
||||
isMasterDetail ? (
|
||||
<HeaderButton.CloseModal navigation={navigation} testID='settings-view-close' />
|
||||
) : (
|
||||
<HeaderButton.Drawer navigation={navigation} testID='settings-view-drawer' />
|
||||
),
|
||||
title: I18n.t('Settings')
|
||||
});
|
||||
}, [navigation, isMasterDetail]);
|
||||
|
||||
checkCookiesAndLogout = async () => {
|
||||
const { dispatch, user } = this.props;
|
||||
const checkCookiesAndLogout = async () => {
|
||||
const db = database.servers;
|
||||
const usersCollection = db.get('users');
|
||||
try {
|
||||
const userRecord = await usersCollection.find(user.id);
|
||||
const userRecord = await usersCollection.find(userId);
|
||||
if (userRecord.isFromWebView) {
|
||||
showConfirmationAlert({
|
||||
title: I18n.t('Clear_cookies_alert'),
|
||||
|
@ -79,25 +83,21 @@ class SettingsView extends React.Component<ISettingsViewProps> {
|
|||
}
|
||||
};
|
||||
|
||||
handleLogout = () => {
|
||||
const handleLogout = () => {
|
||||
logEvent(events.SE_LOG_OUT);
|
||||
showConfirmationAlert({
|
||||
message: I18n.t('You_will_be_logged_out_of_this_application'),
|
||||
confirmationText: I18n.t('Logout'),
|
||||
onPress: this.checkCookiesAndLogout
|
||||
onPress: checkCookiesAndLogout
|
||||
});
|
||||
};
|
||||
|
||||
handleClearCache = () => {
|
||||
const handleClearCache = () => {
|
||||
logEvent(events.SE_CLEAR_LOCAL_SERVER_CACHE);
|
||||
showConfirmationAlert({
|
||||
message: I18n.t('This_will_clear_all_your_offline_data'),
|
||||
confirmationText: I18n.t('Clear'),
|
||||
onPress: async () => {
|
||||
const {
|
||||
server: { server },
|
||||
dispatch
|
||||
} = this.props;
|
||||
dispatch(appStart({ root: RootEnum.ROOT_LOADING, text: I18n.t('Clear_cache_loading') }));
|
||||
await deleteAllAudioFiles(server);
|
||||
await clearCache({ server });
|
||||
|
@ -109,14 +109,13 @@ class SettingsView extends React.Component<ISettingsViewProps> {
|
|||
});
|
||||
};
|
||||
|
||||
navigateToScreen = (screen: keyof SettingsStackParamList) => {
|
||||
const navigateToScreen = (screen: keyof SettingsStackParamList) => {
|
||||
const screenName = screen.replace('View', '').toUpperCase();
|
||||
logEvent(events[`SE_GO_${screenName}` as TLogScreenName]);
|
||||
const { navigation } = this.props;
|
||||
navigation.navigate(screen);
|
||||
};
|
||||
|
||||
sendEmail = async () => {
|
||||
const sendEmail = async () => {
|
||||
logEvent(events.SE_CONTACT_US);
|
||||
const subject = encodeURI('Rocket.Chat Mobile App Support');
|
||||
const email = encodeURI('support@rocket.chat');
|
||||
|
@ -132,7 +131,7 @@ class SettingsView extends React.Component<ISettingsViewProps> {
|
|||
}
|
||||
};
|
||||
|
||||
shareApp = () => {
|
||||
const shareApp = () => {
|
||||
let message;
|
||||
if (isAndroid) {
|
||||
message = PLAY_MARKET_LINK;
|
||||
|
@ -145,157 +144,139 @@ class SettingsView extends React.Component<ISettingsViewProps> {
|
|||
Share.share({ message });
|
||||
};
|
||||
|
||||
copyServerVersion = () => {
|
||||
const {
|
||||
server: { version }
|
||||
} = this.props;
|
||||
const vers = version as string;
|
||||
logEvent(events.SE_COPY_SERVER_VERSION, { serverVersion: vers });
|
||||
this.saveToClipboard(vers);
|
||||
};
|
||||
|
||||
copyAppVersion = () => {
|
||||
logEvent(events.SE_COPY_APP_VERSION, { appVersion: getReadableVersion });
|
||||
this.saveToClipboard(getReadableVersion);
|
||||
};
|
||||
|
||||
saveToClipboard = async (content: string) => {
|
||||
const saveToClipboard = async (content: string) => {
|
||||
await Clipboard.setString(content);
|
||||
EventEmitter.emit(LISTENER, { message: I18n.t('Copied_to_clipboard') });
|
||||
};
|
||||
|
||||
onPressLicense = () => {
|
||||
const copyServerVersion = () => {
|
||||
const vers = version as string;
|
||||
logEvent(events.SE_COPY_SERVER_VERSION, { serverVersion: vers });
|
||||
saveToClipboard(vers);
|
||||
};
|
||||
|
||||
const copyAppVersion = () => {
|
||||
logEvent(events.SE_COPY_APP_VERSION, { appVersion: getReadableVersion });
|
||||
saveToClipboard(getReadableVersion);
|
||||
};
|
||||
|
||||
const onPressLicense = () => {
|
||||
logEvent(events.SE_READ_LICENSE);
|
||||
const { theme } = this.props;
|
||||
openLink(LICENSE_LINK, theme);
|
||||
};
|
||||
|
||||
render() {
|
||||
const { server, isMasterDetail, theme } = this.props;
|
||||
return (
|
||||
<SafeAreaView testID='settings-view'>
|
||||
<StatusBar />
|
||||
<List.Container>
|
||||
{isMasterDetail ? (
|
||||
return (
|
||||
<SafeAreaView testID='settings-view'>
|
||||
<StatusBar />
|
||||
<List.Container>
|
||||
{isMasterDetail ? (
|
||||
<>
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<SidebarView />
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<List.Item title='Display' onPress={() => navigateToScreen('DisplayPrefsView')} showActionIndicator />
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Profile'
|
||||
onPress={() => navigateToScreen('ProfileView')}
|
||||
showActionIndicator
|
||||
testID='settings-profile'
|
||||
/>
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
</>
|
||||
) : null}
|
||||
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<List.Item title='Contact_us' onPress={sendEmail} showActionIndicator testID='settings-view-contact' />
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Language'
|
||||
onPress={() => navigateToScreen('LanguageView')}
|
||||
showActionIndicator
|
||||
testID='settings-view-language'
|
||||
/>
|
||||
<List.Separator />
|
||||
{!isFDroidBuild ? (
|
||||
<>
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<SidebarView theme={theme} />
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<List.Item title='Display' onPress={() => this.navigateToScreen('DisplayPrefsView')} showActionIndicator />
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Profile'
|
||||
onPress={() => this.navigateToScreen('ProfileView')}
|
||||
showActionIndicator
|
||||
testID='settings-profile'
|
||||
/>
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
<List.Item title='Review_this_app' showActionIndicator onPress={onReviewPress} testID='settings-view-review-app' />
|
||||
</>
|
||||
) : null}
|
||||
<List.Separator />
|
||||
<List.Item title='Share_this_app' showActionIndicator onPress={shareApp} testID='settings-view-share-app' />
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Default_browser'
|
||||
showActionIndicator
|
||||
onPress={() => navigateToScreen('DefaultBrowserView')}
|
||||
testID='settings-view-default-browser'
|
||||
/>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Theme'
|
||||
showActionIndicator
|
||||
onPress={() => navigateToScreen('ThemeView')}
|
||||
testID='settings-view-theme'
|
||||
/>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Security_and_privacy'
|
||||
showActionIndicator
|
||||
onPress={() => navigateToScreen('SecurityPrivacyView')}
|
||||
testID='settings-view-security-privacy'
|
||||
/>
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<List.Item title='Contact_us' onPress={this.sendEmail} showActionIndicator testID='settings-view-contact' />
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Language'
|
||||
onPress={() => this.navigateToScreen('LanguageView')}
|
||||
showActionIndicator
|
||||
testID='settings-view-language'
|
||||
/>
|
||||
<List.Separator />
|
||||
{!isFDroidBuild ? (
|
||||
<>
|
||||
<List.Item
|
||||
title='Review_this_app'
|
||||
showActionIndicator
|
||||
onPress={onReviewPress}
|
||||
testID='settings-view-review-app'
|
||||
/>
|
||||
</>
|
||||
) : null}
|
||||
<List.Separator />
|
||||
<List.Item title='Share_this_app' showActionIndicator onPress={this.shareApp} testID='settings-view-share-app' />
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Default_browser'
|
||||
showActionIndicator
|
||||
onPress={() => this.navigateToScreen('DefaultBrowserView')}
|
||||
testID='settings-view-default-browser'
|
||||
/>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Theme'
|
||||
showActionIndicator
|
||||
onPress={() => this.navigateToScreen('ThemeView')}
|
||||
testID='settings-view-theme'
|
||||
/>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Security_and_privacy'
|
||||
showActionIndicator
|
||||
onPress={() => this.navigateToScreen('SecurityPrivacyView')}
|
||||
testID='settings-view-security-privacy'
|
||||
/>
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<List.Item title='License' onPress={onPressLicense} showActionIndicator testID='settings-view-license' />
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title={I18n.t('Version_no', { version: getReadableVersion })}
|
||||
onPress={copyAppVersion}
|
||||
testID='settings-view-version'
|
||||
translateTitle={false}
|
||||
/>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title={I18n.t('Server_version', { version })}
|
||||
onPress={copyServerVersion}
|
||||
subtitle={`${server.split('//')[1]}`}
|
||||
testID='settings-view-server-version'
|
||||
translateTitle={false}
|
||||
translateSubtitle={false}
|
||||
/>
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<List.Item title='License' onPress={this.onPressLicense} showActionIndicator testID='settings-view-license' />
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title={I18n.t('Version_no', { version: getReadableVersion })}
|
||||
onPress={this.copyAppVersion}
|
||||
testID='settings-view-version'
|
||||
translateTitle={false}
|
||||
/>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title={I18n.t('Server_version', { version: server.version })}
|
||||
onPress={this.copyServerVersion}
|
||||
subtitle={`${server.server.split('//')[1]}`}
|
||||
testID='settings-view-server-version'
|
||||
translateTitle={false}
|
||||
translateSubtitle={false}
|
||||
/>
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Clear_cache'
|
||||
testID='settings-view-clear-cache'
|
||||
onPress={handleClearCache}
|
||||
showActionIndicator
|
||||
color={colors.dangerColor}
|
||||
/>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Logout'
|
||||
testID='settings-logout'
|
||||
onPress={handleLogout}
|
||||
showActionIndicator
|
||||
color={colors.dangerColor}
|
||||
/>
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
</List.Container>
|
||||
</SafeAreaView>
|
||||
);
|
||||
};
|
||||
|
||||
<List.Section>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Clear_cache'
|
||||
testID='settings-view-clear-cache'
|
||||
onPress={this.handleClearCache}
|
||||
showActionIndicator
|
||||
color={themes[theme].dangerColor}
|
||||
/>
|
||||
<List.Separator />
|
||||
<List.Item
|
||||
title='Logout'
|
||||
testID='settings-logout'
|
||||
onPress={this.handleLogout}
|
||||
showActionIndicator
|
||||
color={themes[theme].dangerColor}
|
||||
/>
|
||||
<List.Separator />
|
||||
</List.Section>
|
||||
</List.Container>
|
||||
</SafeAreaView>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
const mapStateToProps = (state: IApplicationState) => ({
|
||||
server: state.server,
|
||||
user: getUserSelector(state),
|
||||
isMasterDetail: state.app.isMasterDetail
|
||||
});
|
||||
|
||||
export default connect(mapStateToProps)(withTheme(SettingsView));
|
||||
export default SettingsView;
|
||||
|
|
|
@ -32,7 +32,7 @@ interface ISidebarProps {
|
|||
state?: DrawerNavigationState<DrawerParamList>;
|
||||
Site_Name: string;
|
||||
user: IUser;
|
||||
theme: TSupportedThemes;
|
||||
theme?: TSupportedThemes;
|
||||
loadingServer: boolean;
|
||||
useRealName: boolean;
|
||||
allowStatusMessage: boolean;
|
||||
|
@ -167,10 +167,10 @@ class Sidebar extends Component<ISidebarProps, ISidebarState> {
|
|||
<List.Separator />
|
||||
<SidebarItem
|
||||
text={I18n.t('Admin_Panel')}
|
||||
left={<CustomIcon name='settings' size={20} color={themes[theme].titleText} />}
|
||||
left={<CustomIcon name='settings' size={20} color={themes[theme!].titleText} />}
|
||||
onPress={() => this.sidebarNavigate(routeName)}
|
||||
testID='sidebar-admin'
|
||||
theme={theme}
|
||||
theme={theme!}
|
||||
current={this.currentItemKey === routeName}
|
||||
/>
|
||||
</>
|
||||
|
@ -183,34 +183,34 @@ class Sidebar extends Component<ISidebarProps, ISidebarState> {
|
|||
<>
|
||||
<SidebarItem
|
||||
text={I18n.t('Chats')}
|
||||
left={<CustomIcon name='message' size={20} color={themes[theme].titleText} />}
|
||||
left={<CustomIcon name='message' size={20} color={themes[theme!].titleText} />}
|
||||
onPress={() => this.sidebarNavigate('ChatsStackNavigator')}
|
||||
testID='sidebar-chats'
|
||||
theme={theme}
|
||||
theme={theme!}
|
||||
current={this.currentItemKey === 'ChatsStackNavigator'}
|
||||
/>
|
||||
<SidebarItem
|
||||
text={I18n.t('Profile')}
|
||||
left={<CustomIcon name='user' size={20} color={themes[theme].titleText} />}
|
||||
left={<CustomIcon name='user' size={20} color={themes[theme!].titleText} />}
|
||||
onPress={() => this.sidebarNavigate('ProfileStackNavigator')}
|
||||
testID='sidebar-profile'
|
||||
theme={theme}
|
||||
theme={theme!}
|
||||
current={this.currentItemKey === 'ProfileStackNavigator'}
|
||||
/>
|
||||
<SidebarItem
|
||||
text={I18n.t('Display')}
|
||||
left={<CustomIcon name='sort' size={20} color={themes[theme].titleText} />}
|
||||
left={<CustomIcon name='sort' size={20} color={themes[theme!].titleText} />}
|
||||
onPress={() => this.sidebarNavigate('DisplayPrefStackNavigator')}
|
||||
testID='sidebar-display'
|
||||
theme={theme}
|
||||
theme={theme!}
|
||||
current={this.currentItemKey === 'DisplayPrefStackNavigator'}
|
||||
/>
|
||||
<SidebarItem
|
||||
text={I18n.t('Settings')}
|
||||
left={<CustomIcon name='administration' size={20} color={themes[theme].titleText} />}
|
||||
left={<CustomIcon name='administration' size={20} color={themes[theme!].titleText} />}
|
||||
onPress={() => this.sidebarNavigate('SettingsStackNavigator')}
|
||||
testID='sidebar-settings'
|
||||
theme={theme}
|
||||
theme={theme!}
|
||||
current={this.currentItemKey === 'SettingsStackNavigator'}
|
||||
/>
|
||||
{this.renderAdmin()}
|
||||
|
@ -224,8 +224,8 @@ class Sidebar extends Component<ISidebarProps, ISidebarState> {
|
|||
<SidebarItem
|
||||
text={user.statusText || I18n.t('Edit_Status')}
|
||||
left={<Status size={24} status={user?.status} />}
|
||||
theme={theme}
|
||||
right={<CustomIcon name='edit' size={20} color={themes[theme].titleText} />}
|
||||
theme={theme!}
|
||||
right={<CustomIcon name='edit' size={20} color={themes[theme!].titleText} />}
|
||||
onPress={() => this.sidebarNavigate('StatusView')}
|
||||
testID={`sidebar-custom-status-${user.status}`}
|
||||
/>
|
||||
|
@ -239,12 +239,12 @@ class Sidebar extends Component<ISidebarProps, ISidebarState> {
|
|||
return null;
|
||||
}
|
||||
return (
|
||||
<SafeAreaView testID='sidebar-view' style={{ backgroundColor: themes[theme].focusedBackground }} vertical={isMasterDetail}>
|
||||
<SafeAreaView testID='sidebar-view' style={{ backgroundColor: themes[theme!].focusedBackground }} vertical={isMasterDetail}>
|
||||
<ScrollView
|
||||
style={[
|
||||
styles.container,
|
||||
{
|
||||
backgroundColor: isMasterDetail ? themes[theme].backgroundColor : themes[theme].focusedBackground
|
||||
backgroundColor: isMasterDetail ? themes[theme!].backgroundColor : themes[theme!].focusedBackground
|
||||
}
|
||||
]}
|
||||
{...scrollPersistTaps}
|
||||
|
@ -254,12 +254,12 @@ class Sidebar extends Component<ISidebarProps, ISidebarState> {
|
|||
<Avatar text={user.username} style={styles.avatar} size={30} />
|
||||
<View style={styles.headerTextContainer}>
|
||||
<View style={styles.headerUsername}>
|
||||
<Text numberOfLines={1} style={[styles.username, { color: themes[theme].titleText }]}>
|
||||
<Text numberOfLines={1} style={[styles.username, { color: themes[theme!].titleText }]}>
|
||||
{useRealName ? user.name : user.username}
|
||||
</Text>
|
||||
</View>
|
||||
<Text
|
||||
style={[styles.currentServerText, { color: themes[theme].titleText }]}
|
||||
style={[styles.currentServerText, { color: themes[theme!].titleText }]}
|
||||
numberOfLines={1}
|
||||
accessibilityLabel={`Connected to ${baseUrl}`}
|
||||
>
|
||||
|
|
|
@ -51,6 +51,9 @@ const data = {
|
|||
detoxpublicprotected: {
|
||||
name: 'detox-public-protected',
|
||||
joinCode: '123'
|
||||
},
|
||||
detoxpublicignore: {
|
||||
name: `detox-public-ignore-${value}`
|
||||
}
|
||||
},
|
||||
groups: {
|
||||
|
|
|
@ -306,7 +306,7 @@ describe('Room screen', () => {
|
|||
.withTimeout(60000);
|
||||
});
|
||||
|
||||
it('should show reaction picker on add reaction button pressed and have frequently used emoji, and dismiss review nag', async () => {
|
||||
it('should show reaction picker on add reaction button pressed and have frequently used emoji', async () => {
|
||||
await element(by.id('message-add-reaction')).tap();
|
||||
await waitFor(element(by.id('reaction-picker')))
|
||||
.toExist()
|
||||
|
@ -324,6 +324,19 @@ describe('Room screen', () => {
|
|||
.withTimeout(60000);
|
||||
});
|
||||
|
||||
it('should ask for review', async () => {
|
||||
await dismissReviewNag(); // TODO: Create a proper test for this elsewhere.
|
||||
});
|
||||
|
||||
it('should open/close reactions list', async () => {
|
||||
await element(by.id('message-reaction-:grinning:')).longPress();
|
||||
await waitFor(element(by.id('reactionsList')))
|
||||
.toExist()
|
||||
.withTimeout(4000);
|
||||
await expect(element(by.id('action-sheet-handle'))).toBeVisible();
|
||||
await element(by.id('action-sheet-handle')).swipe('down', 'fast', 0.5);
|
||||
});
|
||||
|
||||
it('should remove reaction', async () => {
|
||||
await element(by.id('message-reaction-:grinning:')).tap();
|
||||
await waitFor(element(by.id('message-reaction-:grinning:')))
|
||||
|
@ -331,10 +344,6 @@ describe('Room screen', () => {
|
|||
.withTimeout(60000);
|
||||
});
|
||||
|
||||
it('should ask for review', async () => {
|
||||
await dismissReviewNag(); // TODO: Create a proper test for this elsewhere.
|
||||
});
|
||||
|
||||
it('should edit message', async () => {
|
||||
await mockMessage('edit');
|
||||
await element(by[textMatcher](`${data.random}edit`))
|
||||
|
|
|
@ -0,0 +1,103 @@
|
|||
import { expect } from 'detox';
|
||||
|
||||
import data from '../../data';
|
||||
import { navigateToLogin, login, searchRoom, sleep, platformTypes, TTextMatcher, tapBack } from '../../helpers/app';
|
||||
import { sendMessage } from '../../helpers/data_setup';
|
||||
|
||||
async function navigateToRoom(user: string) {
|
||||
await searchRoom(`${user}`);
|
||||
await element(by.id(`rooms-list-view-item-${user}`)).tap();
|
||||
await waitFor(element(by.id('room-view')))
|
||||
.toBeVisible()
|
||||
.withTimeout(5000);
|
||||
}
|
||||
|
||||
async function navigateToInfoView() {
|
||||
await element(by.id('room-header')).tap();
|
||||
await waitFor(element(by.id('room-actions-view')))
|
||||
.toExist()
|
||||
.withTimeout(5000);
|
||||
await element(by.id('room-actions-info')).tap();
|
||||
await waitFor(element(by.id('room-info-view')))
|
||||
.toExist()
|
||||
.withTimeout(2000);
|
||||
}
|
||||
|
||||
describe('Ignore/Block User', () => {
|
||||
const user = data.users.alternate.username;
|
||||
let textMatcher: TTextMatcher;
|
||||
|
||||
before(async () => {
|
||||
await device.launchApp({ permissions: { notifications: 'YES' }, delete: true });
|
||||
({ textMatcher } = platformTypes[device.getPlatform()]);
|
||||
await navigateToLogin();
|
||||
await login(data.users.regular.username, data.users.regular.password);
|
||||
});
|
||||
|
||||
describe('Usage', () => {
|
||||
describe('Block user from DM', () => {
|
||||
it('should go to user info view', async () => {
|
||||
await navigateToRoom(user);
|
||||
await navigateToInfoView();
|
||||
});
|
||||
it('should block user', async () => {
|
||||
await expect(element(by.id('room-info-view-ignore').withDescendant(by[textMatcher]('Block user')))).toExist();
|
||||
await element(by.id('room-info-view-ignore')).tap();
|
||||
await waitFor(element(by.id('room-info-view-ignore').withDescendant(by[textMatcher]('Unblock user'))))
|
||||
.toExist()
|
||||
.withTimeout(2000);
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('room-actions-view')))
|
||||
.toBeVisible()
|
||||
.withTimeout(5000);
|
||||
await tapBack();
|
||||
await expect(element(by[textMatcher]('This room is blocked'))).toExist();
|
||||
});
|
||||
|
||||
it('should unblock user', async () => {
|
||||
await navigateToInfoView();
|
||||
await element(by.id('room-info-view-ignore')).tap();
|
||||
await expect(element(by.id('room-info-view-ignore').withDescendant(by[textMatcher]('Block user')))).toExist();
|
||||
await tapBack();
|
||||
await waitFor(element(by.id('room-actions-view')))
|
||||
.toBeVisible()
|
||||
.withTimeout(5000);
|
||||
await tapBack();
|
||||
await expect(element(by.id('messagebox'))).toBeVisible();
|
||||
await tapBack();
|
||||
});
|
||||
});
|
||||
describe('Ignore user from Message', () => {
|
||||
it('should ignore user from message', async () => {
|
||||
const channelName = data.channels.detoxpublicignore.name;
|
||||
await navigateToRoom(channelName);
|
||||
await element(by.id('room-view-join-button')).tap();
|
||||
await sleep(300);
|
||||
await sendMessage(data.users.alternate, channelName, 'message-01');
|
||||
await sendMessage(data.users.alternate, channelName, 'message-02');
|
||||
await waitFor(element(by[textMatcher](user)).atIndex(0))
|
||||
.toExist()
|
||||
.withTimeout(30000);
|
||||
await sleep(300);
|
||||
await element(by[textMatcher](user)).atIndex(0).tap();
|
||||
await expect(element(by.id('room-info-view-ignore').withDescendant(by[textMatcher]('Ignore')))).toExist();
|
||||
await element(by.id('room-info-view-ignore')).tap();
|
||||
await expect(element(by.id('room-info-view-ignore').withDescendant(by[textMatcher]('Unignore')))).toExist();
|
||||
await tapBack();
|
||||
});
|
||||
it('should tap to display message', async () => {
|
||||
await expect(element(by[textMatcher]('Message ignored. Tap to display it.')).atIndex(0)).toExist();
|
||||
await element(by[textMatcher]('Message ignored. Tap to display it.')).atIndex(0).tap();
|
||||
await waitFor(element(by[textMatcher](user)))
|
||||
.toBeVisible()
|
||||
.withTimeout(1000);
|
||||
await element(by[textMatcher](user)).atIndex(0).tap();
|
||||
await expect(element(by.id('room-info-view-ignore').withDescendant(by[textMatcher]('Unignore')))).toExist();
|
||||
await element(by.id('room-info-view-ignore')).tap();
|
||||
await expect(element(by.id('room-info-view-ignore').withDescendant(by[textMatcher]('Ignore')))).toExist();
|
||||
await tapBack();
|
||||
await expect(element(by[textMatcher]('message-02')).atIndex(0)).toBeVisible();
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
|
@ -370,7 +370,7 @@ PODS:
|
|||
- React-Core
|
||||
- react-native-netinfo (6.0.0):
|
||||
- React-Core
|
||||
- react-native-notifications (4.2.4):
|
||||
- react-native-notifications (4.3.1):
|
||||
- React-Core
|
||||
- react-native-orientation-locker (1.1.8):
|
||||
- React
|
||||
|
@ -487,7 +487,7 @@ PODS:
|
|||
- React
|
||||
- rn-fetch-blob (0.12.0):
|
||||
- React-Core
|
||||
- RNBootSplash (3.2.4):
|
||||
- RNBootSplash (4.3.2):
|
||||
- React-Core
|
||||
- RNCAsyncStorage (1.17.9):
|
||||
- React-Core
|
||||
|
@ -946,7 +946,7 @@ SPEC CHECKSUMS:
|
|||
react-native-jitsi-meet: 3e3ac5d0445091154119f94342efd55c8b1124ce
|
||||
react-native-mmkv-storage: ba38e5e813ea3d5d37af834a9d867b1ce10aa96d
|
||||
react-native-netinfo: e849fc21ca2f4128a5726c801a82fc6f4a6db50d
|
||||
react-native-notifications: 3de8ef9cd800e5db0225d9aa46b228d2b94ce51e
|
||||
react-native-notifications: 33ec77006f7987bb22de8f1665889abc633b9196
|
||||
react-native-orientation-locker: f0ca1a8e5031dab6b74bfb4ab33a17ed2c2fcb0d
|
||||
react-native-restart: 733a51ad137f15b0f8dc34c4082e55af7da00979
|
||||
react-native-safe-area-context: f0906bf8bc9835ac9a9d3f97e8bde2a997d8da79
|
||||
|
@ -969,7 +969,7 @@ SPEC CHECKSUMS:
|
|||
ReactNativeUiLib: cde7263a7d308b60161cd286f95c9433e79f2f7d
|
||||
rn-extensions-share: 5fd84a80e6594706f0dfa1884f2d6d591b382cf5
|
||||
rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba
|
||||
RNBootSplash: 4844706cbb56a3270556c9b94e59dedadccd47e4
|
||||
RNBootSplash: 5f346163977573d6b2aeba1b25df9d2245c0d73c
|
||||
RNCAsyncStorage: b2489b49e38c85e10ed45a888d13a2a4c7b32ea1
|
||||
RNCClipboard: cc054ad1e8a33d2a74cd13e565588b4ca928d8fd
|
||||
RNCMaskedView: 0e1bc4bfa8365eba5fbbb71e07fbdc0555249489
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
0B27ED342956F07641034CD4 /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 95BB2D8B49B090E54CB0E6C4 /* libPods-defaults-Rocket.Chat.a */; };
|
||||
0C6E2DE448364EA896869ADF /* libc++.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = B37C79D9BD0742CE936B6982 /* libc++.tbd */; };
|
||||
13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
|
||||
13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
|
||||
|
@ -78,8 +79,6 @@
|
|||
1EFEB59C2493B6640072EDC0 /* NotificationService.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1EFEB5952493B6640072EDC0 /* NotificationService.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
|
||||
24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 06BB44DD4855498082A744AD /* libz.tbd */; };
|
||||
4C4C8603EF082F0A33A95522 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */; };
|
||||
5D2080AFB7696E1A6A2B4209 /* libPods-defaults-Rocket.Chat.a in Frameworks */ = {isa = PBXBuildFile; fileRef = F380AA6A42141BB1B0512548 /* libPods-defaults-Rocket.Chat.a */; };
|
||||
77CEAA62EF4A0883AB7594F0 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A8C24C4BD4B58A39965CD302 /* libPods-defaults-ShareRocketChatRN.a */; };
|
||||
7A006F14229C83B600803143 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 7A006F13229C83B600803143 /* GoogleService-Info.plist */; };
|
||||
7A0D62D2242AB187006D5C06 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */; };
|
||||
7A14FCED257FEB3A005BDCD4 /* Experimental.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */; };
|
||||
|
@ -140,11 +139,12 @@
|
|||
7AE10C0728A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
||||
7AE10C0828A59530003593CB /* Inter.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 7AE10C0528A59530003593CB /* Inter.ttf */; };
|
||||
85160EB6C143E0493FE5F014 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 194D9A8897F4A486C2C6F89A /* ExpoModulesProvider.swift */; };
|
||||
B6AE7655841584F76CF6F6E3 /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3B25203B92671649A4D40DF1 /* libPods-defaults-RocketChatRN.a */; };
|
||||
AA7822A0F1B9FC4EAA1B1705 /* libPods-defaults-RocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = E15CDD2B6C40595B89CBE323 /* libPods-defaults-RocketChatRN.a */; };
|
||||
BC404914E86821389EEB543D /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */; };
|
||||
D94D81FB9E10756FAA03F203 /* ExpoModulesProvider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */; };
|
||||
DB59BF968DBBB07A9DB32234 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A77129D0A3428801312D16C9 /* libPods-defaults-ShareRocketChatRN.a */; };
|
||||
DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = BA7E862283664608B3894E34 /* libWatermelonDB.a */; };
|
||||
EAD2B6F1B2A7E88F391E7FC3 /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0EC05AED6BE930F72082CECD /* libPods-defaults-NotificationService.a */; };
|
||||
E0C21D47690209D0D6C9293A /* libPods-defaults-NotificationService.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 516DD5885ACB76B0C02D9D71 /* libPods-defaults-NotificationService.a */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXContainerItemProxy section */
|
||||
|
@ -209,7 +209,6 @@
|
|||
008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
|
||||
016747EF3B9FED8DE2C9DA14 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-ShareRocketChatRN/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||
06BB44DD4855498082A744AD /* libz.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
|
||||
0EC05AED6BE930F72082CECD /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07F961A680F5B00A75B9A /* Rocket.Chat Experimental.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Rocket.Chat Experimental.app"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = RocketChatRN/AppDelegate.h; sourceTree = "<group>"; };
|
||||
13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = RocketChatRN/Images.xcassets; sourceTree = "<group>"; };
|
||||
|
@ -261,13 +260,12 @@
|
|||
1EFEB5972493B6640072EDC0 /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
|
||||
1EFEB5992493B6640072EDC0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
1EFEB5A12493B67D0072EDC0 /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = "<group>"; };
|
||||
254D36979DFB5715FCAB46F7 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
20BE132DC55E2A128E828E6D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||
391C4F7AA7023CD41EEBD106 /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-Rocket.Chat/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||
3B25203B92671649A4D40DF1 /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
45D5C142B655F8EFD006792C /* ExpoModulesProvider.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ExpoModulesProvider.swift; path = "Pods/Target Support Files/Pods-defaults-RocketChatRN/ExpoModulesProvider.swift"; sourceTree = "<group>"; };
|
||||
50A6A15C33C12A702C5D7432 /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = "<group>"; };
|
||||
4C1CEE8C876A117AB69C9BED /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
516DD5885ACB76B0C02D9D71 /* libPods-defaults-NotificationService.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-NotificationService.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
60B2A6A31FC4588700BD58E5 /* RocketChatRN.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; name = RocketChatRN.entitlements; path = RocketChatRN/RocketChatRN.entitlements; sourceTree = "<group>"; };
|
||||
6DB79D72B15CF5F4FF58E661 /* Pods-defaults-NotificationService.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.debug.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
7A006F13229C83B600803143 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||
7A0D62D1242AB187006D5C06 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
|
||||
7A14FCEC257FEB3A005BDCD4 /* Experimental.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Experimental.xcassets; sourceTree = "<group>"; };
|
||||
|
@ -278,15 +276,17 @@
|
|||
7AAB3E52257E6A6E00707CF6 /* Rocket.Chat.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Rocket.Chat.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
7ACD4853222860DE00442C55 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
|
||||
7AE10C0528A59530003593CB /* Inter.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Inter.ttf; sourceTree = "<group>"; };
|
||||
88C94FFF94CEED3642725018 /* Pods-defaults-ShareRocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||
99E7E1A036C0993816456EC8 /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
A8C24C4BD4B58A39965CD302 /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
95BB2D8B49B090E54CB0E6C4 /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
95E4F27F34B2F45177152C0C /* Pods-defaults-NotificationService.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-NotificationService.release.xcconfig"; path = "Target Support Files/Pods-defaults-NotificationService/Pods-defaults-NotificationService.release.xcconfig"; sourceTree = "<group>"; };
|
||||
995DDC82FEFCE80FAC748822 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-ShareRocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
A77129D0A3428801312D16C9 /* libPods-defaults-ShareRocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-ShareRocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
B37C79D9BD0742CE936B6982 /* libc++.tbd */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = "libc++.tbd"; path = "usr/lib/libc++.tbd"; sourceTree = SDKROOT; };
|
||||
B3C998695BD48FC0C05EB743 /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
B526DEF42C42CFCDC2BA4DE3 /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = "<group>"; };
|
||||
B96B87854157F6A51973415A /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||
BA7E862283664608B3894E34 /* libWatermelonDB.a */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = archive.ar; path = libWatermelonDB.a; sourceTree = "<group>"; };
|
||||
C9B732133AD96F9C93DAAE92 /* Pods-defaults-RocketChatRN.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.release.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.release.xcconfig"; sourceTree = "<group>"; };
|
||||
F380AA6A42141BB1B0512548 /* libPods-defaults-Rocket.Chat.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-Rocket.Chat.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
F4BF2B56AF0C399334E0AD0B /* Pods-defaults-Rocket.Chat.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.debug.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
FAD726E704E4DCF6C9EB71F0 /* Pods-defaults-Rocket.Chat.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-Rocket.Chat.release.xcconfig"; path = "Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat.release.xcconfig"; sourceTree = "<group>"; };
|
||||
C055F0F63FB8EE3AE75DD19A /* Pods-defaults-RocketChatRN.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-defaults-RocketChatRN.debug.xcconfig"; path = "Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN.debug.xcconfig"; sourceTree = "<group>"; };
|
||||
E15CDD2B6C40595B89CBE323 /* libPods-defaults-RocketChatRN.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-defaults-RocketChatRN.a"; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
|
@ -307,7 +307,7 @@
|
|||
7ACD4897222860DE00442C55 /* JavaScriptCore.framework in Frameworks */,
|
||||
24A2AEF2383D44B586D31C01 /* libz.tbd in Frameworks */,
|
||||
DD2BA30A89E64F189C2C24AC /* libWatermelonDB.a in Frameworks */,
|
||||
B6AE7655841584F76CF6F6E3 /* libPods-defaults-RocketChatRN.a in Frameworks */,
|
||||
AA7822A0F1B9FC4EAA1B1705 /* libPods-defaults-RocketChatRN.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -316,7 +316,7 @@
|
|||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
1E25743422CBA2CF005A877F /* JavaScriptCore.framework in Frameworks */,
|
||||
77CEAA62EF4A0883AB7594F0 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */,
|
||||
DB59BF968DBBB07A9DB32234 /* libPods-defaults-ShareRocketChatRN.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -324,7 +324,7 @@
|
|||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
EAD2B6F1B2A7E88F391E7FC3 /* libPods-defaults-NotificationService.a in Frameworks */,
|
||||
E0C21D47690209D0D6C9293A /* libPods-defaults-NotificationService.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -345,7 +345,7 @@
|
|||
7AAB3E3D257E6A6E00707CF6 /* JavaScriptCore.framework in Frameworks */,
|
||||
7AAB3E3E257E6A6E00707CF6 /* libz.tbd in Frameworks */,
|
||||
7AAB3E3F257E6A6E00707CF6 /* libWatermelonDB.a in Frameworks */,
|
||||
5D2080AFB7696E1A6A2B4209 /* libPods-defaults-Rocket.Chat.a in Frameworks */,
|
||||
0B27ED342956F07641034CD4 /* libPods-defaults-Rocket.Chat.a in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
|
@ -494,14 +494,14 @@
|
|||
7AC2B09613AA7C3FEBAC9F57 /* Pods */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
6DB79D72B15CF5F4FF58E661 /* Pods-defaults-NotificationService.debug.xcconfig */,
|
||||
50A6A15C33C12A702C5D7432 /* Pods-defaults-NotificationService.release.xcconfig */,
|
||||
F4BF2B56AF0C399334E0AD0B /* Pods-defaults-Rocket.Chat.debug.xcconfig */,
|
||||
FAD726E704E4DCF6C9EB71F0 /* Pods-defaults-Rocket.Chat.release.xcconfig */,
|
||||
99E7E1A036C0993816456EC8 /* Pods-defaults-RocketChatRN.debug.xcconfig */,
|
||||
C9B732133AD96F9C93DAAE92 /* Pods-defaults-RocketChatRN.release.xcconfig */,
|
||||
254D36979DFB5715FCAB46F7 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */,
|
||||
88C94FFF94CEED3642725018 /* Pods-defaults-ShareRocketChatRN.release.xcconfig */,
|
||||
4C1CEE8C876A117AB69C9BED /* Pods-defaults-NotificationService.debug.xcconfig */,
|
||||
95E4F27F34B2F45177152C0C /* Pods-defaults-NotificationService.release.xcconfig */,
|
||||
B3C998695BD48FC0C05EB743 /* Pods-defaults-Rocket.Chat.debug.xcconfig */,
|
||||
B526DEF42C42CFCDC2BA4DE3 /* Pods-defaults-Rocket.Chat.release.xcconfig */,
|
||||
C055F0F63FB8EE3AE75DD19A /* Pods-defaults-RocketChatRN.debug.xcconfig */,
|
||||
B96B87854157F6A51973415A /* Pods-defaults-RocketChatRN.release.xcconfig */,
|
||||
995DDC82FEFCE80FAC748822 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */,
|
||||
20BE132DC55E2A128E828E6D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */,
|
||||
);
|
||||
path = Pods;
|
||||
sourceTree = "<group>";
|
||||
|
@ -592,10 +592,10 @@
|
|||
7ACD4853222860DE00442C55 /* JavaScriptCore.framework */,
|
||||
B37C79D9BD0742CE936B6982 /* libc++.tbd */,
|
||||
06BB44DD4855498082A744AD /* libz.tbd */,
|
||||
0EC05AED6BE930F72082CECD /* libPods-defaults-NotificationService.a */,
|
||||
F380AA6A42141BB1B0512548 /* libPods-defaults-Rocket.Chat.a */,
|
||||
3B25203B92671649A4D40DF1 /* libPods-defaults-RocketChatRN.a */,
|
||||
A8C24C4BD4B58A39965CD302 /* libPods-defaults-ShareRocketChatRN.a */,
|
||||
516DD5885ACB76B0C02D9D71 /* libPods-defaults-NotificationService.a */,
|
||||
95BB2D8B49B090E54CB0E6C4 /* libPods-defaults-Rocket.Chat.a */,
|
||||
E15CDD2B6C40595B89CBE323 /* libPods-defaults-RocketChatRN.a */,
|
||||
A77129D0A3428801312D16C9 /* libPods-defaults-ShareRocketChatRN.a */,
|
||||
);
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
|
@ -615,7 +615,7 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "RocketChatRN" */;
|
||||
buildPhases = (
|
||||
845019AB20743AD73331AE01 /* [CP] Check Pods Manifest.lock */,
|
||||
5E876E97E065D255440BF14B /* [CP] Check Pods Manifest.lock */,
|
||||
7AA5C63E23E30D110005C4A7 /* Start Packager */,
|
||||
13B07F871A680F5B00A75B9A /* Sources */,
|
||||
13B07F8C1A680F5B00A75B9A /* Frameworks */,
|
||||
|
@ -624,8 +624,8 @@
|
|||
1EC6ACF422CB9FC300A41C61 /* Embed App Extensions */,
|
||||
1E1EA8082326CCE300E22452 /* ShellScript */,
|
||||
7AAE9EB32891A0D20024F559 /* Upload source maps to Bugsnag */,
|
||||
658B70C0099713BF5CFB3BAF /* [CP] Embed Pods Frameworks */,
|
||||
4BBF4B26448A97A37A0149F9 /* [CP] Copy Pods Resources */,
|
||||
4D5466345115691D0CEFB787 /* [CP] Embed Pods Frameworks */,
|
||||
0E5594782559C03CA9F86D07 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -642,12 +642,12 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1EC6ACF322CB9FC300A41C61 /* Build configuration list for PBXNativeTarget "ShareRocketChatRN" */;
|
||||
buildPhases = (
|
||||
09E39CF1ED5A2E6315DB1464 /* [CP] Check Pods Manifest.lock */,
|
||||
1829F5568F6A73113CC7055E /* [CP] Check Pods Manifest.lock */,
|
||||
1EC6ACAC22CB9FC300A41C61 /* Sources */,
|
||||
1EC6ACAD22CB9FC300A41C61 /* Frameworks */,
|
||||
1EC6ACAE22CB9FC300A41C61 /* Resources */,
|
||||
1EFE4DC322CBF36300B766B7 /* ShellScript */,
|
||||
8EC6710078E2CFC3B3DB6B5F /* [CP] Copy Pods Resources */,
|
||||
5A34EA3A3461E066BA3EB6DC /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -662,11 +662,11 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1EFEB5A02493B6640072EDC0 /* Build configuration list for PBXNativeTarget "NotificationService" */;
|
||||
buildPhases = (
|
||||
755328D542982EDBE9B03461 /* [CP] Check Pods Manifest.lock */,
|
||||
1F7D2DA5D64EE2851767A711 /* [CP] Check Pods Manifest.lock */,
|
||||
1EFEB5912493B6640072EDC0 /* Sources */,
|
||||
1EFEB5922493B6640072EDC0 /* Frameworks */,
|
||||
1EFEB5932493B6640072EDC0 /* Resources */,
|
||||
C2C0E6D8A6119C88C88FD59C /* [CP] Copy Pods Resources */,
|
||||
F1D29D1347F1DD07D1DD6F3C /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -681,7 +681,7 @@
|
|||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 7AAB3E4F257E6A6E00707CF6 /* Build configuration list for PBXNativeTarget "Rocket.Chat" */;
|
||||
buildPhases = (
|
||||
BE612231113152F17BE37B0F /* [CP] Check Pods Manifest.lock */,
|
||||
51CAFCF15E12ADE7B1346351 /* [CP] Check Pods Manifest.lock */,
|
||||
7AAB3E13257E6A6E00707CF6 /* Start Packager */,
|
||||
7AAB3E14257E6A6E00707CF6 /* Sources */,
|
||||
7AAB3E32257E6A6E00707CF6 /* Frameworks */,
|
||||
|
@ -690,8 +690,8 @@
|
|||
7AAB3E48257E6A6E00707CF6 /* Embed App Extensions */,
|
||||
7AAB3E4B257E6A6E00707CF6 /* ShellScript */,
|
||||
7A10288726B1D15200E47EF8 /* Upload source maps to Bugsnag */,
|
||||
48B05D1F0B2FD77783C36E35 /* [CP] Embed Pods Frameworks */,
|
||||
9E0342D251933ABA1560700C /* [CP] Copy Pods Resources */,
|
||||
3F0ACE5A0BFF572754F0B113 /* [CP] Embed Pods Frameworks */,
|
||||
2DD06D385EF4607F24CDD7E6 /* [CP] Copy Pods Resources */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
|
@ -841,87 +841,7 @@
|
|||
shellPath = /bin/sh;
|
||||
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||
};
|
||||
09E39CF1ED5A2E6315DB1464 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-ShareRocketChatRN-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
1E1EA8082326CCE300E22452 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "echo \"Target architectures: $ARCHS\"\n\nAPP_PATH=\"${TARGET_BUILD_DIR}/${WRAPPER_NAME}\"\n\nfind \"$APP_PATH\" -name '*.framework' -type d | while read -r FRAMEWORK\ndo\nFRAMEWORK_EXECUTABLE_NAME=$(defaults read \"$FRAMEWORK/Info.plist\" CFBundleExecutable)\nFRAMEWORK_EXECUTABLE_PATH=\"$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME\"\necho \"Executable is $FRAMEWORK_EXECUTABLE_PATH\"\necho $(lipo -info \"$FRAMEWORK_EXECUTABLE_PATH\")\n\nFRAMEWORK_TMP_PATH=\"$FRAMEWORK_EXECUTABLE_PATH-tmp\"\n\n# remove simulator's archs if location is not simulator's directory\ncase \"${TARGET_BUILD_DIR}\" in\n*\"iphonesimulator\")\necho \"No need to remove archs\"\n;;\n*)\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"i386\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"i386\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"i386 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"x86_64\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"x86_64\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"x86_64 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\n;;\nesac\n\necho \"Completed for executable $FRAMEWORK_EXECUTABLE_PATH\"\necho $\n\ndone\n";
|
||||
};
|
||||
1EFE4DC322CBF36300B766B7 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||
};
|
||||
48B05D1F0B2FD77783C36E35 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/WebRTC.framework/WebRTC",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeetSDK.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
4BBF4B26448A97A37A0149F9 /* [CP] Copy Pods Resources */ = {
|
||||
0E5594782559C03CA9F86D07 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -977,7 +897,165 @@
|
|||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
658B70C0099713BF5CFB3BAF /* [CP] Embed Pods Frameworks */ = {
|
||||
1829F5568F6A73113CC7055E /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-ShareRocketChatRN-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
1E1EA8082326CCE300E22452 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "echo \"Target architectures: $ARCHS\"\n\nAPP_PATH=\"${TARGET_BUILD_DIR}/${WRAPPER_NAME}\"\n\nfind \"$APP_PATH\" -name '*.framework' -type d | while read -r FRAMEWORK\ndo\nFRAMEWORK_EXECUTABLE_NAME=$(defaults read \"$FRAMEWORK/Info.plist\" CFBundleExecutable)\nFRAMEWORK_EXECUTABLE_PATH=\"$FRAMEWORK/$FRAMEWORK_EXECUTABLE_NAME\"\necho \"Executable is $FRAMEWORK_EXECUTABLE_PATH\"\necho $(lipo -info \"$FRAMEWORK_EXECUTABLE_PATH\")\n\nFRAMEWORK_TMP_PATH=\"$FRAMEWORK_EXECUTABLE_PATH-tmp\"\n\n# remove simulator's archs if location is not simulator's directory\ncase \"${TARGET_BUILD_DIR}\" in\n*\"iphonesimulator\")\necho \"No need to remove archs\"\n;;\n*)\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"i386\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"i386\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"i386 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\nif $(lipo \"$FRAMEWORK_EXECUTABLE_PATH\" -verify_arch \"x86_64\") ; then\nlipo -output \"$FRAMEWORK_TMP_PATH\" -remove \"x86_64\" \"$FRAMEWORK_EXECUTABLE_PATH\"\necho \"x86_64 architecture removed\"\nrm \"$FRAMEWORK_EXECUTABLE_PATH\"\nmv \"$FRAMEWORK_TMP_PATH\" \"$FRAMEWORK_EXECUTABLE_PATH\"\nfi\n;;\nesac\n\necho \"Completed for executable $FRAMEWORK_EXECUTABLE_PATH\"\necho $\n\ndone\n";
|
||||
};
|
||||
1EFE4DC322CBF36300B766B7 /* ShellScript */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
);
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "export EXTRA_PACKAGER_ARGS=\"--sourcemap-output $TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\"\nexport NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
|
||||
};
|
||||
1F7D2DA5D64EE2851767A711 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-NotificationService-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
2DD06D385EF4607F24CDD7E6 /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
3F0ACE5A0BFF572754F0B113 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/JitsiMeetSDK.framework/JitsiMeetSDK",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/JitsiMeetSDK/WebRTC.framework/WebRTC",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/OpenSSL-Universal/OpenSSL.framework/OpenSSL",
|
||||
"${PODS_XCFRAMEWORKS_BUILD_DIR}/hermes-engine/hermes.framework/hermes",
|
||||
);
|
||||
name = "[CP] Embed Pods Frameworks";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JitsiMeetSDK.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/WebRTC.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/OpenSSL.framework",
|
||||
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/hermes.framework",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
4D5466345115691D0CEFB787 /* [CP] Embed Pods Frameworks */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -1001,7 +1079,7 @@
|
|||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-RocketChatRN/Pods-defaults-RocketChatRN-frameworks.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
755328D542982EDBE9B03461 /* [CP] Check Pods Manifest.lock */ = {
|
||||
51CAFCF15E12ADE7B1346351 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -1016,7 +1094,85 @@
|
|||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-NotificationService-checkManifestLockResult.txt",
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
5A34EA3A3461E066BA3EB6DC /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
5E876E97E065D255440BF14B /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
|
@ -1126,163 +1282,7 @@
|
|||
shellPath = /bin/sh;
|
||||
shellScript = "SOURCE_MAP=\"$TMPDIR/$(md5 -qs \"$CONFIGURATION_BUILD_DIR\")-main.jsbundle.map\" ../node_modules/@bugsnag/react-native/bugsnag-react-native-xcode.sh\n";
|
||||
};
|
||||
845019AB20743AD73331AE01 /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-RocketChatRN-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
8EC6710078E2CFC3B3DB6B5F /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-ShareRocketChatRN/Pods-defaults-ShareRocketChatRN-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
9E0342D251933ABA1560700C /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/RNImageCropPicker/QBImagePicker.bundle",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
|
||||
"${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/React-Core/AccessibilityResources.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/TOCropViewController/TOCropViewControllerBundle.bundle",
|
||||
"${PODS_CONFIGURATION_BUILD_DIR}/iosMath/mathFonts.bundle",
|
||||
);
|
||||
name = "[CP] Copy Pods Resources";
|
||||
outputPaths = (
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/QBImagePicker.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AccessibilityResources.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/TOCropViewControllerBundle.bundle",
|
||||
"${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/mathFonts.bundle",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-defaults-Rocket.Chat/Pods-defaults-Rocket.Chat-resources.sh\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
BE612231113152F17BE37B0F /* [CP] Check Pods Manifest.lock */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
);
|
||||
inputFileListPaths = (
|
||||
);
|
||||
inputPaths = (
|
||||
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
|
||||
"${PODS_ROOT}/Manifest.lock",
|
||||
);
|
||||
name = "[CP] Check Pods Manifest.lock";
|
||||
outputFileListPaths = (
|
||||
);
|
||||
outputPaths = (
|
||||
"$(DERIVED_FILE_DIR)/Pods-defaults-Rocket.Chat-checkManifestLockResult.txt",
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
shellPath = /bin/sh;
|
||||
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
|
||||
showEnvVarsInLog = 0;
|
||||
};
|
||||
C2C0E6D8A6119C88C88FD59C /* [CP] Copy Pods Resources */ = {
|
||||
F1D29D1347F1DD07D1DD6F3C /* [CP] Copy Pods Resources */ = {
|
||||
isa = PBXShellScriptBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
|
@ -1495,7 +1495,7 @@
|
|||
/* Begin XCBuildConfiguration section */
|
||||
13B07F941A680F5B00A75B9A /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 99E7E1A036C0993816456EC8 /* Pods-defaults-RocketChatRN.debug.xcconfig */;
|
||||
baseConfigurationReference = C055F0F63FB8EE3AE75DD19A /* Pods-defaults-RocketChatRN.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
|
@ -1552,7 +1552,7 @@
|
|||
};
|
||||
13B07F951A680F5B00A75B9A /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = C9B732133AD96F9C93DAAE92 /* Pods-defaults-RocketChatRN.release.xcconfig */;
|
||||
baseConfigurationReference = B96B87854157F6A51973415A /* Pods-defaults-RocketChatRN.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
|
@ -1608,7 +1608,7 @@
|
|||
};
|
||||
1EC6ACBC22CB9FC300A41C61 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 254D36979DFB5715FCAB46F7 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */;
|
||||
baseConfigurationReference = 995DDC82FEFCE80FAC748822 /* Pods-defaults-ShareRocketChatRN.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
@ -1676,7 +1676,7 @@
|
|||
};
|
||||
1EC6ACBD22CB9FC300A41C61 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 88C94FFF94CEED3642725018 /* Pods-defaults-ShareRocketChatRN.release.xcconfig */;
|
||||
baseConfigurationReference = 20BE132DC55E2A128E828E6D /* Pods-defaults-ShareRocketChatRN.release.xcconfig */;
|
||||
buildSettings = {
|
||||
APPLICATION_EXTENSION_API_ONLY = YES;
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
|
@ -1743,7 +1743,7 @@
|
|||
};
|
||||
1EFEB59D2493B6640072EDC0 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 6DB79D72B15CF5F4FF58E661 /* Pods-defaults-NotificationService.debug.xcconfig */;
|
||||
baseConfigurationReference = 4C1CEE8C876A117AB69C9BED /* Pods-defaults-NotificationService.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
|
@ -1762,7 +1762,7 @@
|
|||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 4.31.0;
|
||||
MARKETING_VERSION = 4.32.0;
|
||||
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
|
||||
MTL_FAST_MATH = YES;
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_DEBUG";
|
||||
|
@ -1780,7 +1780,7 @@
|
|||
};
|
||||
1EFEB59E2493B6640072EDC0 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = 50A6A15C33C12A702C5D7432 /* Pods-defaults-NotificationService.release.xcconfig */;
|
||||
baseConfigurationReference = 95E4F27F34B2F45177152C0C /* Pods-defaults-NotificationService.release.xcconfig */;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_NONNULL = YES;
|
||||
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
|
||||
|
@ -1801,7 +1801,7 @@
|
|||
INFOPLIST_FILE = NotificationService/Info.plist;
|
||||
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
|
||||
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
|
||||
MARKETING_VERSION = 4.31.0;
|
||||
MARKETING_VERSION = 4.32.0;
|
||||
MTL_FAST_MATH = YES;
|
||||
OTHER_SWIFT_FLAGS = "$(inherited) -D EXPO_CONFIGURATION_RELEASE";
|
||||
PRODUCT_BUNDLE_IDENTIFIER = chat.rocket.reactnative.NotificationService;
|
||||
|
@ -1817,7 +1817,7 @@
|
|||
};
|
||||
7AAB3E50257E6A6E00707CF6 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = F4BF2B56AF0C399334E0AD0B /* Pods-defaults-Rocket.Chat.debug.xcconfig */;
|
||||
baseConfigurationReference = B3C998695BD48FC0C05EB743 /* Pods-defaults-Rocket.Chat.debug.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
|
@ -1871,7 +1871,7 @@
|
|||
};
|
||||
7AAB3E51257E6A6E00707CF6 /* Release */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
baseConfigurationReference = FAD726E704E4DCF6C9EB71F0 /* Pods-defaults-Rocket.Chat.release.xcconfig */;
|
||||
baseConfigurationReference = B526DEF42C42CFCDC2BA4DE3 /* Pods-defaults-Rocket.Chat.release.xcconfig */;
|
||||
buildSettings = {
|
||||
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
|
||||
APPLICATION_EXTENSION_API_ONLY = NO;
|
||||
|
|
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="17147" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
|
||||
<device id="retina4_7" orientation="portrait" appearance="light"/>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="17120"/>
|
||||
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<scenes>
|
||||
<!--View Controller-->
|
||||
<scene sceneID="EHf-IW-A2E">
|
||||
<objects>
|
||||
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
|
||||
<view key="view" autoresizesSubviews="NO" userInteractionEnabled="NO" contentMode="scaleToFill" id="Ze5-6b-2t3">
|
||||
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
|
||||
<autoresizingMask key="autoresizingMask"/>
|
||||
<subviews>
|
||||
<imageView autoresizesSubviews="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" image="BootSplashLogo" translatesAutoresizingMaskIntoConstraints="NO" id="3lX-Ut-9ad">
|
||||
<rect key="frame" x="137.5" y="283.5" width="100" height="100"/>
|
||||
<accessibility key="accessibilityConfiguration">
|
||||
<accessibilityTraits key="traits" image="YES" notEnabled="YES"/>
|
||||
</accessibility>
|
||||
</imageView>
|
||||
</subviews>
|
||||
<viewLayoutGuide key="safeArea" id="Bcu-3y-fUS"/>
|
||||
<color key="backgroundColor" red="1.00000000000000" green="1.00000000000000" blue="1.00000000000000" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
<accessibility key="accessibilityConfiguration">
|
||||
<accessibilityTraits key="traits" notEnabled="YES"/>
|
||||
</accessibility>
|
||||
<constraints>
|
||||
<constraint firstItem="3lX-Ut-9ad" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="Fh9-Fy-1nT"/>
|
||||
<constraint firstItem="3lX-Ut-9ad" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="nvB-Ic-PnI"/>
|
||||
</constraints>
|
||||
</view>
|
||||
</viewController>
|
||||
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
|
||||
</objects>
|
||||
<point key="canvasLocation" x="0.0" y="0.0"/>
|
||||
</scene>
|
||||
</scenes>
|
||||
<resources>
|
||||
<image name="BootSplashLogo" width="100" height="100"/>
|
||||
</resources>
|
||||
</document>
|
|
@ -26,7 +26,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.31.0</string>
|
||||
<string>4.32.0</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleURLTypes</key>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<key>CFBundlePackageType</key>
|
||||
<string>XPC!</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>4.31.0</string>
|
||||
<string>4.32.0</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>1</string>
|
||||
<key>KeychainGroup</key>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "rocket-chat-reactnative",
|
||||
"version": "4.31.0",
|
||||
"version": "4.32.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"start": "react-native start",
|
||||
|
@ -84,7 +84,7 @@
|
|||
"react-native": "RocketChat/react-native#0.68.2",
|
||||
"react-native-animatable": "^1.3.3",
|
||||
"react-native-background-timer": "2.4.1",
|
||||
"react-native-bootsplash": "3.2.4",
|
||||
"react-native-bootsplash": "^4.3.2",
|
||||
"react-native-config-reader": "^4.1.1",
|
||||
"react-native-console-time-polyfill": "1.2.3",
|
||||
"react-native-device-info": "8.4.8",
|
||||
|
@ -104,7 +104,7 @@
|
|||
"react-native-mmkv-storage": "^0.7.6",
|
||||
"react-native-modal": "13.0.1",
|
||||
"react-native-navigation-bar-color": "2.0.1",
|
||||
"react-native-notifications": "4.2.4",
|
||||
"react-native-notifications": "^4.3.1",
|
||||
"react-native-notifier": "1.6.1",
|
||||
"react-native-orientation-locker": "1.1.8",
|
||||
"react-native-picker-select": "^8.0.4",
|
||||
|
|
|
@ -13,8 +13,60 @@ index f9c858b..94ea188 100644
|
|||
|
||||
public abstract class NotificationManagerCompatFacade {
|
||||
public static NotificationManagerCompat from(@NonNull Context context) {
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java
|
||||
index 90969b2..4c00e69 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsModule.java
|
||||
@@ -63,7 +63,7 @@ public class RNNotificationsModule extends ReactContextBaseJavaModule implements
|
||||
@Override
|
||||
public void onNewIntent(Intent intent) {
|
||||
if (NotificationIntentAdapter.canHandleIntent(intent)) {
|
||||
- Bundle notificationData = intent.getExtras();
|
||||
+ Bundle notificationData = NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent);
|
||||
final IPushNotification notification = PushNotification.get(getReactApplicationContext().getApplicationContext(), notificationData);
|
||||
if (notification != null) {
|
||||
notification.onOpened();
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java
|
||||
index eadf41e..a3f71dd 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/RNNotificationsPackage.java
|
||||
@@ -96,8 +96,7 @@ public class RNNotificationsPackage implements ReactPackage, AppLifecycleFacade.
|
||||
Intent intent = activity.getIntent();
|
||||
if (NotificationIntentAdapter.canHandleIntent(intent)) {
|
||||
Context appContext = mApplication.getApplicationContext();
|
||||
- Bundle notificationData = NotificationIntentAdapter.cannotHandleTrampolineActivity(appContext) ?
|
||||
- NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent) : intent.getExtras();
|
||||
+ Bundle notificationData = NotificationIntentAdapter.extractPendingNotificationDataFromIntent(intent);
|
||||
final IPushNotification pushNotification = PushNotification.get(appContext, notificationData);
|
||||
if (pushNotification != null) {
|
||||
pushNotification.onOpened();
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java
|
||||
index 41b4824..4285ac5 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/NotificationIntentAdapter.java
|
||||
@@ -14,17 +14,9 @@ public class NotificationIntentAdapter {
|
||||
|
||||
@SuppressLint("UnspecifiedImmutableFlag")
|
||||
public static PendingIntent createPendingNotificationIntent(Context appContext, PushNotificationProps notification) {
|
||||
- if (cannotHandleTrampolineActivity(appContext)) {
|
||||
- Intent mainActivityIntent = appContext.getPackageManager().getLaunchIntentForPackage(appContext.getPackageName());
|
||||
- mainActivityIntent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle());
|
||||
- TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(appContext);
|
||||
- taskStackBuilder.addNextIntentWithParentStack(mainActivityIntent);
|
||||
- return taskStackBuilder.getPendingIntent((int) System.currentTimeMillis(), PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);
|
||||
- } else {
|
||||
- Intent intent = new Intent(appContext, ProxyService.class);
|
||||
- intent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle());
|
||||
- return PendingIntent.getService(appContext, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_ONE_SHOT);
|
||||
- }
|
||||
+ Intent intent = appContext.getPackageManager().getLaunchIntentForPackage(appContext.getPackageName());
|
||||
+ intent.putExtra(PUSH_NOTIFICATION_EXTRA_NAME, notification.asBundle());
|
||||
+ return PendingIntent.getActivity(appContext, (int) System.currentTimeMillis(), intent, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_ONE_SHOT | PendingIntent.FLAG_IMMUTABLE);
|
||||
}
|
||||
|
||||
public static boolean cannotHandleTrampolineActivity(Context appContext) {
|
||||
diff --git a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java
|
||||
index b93f762..c2b736a 100644
|
||||
index 54a5fb8..06bbfb9 100644
|
||||
--- a/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java
|
||||
+++ b/node_modules/react-native-notifications/lib/android/app/src/main/java/com/wix/reactnativenotifications/core/notification/PushNotification.java
|
||||
@@ -28,7 +28,7 @@ public class PushNotification implements IPushNotification {
|
29
yarn.lock
29
yarn.lock
|
@ -11337,6 +11337,15 @@ fs-extra@^1.0.0:
|
|||
jsonfile "^2.1.0"
|
||||
klaw "^1.0.0"
|
||||
|
||||
fs-extra@^10.1.0:
|
||||
version "10.1.0"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
|
||||
integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
|
||||
dependencies:
|
||||
graceful-fs "^4.2.0"
|
||||
jsonfile "^6.0.1"
|
||||
universalify "^2.0.0"
|
||||
|
||||
fs-extra@^4.0.2:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-4.0.3.tgz#0d852122e5bc5beb453fb028e9c0c9bf36340c94"
|
||||
|
@ -17053,14 +17062,14 @@ react-native-background-timer@2.4.1:
|
|||
resolved "https://registry.yarnpkg.com/react-native-background-timer/-/react-native-background-timer-2.4.1.tgz#a3bc1cafa8c1e3aeefd0611de120298b67978a0f"
|
||||
integrity sha512-TE4Kiy7jUyv+hugxDxitzu38sW1NqjCk4uE5IgU2WevLv7sZacaBc6PZKOShNRPGirLl1NWkaG3LDEkdb9Um5g==
|
||||
|
||||
react-native-bootsplash@3.2.4:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/react-native-bootsplash/-/react-native-bootsplash-3.2.4.tgz#73d3b38606ddc7e1d489012f007c1fbd26fc68d1"
|
||||
integrity sha512-xilF68y/UmypcFuEvt/QYuP03YklbIxp+42DWcU+M0wTVko+oswy+yboTh4JB5YN7zRGpqhbSGnIeIkx0xd98Q==
|
||||
react-native-bootsplash@^4.3.2:
|
||||
version "4.3.2"
|
||||
resolved "https://registry.yarnpkg.com/react-native-bootsplash/-/react-native-bootsplash-4.3.2.tgz#347b024975dc344310ee4d95cb3be56b0b39e381"
|
||||
integrity sha512-HzXl6AKk4sRjEtV+1C7q4gSXP5kYMhpzGaB4DllZNObdZ8oVH8Ac7Y9ShKZ8wLQLJaG/TtzyGHKIDaNi0oNGJA==
|
||||
dependencies:
|
||||
chalk "^4.1.0"
|
||||
fs-extra "^9.1.0"
|
||||
fs-extra "^10.1.0"
|
||||
jimp "^0.16.1"
|
||||
picocolors "^1.0.0"
|
||||
|
||||
react-native-codegen@^0.0.17:
|
||||
version "0.0.17"
|
||||
|
@ -17212,10 +17221,10 @@ react-native-navigation-bar-color@2.0.1:
|
|||
resolved "https://registry.yarnpkg.com/react-native-navigation-bar-color/-/react-native-navigation-bar-color-2.0.1.tgz#ee2be25cc37105f7da355717b0a9a32c9c059ae6"
|
||||
integrity sha512-1kE/oxWt+HYjRxdZdvke9tJ365xaee5n3+euOQA1En8zQuSbOxiE4SYEGM7TeaWnmLJ0l37mRnPHaB2H4mGh0A==
|
||||
|
||||
react-native-notifications@4.2.4:
|
||||
version "4.2.4"
|
||||
resolved "https://registry.yarnpkg.com/react-native-notifications/-/react-native-notifications-4.2.4.tgz#0d686eb1576d3d9cb73dd9db1ee4f212e00f7d89"
|
||||
integrity sha512-ffToxERa2bRUsXShCO19yXY6c6l4Esq7MqRKAb4mPSn+T428X7Je7WYvWOIOVw/BMGJ3R0lPrZk52vDpoYqanw==
|
||||
react-native-notifications@^4.3.1:
|
||||
version "4.3.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-notifications/-/react-native-notifications-4.3.1.tgz#ad9a8e6881bc17cf03ef16d4dfdaee9ec8bb721d"
|
||||
integrity sha512-A668d+Q0/VQRjmrh+LvDpc/REA8GXgwCijXDCIlDHGMK8enmrtdxY5OANQf1VM3hecf+fD0wYFw2uqL/ZR8jgg==
|
||||
|
||||
react-native-notifier@1.6.1:
|
||||
version "1.6.1"
|
||||
|
|
Loading…
Reference in New Issue