Manos Pitsidianakis
47a69f8eb9
melib: add ThreadGroup
...
Instead of using Union/Find to gather mail that belongs in the same
e-mail thread together, add a new entity ThreadGroup that ThreadNodes
point to. ThreadGroup represents an actual Thread: A thread root
ThreadGroup::Group or a reply ThreadGroup::Node.
To make semantics more accurate:
- ThreadNode hash should be renamed to ThreadNodeHash
- ThreadGroupHash should be renamed to ThreadHash
- ThreadGroup::Group should be a struct named Thread instead
- move ThreadGroup::Node logic to ThreadNode akin to Union/Find
- rename ThreaddGroup::Group to Thread
2020-01-20 16:03:06 +02:00
Manos Pitsidianakis
1eb49efb22
melib/threads: use all References in thread building
...
WIP
2020-01-20 16:03:06 +02:00
Manos Pitsidianakis
56e3ea1548
melib/imap: refactor early error exit
2020-01-20 15:58:59 +02:00
Manos Pitsidianakis
7f8c638361
melib/imap: add mailbox creation ability
2020-01-20 15:58:59 +02:00
Manos Pitsidianakis
853fe14128
melib: fix two minor email parsing bugs
...
- windows-1250 encoding not being recognized
- spaces in Message-ID header messing up parsing '<' + msg-id + '>'
structure
2020-01-20 15:58:59 +02:00
Manos Pitsidianakis
6835968d9a
melib/datetime: convert date to utc before converting to unix epoch
2020-01-20 15:58:59 +02:00
Manos Pitsidianakis
a365a846b8
Replace StackVec with smallvec::SmallVec
...
SmallVec has a less buggy and better implementation.
2020-01-20 15:58:59 +02:00
Manos Pitsidianakis
ca7d72e732
melib: Replace String with Cow<'static, str>
2020-01-07 12:55:27 +02:00
Manos Pitsidianakis
c0ac643f05
melib: add datetime module
...
Datetime module adds POSIX time functions interface
2020-01-06 16:10:36 +02:00
Manos Pitsidianakis
6671fe926e
melib: don't treat missing end boundary as error
...
Don't treat missing end boundary as error in multipart attachments.
python3's nntplib seems to return MIME attachments with this property
2020-01-02 00:09:21 +02:00
Manos Pitsidianakis
8694278369
ui: add auto_choose_multipart_alternative
...
Choose text/html by default if text/plain is empty in
multipart/alternative attachments
This happens in some newsletters I've come upon
2020-01-02 00:08:21 +02:00
Manos Pitsidianakis
3d84f3b9ad
notmuch: remove needless clones
2020-01-02 00:05:36 +02:00
Manos Pitsidianakis
21526b5faf
melib: make Work use FnOnce closures
...
There was no need to use Fn() instead of FnOnce()
2019-12-20 00:53:43 +02:00
Manos Pitsidianakis
92826f982f
melib/attachments: add MultipartType::Related kind
2019-12-18 15:45:50 +02:00
Manos Pitsidianakis
9211913405
meli/backends: honor mailbox subscriptions in IMAP/JMAP
2019-12-18 15:44:44 +02:00
Manos Pitsidianakis
7eceef93e9
melib/backends: remove folder_operation
...
folder_operation functionalities will go to BackendFolder trait
2019-12-18 15:43:30 +02:00
Manos Pitsidianakis
9080e0fd96
melib: rename FolderConf rename
field to alias
2019-12-18 15:40:57 +02:00
Manos Pitsidianakis
c23cc45edd
melib: fix test import not found
2019-12-18 08:59:04 +02:00
Manos Pitsidianakis
2b6f6ab42c
melib: Add BackendFolder methods, move special usage logic to backend
...
- add count() method to return (unseen, total) counts
- add is_subscribed()
- add set_special_usage() and set_is_subscribed()
concerns #8
2019-12-18 08:58:49 +02:00
Manos Pitsidianakis
8f63572584
Small refactors to avoid implicit unwrap() panics
2019-12-15 19:47:42 +02:00
Manos Pitsidianakis
0201241786
melib/backends: MailBackend::refresh() returns Result
...
Handle cases were refresh() would fail properly. Fixes a crash reported in #13
2019-12-15 08:55:08 +02:00
Manos Pitsidianakis
65efb23f14
melib/MailBackend: add refresh() method
...
Initiate refresh manually.
2019-12-14 18:58:59 +02:00
Manos Pitsidianakis
d2b4057b7b
melib/MailBackend: add connect() method
2019-12-14 18:58:55 +02:00
Manos Pitsidianakis
2e38ea11e2
melib: make MailBackend::is_online() return Result<()>
...
Return Result<()> instead of bool to indicate connection status in order
to be able to show errors to user.
2019-12-14 18:57:52 +02:00
Manos Pitsidianakis
2ed9ffb145
melib/jmap: construct session resource url from user settings
2019-12-13 00:36:26 +02:00
Manos Pitsidianakis
14eb99f515
JMAP WIP #7
2019-12-13 00:04:59 +02:00
Manos Pitsidianakis
d44a453aed
jmap: add keyword->tag support
2019-12-13 00:04:59 +02:00
Manos Pitsidianakis
aa9a6a3128
melib: add SpecialUseMailbox::detect_usage method
2019-12-13 00:04:59 +02:00
Manos Pitsidianakis
30e9114d9c
jmap: fix warnings
2019-12-13 00:04:59 +02:00
Manos Pitsidianakis
275c9f421f
JMAP WIP #6
2019-12-13 00:04:58 +02:00
Manos Pitsidianakis
791033d2fc
melib/jmap: add byte operations
2019-12-13 00:04:58 +02:00
Manos Pitsidianakis
a41dc6c38a
JMAP WIP #5
2019-12-13 00:04:58 +02:00
Manos Pitsidianakis
1ee8ef7a05
JMAP WIP #4
2019-12-13 00:04:58 +02:00
Manos Pitsidianakis
a1efeed343
JMAP WIP #3
2019-12-13 00:04:58 +02:00
Manos Pitsidianakis
e8611cca2f
JMAP WIP #2
2019-12-13 00:04:58 +02:00
Manos Pitsidianakis
a43f6919cc
JMAP WIP
2019-12-13 00:04:58 +02:00
Manos Pitsidianakis
328b17a995
ui/CompactListing: use Segment Trees to calculate max page column width
...
Given a range of entries that occupy a page (eg [0, 50] for a page of 50
rows high) get the max entry width for this column by using maximum
range queries with segment trees.
2019-12-12 11:11:32 +02:00
Manos Pitsidianakis
d9b568cfb4
melib/envelope: decode other_headers values
2019-12-12 11:00:50 +02:00
Manos Pitsidianakis
7732b851e6
melib: fix minor header parsing errors
...
- set_subject checked if last byte was control character instead of last
character. Characters can be multi-byte, duh.
- email::parser::date didn't provide for Date values that had -0000
instead of +0000 (that's a chrono requirement/bug)
2019-12-12 00:44:47 +02:00
Manos Pitsidianakis
81c70b0136
melib: small test cosmetic fixes
2019-12-11 16:07:08 +02:00
Manos Pitsidianakis
e79d9aa1c2
melib/parser: parse quote-printable CRLF soft breaks
...
Check for CRLF soft breaks after checking for LF ones
2019-12-11 15:10:59 +02:00
Manos Pitsidianakis
9fae0f2fa3
melib/imap: prevent minor blocking cases
2019-12-11 01:36:04 +02:00
Manos Pitsidianakis
f05a4205f7
melib/ui: small fixes
...
- melib/imap: accept quoted strings with escaped quotes in
protocol_parser
- ui/accounts: return unavailabity correctly if folder's worker slot is
empty instead of judging only by its vacancy
- ui/MailView: set view as not dirty if envelope loading from backend
fails so that it stops requesting it in every subsequent redraw
2019-12-11 00:17:11 +02:00
Manos Pitsidianakis
6f76cd9acc
melib: add special_usage() method to BackendFolder
...
Eventually after loading potential usage values from configuration,
backends will be able to change the usage values themselves. IMAP and
JMAP have the ability to set Mailbox roles (IMAP needs LIST-SPECIAL
extension
2019-12-11 00:15:36 +02:00
Manos Pitsidianakis
bce97d71bb
testing/imap_conn: update imapconn shell use
2019-12-11 00:07:47 +02:00
Manos Pitsidianakis
504b658f68
melib/imap: add UidFetchResponse struct and parser
...
Add handwritten parser for UID FETCH responses and use it for all UID
FETCH calls.
2019-12-11 00:05:41 +02:00
Manos Pitsidianakis
569127fac5
melib/imap: detect untagged CAPABILITY responses
...
Gmail sends an untagged CAPABILITY response before accepting login, so
be smarter when logging in
2019-12-11 00:01:22 +02:00
Manos Pitsidianakis
8235af9237
melib/imap: quote mailbox names on SELECT/EXAMINE
2019-12-10 23:56:25 +02:00
Manos Pitsidianakis
a20e08eb43
imap: treat \NoSelect mailboxes as empty
...
\NoSelect are mailboxes that can't be selected, thus treat them as if
they are empty.
2019-12-10 23:54:19 +02:00
Manos Pitsidianakis
0eaf17871a
melib: add set_tags command in BackendOp
2019-12-08 11:25:54 +02:00
Manos Pitsidianakis
dab9b39f4d
melib/imap: detect tag (\* flag) support
2019-12-07 17:17:08 +02:00
Manos Pitsidianakis
46a807eee1
melib: remove control characters from subject
2019-12-07 01:36:52 +02:00
Manos Pitsidianakis
d048d8566d
ui: add format=flowed if text/plain att is the only one
2019-12-06 16:37:44 +02:00
Manos Pitsidianakis
9d8d3e09f4
melib: remove unused methods from BackendOp
2019-12-06 12:33:58 +02:00
Manos Pitsidianakis
a059e4ad4c
melib: add summary field to MeliError
2019-12-03 13:30:42 +02:00
Manos Pitsidianakis
7010ee7495
melib/mbox: send Finished in Mbox get
2019-12-03 13:30:42 +02:00
Manos Pitsidianakis
ef26b03bb6
Add some documentation
2019-12-01 17:13:36 +02:00
Manos Pitsidianakis
bca33370cc
Add tag settings in UI config module
2019-12-01 12:09:35 +02:00
Manos Pitsidianakis
258b6c8fe8
melib: add tags() method in MailBackend
...
Add tags() method that returns Option<Arc<RwLock<BTreeMap<u64, String>>>>.
The BTreeMap holds available tags in a mail backend and uses the tag's
hash as key.
The method returns an Option because not all backends may support
tagging.
2019-11-30 17:37:00 +02:00
Manos Pitsidianakis
6653357d54
melib/notmuch: fix compilation errors
2019-11-30 01:12:14 +02:00
Manos Pitsidianakis
bb486ca9d8
melib: Remove quotes from addresses in email/parser.rs
2019-11-28 22:15:32 +02:00
Manos Pitsidianakis
3dfb2f4f2c
melib: fix out-of-bounds parser bug
2019-11-28 18:52:12 +02:00
Manos Pitsidianakis
58209d6f6b
Replace some panics with errors
2019-11-27 17:42:11 +02:00
Manos Pitsidianakis
ba52c59859
bin: add backend specific validation functions for --test-config flag
2019-11-27 17:42:11 +02:00
Manos Pitsidianakis
4677f9c6bb
melib/imap: initialise uid_store folders in folders()
2019-11-27 17:42:11 +02:00
Manos Pitsidianakis
afff63c781
ui: load vcards to addressbook with vcard_folder account setting
2019-11-27 17:42:11 +02:00
Manos Pitsidianakis
689327651f
melib/vcard: add parser for vcard files
2019-11-27 01:46:23 +02:00
Manos Pitsidianakis
3dc0cb1963
imap: send 'finished' signal when watch thread dies
2019-11-25 12:04:27 +02:00
Manos Pitsidianakis
af365fa8d4
Set 600 perm mode to all created files
...
When creating a data file, set permissions to read/write for the user.
2019-11-24 17:00:55 +02:00
Manos Pitsidianakis
eecec551c1
Display watch thread errors to user
...
Show a proper notification with the error message to the user instead of
just logging it on debug-tracing.
2019-11-23 19:34:16 +02:00
Manos Pitsidianakis
b8e4a35963
melib/imap: add default capabilities to SUPPORTED_CAPABILITIES
2019-11-23 19:34:16 +02:00
Manos Pitsidianakis
41a678c6ef
melib: make MailBackend::folders return Result
...
Change folders() signature:
- fn folders(&self) -> FnvHashMap<FolderHash, Folder>;
+ fn folders(&self) -> Result<FnvHashMap<FolderHash, Folder>>;
Imap may not be online, therefore we need the ability to return an
error.
2019-11-23 17:47:24 +02:00
Manos Pitsidianakis
424b244bb7
fixup some TODO and FIXMEs
2019-11-22 13:59:00 +02:00
Manos Pitsidianakis
05d9ca6e0d
small fixes
2019-11-21 15:44:18 +02:00
Manos Pitsidianakis
ce646abc7a
ui: add send confirmation dialog in compose tab
...
Confirm before sending mail
2019-11-19 23:28:08 +02:00
Manos Pitsidianakis
51628ac9d2
ui: move list_management mod to melib
...
list_management module includes some small functions to handle mailing
list metadata (List-* headers)
2019-11-18 20:37:48 +02:00
Manos Pitsidianakis
449a24d075
ui: ListActions changes
...
- Parse List-Post value like List-Unsubscribe: comma separated angle bracket limited list of <mailto:> or <url> values
- Check if List-Archive value is angle bracket delimited
2019-11-18 14:55:48 +02:00
Manos Pitsidianakis
fc2d9a684d
melib/imap: set has_attachments based on BODYSTRUCTURE
...
fetch BODYSTRUCTURE along with ENVELOPE from server and set
has_attachments based on the MIME structure of the envelope.
Notes: BODYSTRUCTURE returns the MIME structure of the envelope without
the data, so if it includes a multipart/mixed it *should* have
attachments.
ENVELOPE returns basic headers of the message like Sender, Subject, Date
etc.
2019-11-18 13:00:43 +02:00
Manos Pitsidianakis
b2cd4f4b7a
melib/imap: put imap folders in RwLock instead of Mutex
...
This should prevent lockups if the IMAP conn thread gets blocked
2019-11-18 12:59:04 +02:00
Manos Pitsidianakis
953c3aa9d0
melib: Add parameters field in ContentType::Text
...
Intending to add the option to set the parameter format=flowed in the
next commits
2019-11-17 13:24:19 +02:00
Manos Pitsidianakis
f8a1a6caa5
melib: replace find_thread_group with find_root_hash
...
thread_group property of ThreadNode doesn't yet reflect the actual root
ThreadNode (the root of the thread, that is). So find the root manually
instead.
2019-11-17 12:05:52 +02:00
Manos Pitsidianakis
dfa83e486c
melib: add into_iter() for &StackVec<T>
2019-11-16 20:21:47 +02:00
Manos Pitsidianakis
04e1137b36
melib: add "On ${date} ${author} wrote" heading in replies
2019-11-16 19:59:47 +02:00
Manos Pitsidianakis
321be8555f
Cleanup startup error exit paths
...
Make startup methods return Results so that the main binary can exit
cleanly instead of using std::process::exit from arbitrary positions,
which exits the process immediately and doesn't run destructors.
2019-11-16 00:33:22 +02:00
Manos Pitsidianakis
77936e0cd5
melib: add notmuch backend
...
Missing:
- Watching for updates functionality
- Using tags
- Search
2019-11-15 22:56:45 +02:00
Manos Pitsidianakis
7463248da8
melib: change BackendOp::set_flag() signature
2019-11-15 21:32:55 +02:00
Manos Pitsidianakis
ede512200b
conf: move FolderConf to melib
...
This will be needed to add notmuch-specific configuration settings in
the FolderConf struct in the next commit
2019-11-15 19:52:39 +02:00
Manos Pitsidianakis
8f36678abf
melib: make Backendfolder::children return slice
2019-11-14 17:55:24 +02:00
Manos Pitsidianakis
56cda63c83
Fix some warnings
2019-11-14 17:55:24 +02:00
Manos Pitsidianakis
f83db67a38
melib/imap: don't stop IDLE session
...
Previous behaviour: connection with IDLE was stopped every 5 minutes to
poll the other threads. As a result messages received within that time
window when there was no IDLING were never received.
Current behaviour: polling is done in the main connection.
2019-11-12 22:18:00 +02:00
Manos Pitsidianakis
dce1c39b48
ui: add mailcap support
2019-11-11 22:20:16 +02:00
Manos Pitsidianakis
5761f854e2
melib: Add FolderPermissions
...
permissions() method on BackendFolder and SetPermissions in
FolderOperation enum.
2019-11-11 00:47:23 +02:00
Manos Pitsidianakis
c1902f96b5
imap: add UIDVALIDITY check
...
On UIDVALIDITY change, discard cache and force rescan.
2019-11-10 23:02:23 +02:00
Manos Pitsidianakis
06d99c7f92
ui: Add save attachment command
...
use as `save-attachment ATTACHMENT_INDEX PATH`
2019-11-10 13:33:22 +02:00
Manos Pitsidianakis
580f0be8a4
imap: fix cases that would block connection
...
Fix blocking if TLS negotiation can't start
Fix blocking if IDLE connection dies.
2019-11-10 13:32:31 +02:00
Manos Pitsidianakis
a907b9c21d
Fix melib test errors
2019-11-09 18:10:22 +02:00
Manos Pitsidianakis
8b781cbbe0
melib: StackVec bounds fix
2019-11-09 17:46:07 +02:00
Manos Pitsidianakis
e600b0252f
text_processing: add line_break method
...
In preparation for format=flowed support, add a line_break method in the
text_processing Trait, now renamed from Graphemes to TextProcessing.
2019-11-09 17:44:22 +02:00
Manos Pitsidianakis
098982015b
ui/conversations: show all participating addresses in entry
...
Show all unique From: values of addresses in thread entries in
Conversations
2019-11-09 13:58:16 +02:00
Manos Pitsidianakis
229e879c26
ui/imap: select user given folder before search
...
IMAP search() didn't select a folder before searching, thus searching
the mailbox the previous user of self.connection had selected.
2019-11-08 17:50:55 +02:00
Manos Pitsidianakis
99697a8fd5
ui: Add search for IMAP
...
Add basic search utilising the default SEARCH capability.
2019-11-08 15:13:42 +02:00
Manos Pitsidianakis
7936aef476
Fix infinite watch threads spawning
...
Watch threads were launched every time the account's online status was
checked, added a check to only do it when it was previously offline.
2019-11-08 15:13:42 +02:00
Manos Pitsidianakis
749d453f00
ui: add query parsers
2019-11-08 15:13:42 +02:00
Manos Pitsidianakis
61fa6d3d4b
ui: show supported IMAP CAPABILITIES list in Status
...
In status page for IMAP accounts, show a list of CAPABILITIES and
whether meli supports them
2019-11-08 15:13:42 +02:00
Manos Pitsidianakis
f56b89dde3
melib: add as_any() method to MailBackend trait
...
Cast the trait object into an &Any object. Then we can downcast it to
its actual type with downcast_ref().
2019-11-08 15:13:42 +02:00
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
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
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
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
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
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
Manos Pitsidianakis
d1d11356db
imap: get() ENVELOPE instead of RFC822.HEADER; it's faster
2019-09-15 13:21:14 +03:00
Manos Pitsidianakis
335a1011de
imap: add watch
2019-09-15 13:21:14 +03:00
Manos Pitsidianakis
c3e3c98fb0
melib: filter subscribed folders in MailBackend::new()
2019-09-15 13:21:14 +03:00
Manos Pitsidianakis
64dc44f18f
imap: replace unwraps with checks
2019-09-15 13:21:14 +03:00
Manos Pitsidianakis
525bd16493
imap: add folder operations in backend
2019-09-15 13:21:14 +03:00
Manos Pitsidianakis
c9f7b41e47
imap: continuous payload delivery in async workers
2019-09-15 13:21:13 +03:00
Manos Pitsidianakis
c561814cd6
imap: add danger_accept_invalid_certs
option
2019-09-15 13:21:13 +03:00
Manos Pitsidianakis
c2c5f2db69
melib: add Failure to RefreshEventKind
2019-09-15 13:21:13 +03:00
Manos Pitsidianakis
0812242f60
Add IMAP backend
...
TODOs: new message events (untagged responses)
2019-09-15 13:21:13 +03:00
Manos Pitsidianakis
3f7d962abd
melib: remove ThreadTree, use ThreadNodes for root_set
...
Remove ThreadTree index in Threads {} struct. Keep a Vec<ThreadHash> for
root_set state of mailbox instead of rebuilding ThreadTrees every
time.
2019-09-08 11:49:23 +03:00
Manos Pitsidianakis
dc2184a9de
melib: add Folder operations in mail backends
...
Add following operations in mail backend:
- Create,
- Delete,
- Subscribe,
- Unsubscribe,
- Rename
2019-09-08 11:15:57 +03:00
Manos Pitsidianakis
1328f994f3
Make config objects Serializable with serde
2019-08-25 21:44:19 +03:00
Manos Pitsidianakis
b474b44b10
Add special use semantics for mailboxes
2019-08-25 10:48:01 +03:00
Manos Pitsidianakis
76909a1959
add folder subscriptions
2019-08-25 10:48:01 +03:00
Manos Pitsidianakis
84a042411d
melib: remove unnecessary unsafe impls
2019-08-15 11:30:25 +03:00
Manos Pitsidianakis
89b1e381dc
melib: recreate removed email if it comes back
...
If an email is removed by an outside actor, it is marked as removed.
Renaming files first send a Remove event and then a Rename one. So if a
removed email turns out to have been renamed by someone else, issue a
Create event to get it back.
2019-08-04 00:47:03 +03:00
Manos Pitsidianakis
22f11445e2
Print error and exit if Maildir path config is wrong
2019-08-03 23:55:32 +03:00
Manos Pitsidianakis
bc7da4610e
Send MailboxUpdate events when threads are updated
...
Depending on the insertion order of folders which is non-deterministic
because it relies on the kernel's scheduling of parsing threads, the
listing the user sees might not be up-to-date because later thread
updates are never broadcast. This results in inconsistencies between
threads and mail listings when a thread's root envelope was part of a
not broadcast update leading to `key not found` panics in a listing's
hashmaps.
2019-08-02 15:17:23 +03:00
Matthias Beyer
79becdcc42
Fix: This comment is not a proper rustdoc comment and probably should not be one anyways
...
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-08-02 01:00:54 +03:00
Matthias Beyer
fb36dc58c8
Remove unused variable
...
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2019-08-02 01:00:53 +03:00
Manos Pitsidianakis
2492bc91b2
melib: add attachment_from_file()
2019-08-02 01:00:52 +03:00
Manos Pitsidianakis
ac04195007
maildir: mark removed paths
...
Remove events almost always come immediately before Rename events,
showing that the previous name of a file is removed and then renamed.
Keep proper tabs by marking removed paths instead of actually removing them.
2019-08-02 01:00:37 +03:00
Manos Pitsidianakis
c87ed5012d
melib: add attachment support in email/compose.rs
2019-08-02 00:24:35 +03:00
Manos Pitsidianakis
391e5b5d13
melib: tighten bounds check in email/parser.rs
2019-08-02 00:22:27 +03:00
Manos Pitsidianakis
d73069bc80
melib: add Other and OctetStream content types
2019-08-02 00:22:20 +03:00
Manos Pitsidianakis
c17bb24f0d
melib: refactor attachments and attachment_types interfaces
2019-07-30 21:33:15 +03:00
Manos Pitsidianakis
7592e66d6a
maildir: drop mutexes before calling add_path_to_index
2019-07-30 19:24:35 +03:00
Manos Pitsidianakis
572944e917
melib: add version from Cargo manifest to User-Agent field
2019-07-30 19:23:55 +03:00
Manos Pitsidianakis
38da6c83b9
melib: add read-only support for mbox
2019-07-28 20:20:14 +03:00
Manos Pitsidianakis
8a0e702127
melib,ui: add MailboxEntry enum
...
Use an enum to describe a mailbox's state in ui::conf::Account instead
of Result.
2019-07-28 20:15:41 +03:00
Manos Pitsidianakis
d84ceca88e
create text_processing crate
2019-07-27 01:41:04 +03:00
Manos Pitsidianakis
a00e3fcbde
melib: fix bounds checking for StackVec
2019-07-22 14:57:54 +03:00
Manos Pitsidianakis
a62f1d6c01
add read-only option in accounts
2019-07-18 20:16:51 +03:00
Manos Pitsidianakis
14f1527e61
melib: remove BackendOpGenerator
2019-07-18 20:14:14 +03:00
Manos Pitsidianakis
cfb6fd3fde
melib: return raw body instead of headers in MaildirOp::fetch_body
2019-07-18 18:47:27 +03:00
Manos Pitsidianakis
85a70d656b
melib: restore stringified variable print
2019-07-15 00:12:08 +03:00
Manos Pitsidianakis
8ab79d5829
fix missing grapheme in mime encoded string
2019-07-11 17:52:51 +03:00
Manos Pitsidianakis
93f3d6e230
remove std::dbg uses
2019-07-09 13:05:11 +03:00
Manos Pitsidianakis
70e5949590
ui: add autocomplete for commands in execute bar
2019-07-06 20:44:51 +03:00
Manos Pitsidianakis
a655a85b5f
ui: fix replies not being synced and inserted properly on RefreshEvents
2019-07-06 12:46:45 +03:00
Manos Pitsidianakis
6906142278
melib: don't exclude whitespaces in mime encoded words
2019-07-06 00:19:25 +03:00
Manos Pitsidianakis
f33594fba8
melib: reply to In-Reply-To address if available
2019-06-25 10:37:19 +03:00
Manos Pitsidianakis
f4f3b87f84
ui: add selections to CompactListing
...
Select multiple entries by pressing 'v'. Set read/unread and delete
actions are then performed on the selected entries.
2019-06-25 10:37:18 +03:00
Manos Pitsidianakis
8c97336307
ui: add set as read/unread, delete actions
...
Implemented only in compact listing for now.
2019-06-23 11:42:48 +03:00
Manos Pitsidianakis
2d7f9ca46f
melib: rename files after getting lock in maildir
2019-06-23 11:39:19 +03:00
Manos Pitsidianakis
c34a55dcac
melib: Correctly use StackVec capacity, add test
2019-06-21 10:55:49 +03:00
Manos Pitsidianakis
04fc510ea8
meli: insert new standalone nodes in insert_reply
2019-06-19 19:40:15 +03:00
Manos Pitsidianakis
ba1d0c42e0
melib: add struct and parser for mailto: links
2019-06-18 21:59:50 +03:00
Manos Pitsidianakis
43084eda01
melib: implement FromIterator, IntoIterator and Iterator for StackVec
2019-06-18 21:39:37 +03:00
Manos Pitsidianakis
ee07aa8686
melib: add other_headers field in Envelope
...
Store headers with non-hardcoded names in a hash map.
2019-06-18 21:38:30 +03:00
Manos Pitsidianakis
24831b3c13
Fix warnings, lints, and 2018 errors
2019-06-18 21:14:14 +03:00
Manos Pitsidianakis
5a9ee50bbc
don't add newlines in encoded words
2019-06-10 19:40:51 +03:00
Manos Pitsidianakis
9d7d7300c0
wcwidth: add emoji table
2019-06-10 19:40:51 +03:00
Manos Pitsidianakis
f0bd999f8c
parser: fix empty header value when header is last or when prefixed with
...
'\n'
when an empty header is last, the rest of the body keeps getting parsed
as headers. when header starts with '\n' because the value is long, the
value gets parsed as a name and the header parser fails.
closes #100
closes #101
closes #122
2019-06-10 19:40:51 +03:00
Manos Pitsidianakis
8a07087393
add testing crate with emailparse bin
2019-06-10 19:40:51 +03:00
Manos Pitsidianakis
d772d10d66
merge FirstName/LastName fields in Contacts
...
First names and Last names are an anglocentric concept and do not apply
cleanly to the rest of the world's cultures.
2019-06-10 19:40:51 +03:00
Manos Pitsidianakis
d0039740b0
melib: add has_attachments property to Envelope
...
Check subattachments in has_attachments check.
Instead of getting a flattened attachment view of multipart/mixed (eg
[multipart/mixed, text/plain, text/plain]) get only the subattachments
(eg [text/plain, text/plain]). Don't count text-only multipart/mixed as attachments
2019-06-10 19:40:50 +03:00
Manos Pitsidianakis
03317d74ca
melib: correct out of bounds access
2019-06-10 19:40:50 +03:00
Manos Pitsidianakis
c6674a294d
melib: unwrap mailbox module
2019-06-10 19:40:50 +03:00
Manos Pitsidianakis
6f7b3f20de
move StackVec to melib
...
closes #120
2019-06-10 19:40:50 +03:00
Manos Pitsidianakis
42654410e3
ui: move Collection to Account
...
Each account had one mailbox per folder, which had one associated
collection. Now each Account has one Collection for all folders and each
Mailbox object holds only the hashes of each message.
Collection also gets Threads for each folder in order to mix messages
(ie from/to Sent folder).
Insert Sent emails in chronological order
if inserted unsorted, mails a, b with a happened-before b, might never
get added.
Fix multiple insertions in ThreadTree upon insert_reply
insert_reply was creating multiple copies in threading
2019-06-10 19:40:50 +03:00
Manos Pitsidianakis
eff1c1641c
melib: track modified paths in maildir
...
Keep modified path status in maildir to prevent not-found panics
2019-06-10 19:40:50 +03:00
Manos Pitsidianakis
d3208f6a3d
End of line in grapheme_clusters?
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis
f51ea93351
move grapheme stuff to melib
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis
6504a141f3
melib: dont allocate new string
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis
3c575c823d
ui: toggle thread snooze flag
...
snooze field translated to whether the user wants to be notified of new
email in the thread or not. This is toggled with an (temp) EX cmd: `toggle_thread_snooze`
closes #112
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis
22d868f499
save Account to disk
...
closes #114
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis
4582bcd5ae
fix warnings and lints
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis
3bc22abdff
ui: draw thread arrows correctly in other sortings
...
thread arrows in ThreadListing weren't drawn correctly when subsorting
was changed (eg date -> subject)
has_sibling was delegated to ThreadsIterator.
2019-06-10 19:40:49 +03:00
Manos Pitsidianakis
1e7e99f499
melib: return $val in debug!
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis
a0b1a079b8
ui: add "application/pgp-signature" content type
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis
b943941e60
melib: format maildir/backend.rs
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis
13fba8d35b
melib: drop MutexGuard before calling add_path_to_index
...
In some cases add_path_to_index was called with the mutex already held,
and a deadlock occurred.
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis
dad7c09158
melib: detect plain text in multipart/alternative
2019-06-10 19:40:48 +03:00
Manos Pitsidianakis
355fb63b16
melib: link threads with empty intermediates
...
A thread's chain link would get broken when empty intermediate
ThreadNodes exist. The pruning of the empty node did not properly chain
the empty node's parent with the empty node's children.
Old behaviour:
- [A]
/* [B] is missing */
- [C]
/* [D] is missing */
- [E]
New behaviour (`x` represents deleted links)
- [A]
|
|xxx> [empty node of B]
| x
| x
| \/
|_______>[C]
|
|xxx> [empty node of D]
| x
| x
| \/
|_______>[E]
2019-06-10 19:40:47 +03:00
Manos Pitsidianakis
0e3b8f54d9
melib: fix address_spec parse without displayname
...
addresses like "<user@domain.tld>" were parsed as "ser@domain.tld". Fix
this by checking for displayname length.
2019-06-10 19:40:47 +03:00
Manos Pitsidianakis
9afeb648f7
melib: keep old_hash in Collection temporarily
...
When renaming envelopes, keep old_hash in collection until we receive an
EnvelopeRename event in ui
2019-06-10 19:40:47 +03:00
Manos Pitsidianakis
325bb5bff2
add literal print to debug!
2019-06-10 19:40:47 +03:00
Manos Pitsidianakis
59135be983
melib: fix typo and unused val
2019-06-10 19:40:46 +03:00
Manos Pitsidianakis
1f2c0b4fa7
melib: multipart/mixed with html messages not displayed as html
2019-06-10 19:40:46 +03:00
Manos Pitsidianakis
8ef470fb15
add name in single var print in debug!
2019-06-10 19:40:46 +03:00
Manos Pitsidianakis
fb406667ab
add debug! macro to replace eprintlns
2019-06-10 19:40:46 +03:00
Manos Pitsidianakis
a03bd80199
ui: watch root_folder instead of every folder
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis
3790f68e3f
ui: file_name() does not return full file_name
...
move_to_cur doesn't retain the full envelope name when moving
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis
1e44089d84
ui: Refer to child/parents with FolderHash in BackendFolder
...
- use a stack to build folder order list in conf/accounts.rs
- update side menu print
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis
596194fa47
melib: fix debug prints not debug-build only
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis
499113acd2
melib: encode header values
...
closes #102
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis
f348cc9a55
melib: add fqdn to MID
2019-06-10 19:40:45 +03:00
Manos Pitsidianakis
87adc6dd19
melib/ui: refer to Folders by FolderHash
2019-06-10 19:40:44 +03:00
Manos Pitsidianakis
04eb8d926f
ui: remove debug_log feature, add log positions
2019-06-10 19:40:44 +03:00
Manos Pitsidianakis
a29e39f5ef
ui: fix editing messages duplicates headers
...
closes #94
2019-06-10 19:40:43 +03:00
Manos Pitsidianakis
d9a3b03e2b
melib: create new threadnode if it's missing inside rebuild_thread
2019-06-10 19:40:43 +03:00
Manos Pitsidianakis
4bf1f6b9c9
ui: make Composer account specific
2019-06-10 19:40:43 +03:00
Manos Pitsidianakis
cfb7dcec64
ui: make html filter optional in config
...
closes #92
2019-06-10 19:40:43 +03:00
Manos Pitsidianakis
067a8e5c81
Run clippy for 2018 edition
2019-06-10 19:40:43 +03:00
Manos Pitsidianakis
ee4462881e
run cargo fmt
2019-06-10 19:40:42 +03:00
Manos Pitsidianakis
1c7aa0ec9c
update to 2018 edition
2019-06-10 19:40:42 +03:00
Manos Pitsidianakis
ac0e2cbe44
melib: fix invalid folder hierarchy in Backend::folders()
2019-06-10 19:40:42 +03:00
Manos Pitsidianakis
43f89ef680
melib: fix crash in node_build(
2019-06-10 19:40:42 +03:00
Manos Pitsidianakis
ba6c259820
melib: fix duplication of thread nodes in update envelope event
2019-06-10 19:40:42 +03:00
Manos Pitsidianakis
11b2abd1d1
ui: fix seen property of threads on open, add env rename events
2019-06-10 19:40:41 +03:00
Manos Pitsidianakis
5d9af8e32b
ui: improve contact additions from mail view
2019-06-10 19:40:41 +03:00
Manos Pitsidianakis
551db51b00
ui: avoid full renders when worker threads return StartupChecks
...
Now listings only re-render when their folder gets a StartupCheck event,
account menu always re-renders to update new mail counts
closes #76
2019-06-10 19:40:41 +03:00
Manos Pitsidianakis
d19bda8977
melib: properly save drafts in maildir backend
2019-06-10 19:40:41 +03:00
Manos Pitsidianakis
4629e6a22f
meli: add debug_logs feature
...
Conditional print of debug logs in stderr. Previously they were always
printed
2019-06-10 19:40:40 +03:00
Manos Pitsidianakis
b741899fcf
ui: Add some docs and mini cleanups
2019-06-10 19:40:40 +03:00
Manos Pitsidianakis
9b4b6051f1
ui: use any email as composing template with edit command
...
concerns #38
2019-06-10 19:40:40 +03:00
Manos Pitsidianakis
bf038428c2
Run rustfmt
2019-06-10 19:40:39 +03:00
Manos Pitsidianakis
b1d25e6d8d
add autocomplete suggestions in field
2019-06-10 19:40:39 +03:00
Manos Pitsidianakis
5e306130fb
Fix clippy warnings
2019-06-10 19:40:39 +03:00
Manos Pitsidianakis
f748f1e692
edit headers with a form in composer
2019-06-10 19:40:38 +03:00
Manos Pitsidianakis
e285d1006b
Open Contacts list from accounts tab
2019-06-10 19:40:38 +03:00
Manos Pitsidianakis
00abea5bff
Make Entity Send
2019-06-10 19:40:38 +03:00
Manos Pitsidianakis
c135650018
Add Contact edit
...
concerns #11
2019-06-10 19:40:37 +03:00
Manos Pitsidianakis
bbaf87e345
Add type synonyms for Uuids
...
closes 58
2019-06-10 19:40:37 +03:00
Manos Pitsidianakis
62168e9183
Add contact view page, edit headers in compose, index style in conf
2019-06-10 19:40:37 +03:00
Manos Pitsidianakis
1883bb46dd
Fix unused
cargo warnings
2019-06-10 19:40:37 +03:00
Manos Pitsidianakis
30b1808bdb
ui: save draft to draft_folder
...
tracking-issue: #38
2019-06-10 19:40:37 +03:00
Manos Pitsidianakis
7ff22229a9
store headers in same order in drafts
2019-06-10 19:40:37 +03:00
Manos Pitsidianakis
04411f1003
rename 'mod.rs' files
...
closes #53
2019-06-10 19:40:37 +03:00
Manos Pitsidianakis
92bb3bf8d3
ui: add contacts and account panel
2019-06-10 19:40:36 +03:00
Manos Pitsidianakis
07a51de0b6
Fix unused warnings
2019-06-10 19:40:36 +03:00
Manos Pitsidianakis
4be5b1a868
ui: fix mailbox length count
2019-06-10 19:40:36 +03:00
Manos Pitsidianakis
1b3fe2a391
melib: maildir set extension properly
2019-06-10 19:40:36 +03:00
Manos Pitsidianakis
5a28320004
WIP
2019-06-10 19:40:36 +03:00
Manos Pitsidianakis
9b58908f6f
melib: add per-folder hash indexes in maildir backend
2019-06-10 19:40:36 +03:00
Manos Pitsidianakis
2f3c168aeb
melib: add clear debug prints in email structs
2019-06-10 19:40:36 +03:00
Manos Pitsidianakis
fd1378781d
melib: insert envelope in threads after inserting it in collection
2019-06-10 19:40:35 +03:00
Manos Pitsidianakis
afe34d5916
melib: hash path instead of file contents in maildir backend
2019-06-10 19:40:35 +03:00
Manos Pitsidianakis
1950228fda
melib: remove body field from Envelope
2019-06-10 19:40:35 +03:00
Manos Pitsidianakis
f6533d51c7
melib: add async threading
...
closes #43
2019-06-10 19:40:35 +03:00
Manos Pitsidianakis
0add765030
melib: ensure envelope has MessageID
2019-06-10 19:40:35 +03:00
Manos Pitsidianakis
eda76c744e
melib: add async blocking join
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
47481e72da
melib: Prune empty containers while threading
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
b2e91a83bd
Fix encoded-word parsing bug
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
fae1cdd33e
melib: Re-implement JWZ threading algorithm
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
4993db745a
melib: insert sent_folder content to other mailboxes
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
8c5879032e
melib/ui: print threads in correct order
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
630330f632
melib: add ThreadTree
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
2fcd014bfe
melib: Fix incorrect thread child linking
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
e3457c40d6
melib: fix setting incorrect From:
values
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
823889b773
melib: Fix incorrect thread len count
2019-06-10 19:40:34 +03:00
Manos Pitsidianakis
4f715af248
melib: cache threads
...
closes #28
2019-06-10 19:40:33 +03:00
Manos Pitsidianakis
1f49dfae3b
melib: add hash_set in threads to keep track of envelopes
...
closes #40
2019-06-10 19:40:33 +03:00
Manos Pitsidianakis
5135c5ce3f
ui: insert new envelopes in threads
2019-06-10 19:40:33 +03:00
Manos Pitsidianakis
bcef22b3f3
ui: add Listing component with 3 modes: compact plain and threaded
2019-06-10 19:40:33 +03:00
Manos Pitsidianakis
6003bdd28c
WIP
2019-06-10 19:40:33 +03:00
Manos Pitsidianakis
3e9d137310
melib: rework mail events
...
closes #39
2019-06-10 19:40:33 +03:00
Manos Pitsidianakis
c88ee18dda
melib: add quoted body in reply draft
2019-06-10 19:40:33 +03:00
Manos Pitsidianakis
8d3a2d8236
ui: refactor compose actions
2019-06-10 19:40:32 +03:00
Manos Pitsidianakis
b94687cdb0
ui: add reply-context in compose
...
tracking-issue: #24
2019-06-10 19:40:32 +03:00
Manos Pitsidianakis
58679db790
melib: Add folder path prefix in cache file names
...
Closes #29
2019-06-10 19:40:32 +03:00
Manos Pitsidianakis
a20e7ac5c2
ui: select From
identities in compose tab
...
Tracking issue #24
2019-06-10 19:40:32 +03:00
Manos Pitsidianakis
deadd3c3fb
ui: Use Draft in compose tab
...
tracking issue: #24
2019-06-10 19:40:32 +03:00
Manos Pitsidianakis
edf0464011
melib: Add Draft entity
2019-06-10 19:40:31 +03:00
Manos Pitsidianakis
6f994feb13
Whitespace fixes
2019-06-10 19:40:31 +03:00
Manos Pitsidianakis
a6d557d694
Don't insert newlines between multipart attachments
...
Closes #34
2019-06-10 19:40:31 +03:00
Manos Pitsidianakis
c5992b707d
Add box drawing in threadview with fluid layout
2019-06-10 19:40:31 +03:00
Manos Pitsidianakis
2b6d1e0dbf
Run clippy lints
2019-06-10 19:40:31 +03:00
Manos Pitsidianakis
111f915ced
folder renaming configuration
...
concerns #27
2019-06-10 19:40:30 +03:00
Manos Pitsidianakis
84bf2d43be
Move accounts to ui
2019-06-10 19:40:30 +03:00
Manos Pitsidianakis
681ac4b849
move config stuff to ui
2019-06-10 19:40:30 +03:00
Manos Pitsidianakis
9d5b2a4628
move config stuff to ui
2019-06-10 19:40:30 +03:00
Manos Pitsidianakis
47dd2ed93e
Fix potential as_ptr() substraction bug
2019-06-10 19:40:30 +03:00
Manos Pitsidianakis
a24c366670
Parse date as phrase
2019-06-10 19:40:30 +03:00
Manos Pitsidianakis
5e7d73e6dc
Add an EnvelopeWrapper in compose
2019-06-10 19:40:30 +03:00
Manos Pitsidianakis
d146c81d48
Add message/rfc822, multipart/digest multipart/mixed views
...
closes #22
2019-06-10 19:40:30 +03:00
Manos Pitsidianakis
41d8793412
Rewrite multipart attachment parser
2019-06-10 19:40:29 +03:00
Manos Pitsidianakis
ae209e2545
Fix account menu reload bug
2019-06-10 19:40:29 +03:00
Manos Pitsidianakis
c8611926fa
Refactor attachment content types
2019-06-10 19:40:29 +03:00
Manos Pitsidianakis
710920c67b
Detect new mail events and pass them as notifications to State
...
concerns #26
2019-06-10 19:40:29 +03:00
Manos Pitsidianakis
b2c7430907
Add compact view listing, and compose tab pager
...
concerns #3
2019-06-10 19:40:29 +03:00
Manos Pitsidianakis
f033463db9
startupcheck signal seems to be causing redraws
...
closes #33
2019-06-10 19:40:29 +03:00
Manos Pitsidianakis
99fab60990
Fix phrase parser again
2019-06-10 19:40:29 +03:00
Manos Pitsidianakis
5f52caf931
Fix phrase parsing with custom parser
...
closes #30
2019-06-10 19:40:29 +03:00
Manos Pitsidianakis
036d699ce0
Fix empty input slice bug in encoded_word ( Fix #30 )
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
daa28ae188
Sorting in threaded view
...
Concerns #7
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
591946a842
Fix qp header parsing
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
5d0b7fa903
Add Envelope parsing caching
...
Concerns #28
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
5889494e9e
Move backend logic to backend and keep Envelope abstract
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
e316640f68
TODO comment removal
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
addd27f209
Put root folders on top in account menu
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
d8137738b5
Add more charsets and parsing stuff
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
1b44aae5ce
Add reload when receiving refresh event!!
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
b98a04f35b
Make backend folders completely agnostic (remove maildir logic from
...
conf)
2019-06-10 19:40:28 +03:00
Manos Pitsidianakis
8462d1aceb
Add HtmlView, bounds checking in pager scrolling and better attachment view
2019-06-10 19:40:27 +03:00
Manos Pitsidianakis
befe00dea6
Add html view
2019-06-10 19:40:27 +03:00
Manos Pitsidianakis
14d65838b7
Fix proper viewing for multipart alternatives, html view and quoted printable soft breaks
2019-06-10 19:40:27 +03:00
Manos Pitsidianakis
a8fed3a042
Add Charset type and Charset based decoding
2019-06-10 19:40:27 +03:00
Manos Pitsidianakis
c30f77a312
Run clippy and rustfmt
2019-06-10 19:40:27 +03:00
Manos Pitsidianakis
43ad31d2ab
Add sort/subsort functions, not working yet as intended
2019-06-10 19:40:27 +03:00
Manos Pitsidianakis
8a7dfcd4ee
Add some documentation
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
3f35b69ff1
Poll all parse workers on startup
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
f2a646158d
Set flags in backends and mark as read when read in maillisting
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
b21d30c2ef
Async loading of mailboxes on startup
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
4e5721563e
Generate missing message_id from byte hash
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
375b256a4e
Add raw mode view in email
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
63ce729205
Optimize some parser stuff
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
e91f22cb4f
Remove some string conversions in parsing
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
d5c0542f61
Update benches
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
6ebab37a3d
Add some error checking in parsing
2019-06-10 19:40:26 +03:00
Manos Pitsidianakis
2f91d29326
rustfmt everything
2019-06-10 19:40:25 +03:00
Manos Pitsidianakis
ffbd70e40b
Add address_list parser
2019-06-10 19:40:25 +03:00
Manos Pitsidianakis
ea9bdd2074
Add address_list parser
2019-06-10 19:40:25 +03:00
Manos Pitsidianakis
6049449733
Add attachment view for application/* mime
...
concerns #2
left:
multipart text and pgp.
2019-06-10 19:40:25 +03:00
Manos Pitsidianakis
b7729243ad
Fix compiler warnings
2019-06-10 19:40:25 +03:00
Manos Pitsidianakis
7ed707a309
Print attachments of interest in the text body
...
Concerns #2
2019-06-10 19:40:24 +03:00
Manos Pitsidianakis
d763699324
Add support for component specific actions for shortcuts
2019-06-10 19:40:24 +03:00
Manos Pitsidianakis
f119789cb0
Add stub for format_flowed support
...
Concerns #17
2019-06-10 19:40:24 +03:00
Manos Pitsidianakis
f267fe8c9e
Micro fixes
2019-06-10 19:40:24 +03:00
Manos Pitsidianakis
a7993d48f8
Make date printing prettier in entry formatting
2019-06-10 19:40:24 +03:00
Manos Pitsidianakis
0092496632
Rename all getters from get_X to X
...
closes #5
2019-06-10 19:40:23 +03:00
Manos Pitsidianakis
8c98d3a5a0
Move ui and melib to different crates
...
closes #9
2019-06-10 19:40:23 +03:00