Skip to content
Snippets Groups Projects
Select Git revision
  • 58c5509e1256b7a7d01fb12f50cfe827bc66e277
  • master default protected
  • greenkeeper/webpack-4.10.1
  • greenkeeper/webpack-4.10.0
  • greenkeeper/webpack-4.9.2
  • greenkeeper/promise-polyfill-8.0.0
  • greenkeeper/webpack-4.9.1
  • greenkeeper/webpack-4.9.0
  • greenkeeper/webpack-manifest-plugin-2.0.3
  • greenkeeper/update-to-node-10
  • gh-pages
  • greenkeeper/webpack-4.8.3
  • greenkeeper/webpack-4.8.2
  • greenkeeper/webpack-4.7.0
  • greenkeeper/webpack-manifest-plugin-2.0.2
  • greenkeeper/webpack-manifest-plugin-2.0.1
  • greenkeeper/style-loader-0.21.0
  • greenkeeper/webpack-4.6.0
  • greenkeeper/sass-loader-7.0.1
  • greenkeeper/sass-loader-7.0.0
  • greenkeeper/webpack-manifest-plugin-2.0.0
  • 2.7.3
  • 2.7.2
  • 2.7.1
  • 2.7.0
  • 2.6.6
  • 2.6.5
  • 2.6.4
  • 2.6.3
  • 2.6.2
  • 2.6.1
  • 2.6.0
  • 2.5.5
  • 2.5.4
  • 2.5.3
  • 2.5.2
  • 2.5.1
  • 2.5.0
  • 2.4.0
  • 2.3.0
  • 2.2.6
41 results

specimen.md

Blame
  • useDuration.ts 840 B
    import {useEffect, useState} from "react";
    import {PlayerApi} from "../../routes/player/video/PlayerApi";
    
    export const useDuration = (video: PlayerApi | null) => {
        const [duration, setDuration] = useState<number>(0);
        useEffect(() => {
            if (video !== null) {
                if (video.canPlay()) {
                    setDuration(video.getDuration());
                } else {
                    const listener = () => {
                        window.requestAnimationFrame(() => {
                            setDuration(video.getDuration());
                        })
                    };
                    video.addEventListener(video.METADATA_EVENT, listener)
                    return () => {
                        video.removeEventListener(video.METADATA_EVENT, listener)
                    }
                }
            }
        }, [video]);
        return duration;
    }