Commit Graph

158 Commits

Author SHA1 Message Date
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