From adf0f5ba6f24109183070ed6e8cc11a2daf48357 Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski Date: Tue, 3 May 2022 13:26:27 +0200 Subject: [PATCH 1/4] welcome screen: correct issue with avatar uploader --- src/components/structures/HomePage.tsx | 1 + src/components/views/elements/MiniAvatarUploader.tsx | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/structures/HomePage.tsx b/src/components/structures/HomePage.tsx index ddba1c81d71..daa0e3b9691 100644 --- a/src/components/structures/HomePage.tsx +++ b/src/components/structures/HomePage.tsx @@ -75,6 +75,7 @@ const UserWelcomeTop = () => { hasAvatarLabel={_tDom("Great, that'll help people know it's you")} noAvatarLabel={_tDom("Add a photo so people know it's you.")} setAvatarUrl={url => cli.setAvatarUrl(url)} + isUserAvatar > ; + isUserAvatar?: boolean; } -const MiniAvatarUploader: React.FC = ({ hasAvatar, hasAvatarLabel, noAvatarLabel, setAvatarUrl, children }) => { +const MiniAvatarUploader: React.FC = ({ + hasAvatar, hasAvatarLabel, noAvatarLabel, setAvatarUrl, isUserAvatar, children, +}) => { const cli = useContext(MatrixClientContext); const [busy, setBusy] = useState(false); const [hover, setHover] = useState(false); @@ -54,7 +57,7 @@ const MiniAvatarUploader: React.FC = ({ hasAvatar, hasAvatarLabel, noAva const label = (hasAvatar || busy) ? hasAvatarLabel : noAvatarLabel; const { room } = useContext(RoomContext); - const canSetAvatar = room?.currentState.maySendStateEvent(EventType.RoomAvatar, cli.getUserId()); + const canSetAvatar = isUserAvatar || room?.currentState?.maySendStateEvent(EventType.RoomAvatar, cli.getUserId()); if (!canSetAvatar) return { children }; const visible = !!label && (hover || show); From b6b9d67abc5df70f6380ec7c220f8ad83e232a21 Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski Date: Tue, 3 May 2022 13:26:39 +0200 Subject: [PATCH 2/4] welcome screen: show for everyone without avatar --- src/components/structures/HomePage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/structures/HomePage.tsx b/src/components/structures/HomePage.tsx index daa0e3b9691..a3aec945c13 100644 --- a/src/components/structures/HomePage.tsx +++ b/src/components/structures/HomePage.tsx @@ -101,7 +101,7 @@ const HomePage: React.FC = ({ justRegistered = false }) => { } let introSection; - if (justRegistered) { + if (justRegistered || !!OwnProfileStore.instance.getHttpAvatarUrl(AVATAR_SIZE)) { introSection = ; } else { const brandingConfig = SdkConfig.getObject("branding"); From d5f22b3546bf65689fbda9db8e59de18500802d6 Mon Sep 17 00:00:00 2001 From: Janne Mareike Koschinski Date: Tue, 3 May 2022 13:41:52 +0200 Subject: [PATCH 3/4] welcome screen: add analytics to mini avatar upload --- src/components/structures/HomePage.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/components/structures/HomePage.tsx b/src/components/structures/HomePage.tsx index a3aec945c13..6facd941030 100644 --- a/src/components/structures/HomePage.tsx +++ b/src/components/structures/HomePage.tsx @@ -74,7 +74,10 @@ const UserWelcomeTop = () => { hasAvatar={!!ownProfile.avatarUrl} hasAvatarLabel={_tDom("Great, that'll help people know it's you")} noAvatarLabel={_tDom("Add a photo so people know it's you.")} - setAvatarUrl={url => cli.setAvatarUrl(url)} + setAvatarUrl={async url => { + PosthogTrackers.trackInteraction("WebHomeMiniAvatarUploadButton"); + await cli.setAvatarUrl(url); + }} isUserAvatar > Date: Wed, 4 May 2022 15:16:08 +0200 Subject: [PATCH 4/4] welcome screen: track actual click interaction with upload avatar button --- src/components/structures/HomePage.tsx | 6 ++---- .../views/elements/MiniAvatarUploader.tsx | 20 +++++++++++-------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/components/structures/HomePage.tsx b/src/components/structures/HomePage.tsx index 6facd941030..e84d115e43d 100644 --- a/src/components/structures/HomePage.tsx +++ b/src/components/structures/HomePage.tsx @@ -74,11 +74,9 @@ const UserWelcomeTop = () => { hasAvatar={!!ownProfile.avatarUrl} hasAvatarLabel={_tDom("Great, that'll help people know it's you")} noAvatarLabel={_tDom("Add a photo so people know it's you.")} - setAvatarUrl={async url => { - PosthogTrackers.trackInteraction("WebHomeMiniAvatarUploadButton"); - await cli.setAvatarUrl(url); - }} + setAvatarUrl={url => cli.setAvatarUrl(url)} isUserAvatar + onClick={ev => PosthogTrackers.trackInteraction("WebHomeMiniAvatarUploadButton", ev)} > ; isUserAvatar?: boolean; + onClick?(ev: MouseEvent): void; } const MiniAvatarUploader: React.FC = ({ - hasAvatar, hasAvatarLabel, noAvatarLabel, setAvatarUrl, isUserAvatar, children, + hasAvatar, hasAvatarLabel, noAvatarLabel, setAvatarUrl, isUserAvatar, children, onClick, }) => { const cli = useContext(MatrixClientContext); const [busy, setBusy] = useState(false); @@ -66,7 +67,10 @@ const MiniAvatarUploader: React.FC = ({ type="file" ref={uploadRef} className="mx_MiniAvatarUploader_input" - onClick={chromeFileInputFix} + onClick={(ev) => { + chromeFileInputFix(ev); + onClick?.(ev); + }} onChange={async (ev) => { if (!ev.target.files?.length) return; setBusy(true);