return ret;
}
+COMPOSER_RETURN_TYPE_E msg_ui_composer_get_thread_id_by_address(msg_handle_t msg_handle, GSList *address_list, msg_thread_id_t *tid)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+ if (address_list == NULL || tid == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "param is NULL");
+ return COMPOSER_RETURN_FAIL;
+ }
+
+ COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+ int count = g_slist_length(address_list);
+ int i = 0;
+ msg_struct_list_s *addr_list = NULL;
+ msg_struct_t msgInfo = msg_create_struct(MSG_STRUCT_MESSAGE_INFO);
+
+ if (msgInfo) {
+ msg_get_list_handle(msgInfo, MSG_MESSAGE_ADDR_LIST_STRUCT, (void**)&addr_list);
+
+ addr_list->nCount = count;
+ for (i = 0; i < count; i++) {
+ char *address = (char *)g_slist_nth_data(address_list, i);
+ if (address == NULL) {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_DEBUG, "address is NULL, skip");
+ continue;
+ }
+
+ int addr_type = get_address_type((const char*)address);
+ if (addr_type == COMPOSER_UTIL_ADDRTYPE_NUMBER)
+ msg_set_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_PLMN);
+ else if (addr_type == COMPOSER_UTIL_ADDRTYPE_EMAIL)
+ msg_set_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_TYPE_INT, MSG_ADDRESS_TYPE_EMAIL);
+ msg_set_int_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_RECIPIENT_TYPE_INT, MSG_RECIPIENTS_TYPE_TO);
+ msg_set_str_value(addr_list->msg_struct_info[i], MSG_ADDRESS_INFO_ADDRESS_VALUE_STR, address, strlen(address));
+ }
+
+ msg_get_thread_id_by_address(msg_handle, addr_list, tid);
+
+ msg_release_struct(&msgInfo);
+ } else {
+ MSG_UI_DEBUG(MSG_UI_LEVEL_ERR, "msgInfo is NULL");
+ ret = COMPOSER_RETURN_FAIL;
+ }
+
+ return ret;
+}
+
+COMPOSER_RETURN_TYPE_E msg_ui_composer_delete_draft_message(msg_handle_t msg_handle, msg_thread_id_t tid)
+{
+ MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
+
+ COMPOSER_RETURN_TYPE_E ret = COMPOSER_RETURN_SUCCESS;
+ msg_struct_list_s msg_list = {0,};
+
+ if (msg_get_message_list(msg_handle, MSG_DRAFT_ID, tid, 0, 0, &msg_list) == MSG_SUCCESS) {
+ int i = 0;
+ int msgid = 0;
+
+ if (msg_list.nCount)
+ D_MSG("delete draft message");
+
+ for (i = 0; i < msg_list.nCount; i++) {
+ msg_get_int_value(msg_list.msg_struct_info[i], MSG_MESSAGE_ID_INT, &msgid);
+ D_MSG("draft msg_id is %d", msgid);
+ if (msg_delete_message(msg_handle, msgid) != COMPOSER_RETURN_SUCCESS)
+ D_EMSG("msg_delete_message is failed, msgid = %d", msgid);
+ }
+ }
+ msg_release_list_struct(&msg_list);
+
+ return ret;
+}
+
COMPOSER_RETURN_TYPE_E msg_ui_composer_save_message(msg_handle_t msg_handle, int msg_id)
{
MSG_UI_ENTER(MSG_UI_LEVEL_DEBUG);
msg_ui_composer_message_init();
if (msg_ui_composer_get_message_data(cd) == COMPOSER_RETURN_SUCCESS) {
- msg_ui_composer_save_message(cd->msg_handle, cd->msg_id);
+ /* delete draft message */
+ msg_thread_id_t tid = 0;
+
+ if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+ PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+ tid = bubble_data->threadId;
+ } else {
+ GSList *address_list = msg_ui_composer_message_get_address();
+ msg_ui_composer_get_thread_id_by_address(cd->msg_handle, address_list, &tid);
+ }
+
+ D_MSG("tid = %d", tid);
+ if (tid > 0)
+ msg_ui_composer_delete_draft_message(cd->msg_handle, tid);
+
+ D_MSG("save draft message");
+ msg_ui_composer_save_message(cd->msg_handle, 0);
}
msg_ui_composer_message_destroy();
msg_ui_composer_message_init();
if (msg_ui_composer_get_message_data(cd) == COMPOSER_RETURN_SUCCESS) {
- msg_ui_composer_save_message(cd->msg_handle, cd->msg_id);
+ /* delete draft message */
+ msg_thread_id_t tid = 0;
+
+ if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+ PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+ tid = bubble_data->threadId;
+ } else {
+ GSList *address_list = msg_ui_composer_message_get_address();
+ msg_ui_composer_get_thread_id_by_address(cd->msg_handle, address_list, &tid);
+ }
+
+ D_MSG("tid = %d", tid);
+ if (tid > 0)
+ msg_ui_composer_delete_draft_message(cd->msg_handle, tid);
+
+ D_MSG("save draft message");
+ msg_ui_composer_save_message(cd->msg_handle, 0);
}
msg_ui_composer_message_destroy();
if (!cd->disable_auto_save_mode) {
COMPOSER_EDIT_STATE_E edit_state = __msg_ui_composer_edit_check(cd);
if (edit_state == COMPOSER_EDIT_RECIPIENT_AND_BODY) {
+
/* auto save composer data */
msg_ui_composer_message_init();
-
if (msg_ui_composer_get_message_data(cd) == COMPOSER_RETURN_SUCCESS) {
+ /* delete draft message */
+ msg_thread_id_t tid = 0;
+
+ if (cd->msg_ug_mode == MSG_UG_MODE_BUBBLE_COMPOSER) {
+ PMSG_BUBBLE_DATA bubble_data = cd->bubble_data;
+ tid = bubble_data->threadId;
+ } else {
+ GSList *address_list = msg_ui_composer_message_get_address();
+ msg_ui_composer_get_thread_id_by_address(cd->msg_handle, address_list, &tid);
+ }
+
+ D_MSG("tid = %d", tid);
+ if (tid > 0)
+ msg_ui_composer_delete_draft_message(cd->msg_handle, tid);
+
D_MSG("save draft message");
- msg_ui_composer_save_message(cd->msg_handle, cd->msg_id);
+ msg_ui_composer_save_message(cd->msg_handle, 0);
/* show saved ticker popup */
msg_ui_composer_common_tickernoti(cd, COMPOSER_TICKERNOTI_AUTO_SAVED);
}
MSG_BUBBLE_DATA *bubble_data = cd->bubble_data;
if (bubble_data) {
- msg_struct_list_s msg_list = {0,};
-
- if (msg_get_message_list(cd->msg_handle, MSG_DRAFT_ID, bubble_data->threadId, 0, 0, &msg_list) == MSG_SUCCESS) {
- int i = 0;
- int msgid = 0;
-
- D_MSG("delete draft message");
- for (i = 0; i < msg_list.nCount; i++) {
- msg_get_int_value(msg_list.msg_struct_info[i], MSG_MESSAGE_ID_INT, &msgid);
- D_MSG("draft msg_id is %d", msgid);
- if (msg_delete_message(cd->msg_handle, msgid) != COMPOSER_RETURN_SUCCESS)
- D_EMSG("msg_ui_comp_core_delete_message is failed = %d", msgid);
- }
- }
- msg_release_list_struct(&msg_list);
+ msg_ui_composer_delete_draft_message(cd->msg_handle, bubble_data->threadId);
}
}
}