@xo-union/tk-component-header-nav
Version:
43 lines • 1.24 kB
JavaScript
import React from "react";
import noop from "lodash/noop";
import DataFetcher from "./DataFetcher/index.js";
import allowControl from "../../utils/allowControl.js";
const useWeddingWebsiteData = allowControl(() => {
const [data, setData] = React.useState({
isLoading: false,
hasWeddingWebsite: false,
hasFetchedWws: false,
slug: ''
});
const fetchWeddingWebsiteData = loggedIn => {
if (loggedIn && !data.hasFetchedWws && !data.isLoading) {
setData({
isLoading: true,
hasWeddingWebsite: undefined
});
DataFetcher.fetchWeddingWebsiteAttributes().then(result => {
setData({
isLoading: false,
hasFetchedWws: true,
hasWeddingWebsite: result.state === 'published',
slug: result.slug
});
}).catch(() => {
setData({
isLoading: false,
hasWeddingWebsite: false,
hasFetchedWws: false,
slug: ''
});
});
}
if (!loggedIn && data.hasFetchedWws) {
setData({
hasWeddingWebsite: false,
hasFetchedWws: false
});
}
};
return [data, fetchWeddingWebsiteData];
}, override => [override, noop]);
export default useWeddingWebsiteData;