pages235/src/react/utils.ts

36 lines
887 B
TypeScript

import { useSnapshot } from 'valtio'
import { useEffect, useRef } from 'react'
import { UAParser } from 'ua-parser-js'
import { activeModalStack, miscUiState } from '../globalState'
export const useIsModalActive = (modal: string) => {
return useSnapshot(activeModalStack).at(-1)?.reactType === modal
}
export const useIsWidgetActive = (name: string) => {
return useIsModalActive(`widget-${name}`)
}
export function useDidUpdateEffect (fn, inputs) {
const isMountingRef = useRef(false)
useEffect(() => {
isMountingRef.current = true
}, [])
useEffect(() => {
if (isMountingRef.current) {
isMountingRef.current = false
} else {
return fn()
}
}, inputs)
}
export const useUsingTouch = () => {
return useSnapshot(miscUiState).currentTouch
}
export const ua = new UAParser(navigator.userAgent)
export const isIos = ua.getOS().name === 'iOS'