a tool for shared writing and social publishing
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

prevent selection manager stuff on mobile

+14 -5
+6 -2
components/Blocks/useBlockMouseHandlers.ts
··· 7 7 import { useReplicache } from "src/replicache"; 8 8 import { getBlocksWithType } from "src/hooks/queries/useBlocks"; 9 9 import { focusBlock } from "src/utils/focusBlock"; 10 + import { useIsMobile } from "src/hooks/isMobile"; 10 11 11 12 let debounce: number | null = null; 12 13 export function useBlockMouseHandlers(props: Block) { 13 14 let entity_set = useEntitySetContext(); 15 + let isMobile = useIsMobile(); 14 16 let { rep } = useReplicache(); 15 17 let onMouseDown = useCallback( 16 18 (e: MouseEvent) => { 19 + if (isMobile) return; 17 20 if (!entity_set.permissions.write) return; 18 21 useSelectingMouse.setState({ start: props.value }); 19 22 if (e.shiftKey) { ··· 33 36 useUIState.getState().setSelectedBlock(props); 34 37 } 35 38 }, 36 - [props], 39 + [props, entity_set.permissions.write, isMobile], 37 40 ); 38 41 let onMouseEnter = useCallback( 39 42 async (e: MouseEvent) => { 43 + if (isMobile) return; 40 44 if (!entity_set.permissions.write) return; 41 45 if (debounce) window.clearTimeout(debounce); 42 46 debounce = window.setTimeout(async () => { ··· 59 63 useUIState.getState().setSelectedBlocks(selected); 60 64 }, 15); 61 65 }, 62 - [rep, props, entity_set.permissions.write], 66 + [rep, props, entity_set.permissions.write, isMobile], 63 67 ); 64 68 return { onMouseDown, onMouseEnter }; 65 69 }
+8 -3
components/SelectionManager.tsx
··· 16 16 import { scrollIntoViewIfNeeded } from "src/utils/scrollIntoViewIfNeeded"; 17 17 import { copySelection } from "src/utils/copySelection"; 18 18 import { isTextBlock } from "src/utils/isTextBlock"; 19 + import { useIsMobile } from "src/hooks/isMobile"; 19 20 export const useSelectingMouse = create(() => ({ 20 21 start: null as null | string, 21 22 })); ··· 27 28 let moreThanOneSelected = useUIState((s) => s.selectedBlocks.length > 1); 28 29 let entity_set = useEntitySetContext(); 29 30 let { rep } = useReplicache(); 31 + let isMobile = useIsMobile(); 30 32 useEffect(() => { 31 33 if (!entity_set.permissions.write) return; 34 + if (isMobile) return; 32 35 const getSortedSelection = async () => { 33 36 let selectedBlocks = useUIState.getState().selectedBlocks; 34 37 let foldedBlocks = useUIState.getState().foldedBlocks; ··· 479 482 removeListener(); 480 483 window.removeEventListener("keydown", listener); 481 484 }; 482 - }, [moreThanOneSelected, rep, entity_set.permissions.write]); 485 + }, [moreThanOneSelected, rep, entity_set.permissions.write, isMobile]); 483 486 484 487 let [mouseDown, setMouseDown] = useState(false); 485 488 let initialContentEditableParent = useRef<null | Node>(null); 486 489 let savedSelection = useRef<SavedRange[] | null>(); 487 490 useEffect(() => { 491 + if (isMobile) return; 488 492 if (!entity_set.permissions.write) return; 489 493 let mouseDownListener = (e: MouseEvent) => { 490 494 setMouseDown(true); ··· 517 521 window.removeEventListener("mousedown", mouseDownListener); 518 522 window.removeEventListener("mouseup", mouseUpListener); 519 523 }; 520 - }, [entity_set.permissions.write]); 524 + }, [entity_set.permissions.write, isMobile]); 521 525 useEffect(() => { 522 526 if (!mouseDown) return; 527 + if (isMobile) return; 523 528 let mouseMoveListener = (e: MouseEvent) => { 524 529 if (e.buttons !== 1) return; 525 530 if (initialContentEditableParent.current) { ··· 541 546 return () => { 542 547 window.removeEventListener("mousemove", mouseMoveListener); 543 548 }; 544 - }, [mouseDown]); 549 + }, [mouseDown, isMobile]); 545 550 return null; 546 551 } 547 552