cluedin-widget
Version:
This project contains all the pages needed for browsing entities and searching them. The aim is to replace the CluedIn.Webapp project with this one when all the pages ( including the Admin page ) will be ported to REACT.
191 lines (157 loc) • 4.1 kB
JavaScript
import constants from '../constants';
import { unauthorized } from './generic';
import {
getAll,
getAllSearches,
clearCount,
clearSearchCount,
subscribeSearch as subscribeSearchRequest,
unSubscribeSearch as unSubscribeSearchRequest,
} from '../data/insight';
const requestAllInsights = () => ({
type: constants.insights.REQUEST_ALL_INSIGHTS,
});
const receiveAllInsights = (insights) => ({
type: constants.insights.RECEIVE_ALL_INSIGHTS,
data: {
insights,
},
});
const invalidAllInsights = () => ({
type: constants.insights.INVALID_ALL_INSIGHTS,
});
const requestAllSearches = () => ({
type: constants.insights.REQUEST_ALL_SEARCHES,
});
const receiveAllSearches = (searches) => ({
type: constants.insights.RECEIVE_ALL_SEARCHES,
data: {
searches,
},
});
const invalidAllSearches = () => ({
type: constants.insights.INVALID_ALL_SEARCHES,
});
export function fetchAllInsights() {
return (dispatch, getState) => {
if (getState().insight.insights.length > 0) {
return;
}
dispatch(requestAllInsights());
getAll().then((resp) => {
dispatch(receiveAllInsights(resp));
}).catch(unauthorized(dispatch, invalidAllInsights));
};
}
export function fetchAllSearchesInsights() {
return (dispatch, getState) => {
if (getState().insight.searches.length > 0) {
return;
}
dispatch(requestAllSearches());
getAllSearches().then((resp) => {
dispatch(receiveAllSearches(resp));
}).catch(unauthorized(dispatch, invalidAllSearches));
};
}
const requestClearCount = (id) => ({
type: constants.insights.REQUEST_CLEAR_COUNT,
data: {
id,
},
});
const receiveClearCount = (id) => ({
type: constants.insights.RECEIVE_CLEAR_COUNT,
data: {
id,
},
});
const invalidClearCount = () => ({
type: constants.insights.INVALID_CLEAR_COUNT,
});
export function resetCount(id) {
return (dispatch) => {
dispatch(requestClearCount(id));
clearCount(id).then(() => {
dispatch(receiveClearCount(id));
}).catch(unauthorized(dispatch, invalidClearCount));
};
}
const receiveSearchClearCount = (id) => ({
type: constants.insights.RECEIVE_SEARCH_CLEAR_COUNT,
data: {
id,
},
});
const requestSearchClearCount = (id) => ({
type: constants.insights.REQUEST_SEARCH_CLEAR_COUNT,
data: {
id,
},
});
const invalidSearchClearCount = () => ({
type: constants.insights.INVALID_SEARCH_CLEAR_COUNT,
});
export function resetSearchCount(id) {
return (dispatch) => {
dispatch(requestSearchClearCount(id));
return clearSearchCount(id).then(() => {
dispatch(receiveSearchClearCount(id));
}).catch(unauthorized(dispatch, invalidSearchClearCount));
};
}
const requestSubscribeSearch = (q) => ({
type: constants.insights.REQUEST_SUBSCRIBE_SEARCH,
data: {
q,
},
});
const receiveSubscribeSearch = (q) => ({
type: constants.insights.RECEIVE_SUBSCRIBE_SEARCH,
data: {
q,
},
});
const invalidSubscribeSearch = (q) => ({
type: constants.insights.INVALID_SUBSCRIBE_SEARCH,
data: {
q,
},
});
export function subscribeSearch(q) {
return (dispatch) => {
dispatch(requestSubscribeSearch(q));
return subscribeSearchRequest(q).then(() => {
dispatch(receiveSubscribeSearch(q));
}).catch(unauthorized(dispatch, invalidSubscribeSearch));
};
}
const requestUnSubscribeSearch = (q) => ({
type: constants.insights.REQUEST_UNSUBSCRIBE_SEARCH,
data: {
q,
},
});
const receiveUnSubscribeSearch = (q) => ({
type: constants.insights.RECEIVE_UNSUBSCRIBE_SEARCH,
data: {
q,
},
});
const invalidUnSubscribeSearch = (q) => ({
type: constants.insights.INVALID_UNSUBSCRIBE_SEARCH,
data: {
q,
},
});
export const resetNotificationForSearch = () => ({
type: constants.insights.RESET_NOTIFICATION_FOR_SEARCH,
});
export function unSubscribeSearch(q) {
return (dispatch) => {
dispatch(requestUnSubscribeSearch(q));
return unSubscribeSearchRequest(q).then(() => {
dispatch(receiveUnSubscribeSearch(q));
}).catch(unauthorized(dispatch, invalidUnSubscribeSearch));
};
}