#include "Ecore_File.h"
#include "message_email.h"
+#include "message_sms.h"
#include "messaging_util.h"
namespace extension {
}
// Set SMS recipients
-// std::vector<std::string> recp_list = message->getTO();
-// if (!recp_list.empty()) {
-// message->addSMSRecipientsToStruct(recp_list, msg);
-// }
+ std::vector<std::string> recp_list = message->getTO();
+ if (!recp_list.empty()) {
+ message->addSMSRecipientsToStruct(recp_list, msg);
+ }
} else if (type == MSG_TYPE_MMS) {
// Set message type to MMS
//get type
msg_get_int_value(msg, MSG_MESSAGE_TYPE_INT, &infoInt);
if (infoInt == MSG_TYPE_SMS) {
-// message = new MessageSMS();
-// // get SMS body
-// std::shared_ptr<MessageBody> body(new MessageBody());
-// char msgInfoStr[MAX_MSG_TEXT_LEN + 1];
-// msg_get_str_value(msg, MSG_MESSAGE_SMS_DATA_STR, msgInfoStr, MAX_MSG_TEXT_LEN);
-// body->setPlainBody(std::string(msgInfoStr));
-// message->setBody(body);
-// // get recipients
-// std::vector<std::string> recp_list = message->getSMSRecipientsFromStruct(msg);
-// message->setTO(recp_list);
+ message = new MessageSMS();
+ // get SMS body
+ std::shared_ptr<MessageBody> body(new MessageBody());
+ char msgInfoStr[MAX_MSG_TEXT_LEN + 1];
+ msg_get_str_value(msg, MSG_MESSAGE_SMS_DATA_STR, msgInfoStr, MAX_MSG_TEXT_LEN);
+ body->setPlainBody(std::string(msgInfoStr));
+ message->setBody(body);
+ // get recipients
+ std::vector<std::string> recp_list = message->getSMSRecipientsFromStruct(msg);
+ message->setTO(recp_list);
} else if (infoInt == MSG_TYPE_MMS) {
// message = new MessageMMS();
//
#include "messaging_util.h"
#include "message_storage_email.h"
+#include "message_storage_short_msg.h"
#include "message.h"
namespace extension {
switch (msgType) {
case MessageType::SMS:
case MessageType::MMS:
- // TODO need to add class representing message storage for short messages
- //m_storage.reset(new MessageStorageShortMsg(id, msgType));
+ m_storage.reset(new MessageStorageShortMsg(id, msgType));
break;
case MessageType::EMAIL:
m_storage.reset(new MessageStorageEmail(id));
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-//#include "JSMessageFolder.h"
-//#include "ShortMsgManager.h"
-
#include "common/logger.h"
#include "common/platform_exception.h"
#include "messaging_util.h"
#include "message_sms.h"
+#include "short_message_manager.h"
#include "message_storage_short_msg.h"
namespace extension {
LoggerD("Entered");
MessageCallbackUserData *callback = static_cast<MessageCallbackUserData*>(data);
- // TODO
- //ShortMsgManager::getInstance().addDraftMessage(callback);
+ ShortMsgManager::getInstance().addDraftMessage(callback);
return false;
}
callback->setJson(json);
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
service->sendMessage(callback);
}
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
callback->setJson(json);
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
service->loadMessageBody(callback);
}
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
callback->setJson(json);
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
service->loadMessageAttachment(callback);
}
callback->setAccountId(id);
callback->setLimit(limit);
- long op_id = MessagingManager::getInstance().getMessageServiceEmail(id)->sync(callback);
+ long op_id = MessagingManager::getInstance().getMessageService(id)->sync(callback);
picojson::value v_op_id(static_cast<double>(op_id));
ReportSuccess(v_op_id, out);
callback->setMessageFolder(MessagingUtil::jsonToMessageFolder(v_folder));
callback->setLimit(limit);
- long op_id = MessagingManager::getInstance().getMessageServiceEmail(id)->syncFolder(callback);
+ long op_id = MessagingManager::getInstance().getMessageService(id)->syncFolder(callback);
picojson::value v_op_id(static_cast<double>(op_id));
ReportSuccess(v_op_id, out);
op_id = static_cast<long>(v_op_id.get<double>());
}
- MessagingManager::getInstance().getMessageServiceEmail(id)->stopSync(op_id);
+ MessagingManager::getInstance().getMessageService(id)->stopSync(op_id);
ReportSuccess(out);
}
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
callback->setJson(json);
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
service->getMsgStorage()->addDraftMessage(callback);
}
(MessagingUtil::getValueFromJSONObject<double>(data, FIND_FOLDERS_ARGS_OFFSET));
int serviceId = static_cast<int>(data.at(FUNCTIONS_HIDDEN_ARGS_SERVICE_ID).get<double>());
- auto storage = MessagingManager::getInstance().getMessageServiceEmail(serviceId)->getMsgStorage();
+ auto storage = MessagingManager::getInstance().getMessageService(serviceId)->getMsgStorage();
FindMsgCallbackUserData* callback = new FindMsgCallbackUserData();
callback->setFilter(filter);
callback->setJson(json);
int serviceId = static_cast<int>(data.at(FUNCTIONS_HIDDEN_ARGS_SERVICE_ID).get<double>());
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
service->getMsgStorage()->removeMessages(callback);
}
int serviceId = static_cast<int>
(MessagingUtil::getValueFromJSONObject<double>(data,FUNCTIONS_HIDDEN_ARGS_SERVICE_ID));
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
service->getMsgStorage()->updateMessages(callback);
}
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
callback->setJson(json);
- auto storage = MessagingManager::getInstance().getMessageServiceEmail(serviceId)->getMsgStorage();
+ auto storage = MessagingManager::getInstance().getMessageService(serviceId)->getMsgStorage();
storage->findConversations(callback);
}
callback->setJson(json);
int serviceId = static_cast<int>(data.at(FUNCTIONS_HIDDEN_ARGS_SERVICE_ID).get<double>());
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
service->getMsgStorage()->removeConversations(callback);
}
obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
callback->setJson(json);
- auto storage = MessagingManager::getInstance().getMessageServiceEmail(serviceId)->getMsgStorage();
+ auto storage = MessagingManager::getInstance().getMessageService(serviceId)->getMsgStorage();
storage->findFolders(callback);
}
const long callbackId = static_cast<long>(args.get(JSON_CALLBACK_ID).get<double>());
int serviceId = static_cast<int>(data.at(FUNCTIONS_HIDDEN_ARGS_SERVICE_ID).get<double>());
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
std::shared_ptr<MessagesChangeCallback> callback(new MessagesChangeCallback(
callbackId, serviceId, service->getMsgServiceType()));
const long callbackId = static_cast<long>(args.get(JSON_CALLBACK_ID).get<double>());
int serviceId = static_cast<int>(data.at(FUNCTIONS_HIDDEN_ARGS_SERVICE_ID).get<double>());
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
std::shared_ptr<ConversationsChangeCallback> callback(new ConversationsChangeCallback(
callbackId, serviceId, service->getMsgServiceType()));
const long callbackId = static_cast<long>(args.get(JSON_CALLBACK_ID).get<double>());
int serviceId = static_cast<int>(data.at(FUNCTIONS_HIDDEN_ARGS_SERVICE_ID).get<double>());
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
std::shared_ptr<FoldersChangeCallback> callback(new FoldersChangeCallback(
callbackId, serviceId, service->getMsgServiceType()));
data.at(REMOVE_CHANGE_LISTENER_ARGS_WATCHID).get<double>());
int serviceId = static_cast<int>(data.at(FUNCTIONS_HIDDEN_ARGS_SERVICE_ID).get<double>());
- auto service = MessagingManager::getInstance().getMessageServiceEmail(serviceId);
+ auto service = MessagingManager::getInstance().getMessageService(serviceId);
service->getMsgStorage()->removeChangeListener(watchId);
ReportSuccess(out);
#include "common/task-queue.h"
#include "messaging_instance.h"
+#include "short_message_manager.h"
#include "messaging_util.h"
namespace extension {
namespace messaging {
+namespace {
+const int UNDEFINED_MESSAGE_SERVICE = -1;
+}
+
MessagingManager::MessagingManager()
{
LoggerD("Entered");
int ret = msg_open_msg_handle(&m_msg_handle);
if (ret != MSG_SUCCESS) {
LoggerE("Cannot get message handle: %d", ret);
+ } else {
+ ShortMsgManager::getInstance().registerStatusCallback(m_msg_handle);
}
+
+ m_sms_service = std::make_pair(UNDEFINED_MESSAGE_SERVICE, nullptr);
}
MessagingManager::~MessagingManager()
}
);
m_email_services.clear();
+
+ if (m_sms_service.second) {
+ delete m_sms_service.second;
+ }
}
MessagingManager& MessagingManager::getInstance()
case MessageType::SMS:
LoggerD("MessageService for SMS");
{
+ if (user_data->sms_service->second) delete user_data->sms_service->second;
+
MessageService* service = new(std::nothrow) MessageServiceShortMsg(
MessageServiceAccountId::SMS_ACCOUNT_ID,
MessageType::SMS);
LoggerE("MessageService for SMS creation failed");
throw common::UnknownException("MessageService for email creation failed");
}
+ *(user_data->sms_service) = std::make_pair(service->getMsgServiceId(), service);
// TODO FIXME
picojson::array array;
obj[JSON_DATA] = picojson::value(array);
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
- delete service;
service = NULL;
}
break;
auto user_data = std::shared_ptr<MsgManagerCallbackData>(new MsgManagerCallbackData());
user_data->json = json;
user_data->services_map = &m_email_services;
+ user_data->sms_service = &m_sms_service;
common::TaskQueue::GetInstance().Queue<MsgManagerCallbackData>
(getMsgServicesThread, callbackCompleted, user_data);
}
-MessageService* MessagingManager::getMessageServiceEmail(int id){
- LoggerD("Entered");
- return m_email_services[id];
+MessageService* MessagingManager::getMessageService(const int id) {
+ if (id == m_sms_service.first) {
+ return m_sms_service.second;
+ } else {
+ return m_email_services[id];
+ }
}
} // namespace messaging
public:
std::shared_ptr<picojson::value> json;
std::map<int, MessageService*>* services_map;
+ std::pair<int, MessageService*>* sms_service;
};
class MessagingManager {
public:
static MessagingManager& getInstance();
void getMessageServices(const std::string& type, double callbackId);
- MessageService* getMessageServiceEmail(int id);
+ MessageService* getMessageService(const int id);
private:
MessagingManager();
msg_handle_t m_msg_handle;
std::map<int, MessageService*> m_email_services;
+ std::pair<int, MessageService*> m_sms_service;
};
} // namespace messaging
#include <email-api-account.h>
#include "message_email.h"
+#include "message_sms.h"
#include "message_conversation.h"
#include "tizen/tizen.h"
switch (message->getType()) {
case MessageType::SMS:
- LoggerD("Currently unsupported");
- // TODO add class which will extended message_service and call message_service_short_msg
break;
case MessageType::MMS:
LoggerD("Currently unsupported");
switch (mtype) {
case MessageType::SMS:
- LoggerD("Currently unsupported");
- // TODO add class which will extended message_service and call message_service_short_msg
+ LoggerD("SMS type");
+ message = std::shared_ptr<Message>(new MessageSMS());
+ // TODO check if id exists
break;
case MessageType::MMS:
LoggerD("Currently unsupported");
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-//#include <JSWebAPIErrorFactory.h>
-//#include <JSWebAPIError.h>
-//#include <JSUtil.h>
#include <msg.h>
#include <msg_transport.h>
#include <msg_storage.h>
#include "common/logger.h"
#include "messaging_util.h"
+#include "messaging_instance.h"
#include "message_service.h"
#include "message_sms.h"
//#include "MessageMMS.h"
-//#include "JSMessage.h"
//#include "JSMessageConversation.h"
#include "messaging_database_manager.h"
try {
if (callback->isError()) {
LoggerD("Calling error callback");
- // TODO call error
- //JSObjectRef errobj = JSWebAPIErrorFactory::makeErrorObject(context,
- //callback->getErrorName(), callback->getErrorMessage());
- //callback->callErrorCallback(errobj);
- //callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED);
+
+ MessagingInstance::getInstance().PostMessage(callback->getJson()->serialize().c_str());
+ callback->getMessage()->setMessageStatus(MessageStatus::STATUS_FAILED);
} else {
LoggerD("Calling success callback");
- // TODO call success
- //callback->callSuccessCallback();
+
+ auto json = callback->getJson();
+ picojson::object& obj = json->get<picojson::object>();
+ obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
+
+ picojson::object args;
+ args[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage());
+ obj[JSON_DATA] = picojson::value(args);
+
+ MessagingInstance::getInstance().PostMessage(json->serialize().c_str());
}
} catch (const common::PlatformException& err) {
LoggerE("Error while calling addDraftMessage callback: %s (%s)",