Commit graph

183 commits

Author SHA1 Message Date
cketti
037afd0596 Add support for UTF-8 data in BODYSTRUCTURE response 2022-09-14 15:33:20 +02:00
cketti
dd3d103fd3 Add support for UTF-8 in quoted strings to ImapResponseParser 2022-09-14 15:33:20 +02:00
cketti
d6ba51b899
Merge pull request #6266 from thundernest/convert_to_kotlin3
Convert `IdGrouper` to Kotlin
2022-09-02 19:26:39 +02:00
cketti
5800627cb8 Convert IdGrouper to Kotlin 2022-08-31 20:46:08 +02:00
cketti
a54784fb4e Rename .java to .kt 2022-08-31 20:42:43 +02:00
cketti
5f4b24d5fe Convert FolderNameCodec to Kotlin 2022-08-31 20:11:29 +02:00
cketti
58ce09c43f Rename .java to .kt 2022-08-31 20:11:29 +02:00
cketti
ec76473a1c Remove RealImapConnection.handleConnectException() 2022-08-12 09:41:06 +02:00
cketti
89d3df091f Change ImapSettings.useCompression to a property 2022-08-12 09:34:01 +02:00
cketti
5bd3b1a7f7 Convert RealImapConnection to Kotlin 2022-08-10 19:55:03 +02:00
cketti
8334e692ad Rename .java to .kt 2022-08-10 18:33:47 +02:00
cketti
002b70fcf9 Convert RealImapStoreTest to Kotlin 2022-08-10 17:48:58 +02:00
cketti
48f13ca3dc Rename .java to .kt 2022-08-10 17:41:36 +02:00
cketti
a57f127a11 Convert RealImapStore to Kotlin 2022-08-10 16:21:52 +02:00
cketti
33fa9d2b7c Rename .java to .kt 2022-08-10 16:19:21 +02:00
cketti
b90fc50d1a Convert ImapSettings to Kotlin 2022-08-10 15:17:41 +02:00
cketti
01539af985 Rename .java to .kt 2022-08-10 15:17:41 +02:00
cketti
99f6e42b28 Convert SimpleImapSettings to Kotlin 2022-08-10 15:11:39 +02:00
cketti
a039b1ae51 Rename .java to .kt 2022-08-10 15:08:17 +02:00
cketti
a5c5278c71 Add 'com.android.lint' Gradle plugin to JVM projects 2022-08-09 13:55:01 +02:00
cketti
d82b462565 IMAP: Fix creating header values from a BODYSTRUCTURE item 2022-08-02 19:55:31 +02:00
cketti
238a5cd181 Handle authentication failure when refreshing the folder list 2022-07-05 12:40:43 +02:00
cketti
d3be6e249b Add support for the OAUTHBEARER SASL method (IMAP) 2022-06-05 22:49:30 +02:00
cketti
5065afef88
Merge pull request #6082 from k9mail/oauth_setup_flow
Add support for OAuth 2.0 (Gmail)
2022-05-28 15:44:22 +02:00
cketti
7e5c6b05c4
Merge pull request #6051 from TheLastProject/feature/2943
Add support for List-Unsubscribe
2022-05-28 14:28:35 +02:00
Sylvia van Os
6081b58212 Add Unsubscribe toolbar option 2022-05-28 14:07:08 +02:00
cketti
14a7f1b0d3 Add support for OAuth 2.0 (Gmail) 2022-05-23 22:26:49 +02:00
cketti
553cbbb87f Only use XOAuth2ChallengeParser on continuation requests 2022-05-11 01:43:57 +02:00
cketti
35ced0f3ef Add Logger implementation for tests 2022-05-11 01:43:57 +02:00
cketti
bf6ae48658 Convert RealImapConnectionTest to Kotlin 2022-05-11 01:43:57 +02:00
cketti
f26d0410ba Rename .java to .kt 2022-05-11 00:41:02 +02:00
cketti
e7032255c6 JVM-ify mail libraries 2022-05-02 20:05:00 +02:00
cketti
fdb8655f3a Remove Robolectric from a lot of tests 2022-05-02 17:08:22 +02:00
cketti
d69c1f4c46 Add simple logging abstraction
Once there's a JVM artifact for Timber, hopefully all we have to do is replace the imports again.
2022-05-02 02:44:35 +02:00
cketti
6ea0bab0cf Remove SuppressLint annotations 2022-04-28 22:42:44 +02:00
cketti
4b1dc23ebb Remove unused code from OAuth2TokenProvider 2022-04-28 22:39:39 +02:00
Bastian Wilhelm
d71e5b40ac Replace AndroidX annotations with the ones from JetBrains 2022-04-28 14:52:48 +02:00
cketti
7be4ea62fe Remove ImapStore's dependency on ConnectivityManager 2022-04-12 21:58:15 +02:00
cketti
a796b1d941 Change IMAP code to use single compression setting 2022-04-12 21:58:15 +02:00
cketti
556188efcc Properly report progress when receiving multiple FETCH responses per message 2022-03-05 02:04:14 +01:00
cketti
9dd076686b Remove unnecessary/unused method parameters 2022-03-05 01:20:23 +01:00
cketti
4bed7a595b Remove unused method parameters 2022-02-24 19:56:50 +01:00
cketti
e59f57f602 Remove unused callbacks from MessageRetrievalListener 2022-02-24 19:42:01 +01:00
cketti
61046ef0fd Update Mockito (Kotlin) to version 4.0.0 2021-10-30 05:32:51 +02:00
cketti
6084321bde Update Kotlin to 1.5.30
Replace calls to deprecated stdlib functions
2021-08-26 17:44:49 +02:00
cketti
652d52b6a6 Add setting to suppress notifications for chat messages
Messages containing a 'Chat-Version' header field will not generate notifications when this setting is enabled.
2021-08-18 11:17:06 +02:00
cketti
7874fe7e11 Properly handle responses to the IDLE command
When waiting for the command continuation request response ignore irrelevant responses and keep track of relevant untagged responses.
2021-08-13 16:32:30 +02:00
cketti
03caacc1a7 Make RealImapConnection (somewhat) thread-safe 2021-07-13 16:01:24 +02:00
cketti
5232a1a962 Ignore IOExceptions when sending DONE (Push)
Errors with the connection are dealt with in the receiver thread.
2021-07-13 15:09:09 +02:00
cketti
d96641d7a0 Remove optimization to reduce the number of times a wakelock is acquired
ImapConnection.isDataAvailable() didn't reliably work on all devices (returned true when no complete IMAP response was available). This lead to situations where a wakelock was being held the whole time the IDLE command was active. At the same time no alarm was set to refresh the IDLE connection. So most of the time the blocking read would time out.
2021-07-09 18:06:13 +02:00
cketti
152424b20c Add a way to close all open IMAP connections
Use a "connection generation" value to mark all connections that have been created since the last closeAllConnections() call. Using that value we can recognize "old" connections that have not been in the connection pool at the time closeAllConnections() was called. We close them as soon as they are passed to releaseConnection().
2021-07-03 20:04:05 +02:00
cketti
ebbe02c057 Add ImapPushConfigProvider 2021-06-23 15:34:31 +02:00
cketti
aa9f6eaefa Add IdleRefreshTimeoutProvider 2021-06-23 14:02:07 +02:00
cketti
ca13a32fec Add ImapFolderPusher to listen for changes to an IMAP folder 2021-06-12 21:09:30 +02:00
cketti
db2b9c746f Add ImapFolderIdler that uses IMAP's IDLE command to listen for changes 2021-06-10 21:40:36 +02:00
cketti
63d9872755 Introduce additional interfaces so RealImapFolder is decoupled from RealImapStore 2021-06-10 21:00:58 +02:00
cketti
94f630cf88 Introduce ImapStore interface 2021-06-10 21:00:58 +02:00
cketti
55c54555ff Introduce ImapFolder interface 2021-06-09 16:15:12 +02:00
cketti
d0fa865e1f Rename ImapFolder.kt to RealImapFolder.kt 2021-06-09 16:15:12 +02:00
cketti
ededa33ff2 Use enum class for ImapFolder.open() argument 2021-06-09 16:15:12 +02:00
cketti
3041a787d6 Introduce ImapConnection interface
The implementation is now called RealImapConnection.
2021-06-09 16:15:12 +02:00
cketti
d5c8c35fec Remove ImapFolder caching
The cache was causing problems when a folder was accessed in two threads at the same time. There was also no invalidation mechanism that removed folders that had been removed from the server.

The easy fix is to get rid of this cache. There's no state in ImapFolder that survives closing the folder anyway.
2021-05-10 17:47:54 +02:00
cketti
d25d451201 Remove unused ImapFolder properties 2021-05-10 01:32:04 +02:00
cketti
5444d8be3a Remove explicit dependency on Kotlin's standard library 2021-04-22 03:54:15 +02:00
cketti
632d8f3cb7 Upgrade Mockito-Kotlin to 3.1.0 2021-04-22 03:54:15 +02:00
cketti
69ed32ff8a Convert 'ServerSettings' to Kotlin 2021-02-01 10:39:19 +01:00
cketti
42e180d6fa Make ImapStore use ServerSettings directly
Instead of using ImapStoreSettings as a ServerSettings subclass make it a helper to extract IMAP-specific settings.
2021-01-31 18:50:14 +01:00
cketti
7ae88bb61d Treat FolderNotFoundException as permanent error 2020-12-23 01:23:24 +01:00
cketti
1873593dc5 Format Kotlin code 2020-10-16 16:41:19 +02:00
cketti
ed8009d9fa Update ktlint-gradle to 9.4.1, ktlint to 0.39.0
Apply ktlint-gradle plugin to all Gradle subprojects.
2020-10-16 14:27:23 +02:00
cketti
9234b16c13 Convert 'ImapSync' to Kotlin 2020-08-27 22:35:36 +02:00
Tobias Preuss
f8e6e59fd6 Use io extension functions to make code more concise.
+ This change replaces a few usages of BufferedWriter, ByteArrayInputStream,
  OutputStreamWriter with their equivalent Kotlin extension functions.
2020-08-24 19:22:29 +02:00
cketti
e42e0fa8b9 IMAP: Support negative responses to APPEND command 2020-06-19 18:55:04 +02:00
cketti
dc119f9068 Convert 'ImapFolder' to Kotlin 2020-06-18 14:44:26 +02:00
cketti
be7849eb5d Rename 'ImapFolder' prior to conversion to Kotlin 2020-06-18 14:44:22 +02:00
cketti
84ffe7b3cd Convert 'ImapFolderTest' to Kotlin 2020-06-18 14:44:20 +02:00
cketti
3d97acde5c Rename 'ImapFolderTest' prior to conversion to Kotlin 2020-06-18 14:44:18 +02:00
cketti
789769ef39 Replace Account.getOutboxFolder() with Account.getOutboxFolderId() 2020-05-04 16:31:00 +02:00
cketti
82db38bd08 Create ImapStoreConfig 2020-05-01 05:30:34 +02:00
cketti
a6f75dc587 Remove StoreConfig.getMaximumAutoDownloadMessageSize() 2020-05-01 05:15:51 +02:00
cketti
d7d1fe0c0e Remove StoreConfig.isRemoteSearchFullText() 2020-05-01 04:18:16 +02:00
cketti
1858986fc4 Remove StoreConfig.isAllowRemoteSearch() 2020-05-01 04:03:02 +02:00
cketti
88bcea1552 Remove StoreConfig.getOutboxFolder() 2020-05-01 03:36:42 +02:00
cketti
fcfc7e6a22 Remove unused method StoreConfig.getInboxFolder() 2020-05-01 03:31:11 +02:00
cketti
94489bf55a Change List<? extends Message> to List<Message> where appropriate 2020-04-27 18:37:10 +02:00
cketti
d3bdebccf3 Change List<? extends Message> to List<ImapMessage> where appropriate 2020-04-27 18:37:10 +02:00
cketti
8abac750af Make ImapStore.getFolders() return the proper server ID 2020-04-24 22:00:10 +02:00
cketti
37eea88f82 Refactor ImapStore.getPersonalNamespaces() 2020-04-24 20:33:22 +02:00
cketti
d70564e423 Remove unused code 2020-04-18 19:51:48 +02:00
cketti
2a78418911 Remove old Push code 2020-04-05 20:08:29 +02:00
cketti
0554dfcd04 Clear local message cache when UIDVALIDITY value changes 2020-03-31 22:20:46 +02:00
cketti
5791253122 Add support for UIDVALIDITY to ImapFolder 2020-03-31 16:42:38 +02:00
cketti
76bc52beef Make ImapFolder no longer extend Folder 2020-01-26 23:35:25 +01:00
cketti
9335080545 Get rid of common base class RemoteStore
This also allows removing some unnecessary methods in former subclasses.
2020-01-26 05:16:01 +01:00
cketti
2d470c73a0 Move FolderType and FolderClass out of Folder 2020-01-09 14:08:41 +01:00
cketti
13bc16caf8 Remove Message.getFolder() 2020-01-08 23:30:03 +01:00
cketti
aa13a46e3e Don't pass Folder instance to PushReceiver 2019-12-18 01:05:28 +01:00
cketti
88d863c4c2 Add ktlint and Kotlin code style settings for Android Studio 2019-11-29 13:39:16 +01:00
cketti
d4def08551 Filter duplicate folder names in IMAP LIST response 2019-11-19 23:15:31 +01:00
cketti
57ff989edd Add kotlinOptions.jvmTarget to Gradle projects using Kotlin 2019-11-17 14:45:05 +01:00