Commit graph

311 commits

Author SHA1 Message Date
Vincent Breitmoser
216d51a069 StorageEditor: add test 2018-12-10 13:06:52 +01:00
Vincent Breitmoser
474610139f StoagePersister: add test 2018-12-10 13:06:52 +01:00
Vincent Breitmoser
342048e961 StoragePerister: use statement for delete, drop intermediate map 2018-12-10 13:06:52 +01:00
Vincent Breitmoser
40b4ebbc8e add unit test for Storage 2018-12-10 13:06:52 +01:00
Vincent Breitmoser
9c6952275a Storage may still be written to and read from concurrently 2018-12-10 13:06:52 +01:00
Vincent Breitmoser
f7faccf5d9 extract persistence logic from Storage into StoragePersister 2018-12-10 13:06:52 +01:00
cketti
8b676343a4 Make MessagingController.checkMailBlocking() actually terminate 2018-12-06 23:34:51 +01:00
cketti
2f8778be33
Merge pull request #3763 from ojiofong/oji_mail_sync
Change mail sync to work with background execution limits
2018-12-06 19:57:00 +01:00
cketti
fa3458f920 Make mail check blocking when called from MailSyncJob 2018-12-06 19:45:11 +01:00
Vincent Breitmoser
4333a3a16f remove "hideHostnameWhenConnecting" from global settings 2018-12-05 14:39:08 +01:00
Oji Ofong
49917278de Resolve scheduled job issues 2018-12-04 13:42:22 -05:00
Vincent Breitmoser
62411ace05 Fix assigning account number when Account is first saved (fixes #3787) 2018-12-03 14:12:25 +01:00
Oji Ofong
c3fcf5986d Change mail sync to work with background execution limits 2018-12-02 08:52:46 -05:00
Vincent Breitmoser
e6e0d7c1c2
Merge pull request #3772 from k9mail/cleanup-localkeystore
Clean up LocalKeyStore and related
2018-12-02 05:08:03 +01:00
Vincent Breitmoser
5ead340cde more clearly use getExternalFilesDir in ExternalStorageProvider 2018-12-01 14:10:22 +01:00
Vincent Breitmoser
df85d7b0f3 Clean up TrustManager, KeyStore and SocketFactory use 2018-11-30 15:47:57 +01:00
Vincent Breitmoser
3e5c9a9616 slight cleanup in AccountSearchConditions 2018-11-29 18:37:26 +01:00
Vincent Breitmoser
47767b9e3f small code cleanup 2018-11-29 18:23:30 +01:00
Vincent Breitmoser
583c5b0432 extract Account.getLocalStore into LocalStoreProvider 2018-11-29 18:22:12 +01:00
Vincent Breitmoser
a42d1111ae move extensive setter logic out of Account into saveAccount() 2018-11-29 18:22:12 +01:00
Vincent Breitmoser
4a386b6c9b extract setup of default values from Account 2018-11-29 18:22:12 +01:00
Vincent Breitmoser
6276450c65 move loadAccount logic into AccountPreferenceSerializer 2018-11-29 18:22:12 +01:00
Vincent Breitmoser
86bc5ed823 extract "save" method from Account (and fix unit tests) 2018-11-29 18:19:07 +01:00
Vincent Breitmoser
6c71b13e9b extract move methods from Account 2018-11-29 18:19:07 +01:00
Vincent Breitmoser
cd01aec9d8 rename AccountManager to AccountPreferenceSerializer, move more things out of Account 2018-11-29 18:19:07 +01:00
Vincent Breitmoser
912b5d70a4 extract AccountSearchConditions and LocalKeyStoreManager from Account 2018-11-29 18:19:07 +01:00
Vincent Breitmoser
7819045e1b Extract deletion and saving of accounts into AccountManager 2018-11-29 18:19:07 +01:00
Vincent Breitmoser
213646d56c rename _is-reply attribute to _is-reply-to-encrypted
as per dkg's comment in https://github.com/autocrypt/autocrypt/pull/376#discussion_r194886487
2018-11-29 14:05:46 +01:00
Vincent Breitmoser
d0a1535547 only add draft header to drafts 2018-11-29 13:56:03 +01:00
Vincent Breitmoser
4c295e2f1b use @JvmStatic instead of Companion reference, code style 2018-11-29 13:56:03 +01:00
Vincent Breitmoser
825f06b1f3 fix unit tests 2018-11-29 13:56:03 +01:00
Vincent Breitmoser
7040f855a5 save plaintext subject for encrypted drafts 2018-11-29 13:56:03 +01:00
Vincent Breitmoser
d0e588fb9f Save draft state in message header for now
Apparently, storing the draft state header in the encrypted payload
introduces difficulties in Enigmail due to restrictions from
Thunderbird. To stay compatible, this commit keeps the draft state in
the outer header for now, but we should move it into the encrypted
payload if the issue with Thunderbird is somehow resolved.

see: https://github.com/autocrypt/autocrypt/pull/376#issuecomment-384293480
2018-11-29 13:56:03 +01:00
Vincent Breitmoser
39a732d0c3 Honor encrypt all drafts setting during message compose 2018-11-29 13:56:03 +01:00
Vincent Breitmoser
18ad00790a Add setting to store all drafts encrypted 2018-11-29 13:56:03 +01:00
Vincent Breitmoser
f9527b9e67 allow building drafts with no recipients in PgpMessageBuilder 2018-11-28 12:23:33 +01:00
Vincent Breitmoser
6a19eb3d3a convert ComposeCryptoStatus to kotlin 2018-11-28 12:23:33 +01:00
Vincent Breitmoser
e1015d325b Load draft state from AutocryptDraftState header 2018-11-28 12:23:32 +01:00
Vincent Breitmoser
07b272a161 Add Autocrypt-Draft-State header to saved drafts 2018-11-28 12:22:51 +01:00
Vincent Breitmoser
f7fb48f53f Disable payload header mechanisms for pgp/inline mails 2018-11-28 12:22:51 +01:00
Vincent Breitmoser
10875134f4 Always use PGP/MIME for drafts 2018-11-28 12:22:51 +01:00
Vincent Breitmoser
d7649a4391 Use \Draft flag to find if message is a draft 2018-11-28 12:22:51 +01:00
Vincent Breitmoser
74a7094944 Move K9-Identity header into encrypted body for encrypted drafts 2018-11-28 12:22:51 +01:00
Vincent Breitmoser
d55be9edc4 Encrypt drafts to self 2018-11-28 12:22:51 +01:00
cketti
1da164bed4 Code style cleanup 2018-11-28 05:16:01 +01:00
hstrobel
40143ae207 Addressed Review feedback, extracted EmptyCursor to a own class to reduce duplicated code 2018-11-28 01:24:09 +01:00
hstrobel
72c3ac5ad0 Addressed Review feedback 2018-11-27 23:16:37 +01:00
GoneUp
249512e367 Implements runtime permissions for contacts, rebase of #3176
A thing to note is that the permission request will only show up when the targetsdk is upped >23.

Old commit message that explains the change:
--
The approach was to make it so that any K9Activity can easily request
whatever permission in the future.

The Contacts permission is now requested in two locations:

1.  When a list of Messages is displayed
2.  When a new message is first started to be composed.

The permission request is displayed ONCE per onCreate(). Any more than this
and it got really annoying.  A typical user who reads or writes emails
WILL see the request, trust me.  Once they see the message 2x, they
also have the option to block the requests from appearing.

If they DECLINE the request (or decline + DENY any further attempts),
the app should continues to work, albeit without incorporating contact data
(thumbnails, autocomplete, etc.). Contacts may still be added to the
Contacts app, as this uses an Intent and does not require any permission.

Once the Read Contacts permission is enabled, the app immediately begins
to use it.

To add other permissions in the future (such as External Storage access),
the request can be made in a similar way and the permission request result
handled appropriately by just adding it to K9Activity (or overriding in
a particular Activity).
2018-11-27 23:16:36 +01:00
Vincent Breitmoser
683b7d6eaf
Merge pull request #3733 from k9mail/fix_folder_extra_values
Fix reading/writing values from/to folder_extra_values
2018-11-21 16:29:20 +01:00
cketti
ff5d3f3d06 Fix reading/writing values from/to folder_extra_values 2018-11-21 02:36:44 +01:00
cketti
e79766b871 Only try to expunge a message if the Backend supports it 2018-11-21 02:35:18 +01:00
cketti
0d6634d5b5 Allow intermediate states where there's no Inbox folder 2018-11-20 21:17:05 +01:00
cketti
f168985b0b
Merge pull request #3709 from k9mail/automatic_special_folder_selection
Automatic special folder selection
2018-11-19 15:47:01 +01:00
cketti
d5596f7565 Remove checked exceptions from LocalSearch and ConditionsTreeNode 2018-11-17 01:50:03 +01:00
cketti
c7a7bbfc8c Extract strings 2018-11-14 03:32:26 +01:00
cketti
ab192ece8a Pass in dependencies via constructor 2018-11-14 02:44:34 +01:00
cketti
05c091212c Rename NotificationChannelUtils to NotificationChannelManager 2018-11-14 02:30:55 +01:00
cketti
eeb545dc3d Add support for importing/exporting SpecialFolderSelection 2018-11-14 00:25:23 +01:00
cketti
7680a1ac70 Always show special folders at the top of the folder list 2018-11-13 20:38:46 +01:00
cketti
72a664458e Remove StoreConfig.set*Folder() 2018-11-13 20:38:46 +01:00
cketti
5cd28280ca Update special folders when folders change on server 2018-11-13 20:38:45 +01:00
cketti
5e00abfaac Add support for SpecialFolderSelection to FolderListPreference 2018-11-13 20:38:45 +01:00
cketti
a519c91b64 Add SpecialFolderSelection to Account 2018-11-13 20:38:45 +01:00
cketti
4847c0fa31 Add FolderType support to (K9)BackendStorage 2018-11-13 16:57:32 +01:00
cketti
91ae94d432 Add FolderType support to (Local)Folder 2018-11-13 16:57:32 +01:00
cketti
fa1d6aab18 Remove EXTRA_SHOW_FOLDER_NONE from ChooseFolder 2018-11-11 23:28:41 +01:00
cketti
8a87437e98 Rewrite folder values in Storage database 2018-11-11 23:28:41 +01:00
cketti
a408a21c88 Change import/export settings descriptions for folder values 2018-11-11 23:28:41 +01:00
cketti
a1b48780fd Use null instead of special folder value K9.FOLDER_NONE ("-NONE-") 2018-11-11 23:28:41 +01:00
cketti
fe8d01dc32
Merge pull request #3699 from ojiofong/oji-notification-channel-from-ByteHamster
Add support for notification channels
2018-11-11 17:18:33 +01:00
cketti
272b2e3cc4 Extract migration logic from 'Storage' class 2018-11-10 20:18:15 +01:00
Oji Ofong
dbd1c254a5 Update channels in the background thread 2018-11-10 09:42:24 -05:00
Oji Ofong
a1b3cc8f1f Improve notification channel 2018-11-10 09:40:46 -05:00
cketti
9711b42412 Remove unused Folder.FolderType 2018-11-09 14:19:36 +01:00
ByteHamster
baa653ba3a Re-generate group if name was changed 2018-11-07 22:08:55 -05:00
ByteHamster
06bc5fdd40 Mocking UUID 2018-11-07 22:08:55 -05:00
ByteHamster
222fc0dcf8 Notification channels 2018-11-07 22:08:55 -05:00
cketti
0837cf5dcc Convert 'TextQuoteCreator' to Kotlin 2018-10-25 02:07:43 +02:00
cketti
101573c59f WIP: Renaming file 'TextQuoteCreator' with Kotlin extension 2018-10-25 01:45:56 +02:00
cketti
63b3379e5d Use TextQuoteCreator instances instead of static method 2018-10-25 01:41:00 +02:00
cketti
5aba2d0327 Convert 'QuoteHelper' to Kotlin 2018-10-25 01:32:40 +02:00
cketti
7652a247f0 WIP: Renaming file 'QuoteHelper' with Kotlin extension 2018-10-25 01:25:56 +02:00
cketti
99be379013 Use QuoteHelper instances instead of a static method 2018-10-25 01:25:26 +02:00
cketti
5374173233 Remove line wrapping when prefix-quoting
We're using "quoted-printable" for transport encoding. So manually
wrapping lines shouldn't be necessary.

See #3654
2018-10-25 01:14:13 +02:00
cketti
04111290fc Use Matcher.quoteReplacement() for escaping 2018-10-25 01:03:10 +02:00
cketti
ba7c8a77f9 Add line break after "header" when prefix-quoting text 2018-10-25 00:54:55 +02:00
cketti
b6b71cbf42 Don't strip \r from quoted text 2018-10-25 00:51:06 +02:00
cketti
1222a2730b Add (failing) tests for TextQuoteCreator 2018-10-25 00:50:23 +02:00
cketti
224174273c
Merge pull request #3650 from williamvds/drawer
Add preferences and unified inbox to drawer
2018-10-24 03:27:27 +02:00
williamvds
02b253b0f1
Detect and select unified inbox in drawer 2018-10-21 13:31:58 +01:00
cketti
b1cfa302ba Use different method to convert HTML to plain text
Html.fromHtml() exhibited some serious performance issues with certain
inputs.

See issue #3624
2018-10-03 12:23:50 +02:00
cketti
032c6b3ed9 Simplify NotificationActionCreator interface 2018-09-12 21:40:12 +02:00
cketti
cd08af2894
Merge pull request #3600 from k9mail/fix_reply_to_unencrypted_message
Fix bug where subject field isn't populated when replying to an unencrypted message
2018-09-11 00:54:09 +02:00
Oji
0eceb9bcc7 Expose package static methods in NotificationActionService 2018-09-10 17:12:04 -04:00
cketti
8835b1e485 Extract subject when constructing MessageViewInfo for unencrypted emails 2018-09-07 01:31:31 +02:00
cketti
0351dc8694 Hide 'upload sent messages' setting when Backend doesn't support uploads 2018-09-04 18:05:03 +02:00
cketti
7af007ad2f Add setting to disable uploading of sent messages
Some providers automatically add messages sent via their outgoing
server to the Sent folder.
2018-09-04 18:05:03 +02:00
cketti
de73504be0
Merge pull request #3581 from k9mail/encryption_extractor_interface
Extract database schema creation + EncryptionExtractor interface
2018-09-04 15:44:25 +02:00
cketti
cda778e491 Remove unused method Message.clone() 2018-09-03 01:17:25 +02:00
cketti
a8f41118e3 Add interface for detection of encrypted messages
This includes some capabilities that are not currently used by K-9 Mail,
e.g. the ability to supply additional data to be inserted into the
database.
2018-09-03 00:57:41 +02:00
cketti
18bbd76783 Add a way to inject SchemaDefinition into LocalStore 2018-09-03 00:57:41 +02:00
cketti
83b6ab0620
Merge pull request #3570 from k9mail/mime_parameter_decoder
Add proper header parameter parser/decoder
2018-09-03 00:43:30 +02:00
cketti
24b2fbcc9d
Merge pull request #3592 from k9mail/remove_unnecessary_type_casts
[Cleanup] Remove unnecessary type casts
2018-09-03 00:42:39 +02:00
BO41
96be7af3f6 Remove unnecessary type casts 2018-09-03 00:31:12 +02:00
cketti
56882dc6c3 Fix unresolved references in Javadoc comments 2018-09-03 00:13:58 +02:00
BO41
c043eb0df4 Replace explicit type arguments with <> 2018-09-02 23:35:09 +02:00
cketti
ffd57c4e86
Merge pull request #3589 from k9mail/BO41_code_cleanup
[Cleanup] Improve accessibility, correctness and performance
2018-09-02 23:04:02 +02:00
BO41
f24cb76d9e Improve accessibility, correctness and performance 2018-09-02 22:49:48 +02:00
cketti
ae76f07ada
Merge pull request #3588 from k9mail/simplify_if_statements
[Cleanup] Simplify if statements
2018-09-02 22:48:21 +02:00
BO41
86dde4dabf Remove unused imports 2018-09-02 22:31:34 +02:00
BO41
dbea2cafa6 Simplify if statements 2018-09-02 22:27:28 +02:00
cketti
9c9c9d475f Don't broadcast message details when message was removed
Turns out reading the message from the database after it has been
deleted doesn't work particularly well 🤦
2018-08-27 01:25:07 +02:00
cketti
5d98c15bce Use MimeParameterEncoder and MimeParameterDecoder in MimeMessageHelper 2018-08-26 18:09:29 +02:00
cketti
5f7dac4556 Remove unwarranted usage of MimeUtility.unfoldAndDecode() 2018-08-26 17:18:22 +02:00
cketti
c8de3e6a18 Create ControllerExtension to allow accessing MessagingController internals 2018-08-17 18:22:53 +02:00
cketti
ea07d248df Create MessagingController instance using Koin 2018-08-15 23:01:59 +02:00
M Madison Phillips
262e0840ba Update address validator to conform to RFC 5321 2018-08-09 18:12:20 +02:00
cketti
02db5651aa Add tests for K9BackendFolder.getMessageFlags() 2018-08-05 19:43:08 +02:00
cketti
880f00ac51 Extract code to decode flags column to separate function 2018-08-05 15:28:57 +02:00
morckx
229a0a03c9 Don't crash on empty flags 2018-08-05 14:50:47 +02:00
cketti
de61ec288c Use local_only column in FolderRepository 2018-07-23 14:25:30 +02:00
cketti
ee777e62eb Use local_only column for retrieving folders in K9BackendStorage 2018-07-23 14:25:30 +02:00
cketti
1f0f4285d2 Add support for local_only column to LocalFolder 2018-07-23 14:25:30 +02:00
cketti
f40e7378fb Add 'local_only' column to folders table 2018-07-23 14:25:29 +02:00
cketti
c8da50f945
Merge pull request #3521 from k9mail/folder_list_sync
Move folder list sync logic into Backend implementations
2018-07-23 13:24:29 +02:00
cketti
91164e04ed Make sure account display name is never null 2018-07-23 12:54:09 +02:00
cketti
de49c9d6c2 Move folder list sync logic into Backend implementations 2018-07-22 18:34:16 +02:00
cketti
dc785a8e92 Fix error handling when refreshing the folder list fails 2018-07-22 18:31:41 +02:00
cketti
87132562f8 Remove unused parameter 2018-07-22 18:31:41 +02:00
cketti
b35074315c
Merge pull request #3519 from k9mail/add_folder_extra_values
Allow backend code to store additional per-account and per-folder data
2018-07-22 18:21:51 +02:00
cketti
5104780468 Update BackendStorage to allow getting/setting extra values 2018-07-22 18:06:21 +02:00
cketti
e56b03d7bc Create account_extra_values table 2018-07-22 18:06:21 +02:00
cketti
c91b482d30 Only reuse Backend instances when server settings haven't changed 2018-07-21 16:40:47 +02:00
ByteHamster
4ecb0d14e4 Cache contact names 2018-07-19 16:21:01 +02:00
cketti
0af83029cc Change ServerSettings#type to a String 2018-07-19 12:40:57 +02:00
cketti
f046313d98 Remove knowledge of store URI from :mail:protocols:imap module 2018-07-17 20:39:18 +02:00
cketti
4e22b1c509 Remove ImapStore.createUri/decodeUri 2018-07-17 20:39:18 +02:00
cketti
fe8477cd9b Make k9mail module specify which Backend implementations to include 2018-07-15 20:45:05 +02:00
cketti
ec9ba959f8 Remove TransportUris 2018-07-15 20:08:11 +02:00
cketti
e4b6175c45 Remove RemoteStoreManager 2018-07-15 18:36:49 +02:00
cketti
6bb8805aa9 Update BackendFolder to allow getting/setting extra folder values 2018-07-15 15:29:52 +02:00
cketti
4a0b761867 Create folder_extra_values table 2018-07-15 15:12:25 +02:00
cketti
60bfe335aa Make Autocrypt code use MessagingController instead of TransportProvider
This also allows us to get rid of TransportProvider.
2018-07-11 20:15:00 +02:00
cketti
e2c09e4155 Make account setup code use Backend to check outgoing server settings 2018-07-11 19:57:51 +02:00
cketti
a63fcfd7fc Rename Backend.checkServerSettings() to checkIncomingServerSettings() 2018-07-11 19:45:18 +02:00
cketti
6e18375d19 Add send message functionality to Backend interface 2018-07-11 19:41:13 +02:00
cketti
b6f59f40e1 Move erroneously moved XML resources from ui module back to core module 2018-07-08 18:36:37 +02:00
cketti
f6713ea55a Clean up modules' dependencies 2018-07-08 16:06:19 +02:00
cketti
f63b4097a1 Remove core module's dependency on HoloColorPicker 2018-07-08 16:06:19 +02:00
cketti
228bba0bf1 Move almost all Android resources from core module to ui module 2018-07-08 00:58:59 +02:00