Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 349 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
348 stevensc 1
import React, { useState } from "react";
2
import { axios } from "../../../../utils";
3
 
4
const ShareController = ({
5
  children,
6
  shareData,
7
  onInteraction,
8
  onSuccess,
9
  onError,
10
  onNonNativeShare,
11
  disabled,
12
}) => {
13
  const [shareUrl, setShareUrl] = useState("");
14
 
15
  const getShareUrl = async (url = "") => {
16
    await axios
17
      .get(url)
18
      .then(({ data }) => {
19
        if (!data.success) {
20
          dispatch(addNotification({ style: "danger", msg: data.data }));
21
          return;
22
        }
23
 
24
        setShareUrl(data.data);
25
      })
26
      .catch((err) => {
27
        onError(err);
28
        throw new Error(err);
29
      });
30
  };
31
 
32
  const handleOnClick = async () => {
33
    onInteraction?.();
34
    if (navigator?.share) {
35
      try {
36
        try {
37
          getShareUrl(shareData.url);
38
        } catch (err) {
39
          onError?.(err);
40
        }
41
        await navigator.share({ ...shareData, url: shareUrl });
42
        onSuccess?.();
43
      } catch (err) {
44
        onError?.(err);
45
      }
46
    } else {
47
      onNonNativeShare?.();
48
    }
49
  };
50
 
51
  return (
52
    <button onClick={handleOnClick} type="button" disabled={disabled}>
53
      {children}
54
    </button>
55
  );
56
};
57
 
58
export default ShareController;