Commit Graph

313 Commits

Author SHA1 Message Date
Alexander Krotov
39faddc74d create_or_lookup_adhoc_group: move comment to the correct place
The comment is related to member list processing, not mailing list check.
2020-06-08 08:30:26 +03:00
Hocuri
3e6cd3ff34 Adapt to async, set first subject to 'Message from <sender name>' 2020-06-07 12:11:52 +02:00
Hocuri
f8680724f8 Set subject to Re: <last subject> for better compability with normal MUAs
The code in dc_receive_imf.rs looks a bit funny, an alternative would be a function:

fn upcate_chat_last_subject(context: &Context, chat_id: &ChatId, mime_parser: &mut MimeMessage) -> Result<()> {
    let mut chat = Chat::load_from_db(context, *chat_id)?;
    chat.param.set(Param::LastSubject, mime_parser.get_subject().ok_or_else(||Error::Message("No subject in email".to_string()))?);
    chat.update_param(context)?;
    Ok(())
}
2020-06-07 12:11:52 +02:00
Alexander Krotov
5239f2edad dc_receive_imf: replace chat_id.is_error() with chat_id.is_unset()
Both methods do the same: compare chat_id to 0. However, in these cases
0 refers to the state when chat_id is not determined yet, because no
corresponding chat has been found.

All functions that returned 0 to indicate error have already been
resultified.
2020-06-06 18:29:35 +03:00
holger krekel
7f4627356b test and fix buggy parsing of incoming message which would show MDNs as empty incoming messages 2020-05-24 15:22:55 +02:00
dignifiedquire
0ea442ca36 feat: add chat::send_msg_sync 2020-05-23 18:56:45 +02:00
Friedel Ziegelmayer
014d2946b2 feat: use EventEmitter for events 2020-05-22 21:03:01 +02:00
dignifiedquire
8a7923c974 Merge remote-tracking branch 'origin/master' into feat/async-jobs 2020-05-13 18:29:22 +02:00
B. Petersen
a406e0416f use new Message-ID parser 2020-05-10 22:58:22 +03:00
Hocuri
a586a1d525 Fix #1120 Contact requests are not shown when name of sender includes a comma character (#1438)
* First try making get_recipients use MailHeader (nice and functional)

* Get it to compile by using not-so-functional style

* Add "empty-from" test, drop unnecessary check for error; continue using addrparse_header() instead of addrparse()

* Try to use functional style, unfortunately, I can't get the compiler to accept it

* Do it imperative-style: Do not overwrite To with Cc and vice versa

* Use addrparse_header() once more

* Still addrparse_header()

* Clippy

* Fix compile errors in tests

* Fix typo

* Fix tests again ;-)

* Code style

* Code style; try a HashMap<addr: String, display_name: String> as an address list but I am not convinced

* Code style; Use Vec<SingleInfo> as address list

* Clippy

* Add tests

* Add another test

* Remove stale comments
2020-05-07 13:55:09 +02:00
Alexander Krotov
6543c7c26f fetch_single_msg: do not ignore dc_receive_imf errors
If error is ignored, the message will never be fetched again, even if
there was a database write error.

dc_receive_imf itself is modified to ignore unrecoverable errors, to
prevent endless refetching of incorrect messages.
2020-05-04 18:19:32 +03:00
B. Petersen
54395a7252 do not send DC_EVENT_MSGS_CHANGED or DC_EVENT_INCOMING_MSG for hidden messages
these events take the message-id as parameter and might be used
to update an existing list (although to recommended)

if the event is issued for hidden messages,
this might led to "empty" messages flashing up -
the ui tries to get the message from the event,
after a moment, on the next update, the message disappears again
as hidden messages are of course not returned eg. by dc_get_chat_msgs().

the effect was probably always visible for secure-join-messages on ios,
however, become much more visible recently when read-receipts are added
as hidden messages as well (to make them auto-deletable).
2020-04-30 19:44:33 +03:00
Alexander Krotov
979d7c5625 Do not ignore database read errors in precheck_imf
If precheck_imf fails to check if message with the same rfc724_mid
already exists, the same message may be downloaded twice. Instead,
abort the whole operation and retry later.
2020-04-23 15:36:45 +03:00
B. Petersen
1eaef94c71 make clippy happy 2020-04-16 22:49:34 +02:00
B. Petersen
0b6b8ced92 remove unused dc_chat_get_subtitle() api 2020-04-16 22:08:17 +02:00
B. Petersen
016a780632 check that incoming read-receipts do not unarchive chats 2020-04-13 17:51:56 +02:00
holger krekel
f38386d164 fix member_added/member_removed event with tests and and provide a group-tracking example 2020-04-13 17:39:31 +02:00
Friedel Ziegelmayer
24f4cbbb27 refactor: replace failure
- failure is deprecated
- thiserror for deriving Error impl
- anyhow for highlevel error handling
2020-04-10 22:39:28 +02:00
dignifiedquire
307a3e078e Merge remote-tracking branch 'origin/master' into feat/async-jobs 2020-04-09 23:41:34 +02:00
Alexander Krotov
41f776763b Remove MarkseenMdnOnImap
MarkseenMdnOnImap stored server folder and UID which are never updated
by update_server_uid. Now hidden entries are created for MDNs, so they
should be handled as ordinary messages.
2020-04-01 20:06:27 +03:00
Alexander Krotov
efb7280e99 Do not schedule delayed DeleteMsgOnImap jobs
All IMAP deletion jobs are scheduled either immediately, or later by
job::add_imap_deletion_jobs().
2020-04-01 20:06:27 +03:00
Alexander Krotov
8f7a456a39 Use 0 value for "delete_server_after" default.
Now 0 means "never delete", 1 means "delete at once" and other values
indicate the number of seconds after which them message should be
deleted from the server.

Configuration value interpretation is moved into
Context.get_config_delete_server_after() function.
2020-04-01 20:06:27 +03:00
Alexander Krotov
5b3bec1aac Create entries in msgs table for MDNs
At least one entry is required for DeleteMsgOnImap job. Additionally,
adding a hidden entry makes it possible to avoid redownloading the
message if it gets a new UID on the server.
2020-04-01 20:06:27 +03:00
Alexander Krotov
a653e469f2 Add user-configurable option "delete_server_after"
The option sets timer in seconds after which all parts of the message
are deleted from the server.
2020-04-01 20:06:27 +03:00
Alexander Krotov
4f4241ba3a dc_receive_imf: delete all message parts if message should be deleted
DeleteMsgOnImap deletes files from the server only when the last part
is deleted. Removing only the first part of the hidden or trashed
message does not result in message deletion.
2020-04-01 20:06:27 +03:00
bjoern
8fdf3dcdb8 Merge pull request #1314 from deltachat/fix-secure-join
ignore handshake messages seen from another device
2020-03-28 10:28:55 +01:00
dignifiedquire
49b2f80ded Merge remote-tracking branch 'origin/master' into feat/async-jobs 2020-03-26 16:52:07 +01:00
B. Petersen
785973c624 allow ad-hoc-group creation if there is an accepted chat with the contact 2020-03-24 16:47:54 +01:00
B. Petersen
9c06acff72 add tests wrt classic email-interaction 2020-03-24 16:47:54 +01:00
dignifiedquire
d50c1e3658 fixes from merge with master 2020-03-22 22:05:37 +01:00
dignifiedquire
3a9c2a0356 Merge remote-tracking branch 'origin/master' into feat/async-jobs 2020-03-22 22:02:42 +01:00
B. Petersen
ae5a2396f3 fix typo 2020-03-22 16:18:53 +01:00
B. Petersen
8f82bf40e0 let function that search for Message-IDs accept widly used square brackets format 2020-03-22 12:20:28 +01:00
B. Petersen
fe398de2fa add test that fail on checking existance of a Message-ID with angle brackets 2020-03-22 12:20:28 +01:00
dignifiedquire
1846f20f6e upgrade repl 2020-03-21 14:24:41 +01:00
dignifiedquire
18c1787552 Merge remote-tracking branch 'origin/master' into feat/async-jobs 2020-03-21 12:17:27 +01:00
Alexander Krotov
e7e4821804 Reset group member list when we are added to the group
This makes test_synchronize_member_list_on_group_rejoin pass.
2020-03-19 17:03:31 +03:00
dignifiedquire
4c9d049b10 blocking for with_conn 2020-03-14 15:17:47 +01:00
dignifiedquire
818e921192 it compiles 2020-03-14 15:17:47 +01:00
dignifiedquire
6ea1d665bb start making sql async 2020-03-14 15:17:23 +01:00
dignifiedquire
9614a23506 first pass at async job 2020-03-14 15:14:49 +01:00
B. Petersen
7c39bb6659 ignore handshake messages seen from another device
moreover, prepare for marking peers as verified accross devices,
see detailed comment for observe_securejoin_on_other_device()
2020-02-27 15:04:11 +01:00
Alexander Krotov
33463856c5 Use mailparse::msgidparse to parse Message-IDs 2020-02-22 16:41:07 +01:00
B. Petersen
3a25d6b275 target comment of @link2xt 2020-02-18 17:51:28 +01:00
B. Petersen
8fdb048b6a alter the memberlist more carefully
up to now, Chat-Group-Member-Added and -Removed commands
result in a complete recreation of the memberlist
by collecting all addresses from the From: and To: headers.

this easily results in missed and accidentally removed members,
esp. when several people at the same time scan a qr code to join a group.

this commit changes the behavior of adding members by
not removing members on the Chat-Group-Member-Added command.
instead the existing memberlist is conjuncted
with the memberlist seen in the message.

only adding the member from the Chat-Group-Member-Added
seems not to be sufficient - imaging a group of Alice and Bob:
- Alice adds Claire
- Bob adds Dave _before_ seeing that Alice added Claire
- Dave would never get the information that Claire is in the group

wrt Chat-Group-Member-Removed: this command
does no longer recreate the memberlist but just remove _exactly_ the member
mentioned in the header. there are situations, where a just removed member
will be readded by out-of-order-messages, however, compared to missed
members, this is seems to be acceptable - also as this is more visible
and easier to fix (just remove the member again).
might be that, in practise, this is not a big issue. while adding members
is typically done in masses on bootstraping a group,
this is typically not true for removing members.
2020-02-18 17:51:28 +01:00
Alexander Krotov
e00d4e0ed8 Remove AvatarAction::None
Where needed, Option<AvatarAction> can be used to extend it.
2020-02-16 15:03:37 +03:00
Alexander Krotov
9008a65c14 Remove DC_IMAP_SEEN constant
Replace "flags" integer with a "seen" boolean.
2020-02-13 13:55:06 +01:00
Alexander Krotov
f5bb57d6a6 Fix a typo ("Messag") 2020-02-11 00:07:37 +03:00
Alexander Krotov
1071ab05db Move created_db_entries into cleanup closure instead of borrowing 2020-02-10 23:31:46 +03:00
Alexander Krotov
e64ce5bb4f Reduce is_msgrmsg_rfc724_mid_in_list scope to pub(crate) 2020-02-09 23:28:29 +00:00