mirror of
https://github.com/block/buzz.git
synced 2026-11-13 12:51:34 +00:00
refactor(desktop): centralize auxiliary panel shell (#1343)
Signed-off-by: Taylor Ho <taylorkmho@gmail.com> Co-authored-by: npub1223z34hd7vtwc6qj4s7flsxkj644nlre2nthu7lrrmkumhu3xddsrx9r6w <52a228d6edf316ec6812ac3c9fc0d696ab59fc7954d77e7be31eedcddf91335b@sprout-oss.stage.blox.sqprod.co>
This commit is contained in:
@@ -1,38 +1,39 @@
|
||||
import * as React from "react";
|
||||
|
||||
const THREAD_PANEL_DEFAULT_WIDTH_PX = 380;
|
||||
export const THREAD_PANEL_MIN_WIDTH_PX = 300;
|
||||
export const THREAD_PANEL_SINGLE_COLUMN_BREAKPOINT_PX =
|
||||
THREAD_PANEL_MIN_WIDTH_PX * 2;
|
||||
const THREAD_PANEL_MAX_WIDTH_PX = 720;
|
||||
import {
|
||||
AUXILIARY_PANEL_DEFAULT_WIDTH_PX,
|
||||
AUXILIARY_PANEL_MAX_WIDTH_PX,
|
||||
AUXILIARY_PANEL_MIN_WIDTH_PX,
|
||||
} from "@/shared/layout/AuxiliaryPanel";
|
||||
|
||||
const THREAD_PANEL_WIDTH_SESSION_KEY = "buzz.desktop.thread-panel-width";
|
||||
|
||||
function clampThreadPanelWidth(width: number): number {
|
||||
return Math.max(
|
||||
THREAD_PANEL_MIN_WIDTH_PX,
|
||||
Math.min(THREAD_PANEL_MAX_WIDTH_PX, width),
|
||||
AUXILIARY_PANEL_MIN_WIDTH_PX,
|
||||
Math.min(AUXILIARY_PANEL_MAX_WIDTH_PX, width),
|
||||
);
|
||||
}
|
||||
|
||||
function getInitialThreadPanelWidth(): number {
|
||||
if (typeof window === "undefined") {
|
||||
return THREAD_PANEL_DEFAULT_WIDTH_PX;
|
||||
return AUXILIARY_PANEL_DEFAULT_WIDTH_PX;
|
||||
}
|
||||
|
||||
try {
|
||||
const raw = window.sessionStorage.getItem(THREAD_PANEL_WIDTH_SESSION_KEY);
|
||||
if (!raw) {
|
||||
return THREAD_PANEL_DEFAULT_WIDTH_PX;
|
||||
return AUXILIARY_PANEL_DEFAULT_WIDTH_PX;
|
||||
}
|
||||
|
||||
const parsed = Number.parseInt(raw, 10);
|
||||
if (!Number.isFinite(parsed)) {
|
||||
return THREAD_PANEL_DEFAULT_WIDTH_PX;
|
||||
return AUXILIARY_PANEL_DEFAULT_WIDTH_PX;
|
||||
}
|
||||
|
||||
return clampThreadPanelWidth(parsed);
|
||||
} catch {
|
||||
return THREAD_PANEL_DEFAULT_WIDTH_PX;
|
||||
return AUXILIARY_PANEL_DEFAULT_WIDTH_PX;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,11 +88,11 @@ export function useThreadPanelWidth() {
|
||||
);
|
||||
|
||||
const onResetWidth = React.useCallback(() => {
|
||||
setWidthPx(THREAD_PANEL_DEFAULT_WIDTH_PX);
|
||||
setWidthPx(AUXILIARY_PANEL_DEFAULT_WIDTH_PX);
|
||||
}, []);
|
||||
|
||||
return {
|
||||
canReset: widthPx !== THREAD_PANEL_DEFAULT_WIDTH_PX,
|
||||
canReset: widthPx !== AUXILIARY_PANEL_DEFAULT_WIDTH_PX,
|
||||
onResetWidth,
|
||||
onResizeStart,
|
||||
widthPx,
|
||||
|
||||
Reference in New Issue
Block a user