diff --git a/.circleci/config.yml b/.circleci/config.yml index 23c414a05..599170715 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -484,7 +484,7 @@ jobs: - run: name: Build Android command: | - echo "RUNNING_E2E_TESTS=true" > ./.env + export RUNNING_E2E_TESTS=true yarn e2e:android-build - save_cache: *save-gradle-cache - store_artifacts: @@ -582,7 +582,7 @@ jobs: /usr/libexec/PlistBuddy -c "Set :bugsnag:apiKey $BUGSNAG_KEY" ./ios/RocketChatRN/Info.plist /usr/libexec/PlistBuddy -c "Set :bugsnag:apiKey $BUGSNAG_KEY" ./ios/ShareRocketChatRN/Info.plist yarn detox clean-framework-cache && yarn detox build-framework-cache - echo "RUNNING_E2E_TESTS=true" > ./.env + export RUNNING_E2E_TESTS=true yarn e2e:ios-build - persist_to_workspace: root: /Users/distiller/project diff --git a/.env b/.env deleted file mode 100644 index 2c6f3252a..000000000 --- a/.env +++ /dev/null @@ -1,2 +0,0 @@ -# DON'T COMMIT THIS FILE -RUNNING_E2E_TESTS= \ No newline at end of file diff --git a/app/containers/Avatar/index.tsx b/app/containers/Avatar/AvatarContainer.tsx similarity index 54% rename from app/containers/Avatar/index.tsx rename to app/containers/Avatar/AvatarContainer.tsx index 9f762308d..d529c7481 100644 --- a/app/containers/Avatar/index.tsx +++ b/app/containers/Avatar/AvatarContainer.tsx @@ -1,13 +1,11 @@ -import { Q } from '@nozbe/watermelondb'; -import React, { useEffect, useRef, useState } from 'react'; +import React from 'react'; import { shallowEqual, useSelector } from 'react-redux'; -import { Observable, Subscription } from 'rxjs'; -import { IApplicationState, TSubscriptionModel, TUserModel } from '../../definitions'; -import database from '../../lib/database'; +import { IApplicationState } from '../../definitions'; import { getUserSelector } from '../../selectors/login'; import Avatar from './Avatar'; import { IAvatar } from './interfaces'; +import { useAvatarETag } from './useAvatarETag'; const AvatarContainer = ({ style, @@ -23,17 +21,13 @@ const AvatarContainer = ({ isStatic, rid }: IAvatar): React.ReactElement => { - const subscription = useRef(); - const [avatarETag, setAvatarETag] = useState(''); - - const isDirect = () => type === 'd'; - const server = useSelector((state: IApplicationState) => state.share.server.server || state.server.server); const serverVersion = useSelector((state: IApplicationState) => state.share.server.version || state.server.version); - const { id, token } = useSelector( + const { id, token, username } = useSelector( (state: IApplicationState) => ({ id: getUserSelector(state).id, - token: getUserSelector(state).token + token: getUserSelector(state).token, + username: getUserSelector(state).username }), shallowEqual ); @@ -48,41 +42,7 @@ const AvatarContainer = ({ true ); - const init = async () => { - const db = database.active; - const usersCollection = db.get('users'); - const subsCollection = db.get('subscriptions'); - - let record; - try { - if (isDirect()) { - const [user] = await usersCollection.query(Q.where('username', text)).fetch(); - record = user; - } else if (rid) { - record = await subsCollection.find(rid); - } - } catch { - // Record not found - } - - if (record) { - const observable = record.observe() as Observable; - subscription.current = observable.subscribe(r => { - setAvatarETag(r.avatarETag); - }); - } - }; - - useEffect(() => { - if (!avatarETag) { - init(); - } - return () => { - if (subscription?.current?.unsubscribe) { - subscription.current.unsubscribe(); - } - }; - }, [text, type, size, avatarETag, externalProviderUrl]); + const { avatarETag } = useAvatarETag({ username, text, type, rid, id }); return ( { + handleEdit?: () => void; +} + +const AvatarWithEdit = ({ + style, + text = '', + avatar, + emoji, + borderRadius, + type, + children, + onPress, + getCustomEmoji, + isStatic, + rid, + handleEdit +}: IAvatarContainer): React.ReactElement => { + const { colors } = useTheme(); + + const { serverVersion } = useAppSelector(state => ({ + serverVersion: state.server.version + })); + + return ( + <> + + {handleEdit && serverVersion && compareServerVersion(serverVersion, 'greaterThanOrEqualTo', '3.6.0') ? ( +