+function createSubscriptionPayloadEvent(payload) {
+ return {
+ type: contextHandlerActionTypes.SUBSCRIPTION_PAYLOAD_FOUND,
+ data: payload
+ };
+}
+
+function createSubscriptionIsEmptyEvent() {
+ return {
+ type: contextHandlerActionTypes.SUBSCRIPTION_PAYLOAD_EMPTY,
+ data: {}
+ };
+}
+
+function fetchSubscriptionPayload(fetchRequestCallback) {
+ return dispatch => {
+ return fetchRequestCallback().then(
+ (response) => {
+ if (response.status >= STATUS_CODE_3XX_REDIRECTION) {
+ return Promise.reject(new Error(response.status));
+ } else {
+ // assume 200 status
+ return response;
+ }
+ }
+ ).then(
+ (results)=> {
+ dispatch(createSubscriptionPayloadEvent(results));
+
+ }
+ ).catch(
+ (e) => {
+ if(e.name === 'EmptyResponseException'){
+ dispatch(getClearGlobalMessageEvent());
+ dispatch(createSubscriptionIsEmptyEvent());
+ } else{
+ dispatch(getSetGlobalMessageEvent(SUBSCRIPTION_FAILED_MESSAGE , MESSAGE_LEVEL_WARNING));
+ }
+ }
+ );
+ };
+}
+export function getSubscriptionPayload() {
+ let externalfetchRequest =
+ () => networkCall.getRequest(SUBSCRIPTION_PAYLOAD_URL, GET);
+ return dispatch => {
+ dispatch(fetchSubscriptionPayload(externalfetchRequest));
+ };
+}