diff --git a/src/api/scheduleApi.js b/src/api/scheduleApi.js index 5290b7a..cb8b27a 100644 --- a/src/api/scheduleApi.js +++ b/src/api/scheduleApi.js @@ -1,15 +1,10 @@ import { API_BASE_URL } from '../constants/api'; export const scheduleApi = { - scheduleMessage: async (s, authBearerToken) => { + scheduleMessage: async (reqBody, authBearerToken) => { console.log('Scheduling message'); - const reqBody = { - scheduled: s.scheduedTime.toISOString(), - status: s.status, - user_id: s.userId, - }; - console.log(`Request body: ${reqBody}`); + const response = await fetch(`${API_BASE_URL}/api/v1/schedule/message`, { method: 'POST', headers: { @@ -26,19 +21,14 @@ export const scheduleApi = { } }, - prepareMessage: async (req, authBearerToken) => { + prepareMessage: async (reqBody, authBearerToken) => { console.log('Preparing Scheduled message'); - const reqBody = { - scheduled_message_id: req.scheduledMessageId, - status: req.status, - }; - console.log(`Request body: ${reqBody}`); const response = await fetch( - `${API_BASE_URL}/api/v1/schedule/status/message/update`, + `${API_BASE_URL}/api/v1/schedule/message/status/update`, { - method: 'POST', + method: 'PATCH', headers: { 'Content-Type': 'application/json', Authorization: authBearerToken, diff --git a/src/api/scheduleEventApi.js b/src/api/scheduleEventApi.js index 06f9545..434962a 100644 --- a/src/api/scheduleEventApi.js +++ b/src/api/scheduleEventApi.js @@ -1,13 +1,8 @@ import { API_BASE_URL } from '../constants/api'; export const scheduleEventApi = { - scheduleMessageEvent: async (s, authBearerToken) => { + scheduleMessageEvent: async (reqBody, authBearerToken) => { console.log('Scheduling message Event'); - const reqBody = { - contact_id: s.contactId, - message_id: s.messageId, - scheduled_message_id: s.scheduledMessageId, - }; console.log(`Request body: ${reqBody}`); const response = await fetch( diff --git a/src/components/SendMessageWizard/useSendMessageWizard.js b/src/components/SendMessageWizard/useSendMessageWizard.js index d1b02cc..da27c83 100644 --- a/src/components/SendMessageWizard/useSendMessageWizard.js +++ b/src/components/SendMessageWizard/useSendMessageWizard.js @@ -5,6 +5,8 @@ import { sendMessageApi, SendInstantMessageRequest, } from '../../api/sendMessageApi'; +import { scheduleApi } from '../../api/scheduleApi.js'; +import { scheduleEventApi } from '../../api/scheduleEventApi.js'; const useSendMessageWizard = () => { const [state, setState] = useState({ @@ -168,27 +170,78 @@ const useSendMessageWizard = () => { })); try { - console.log('Sending message'); - let reqBod = new SendInstantMessageRequest(); - reqBod.user_id = tokenService.getUserId(); - reqBod.message_id = state.createdMessage.id; - state.selectedContacts.forEach((selectedContact) => { - reqBod.contact_ids.push(selectedContact); - }); - const response = await sendMessageApi.sendInstantMessage( - reqBod, - tokenService.bearerToken() - ); + if (state.scheduledTime != null) { + console.log('Going to schedule message'); + // TODO: Put code here to schedule message + const schMsgReq = { + scheduled: state.scheduledTime.toISOString(), + status: 'PENDING', + user_id: tokenService.getUserId() + }; - if (response) { - // Success - move to result step - setState((prev) => ({ - ...prev, - step: 'result', - isSubmitting: false, - isScheduled: false, - scheduledTime: null, - })); + console.log(schMsgReq); + + const token = tokenService.bearerToken(); + + const schMsgResponse = await scheduleApi.scheduleMessage(schMsgReq, token); + console.log(schMsgResponse); + + if (schMsgResponse) { + console.log('Message scheduled'); + + const scheduledMessageId = schMsgResponse.data[0].id; + for (let contact of state.selectedContacts) { + let schMsgEvtReq = { + contact_id: contact, + message_id:state.createdMessage.id, + scheduled_message_id: scheduledMessageId, + }; + console.log(schMsgEvtReq); + const schMsgEvtResponse = await scheduleEventApi.scheduleMessageEvent(schMsgEvtReq, token); + console.log(schMsgEvtResponse); + } + + console.log('Updating message status'); + const req = { + scheduled_message_id: scheduledMessageId, + status: 'READY' + }; + console.log(req); + const response = await scheduleApi.prepareMessage(req, token); + if (response) { + console.log('Message scheduled'); + setState((prev) => ({ + ...prev, + step: 'result', + isSubmitting: false, + isScheduled: false, + scheduledTime: null, + })); + } + } + } else { + console.log('Sending message'); + let reqBod = new SendInstantMessageRequest(); + reqBod.user_id = tokenService.getUserId(); + reqBod.message_id = state.createdMessage.id; + state.selectedContacts.forEach((selectedContact) => { + reqBod.contact_ids.push(selectedContact); + }); + const response = await sendMessageApi.sendInstantMessage( + reqBod, + tokenService.bearerToken() + ); + + if (response) { + // Success - move to result step + setState((prev) => ({ + ...prev, + step: 'result', + isSubmitting: false, + isScheduled: false, + scheduledTime: null, + })); + } } } catch (error) { if (error.name === 'AbortError') {