about summary refs log tree commit diff
path: root/modules/expo-bluesky-gif-view/src/GifView.tsx
blob: 87258de17beb9f1b8e7839c0abc2a9a5073d7914 (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 {requireNativeModule} from 'expo'
import {requireNativeViewManager} from 'expo-modules-core'

import {GifViewProps} from './GifView.types'

const NativeModule = requireNativeModule('ExpoBlueskyGifView')
const NativeView: React.ComponentType<
  GifViewProps & {ref: React.RefObject<any>}
> = requireNativeViewManager('ExpoBlueskyGifView')

export class GifView extends React.PureComponent<GifViewProps> {
  // TODO native types, should all be the same as those in this class
  private nativeRef: React.RefObject<any> = React.createRef()

  constructor(props: GifViewProps | Readonly<GifViewProps>) {
    super(props)
  }

  static async prefetchAsync(sources: string[]): Promise<void> {
    return await NativeModule.prefetchAsync(sources)
  }

  async playAsync(): Promise<void> {
    await this.nativeRef.current.playAsync()
  }

  async pauseAsync(): Promise<void> {
    await this.nativeRef.current.pauseAsync()
  }

  async toggleAsync(): Promise<void> {
    await this.nativeRef.current.toggleAsync()
  }

  render() {
    return <NativeView {...this.props} ref={this.nativeRef} />
  }
}