in example/src/screens/TestPlan.tsx [153:256]
function Player({ playerRef, ...props }: PlayerProps) {
const snapshot = useSnapshot(planState);
const [logs, setLogs] = React.useState<[string, string?][]>([]);
function log(name: string, message?: any) {
if (!snapshot.events.has(name)) {
return;
}
if (typeof message === 'object') {
const messages: [string, string?][] = [];
const mainlog = logstring(name, '');
console.log(mainlog);
messages.push([name, mainlog]);
Object.entries(message).forEach(([key, value]) => {
if (key) {
const keyname = `${name} ::: ${key}`;
const keylog = logstring(keyname, `${value}`);
console.log(keylog);
messages.push([keyname, keylog]);
}
});
setLogs((logs) => [...messages, ...logs.slice(0, 128)]);
} else {
const logmessage = logstring(name, `${message}`);
console.log(logmessage);
setLogs((logs) => [[name, logmessage], ...logs.slice(0, 128)]);
}
}
return (
<>
<IVSPlayer
{...props}
ref={playerRef}
onSeek={(position) => {
log('onSeek', `${position}`);
}}
onData={(data) => {
planState.qualities = data.qualities;
}}
onVideoStatistics={(data) => {
log('onVideoStatistics', data);
}}
onPlayerStateChange={(state) => {
log('onPlayerStateChange', state);
}}
onDurationChange={(duration) => {
log('onDurationChange', duration);
}}
onQualityChange={(quality) => {
log('onQualityChange', quality);
}}
onPipChange={(isActive) => {
log('onPipChange', isActive);
}}
onRebuffering={() => {
log('onRebuffering');
}}
onLoadStart={() => {
log('onLoadStart');
}}
onLoad={(duration) => {
log('onLoad', duration);
}}
onLiveLatencyChange={(liveLatency) => {
log('onLiveLatencyChange', liveLatency);
}}
onTextCue={(textCue) => {
log('onTextCue', textCue);
}}
onTextMetadataCue={(textMetadataCue) => {
log('onTextMetadataCue', textMetadataCue);
}}
onProgress={(progress) => {
log('onProgress', progress);
}}
onError={(error: string) => {
log('onError', error);
}}
onTimePoint={(position) => {
log('onTimePoint', position);
}}
>
{logs.length === 0 && (
<Text style={styles.log} testID="onClearLogs">
onClearLogs :::
</Text>
)}
{logs.map((log, index) => (
<Text
key={`${index}${log[1]}`}
style={styles.log}
testID={log[0]}
accessibilityLabel={log[1]}
>
{log[1]}
</Text>
))}
</IVSPlayer>
<Button testID="clearLogs" onPress={() => setLogs([])}>