Skip to content
This repository was archived by the owner on Sep 11, 2024. It is now read-only.

Commit 8aa303f

Browse files
authored
Improve welcome screen, add opt-out analytics (#8474)
1 parent 674aec4 commit 8aa303f

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

src/components/structures/HomePage.tsx

+3-1
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ const UserWelcomeTop = () => {
7575
hasAvatarLabel={_tDom("Great, that'll help people know it's you")}
7676
noAvatarLabel={_tDom("Add a photo so people know it's you.")}
7777
setAvatarUrl={url => cli.setAvatarUrl(url)}
78+
isUserAvatar
79+
onClick={ev => PosthogTrackers.trackInteraction("WebHomeMiniAvatarUploadButton", ev)}
7880
>
7981
<BaseAvatar
8082
idName={userId}
@@ -100,7 +102,7 @@ const HomePage: React.FC<IProps> = ({ justRegistered = false }) => {
100102
}
101103

102104
let introSection;
103-
if (justRegistered) {
105+
if (justRegistered || !!OwnProfileStore.instance.getHttpAvatarUrl(AVATAR_SIZE)) {
104106
introSection = <UserWelcomeTop />;
105107
} else {
106108
const brandingConfig = SdkConfig.getObject("branding");

src/components/views/elements/MiniAvatarUploader.tsx

+16-9
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,18 @@ See the License for the specific language governing permissions and
1414
limitations under the License.
1515
*/
1616

17-
import React, { useContext, useRef, useState } from 'react';
18-
import { EventType } from 'matrix-js-sdk/src/@types/event';
1917
import classNames from 'classnames';
18+
import { EventType } from 'matrix-js-sdk/src/@types/event';
19+
import React, { useContext, useRef, useState, MouseEvent } from 'react';
2020

21-
import AccessibleButton from "./AccessibleButton";
22-
import Spinner from "./Spinner";
21+
import Analytics from "../../../Analytics";
2322
import MatrixClientContext from "../../../contexts/MatrixClientContext";
23+
import RoomContext from "../../../contexts/RoomContext";
2424
import { useTimeout } from "../../../hooks/useTimeout";
25-
import Analytics from "../../../Analytics";
2625
import { TranslatedString } from '../../../languageHandler';
27-
import RoomContext from "../../../contexts/RoomContext";
2826
import { chromeFileInputFix } from "../../../utils/BrowserWorkarounds";
27+
import AccessibleButton from "./AccessibleButton";
28+
import Spinner from "./Spinner";
2929

3030
export const AVATAR_SIZE = 52;
3131

@@ -34,9 +34,13 @@ interface IProps {
3434
noAvatarLabel?: TranslatedString;
3535
hasAvatarLabel?: TranslatedString;
3636
setAvatarUrl(url: string): Promise<unknown>;
37+
isUserAvatar?: boolean;
38+
onClick?(ev: MouseEvent<HTMLInputElement>): void;
3739
}
3840

39-
const MiniAvatarUploader: React.FC<IProps> = ({ hasAvatar, hasAvatarLabel, noAvatarLabel, setAvatarUrl, children }) => {
41+
const MiniAvatarUploader: React.FC<IProps> = ({
42+
hasAvatar, hasAvatarLabel, noAvatarLabel, setAvatarUrl, isUserAvatar, children, onClick,
43+
}) => {
4044
const cli = useContext(MatrixClientContext);
4145
const [busy, setBusy] = useState(false);
4246
const [hover, setHover] = useState(false);
@@ -54,7 +58,7 @@ const MiniAvatarUploader: React.FC<IProps> = ({ hasAvatar, hasAvatarLabel, noAva
5458
const label = (hasAvatar || busy) ? hasAvatarLabel : noAvatarLabel;
5559

5660
const { room } = useContext(RoomContext);
57-
const canSetAvatar = room?.currentState.maySendStateEvent(EventType.RoomAvatar, cli.getUserId());
61+
const canSetAvatar = isUserAvatar || room?.currentState?.maySendStateEvent(EventType.RoomAvatar, cli.getUserId());
5862
if (!canSetAvatar) return <React.Fragment>{ children }</React.Fragment>;
5963

6064
const visible = !!label && (hover || show);
@@ -63,7 +67,10 @@ const MiniAvatarUploader: React.FC<IProps> = ({ hasAvatar, hasAvatarLabel, noAva
6367
type="file"
6468
ref={uploadRef}
6569
className="mx_MiniAvatarUploader_input"
66-
onClick={chromeFileInputFix}
70+
onClick={(ev) => {
71+
chromeFileInputFix(ev);
72+
onClick?.(ev);
73+
}}
6774
onChange={async (ev) => {
6875
if (!ev.target.files?.length) return;
6976
setBusy(true);

0 commit comments

Comments
 (0)