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

Commit a62a3c3

Browse files
committed
Wrap UserOnboardingButton to avoid unnecessary work when it's not shown
1 parent fa7505e commit a62a3c3

File tree

2 files changed

+12
-17
lines changed

2 files changed

+12
-17
lines changed

src/components/structures/LeftPanel.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ import { UIComponent } from "../../settings/UIFeature";
4646
import { ButtonEvent } from "../views/elements/AccessibleButton";
4747
import PosthogTrackers from "../../PosthogTrackers";
4848
import PageType from "../../PageTypes";
49-
import { UserOnboardingButton } from "../views/user-onboarding/UserOnboardingButton";
49+
import UserOnboardingButton from "../views/user-onboarding/UserOnboardingButton";
5050

5151
interface IProps {
5252
isMinimized: boolean;

src/components/views/user-onboarding/UserOnboardingButton.tsx

+11-16
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,20 @@ interface Props {
4141
minimized: boolean;
4242
}
4343

44-
export function UserOnboardingButton({ selected, minimized }: Props) {
45-
const context = useUserOnboardingContext();
46-
const [completedTasks, waitingTasks] = useUserOnboardingTasks(context);
47-
48-
const completed = completedTasks.length;
49-
const waiting = waitingTasks.length;
50-
const total = completed + waiting;
44+
export default function ConditionalUserOnboardingButton({ selected, minimized }: Props) {
45+
const useCase = useSettingValue<UseCase | null>("FTUE.useCaseSelection");
46+
const visible = useSettingValue<boolean>("FTUE.userOnboardingButton");
5147

52-
let progress = 1;
53-
if (context && waiting) {
54-
progress = completed / total;
48+
if (!visible || minimized || !showUserOnboardingPage(useCase)) {
49+
return null;
5550
}
5651

52+
return (
53+
<UserOnboardingButton selected={selected} minimized={minimized} />
54+
);
55+
}
56+
57+
function UserOnboardingButton({ selected, minimized }: Props) {
5758
const onDismiss = useCallback((ev: ButtonEvent) => {
5859
PosthogTrackers.trackInteraction("WebRoomListUserOnboardingIgnoreButton", ev);
5960
SettingsStore.setValue("FTUE.userOnboardingButton", null, SettingLevel.ACCOUNT, false);
@@ -64,12 +65,6 @@ export function UserOnboardingButton({ selected, minimized }: Props) {
6465
defaultDispatcher.fire(Action.ViewHomePage);
6566
}, []);
6667

67-
const useCase = useSettingValue<UseCase | null>("FTUE.useCaseSelection");
68-
const visible = useSettingValue<boolean>("FTUE.userOnboardingButton");
69-
if (!visible || minimized || !showUserOnboardingPage(useCase)) {
70-
return null;
71-
}
72-
7368
return (
7469
<AccessibleButton
7570
className={classNames("mx_UserOnboardingButton", {

0 commit comments

Comments
 (0)