diff --git a/src/components/forms/SubscriptionModal.js b/src/components/forms/SubscriptionModal.js index 72759a66..a22ea032 100644 --- a/src/components/forms/SubscriptionModal.js +++ b/src/components/forms/SubscriptionModal.js @@ -19,7 +19,9 @@ import { import { getOrganizationData, subscribeImportOrg, + subscribeToFileStore, subscribeToOrg, + unsubscribeFromFileStore, unsubscribeFromOrg, } from '../../store/actions/climateWarehouseActions'; import { PrimaryButton } from '../form/PrimaryButton'; @@ -278,19 +280,22 @@ const SubscriptionModal = ({ onClose }) => { { - if (organizations[organizationKey]?.subscribed) { + if ( + organizations[organizationKey] + ?.fileStoreSubscribed + ) { dispatch( - unsubscribeFromOrg( + unsubscribeFromFileStore( organizations[organizationKey]?.orgUid, ), ); } else { dispatch( - subscribeToOrg( + subscribeToFileStore( organizations[organizationKey]?.orgUid, ), ); diff --git a/src/store/actions/climateWarehouseActions.js b/src/store/actions/climateWarehouseActions.js index 0052aa61..8bbc1c21 100644 --- a/src/store/actions/climateWarehouseActions.js +++ b/src/store/actions/climateWarehouseActions.js @@ -867,6 +867,78 @@ export const deleteFile = SHA256 => { }; }; +export const subscribeToFileStore = orgUid => { + return async dispatch => { + try { + dispatch(activateProgressIndicator); + + const url = `${constants.API_HOST}/filestore/subscribe`; + + const payload = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ orgUid }), + }; + + const response = await fetchWrapper(url, payload); + + if (response.ok) { + dispatch(setConnectionCheck(true)); + dispatch(getOrganizationData()); + } else { + dispatch( + setNotificationMessage( + NotificationMessageTypeEnum.error, + 'something-went-wrong', + ), + ); + } + } catch { + dispatch(setConnectionCheck(false)); + } finally { + dispatch(deactivateProgressIndicator); + } + }; +}; + +export const unsubscribeFromFileStore = orgUid => { + return async dispatch => { + try { + dispatch(activateProgressIndicator); + + const url = `${constants.API_HOST}/filestore/unsubscribe`; + + const payload = { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ orgUid }), + }; + + const response = await fetchWrapper(url, payload); + + if (response.ok) { + dispatch(setConnectionCheck(true)); + dispatch(getOrganizationData()); + } else { + dispatch( + setNotificationMessage( + NotificationMessageTypeEnum.error, + 'something-went-wrong', + ), + ); + } + } catch { + dispatch(setConnectionCheck(false)); + } finally { + dispatch(deactivateProgressIndicator); + } + }; +}; + export const editStagingData = (uuid, data) => { return async dispatch => { try {