Commit Graph

243 Commits

Author SHA1 Message Date
Alexander Krotov
5e8e77dfb6 clippy: forbid wildcard_imports 2021-01-12 12:06:13 +03:00
bjoern
e2688f6355 add option to access original message (#2125)
* draft API to deal with uncut message texts

* add column mime_modified

* add mime_modified flag to MimeParser and save it in the database

* save mime_headers also when mime_modified is set

* cargo fmt

* set mime_modified on parsed html-texts and when there are multiple alternative-parts; add test for that

* prototype functions, add to repl and ffi

* use correct mime_modified flag

* basically parse Mime-Structure to HTML

* add basic tests for HTML-parsing

* convert text/plain to html for getting original

* respect charset for plain texts

* make test more specific

* fix handling non-utf-8 charsets for plain messages

* add test for plain_to_html()

* add failing test for plaintext linkify

* linkify urls in plain text

* fix regex

* plain text linkify: add failing test for encapsulated links as <https://domain.com>

* plain text linkify: make encapsulated links as <https://domain.com> work

* plain text linkify: require word boundary at beginning of link, add tests for that

* plain text linkify: linkify emails

* plain text: support format=flowed

* plain text: support quotes

* make clippy happy

* set mime-modified also when simplify() cuts non-html messages, add tests for that

* streamline mime recursion

* repl tool: write original html to file for further processing

* convert cid:- to data:-protocol

* add a test for cid: to data: conversion

* make clippy happy

* fix html-tests to work with windows-lineends

* clarify what the returned html-code may contain

* add some more detailed doc comments

* add mime_modified column only if not exist

this additional check is needed
as the column may added with another dbversion in
some shipped beta-versions.

* incorporate documentation suggestions from review

* rename get_original_mime_html() to more simple get_html()

* rename api is_mime_modified() to more simple has_html(); internally, mime_modified-flag stays as-is, however

* rename MimeS to MimeMultipartType

* do not set mime-modified flag for encrypted messages that need extra-handling for saved mime-structure

* fix typo

* move get_msg_html() to MsgId.get_html()

* incorporate more documentation suggestions from review

* remove unused return value from collect_texts_recursive()

* avoid mime_modified being mutable in write-parts-loop

* move 'use futures::future::FutureExt' atop of html.rs

* move attributes defining plain-text to a dedicated structure

* more PlainText to separate file

* escape cid when building regex

* let dc_get_msg_html() return NULL when calling with bad param
2021-01-11 17:40:35 +01:00
Hocuri
78fd0c285b Delete messages more thoroughly (and at all) (#2114)
- Make sure delete_expired_messages and housekeeping runs once a day
- delete more info about messages when putting them to trash (esp. also
delete txt_raw, from_id and to_id as we don't need those anymore, so
they are data that was unnecessarily kept)

fix #1926, fix #2090

Also:

* Nicer test_utils: add send_text() and print_chat()

* Adapt ephemeral messages for testing (make them accurate to the second)

* Add test for ephemeral messages

* Make pop_sent_msg() really pop the last sent message
2020-12-26 18:29:43 +01:00
Hocuri
4d2c2130e8 Replace all t.ctx with t
Not sure if that's the way to go because, you know, merge conflicts, but
we could do this now.
2020-12-18 18:35:54 +01:00
Hocuri
af8a6d7722 Create and use some test helper functions 2020-12-18 18:35:54 +01:00
Alexander Krotov
dea9630380 Better typed Message.ephemeral_timer 2020-12-06 21:09:13 +03:00
Alexander Krotov
30e7f84770 Add get_parent_message() 2020-12-06 21:09:13 +03:00
Hocuri
dcc00075b0 extract variable 2020-10-19 15:23:18 +02:00
Hocuri
a320fb9d6c Doesn't look great, but this was the only way to make compiler happy 2020-10-19 15:23:18 +02:00
Hocuri
3bef4909d5 Update src/message.rs
Co-authored-by: holger krekel  <holger@merlinux.eu>
2020-10-19 15:23:18 +02:00
Hocuri
26aeacc6be @link2xt's review 2020-10-19 15:23:18 +02:00
Hocuri
0b1288fc17 Mark all failed messages as failed when receiving an NDN
There may be multiple messages with the same `Message-Id`-header alias
rfc724_mid because an email with multiple attachments was split up.
2020-10-19 15:23:18 +02:00
Hocuri
b8e98c0b81 Also add missing suffix (#1973) 2020-10-16 18:42:21 +02:00
B. Petersen
d13d62105a name quote-only drafts as such in the summary
a draft may contain only a quote,
without any text set yet.

these drafts cannot be sent, however, appear in the summary -
currently with the summary-text "", which results to sth.
as "Draft: " - which looks like an error or at least a bit weird.

this pr sets the summary text to "Reply" - similar to "Image", "Video" etc. -
the UI just expects some text here, not an empty string.

the result are summaries as "Draft: Reply" on all UIs -
which, btw. is also roughly the same what Signal does in this case.
2020-10-13 21:35:29 +02:00
B. Petersen
c1768bb311 add dc_msg_get_info_type() to allow drawing a shield in the uis 2020-10-13 14:59:27 +02:00
B. Petersen
a7998c190c remove DC_CHAT_TYPE_VERIFIED_GROUP resp. Chattype::VerifiedGroup 2020-10-13 14:59:26 +02:00
Alexander Krotov
69f159792e Only use summary for quote if text is empty
For text messages, summary joins all lines into one, so multi-line quotes
look bad in Thunderbird.
2020-10-11 01:37:24 +03:00
Hocuri
be88b946b6 Peek reipients, fetch existing messages
Read all of an e-mail accounts messages and extract all To/CC addresses
if the From was from our own account.
Then, fetch existing messages from the server and show them.

Also, I fixed two other things:
- just by chance my test failed because of an completely unrelated bug.
The bug: bcc_self messages were not marked as read if mvbox_move was set
to true.
- add some color to the test output (minor change)
2020-10-10 15:56:30 +03:00
Alexander Krotov
eaec03142b Use get_summarytext() for quotes
Co-Authored-By: Hocuri <hocuri@gmx.de>
2020-10-10 12:41:43 +03:00
Hocuri
719cba68b3 Don't flood the log
with `src/message.rs:1794: Empty rfc724_mid passed to rfc724_mid_exists`
messages
2020-10-10 12:41:43 +03:00
Alexander Krotov
20182b027e Add quote API
Sticky encryption rule, requiring that all replies to encrypted messages
are encrypted, applies only to messages with a quote now.

Co-Authored-By: B. Petersen <r10s@b44t.com>
2020-10-10 12:41:43 +03:00
René Rössler
9739c0305b Accessible msg error and type changes 2020-10-08 11:51:04 +02:00
B. Petersen
5405bfbc8d remove unused types "starred" and "in-creation"
both are not used in productive:
- chat-id "in-creation" was dropped completely already in core-c
  as it does not allow assigning messages to chats in time.
- message flag "starred" was added at some point and never used.
  ux-wise, "disappearing messages" promises to clean up a chat -
  this does not fit well with "starring" messages.
  "saved messages" chat seems to be superior in that regard.
  but anyway, it is not used but comes at maintainance costs,
  so it is better to delete its functionality for now.
  (the db entries, however, are left for now,
  that might be more tricky to remove)
2020-10-06 09:32:50 +02:00
Alexander Krotov
a0c92753a9 prepare_msg: return Err if no address is configured
Address is used to generate Message-Id.

Previously error toast was shown, but MsgId was returned from
chat::prepare_msg anyway. Now chat::prepare_msg returns an error.

error!() is removed, because FFI library shows errors via
.unwrap_or_log_default().
2020-10-05 10:37:21 +03:00
B. Petersen
f0fb1bfdcb make clippy happy 2020-09-24 14:36:04 +02:00
B. Petersen
ab90b6b390 emit multiple events if messages given to dc_markseen_msgs() belong to different chats 2020-09-24 14:05:34 +02:00
B. Petersen
e9733e7525 always set chat_id on DC_EVENT_MSGS_NOTICED 2020-09-24 12:21:18 +02:00
B. Petersen
5c1b69c3c5 if possible, set chat_id in DC_EVENT_MSGS_NOTICED even emitted by dc_markseen_msgs() 2020-09-24 11:36:40 +02:00
B. Petersen
12bc364e42 split DC_EVENT_MSGS_NOTICED off DC_EVENT_MSGS_CHANGED
the new event can be used for updating the badge counter.
to get the old behaviour, implementations can just do the same on both events.
2020-09-24 11:36:39 +02:00
Alexander Krotov
fc0e88539a get_summarytext_by_raw: drop leading and trailing whitespace
Also remove unnecessary use of regexp.
2020-09-20 23:51:52 +03:00
Alexander Krotov
332a387c98 Fix nightly clippy warnings 2020-09-19 17:49:32 +03:00
B. Petersen
65f2a3b1c6 remove unused dc_empty_server() and related code
'Delete emails from server' was an experimental ad-hoc function
that was added before 'Automatically delete old messages' was introduced
to allow at least some way to cleanup.

'Delete emails from server'-UI was already removed from android/ios in june
(see https://github.com/deltachat/deltachat-android/pull/1406)
and the function never exists on desktop at all.
2020-09-07 06:38:48 +03:00
Alexander Krotov
a68528479f Remove dead code markers 2020-09-05 21:07:28 +03:00
Floris Bruynooghe
ee27c7d9d4 Run clippy on tests and examples 2020-09-05 18:13:16 +02:00
B. Petersen
94e52b5598 use Viewtype::File for types that may be unsupported on some systems.
in general, Viewtypes other than File should be used only
when the added file type is tested on all platforms -
including Android4 currently.

as this is easily overseen,
i've added a comment.

this partly reverts Viewtype changes done by
https://github.com/deltachat/deltachat-core-rust/pull/1818
2020-08-23 19:53:58 +03:00
Alexander Krotov
a01755b65b Guess MIME type for .pdf and many other extensions 2020-08-23 01:20:32 +03:00
bjoern
d26347af7e Merge pull request #1831 from deltachat/trailing-slash
be more tolerant on webrtc-servers set by the user
2020-08-18 14:09:24 +02:00
bjoern
a3c700ce85 Merge pull request #1826 from deltachat/tgs-mimetype
Recognize .tgs files as stickers
2020-08-18 12:48:38 +02:00
B. Petersen
54edd4d211 force enum-match exhaustive 2020-08-14 13:41:51 +02:00
B. Petersen
810bd514d7 make clippy happy 2020-08-14 13:35:02 +02:00
B. Petersen
0208c02ec2 ignore whitespace in given webrtc_instance 2020-08-14 11:55:36 +02:00
B. Petersen
8159141d44 add https-scheme to videochat-instance, if missing in pattern 2020-08-14 11:26:48 +02:00
B. Petersen
38a32d176b add a slash before room if there is no other separator 2020-08-14 11:26:47 +02:00
B. Petersen
a66d624b87 add failing test 2020-08-14 11:26:47 +02:00
B. Petersen
bd0b352854 make webrtc-instance-creation testable 2020-08-14 00:23:37 +02:00
Friedel Ziegelmayer
526e76c59f Merge pull request #1784 from deltachat/feat/multiii 2020-08-11 12:20:32 +02:00
Alexander Krotov
baec61cc4d Recognize .tgs files as stickers
.tgs files are Telegram stickers. Internally they are gzipped JSON files,
containing a single Lottie animation.

MIME type application/x-tgsticker is commonly used for telegram documents
containing such stickers.
2020-08-11 04:21:47 +03:00
bjoern
21f8fefcce Merge pull request #1809 from deltachat/test-get-width-height
add a higher-level test for dc_get_filemeta()
2020-08-10 11:56:23 +02:00
dignifiedquire
1ae49c1fca unify events 2020-08-10 10:32:48 +02:00
Alexander Krotov
2550ed3f43 Add more extensions to guess_msgtype_from_suffix() 2020-08-09 17:46:07 +03:00