I'm making an app using Gmail API. In order to send a reply to a thread, I need to get Message-ID and References headers from original message. And then these headers will be included in reply message. So before sending a reply, I'm fetching these headers from Gmail API. Headers are being fetched successfully but my code does not wait for them to be fetched and sends the reply. How can I wait for fetching call to complete. I've used promises but as I'm beginner in angularJS, I don't think I implemented them correctly. Please guide me to correct my code. Thanks.
public getReplyMessage(userId, messageId):Promise<any> {
var headersToReturn = {
'MessageID' : '',
'References' : '',
}
gapi.client.load('gmail', 'v1', () => {
var request = gapi.client.gmail.users.messages.get({
'userId': userId,
'id': messageId,
'format': 'metadata',
'metadataHeaders': [ 'Subject','References','Message-ID' ]
});
request.execute((message) => {
var headers = message.payload.headers;
$.each(headers, ( name , value ) => {
if(name == 'Message-ID'){
headersToReturn.MessageID = value;
}
else if(name == 'References'){
headersToReturn.References = value;
}
});
});
});
return Promise.resolve(headersToReturn);
}
And here is the code to call that function.
this.gmailApiService.getReplyMessage('me', this.MsgId).then((msgHeadersForReply) => {
this.MessageIDHeader = msgHeadersForReply.MessageID;
this.ReferencesHeader = msgHeadersForReply.References;
});
console.log("MsgIDHeader => "+this.MessageIDHeader); // this logs empty string.
Any help will be highly appreciated. Thanks :)