attachment->bin_content = data;
}
+static void attachment_save_result(UiEvent *event, int error, void *userdata) {
+ Attachment *attachment = userdata;
+ attachment->save_in_progress = FALSE;
+ if(!error) {
+ attachment->saved = TRUE;
+ attachment->content_saved = TRUE;
+ } else {
+ // TODO: error dialog?
+ }
+}
+
/*
* saves the attachment
*
* If cleanup_content is true, attachment->bin_content is set to NULL
*/
void attachment_save(UiObject *obj, Attachment *attachment, bool cleanup_content) {
- if(!attachment->saved || !attachment->content_saved) {
- note_store_save_attachment_async(obj, attachment, NULL, NULL);
+ if(!attachment->save_in_progress && !(attachment->saved || attachment->content_saved)) {
+ note_store_save_attachment_async(obj, attachment, attachment_save_result, attachment);
+ attachment->save_in_progress = FALSE;
if(cleanup_content) {
cxFree(attachment->ui->note_allocator, attachment->bin_content.ptr);
+ attachment->bin_content.ptr = NULL;
+ attachment->bin_content.length = 0;
}
}
}