From 0ca3ab8199b48ad622c900a855748373f25deefe Mon Sep 17 00:00:00 2001 From: Zlatko Fedor Date: Mon, 25 Mar 2019 23:02:01 +0100 Subject: [PATCH] added use api --- src/hooks/useApi.js | 19 +++++++++++++++++++ src/hooks/useShare.js | 9 +++++---- src/index.js | 1 + 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 src/hooks/useApi.js diff --git a/src/hooks/useApi.js b/src/hooks/useApi.js new file mode 100644 index 0000000..df8b9f3 --- /dev/null +++ b/src/hooks/useApi.js @@ -0,0 +1,19 @@ +// @flow +import { useContext, useState } from 'react'; +import FacebookContext from '../FacebookContext'; + +export default (onReady?: Function) => { + const { + handleInit, + api, + } = useContext(FacebookContext); + + useState(async () => { + const api2 = await handleInit(); + if (onReady) { + onReady(api2); + } + }); + + return [api, handleInit]; +}; diff --git a/src/hooks/useShare.js b/src/hooks/useShare.js index 9a79ec6..01acff6 100644 --- a/src/hooks/useShare.js +++ b/src/hooks/useShare.js @@ -1,12 +1,11 @@ // @flow -import { useContext } from 'react'; import clearUndefinedProperties from '../utils/clearUndefinedProperties'; -import FacebookContext from '../FacebookContext'; +import useApi from './useApi'; export default () => { - const { api } = useContext(FacebookContext); + const [, prepareApi] = useApi(); - function handleShare(options: Object) { + async function handleShare(options: Object) { const { href, display, @@ -17,6 +16,8 @@ export default () => { ...rest } = options; + const api = await prepareApi(); + return api.ui(clearUndefinedProperties({ method: 'share', href, diff --git a/src/index.js b/src/index.js index c41d9ec..418adcc 100644 --- a/src/index.js +++ b/src/index.js @@ -41,3 +41,4 @@ export Fields from './constants/Fields'; export FacebookContext from './FacebookContext'; export useShare from './hooks/useShare'; +export useApi from './hooks/useApi';