Proyectos de Subversion LeadersLinked - SPA

Rev

Rev 350 | Rev 355 | Ir a la última revisión | | Comparar con el anterior | Ultima modificación | Ver Log |

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