chore: rework typescript integration (#3304)
* create few new types * Add missing api --------- Co-authored-by: olivier <olivier.bouillet@ifeelsmart.com> Co-authored-by: Krzysztof Moch <krzysmoch.programs@gmail.com>
This commit is contained in:
@@ -8,34 +8,38 @@ import React, {
|
||||
type ComponentRef,
|
||||
} from 'react';
|
||||
import {View, StyleSheet, Image, Platform} from 'react-native';
|
||||
import NativeVideoComponent from './VideoNativeComponent';
|
||||
import type {
|
||||
OnAudioFocusChangedData,
|
||||
OnAudioTracksData,
|
||||
OnPlaybackStateChangedData,
|
||||
OnTextTracksData,
|
||||
OnTimedMetadataData,
|
||||
OnVideoErrorData,
|
||||
OnVideoTracksData,
|
||||
import NativeVideoComponent, {
|
||||
type VideoComponentType,
|
||||
} from './VideoNativeComponent';
|
||||
|
||||
import type {StyleProp, ImageStyle, NativeSyntheticEvent} from 'react-native';
|
||||
import {
|
||||
type VideoComponentType,
|
||||
type OnLoadData,
|
||||
type OnGetLicenseData,
|
||||
type OnLoadStartData,
|
||||
type OnProgressData,
|
||||
type OnSeekData,
|
||||
type OnPictureInPictureStatusChangedData,
|
||||
type OnBandwidthUpdateData,
|
||||
type OnBufferData,
|
||||
type OnExternalPlaybackChangeData,
|
||||
type OnReceiveAdEventData,
|
||||
VideoManager,
|
||||
} from './VideoNativeComponent';
|
||||
import type {ReactVideoProps} from './types/video';
|
||||
import {getReactTag, resolveAssetSourceForVideo} from './utils';
|
||||
import {VideoManager} from './VideoNativeComponent';
|
||||
import type {
|
||||
OnAudioFocusChangedData,
|
||||
OnAudioTracksData,
|
||||
OnBandwidthUpdateData,
|
||||
OnBufferData,
|
||||
OnExternalPlaybackChangeData,
|
||||
OnGetLicenseData,
|
||||
OnLoadData,
|
||||
OnLoadStartData,
|
||||
OnPictureInPictureStatusChangedData,
|
||||
OnPlaybackStateChangedData,
|
||||
OnProgressData,
|
||||
OnReceiveAdEventData,
|
||||
OnSeekData,
|
||||
OnTextTracksData,
|
||||
OnTimedMetadataData,
|
||||
OnVideoAspectRatioData,
|
||||
OnVideoErrorData,
|
||||
OnVideoTracksData,
|
||||
} from './types/events';
|
||||
|
||||
export type VideoSaveData = {
|
||||
uri: string;
|
||||
};
|
||||
|
||||
export interface VideoRef {
|
||||
seek: (time: number, tolerance?: number) => void;
|
||||
@@ -46,6 +50,7 @@ export interface VideoRef {
|
||||
restoreUserInterfaceForPictureInPictureStopCompleted: (
|
||||
restore: boolean,
|
||||
) => void;
|
||||
save: () => Promise<VideoSaveData>;
|
||||
}
|
||||
|
||||
const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
@@ -88,6 +93,7 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
onAudioTracks,
|
||||
onTextTracks,
|
||||
onVideoTracks,
|
||||
onAspectRatio,
|
||||
...rest
|
||||
},
|
||||
ref,
|
||||
@@ -122,7 +128,7 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
uri = `file://${uri}`;
|
||||
}
|
||||
if (!uri) {
|
||||
console.warn('Trying to load empty source');
|
||||
console.log('Trying to load empty source');
|
||||
}
|
||||
const isNetwork = !!(uri && uri.match(/^https?:/));
|
||||
const isAsset = !!(
|
||||
@@ -214,7 +220,7 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
nativeRef.current?.setNativeProps({
|
||||
seek: {
|
||||
time,
|
||||
tolerance,
|
||||
tolerance: tolerance || 0,
|
||||
},
|
||||
});
|
||||
},
|
||||
@@ -234,16 +240,16 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
setIsFullscreen(false);
|
||||
}, [setIsFullscreen]);
|
||||
|
||||
const save = useCallback(async () => {
|
||||
await VideoManager.save(getReactTag(nativeRef));
|
||||
const save = useCallback(() => {
|
||||
return VideoManager.save(getReactTag(nativeRef));
|
||||
}, []);
|
||||
|
||||
const pause = useCallback(async () => {
|
||||
await VideoManager.setPlayerPauseState(true, getReactTag(nativeRef));
|
||||
const pause = useCallback(() => {
|
||||
return VideoManager.setPlayerPauseState(true, getReactTag(nativeRef));
|
||||
}, []);
|
||||
|
||||
const resume = useCallback(async () => {
|
||||
await VideoManager.setPlayerPauseState(false, getReactTag(nativeRef));
|
||||
const resume = useCallback(() => {
|
||||
return VideoManager.setPlayerPauseState(false, getReactTag(nativeRef));
|
||||
}, []);
|
||||
|
||||
const restoreUserInterfaceForPictureInPictureStopCompleted = useCallback(
|
||||
@@ -385,6 +391,13 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
[onReceiveAdEvent],
|
||||
);
|
||||
|
||||
const _onVideoAspectRatio = useCallback(
|
||||
(e: NativeSyntheticEvent<OnVideoAspectRatioData>) => {
|
||||
onAspectRatio?.(e.nativeEvent);
|
||||
},
|
||||
[onAspectRatio],
|
||||
);
|
||||
|
||||
const onGetLicense = useCallback(
|
||||
(event: NativeSyntheticEvent<OnGetLicenseData>) => {
|
||||
if (drm && drm.getLicense instanceof Function) {
|
||||
@@ -482,7 +495,7 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
onVideoEnd={onEnd}
|
||||
onVideoBuffer={onVideoBuffer}
|
||||
onVideoPlaybackStateChanged={onVideoPlaybackStateChanged}
|
||||
onBandwidthUpdate={_onBandwidthUpdate}
|
||||
onVideoBandwidthUpdate={_onBandwidthUpdate}
|
||||
onTimedMetadata={_onTimedMetadata}
|
||||
onAudioTracks={_onAudioTracks}
|
||||
onTextTracks={_onTextTracks}
|
||||
@@ -501,6 +514,7 @@ const Video = forwardRef<VideoRef, ReactVideoProps>(
|
||||
onRestoreUserInterfaceForPictureInPictureStop={
|
||||
onRestoreUserInterfaceForPictureInPictureStop
|
||||
}
|
||||
onVideoAspectRatio={_onVideoAspectRatio}
|
||||
onReceiveAdEvent={_onReceiveAdEvent}
|
||||
/>
|
||||
{showPoster ? (
|
||||
|
Reference in New Issue
Block a user