useCastReceiver.tsx 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. declare const cast: any;
  2. import { useEffect, useState } from "react";
  3. type Receiver = {
  4. cast: typeof cast;
  5. };
  6. const load = (() => {
  7. let promise: Promise<Receiver> | null = null;
  8. return () => {
  9. if (promise === null) {
  10. promise = new Promise((resolve) => {
  11. const script = document.createElement("script");
  12. script.src =
  13. "https://www.gstatic.com/cast/sdk/libs/caf_receiver/v3/cast_receiver_framework.js";
  14. script.addEventListener("load", () => {
  15. resolve({
  16. cast,
  17. });
  18. });
  19. document.body.appendChild(script);
  20. });
  21. }
  22. return promise;
  23. };
  24. })();
  25. export const useCastReceiver = () => {
  26. const [receiver, setReceiver] = useState<Receiver | null>({
  27. cast: null,
  28. });
  29. useEffect(() => {
  30. load().then((receiver) => {
  31. setReceiver(receiver);
  32. });
  33. });
  34. return receiver;
  35. };