Commit Graph

266 Commits

Author SHA1 Message Date
Manos Pitsidianakis
d926cadc4d
melib: remove argument from MailBackend operation()
The operation() method on the MailBackend trait returns a trait object
that can read or modify an Envelope directly from the backend. This is
used to get eg the envelope's text, or set flags. It has two arguments,
envelope hash and folder hash.

Only the Maildir backend needed the latter argument, and it can be replaced with a dictionary to match envelope hashes to folder hashes within the Maildir backend.
2019-11-08 15:13:41 +02:00
Manos Pitsidianakis
78eecbb104
melib: Hide Envelope behind RwLock
Envelope can now only be accessed from within a RwLock. Two new structs
are introduced: EnvelopeRef and EnvelopeRefMut. These hold a reference
to an Envelope and the mutex guard that keeps them alive.

This change allows sharing of the envelopes hash map amongst threads.
2019-11-08 15:13:41 +02:00
Manos Pitsidianakis
d1184d4ea5
ui/search: add sorting in search 2019-11-08 15:13:41 +02:00
Manos Pitsidianakis
3af6f338ce
add sqlite3 feature WIP 2019-11-08 15:13:41 +02:00
Manos Pitsidianakis
0566937a76
imap: reconnect if connection timed out 2019-11-02 12:25:18 +02:00
Manos Pitsidianakis
e5b6faf6bd
Add account online status
Add a boolean field to accounts that states if the account can be
accessed. Local backends (Maildir/mbox) return true every time, but
remote backends (IMAP) may not. Accounts start as offline and then get
initialised when their status goes to online. Right now if an IMAP
account startup but later get offline, there are crashes. With this
change the account can be switched back to offline when that happens.
2019-10-24 20:30:17 +03:00
Manos Pitsidianakis
1a02491f04
ui/compose: add modification detection
Detect if modifications were done to the draft in the compose tab so
that we can ask for confirmation if user wants to quit an unsaved draft.
2019-10-20 11:35:41 +03:00
Manos Pitsidianakis
5beed91df2
contacts: add support for externally managed contacts
Adds support for contacts (Cards) marked as `external_resource` which
prevents modifications from happening. No way to import external
contacts is added yet.
2019-10-20 11:32:31 +03:00
Manos Pitsidianakis
dc525b9ddd
contacts: make CardId an enum
CardId is the "Primary Key" of the contact type, Card. Meli-created
contacts had UUIDs for their CardId. In order to import external
contacts and ensure their primary key is the same each time, CardId is
made into an enum to add hashing as a choice.
2019-10-20 11:25:57 +03:00
Manos Pitsidianakis
f3e08c17aa
Update uuid dependency to 0.7.4 2019-10-20 11:25:57 +03:00
Manos Pitsidianakis
cfe6138c44
melib: add VCard parsing for contacts
Add rough VCard conversion for melib::Card, to use eventually with
contacts.
2019-10-16 14:57:48 +03:00
Manos Pitsidianakis
52a89ddf94
Add license comment to melib/src/structs.rs 2019-10-15 23:47:37 +03:00
Manos Pitsidianakis
d32f0982a9
melib: StackVec fixups
Fix bound checks and add clear() method
2019-10-07 16:46:32 +03:00
Matthias Beyer
a0602274f8
Run cargo fmt 2019-10-04 20:47:25 +03:00
Manos Pitsidianakis
b7edec0274
Bump version to 0.3.2 2019-09-28 12:25:44 +03:00
Manos Pitsidianakis
47d60f480a
Add path shell expansion to logging and attachments 2019-09-28 12:19:22 +03:00
Manos Pitsidianakis
e35a93336a
Add GPG signing and sig verifying 2019-09-28 12:19:22 +03:00
Manos Pitsidianakis
5a262f3ffc
maildir: check for moved mail before moving
When moving mail from new/ to cur/ in a Maildir folder, don't panic if
it fails; someone else must have moved it.
2019-09-27 22:38:10 +03:00
Manos Pitsidianakis
250129665b
Pass attachment names through decoding
Attachment names in Content-Type parameters can be encoded (eg
=?UTF-8...), so try decoding with phrase() first
2019-09-27 22:21:35 +03:00
Manos Pitsidianakis
68c40a2920
melib: return Result with error when an IO operation fails
Don't unwrap anything because this might be temporary, for example a
short IMAP disconnection.
2019-09-27 13:40:02 +03:00
Manos Pitsidianakis
9d69a06807
melib: add ShellExpandTrait
Add trait to expand "~" and environment variables in paths.
2019-09-26 18:27:13 +03:00
Manos Pitsidianakis
0ece51612f
update bincode to 1.2.0 2019-09-26 18:25:30 +03:00
Manos Pitsidianakis
fa121820f7
Bump version to 0.3.1 2019-09-26 14:11:24 +03:00
Manos Pitsidianakis
c44056a9ff
melib: fix bug in parser::parts
At a certain point when expecting a line terminator parts() checks for
'\n' but not '\r\n'. This resulted in all multipart attachments coming
from b"\r\n" sources like IMAP having only one part when parsed.
2019-09-26 13:11:54 +03:00
Manos Pitsidianakis
91ae539de1
Small fixes 2019-09-26 13:11:49 +03:00
Manos Pitsidianakis
f27b815aa7
Add verification of GPG signed messages 2019-09-26 13:11:08 +03:00
Manos Pitsidianakis
9305e543cf
melib: add a body field to Attachment
Attachment needs to know the range of bytes where the body part of the
attachment is located. The Attachment.raw field contains the entire
attachment, headers and body. The new Attachment.body fields contains a
`StrBuilder` which contains the offset and length of the body part inside
`raw`.
2019-09-26 13:10:06 +03:00
Manos Pitsidianakis
5a53020f3d
Add debug-tracing feature to all crates
The feature needs to be defined in all manifests in order to be enabled
in all crates.
2019-09-23 09:36:46 +03:00
Manos Pitsidianakis
ee82ae175a
imap: add support for imaps connections
Take port value and a `use_starttls` flag from the configuration file.
2019-09-21 21:29:33 +03:00
Manos Pitsidianakis
9563007069
Turn off debug tracing prints in stderr by default 2019-09-21 21:29:33 +03:00
Manos Pitsidianakis
6e75160b70
melib: turn unicode algos and backends into features 2019-09-21 21:29:33 +03:00
Manos Pitsidianakis
f066f35410
melib: add get_tags to support subaddressing 2019-09-20 21:35:45 +03:00
Manos Pitsidianakis
bee1502499
melib: make References public 2019-09-20 10:47:51 +03:00
Manos Pitsidianakis
32fe8a8b9b
melib: move email.rs back 2019-09-20 10:39:24 +03:00
Manos Pitsidianakis
7accae1774
melib: split address.rs from email.rs 2019-09-20 10:38:29 +03:00
Manos Pitsidianakis
b08001ca5d
melib: create address.rs from email.rs 2019-09-20 10:37:51 +03:00
Manos Pitsidianakis
93de60b6d1
maildir: allow Maildir stores as root_folder
Allow top level directories that are not valid maildir folders but
include maildir folders as root_folder of an account.
2019-09-20 10:26:08 +03:00
Manos Pitsidianakis
fb7b038ee1
ui: add set_seen shortcut in {Compact,Conversation}
Shortcut sets an entire thread as seen.
2019-09-20 10:26:08 +03:00
Manos Pitsidianakis
7dc3efaedd
imap: allow conn to be offline and retry on demand
Split the TlsStream of the live IMAP connection to an enum to allow both
offline and online states. The connection is restarted if offline when
requested.
2019-09-20 09:07:55 +03:00
Manos Pitsidianakis
b98ce8828c
melib: fix wrong validation in Maildir save()
Path of folder was compared to folder names and saving to eg
'INBOX/Sent' would not result into mail being saved to Folder { name:
'Sent', path: 'INBOX/Sent' }
2019-09-17 17:25:45 +03:00
Manos Pitsidianakis
79212621af
Bump version to 0.3.0 2019-09-16 16:44:04 +03:00
Manos Pitsidianakis
8795c2da4f
ui: small configuration fixes
- unused options were removed,
- renamed `index` conf option to `index_style`
2019-09-16 16:41:22 +03:00
Manos Pitsidianakis
080b8ae775
imap: add log entry on connection retry & failure 2019-09-15 23:44:42 +03:00
Manos Pitsidianakis
9e2bfa22b1
melib: add logging module 2019-09-15 23:38:32 +03:00
Manos Pitsidianakis
817c338a13
melib: fix metadata updates in Envelope updates 2019-09-15 23:38:31 +03:00
Manos Pitsidianakis
059d86de93
map: restart connection on failure in read_lines 2019-09-15 23:38:31 +03:00
Manos Pitsidianakis
bfc36f63de
imap: add byte cache for Envelopes in IMAP backend 2019-09-15 23:38:31 +03:00
Manos Pitsidianakis
f394fde143
add priority and info to jobs and workers
jobs now have a priority given to them, in order to parse some mailboxes
(eg INBOX, Sent) first.

worker threads now can set their names and status
2019-09-15 13:21:14 +03:00
Manos Pitsidianakis
81a55abc7c
Update crossbeam to 0.7.2 and remove chan 2019-09-15 13:21:14 +03:00
Manos Pitsidianakis
ecb3fd7f3d
Add dyn keyword to Trait objects
And fix some unused var warnings as well
2019-09-15 13:21:14 +03:00