about summary refs log tree commit diff
path: root/modules/expo-bluesky-swiss-army/src/VisibilityView/index.native.tsx
blob: 9d0e8cf220c4e5328aab0a41114169b4d524c29a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import React from 'react'
import {StyleProp, ViewStyle} from 'react-native'
import {requireNativeModule, requireNativeViewManager} from 'expo-modules-core'

import {VisibilityViewProps} from './types'
const NativeView: React.ComponentType<{
  onChangeStatus: (e: {nativeEvent: {isActive: boolean}}) => void
  children: React.ReactNode
  enabled: Boolean
  style: StyleProp<ViewStyle>
}> = requireNativeViewManager('ExpoBlueskyVisibilityView')

const NativeModule = requireNativeModule('ExpoBlueskyVisibilityView')

export async function updateActiveViewAsync() {
  await NativeModule.updateActiveViewAsync()
}

export default function VisibilityView({
  children,
  onChangeStatus: onChangeStatusOuter,
  enabled,
}: VisibilityViewProps) {
  const onChangeStatus = React.useCallback(
    (e: {nativeEvent: {isActive: boolean}}) => {
      onChangeStatusOuter(e.nativeEvent.isActive)
    },
    [onChangeStatusOuter],
  )

  return (
    <NativeView
      onChangeStatus={onChangeStatus}
      enabled={enabled}
      style={{flex: 1}}>
      {children}
    </NativeView>
  )
}