Skip to content
This repository was archived by the owner on Feb 6, 2026. It is now read-only.

Commit cb7ca9b

Browse files
Merge pull request #8318 from systeminit/wendy/fix-window-size-listeners
fix(web) - newhotness emitters cleanup
2 parents 44336dc + bac2d79 commit cb7ca9b

File tree

4 files changed

+11
-51
lines changed

4 files changed

+11
-51
lines changed

app/web/src/newhotness/Map.vue

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ import { IncomingConnections, ComponentInList, EntityKind } from "@/workers/type
239239
import { bifrostList, useMakeArgs, useMakeKey } from "@/store/realtime/heimdall";
240240
import ExploreMapSkeleton from "@/newhotness/skeletons/ExploreMapSkeleton.vue";
241241
import { SelectionsInQueryString } from "./Workspace.vue";
242-
import { KeyDetails } from "./logic_composables/emitters";
242+
import { KeyDetails, windowResizeEmitter } from "./logic_composables/emitters";
243243
import { assertIsDefined, Context, ExploreContext } from "./types";
244244
import ExploreGridTile from "./explore_grid/ExploreGridTile.vue";
245245
import ConnectionsPanel from "./ConnectionsPanel.vue";
@@ -1007,11 +1007,11 @@ onMounted(() => {
10071007
applyZoom();
10081008
10091009
// Set up window resize listener for reactive dimensions
1010-
window.addEventListener("resize", updateWindowDimensions);
1010+
windowResizeEmitter.on("resize", updateWindowDimensions);
10111011
});
10121012
10131013
onUnmounted(() => {
1014-
window.removeEventListener("resize", updateWindowDimensions);
1014+
windowResizeEmitter.off("resize", updateWindowDimensions);
10151015
});
10161016
10171017
const mousemove = (event: MouseEvent) => {

app/web/src/newhotness/Workspace.vue

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
'navbar relative shadow-[0_4px_4px_0_rgba(0,0,0,0.15)] border-b',
99
'z-[1001] h-[60px] overflow-hidden shrink-0 flex flex-row justify-between select-none',
1010
'bg-neutral-800 border-neutral-600 text-white',
11-
windowWidth > 740 && 'gap-sm',
11+
gapInNav && 'gap-sm',
1212
)
1313
"
1414
>
@@ -170,7 +170,7 @@ import {
170170
startMouseEmitters,
171171
startKeyEmitter,
172172
startWindowResizeEmitter,
173-
windowResizeEmitter,
173+
windowWidthReactive
174174
} from "./logic_composables/emitters";
175175
import { getUserPkFromToken, tokensByWorkspacePk } from "./logic_composables/tokens";
176176
import ComponentPage from "./ComponentDetails.vue";
@@ -426,6 +426,8 @@ startKeyEmitter(document);
426426
startMouseEmitters(window);
427427
startWindowResizeEmitter(window);
428428
429+
const gapInNav = computed(() => windowWidthReactive.value > 800);
430+
429431
provide("CONTEXT", ctx.value);
430432
431433
// LOBBY AND ONBOARDING FLAGS
@@ -891,12 +893,6 @@ const connectionShouldBeEnabled = computed(() => {
891893
}
892894
});
893895
894-
const windowWidth = ref(window.innerWidth);
895-
896-
const windowResizeHandler = () => {
897-
windowWidth.value = window.innerWidth;
898-
};
899-
900896
const openChangesetModal = () => {
901897
navbarPanelLeftRef.value?.openCreateModal();
902898
};
@@ -921,11 +917,6 @@ const invalidatePaginatedFuncRuns = _.debounce(() => {
921917
queryClient.invalidateQueries({ queryKey });
922918
}, 250);
923919
924-
onMounted(() => {
925-
windowResizeHandler();
926-
windowResizeEmitter.on("resize", windowResizeHandler);
927-
});
928-
929920
const invalidateOneFuncRun = _.debounce((funcRunId: string) => {
930921
const queryKey = [ctx.value.changeSetId, "funcRunLogs", funcRunId];
931922
if (queryClient.isFetching({ queryKey }) > 0) {
@@ -985,11 +976,6 @@ watch(
985976
},
986977
{ immediate: true },
987978
);
988-
989-
onBeforeUnmount(() => {
990-
windowResizeEmitter.off("resize", windowResizeHandler);
991-
realtimeStore.unsubscribe(funcRunKey);
992-
});
993979
</script>
994980

995981
<style lang="less">

app/web/src/newhotness/nav/Collaborators.vue

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ import UserIcon from "./UserIcon.vue";
8181
import UserCard from "./UserCard.vue";
8282
import { useContext } from "../logic_composables/context";
8383
import { useChangeSets } from "../logic_composables/change_set";
84+
import { windowWidthReactive } from "../logic_composables/emitters";
8485
8586
const presenceStore = usePresenceStore();
8687
const router = useRouter();
@@ -214,21 +215,7 @@ const openMoreUsersPopover = () => {
214215
moreUsersPopoverRef.value.open();
215216
};
216217
217-
const windowWidth = ref(window.innerWidth);
218-
219-
const windowResizeHandler = () => {
220-
windowWidth.value = window.innerWidth;
221-
};
222-
223-
onMounted(() => {
224-
windowResizeHandler();
225-
window.addEventListener("resize", windowResizeHandler);
226-
});
227-
onBeforeUnmount(() => {
228-
window.removeEventListener("resize", windowResizeHandler);
229-
});
230-
231-
const showOneIcon = computed(() => windowWidth.value < 850);
218+
const showOneIcon = computed(() => windowWidthReactive.value < 850);
232219
233220
const filterString = ref("");
234221
const filterStringCleaned = computed(() => {

app/web/src/newhotness/nav/Notifications.vue

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ import ApprovalPendingModal from "./ApprovalPendingModal.vue";
4848
import { useContext } from "../logic_composables/context";
4949
import { approverForChangeSet } from "../logic_composables/change_set";
5050
import { useApi, routes, apiContextForChangeSet } from "../api_composables";
51+
import { windowWidthReactive } from "../logic_composables/emitters";
5152
5253
const props = defineProps<{
5354
changeSetsNeedingApproval: ChangeSet[];
@@ -118,21 +119,7 @@ const tooltipText = computed(() => {
118119
}
119120
});
120121
121-
const windowWidth = ref(window.innerWidth);
122-
123-
const windowResizeHandler = () => {
124-
windowWidth.value = window.innerWidth;
125-
};
126-
127-
onMounted(() => {
128-
windowResizeHandler();
129-
window.addEventListener("resize", windowResizeHandler);
130-
});
131-
onBeforeUnmount(() => {
132-
window.removeEventListener("resize", windowResizeHandler);
133-
});
134-
135-
const compact = computed(() => windowWidth.value < 850);
122+
const compact = computed(() => windowWidthReactive.value < 850);
136123
137124
const openPendingApprovalsModal = () => {
138125
if (numberICanApprove.value > 0 || currentChangeSetNeedsApproval.value) {

0 commit comments

Comments
 (0)