fix: Super editor popover menus on iOS (#2061)

This commit is contained in:
Aman Harwara
2022-11-28 20:36:10 +05:30
committed by GitHub
parent db3069eab3
commit 148aee441b
4 changed files with 14 additions and 6 deletions

View File

@@ -583,7 +583,7 @@ EXTERNAL SOURCES:
SPEC CHECKSUMS:
boost: a7c83b31436843459a1961bfd74b96033dc77234
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: 5189b271737e1565bdce30deb4a08d647e3f5f54
DoubleConversion: 831926d9b8bf8166fd87886c4abab286c2422662
FBLazyVector: 48289402952f4f7a4e235de70a9a590aa0b79ef4
FBReactNativeSpec: dd1186fd05255e3457baa2f4ca65e94c2cd1e3ac
Flipper: 26fc4b7382499f1281eb8cb921e5c3ad6de91fe0
@@ -596,7 +596,7 @@ SPEC CHECKSUMS:
Flipper-RSocket: d9d9ade67cbecf6ac10730304bf5607266dd2541
FlipperKit: cbdee19bdd4e7f05472a66ce290f1b729ba3cb86
fmt: ff9d55029c625d3757ed641535fd4a75fedc7ce9
glog: 04b94705f318337d7ead9e6d17c019bd9b1f6b1b
glog: 85ecdd10ee8d8ec362ef519a6a45ff9aa27b2e85
hermes-engine: 2af7b7a59128f250adfd86f15aa1d5a2ecd39995
libevent: 4049cae6c81cdb3654a443be001fb9bdceff7913
OpenSSL-Universal: ebc357f1e6bc71fa463ccb2fe676756aff50e88c

View File

@@ -16,6 +16,7 @@ declare global {
webClient?: DesktopManagerInterface
electronRemoteBridge?: unknown
reactNativeDevice?: WebDevice
platform?: Platform
application?: WebApplication
mainApplicationGroup?: ApplicationGroup
@@ -25,7 +26,7 @@ declare global {
import { disableIosTextFieldZoom } from '@/Utils'
import { IsWebPlatform, WebAppVersion } from '@/Constants/Version'
import { DesktopManagerInterface, SNLog } from '@standardnotes/snjs'
import { DesktopManagerInterface, Platform, SNLog } from '@standardnotes/snjs'
import ApplicationGroupView from './Components/ApplicationGroupView/ApplicationGroupView'
import { WebDevice } from './Application/Device/WebDevice'
import { StartApplication } from './Application/Device/StartApplication'
@@ -100,6 +101,7 @@ if (IsWebPlatform) {
setTimeout(() => {
const device = window.reactNativeDevice || new WebDevice(WebAppVersion)
window.platform = device.platform
startApplication(window.defaultSyncServer, device, window.enabledUnfinishedFeatures, window.websocketUrl).catch(
console.error,

View File

@@ -1,9 +1,14 @@
import { isIOS } from '@/Utils'
import { useEffect, useState } from 'react'
const DebounceTimeInMs = 100
const getBoundingClientRect = () => {
return isIOS() ? document.body.getBoundingClientRect() : document.documentElement.getBoundingClientRect()
}
export const useDocumentRect = (): DOMRect => {
const [documentRect, setDocumentRect] = useState<DOMRect>(document.documentElement.getBoundingClientRect())
const [documentRect, setDocumentRect] = useState<DOMRect>(getBoundingClientRect())
useEffect(() => {
let debounceTimeout: number
@@ -12,7 +17,7 @@ export const useDocumentRect = (): DOMRect => {
window.clearTimeout(debounceTimeout)
window.setTimeout(() => {
setDocumentRect(document.documentElement.getBoundingClientRect())
setDocumentRect(getBoundingClientRect())
}, DebounceTimeInMs)
}

View File

@@ -174,7 +174,8 @@ export const convertStringifiedBooleanToBoolean = (value: string) => {
// https://stackoverflow.com/questions/9038625/detect-if-device-is-ios/9039885#9039885
export const isIOS = () =>
(/iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream) ||
(navigator.userAgent.includes('Mac') && 'ontouchend' in document && navigator.maxTouchPoints > 1)
(navigator.userAgent.includes('Mac') && 'ontouchend' in document && navigator.maxTouchPoints > 1) ||
window.platform === Platform.Ios
// https://stackoverflow.com/a/57527009/2504429
export const disableIosTextFieldZoom = () => {