Commit graph

1232 commits

Author SHA1 Message Date
cketti
4da9e023be Create public version for authentication error notifications
Don't expose account name or error details when Android is configured to hide sensitive information on the lock screen.
2021-12-08 02:37:21 +01:00
cketti
57d7616d5a Create public version for certificate error notifications
Don't expose account name or error details when Android is configured to hide sensitive information on the lock screen.
2021-12-08 02:37:21 +01:00
cketti
c47d79094c Create public version for send failed notifications
Don't expose error details when Android is configured to hide sensitive information on the lock screen.
2021-12-08 02:37:21 +01:00
cketti
725c32ea0c Create public versions for sync/sending notifications
When Android is configured to not show sensitive notification content, we no longer display account and folder names on the lock screen.
2021-12-08 02:22:18 +01:00
cketti
f042e2babd
Merge pull request #5812 from k9mail/fix_vibrate_on_notification
Only set vibration pattern if vibration is enabled
2021-12-07 20:23:40 +01:00
cketti
0964d50f2d Only set vibration pattern if vibration is enabled 2021-12-07 02:11:53 +01:00
cketti
229eaa6350 Restore notifications when the app is restarted 2021-12-05 21:51:32 +01:00
cketti
14be46389f Persist data about notifications 2021-12-04 21:59:06 +01:00
cketti
443a1d5d04 Create NotificationDataStore and make NotificationData immutable 2021-12-02 21:54:58 +01:00
cketti
d4887866c1 Remove unused @JvmStatic and @JvmName annotations 2021-11-30 22:56:09 +01:00
cketti
aee9088874 Save the timestamp when a notification was created for the first time 2021-11-30 01:46:53 +01:00
cketti
c9be254f0a Get rid of Range lint warnings 2021-11-26 21:38:49 +01:00
cketti
a3033d1983 Use Timber for logging 2021-11-26 15:52:11 +01:00
cketti
878400c15f Explicitly specify locale in case conversion or string formatting 2021-11-26 15:43:28 +01:00
cketti
9074d6c570 Remove unused strings 2021-11-26 15:23:57 +01:00
cketti
230d0f4a84 Remove unused code (K9.Intents.Share.EXTRA_FROM) 2021-11-26 02:46:58 +01:00
cketti
1fe6b454cd Add support for properly importing/exporting "Auto-expand folder" = "None" 2021-11-24 22:34:46 +01:00
cketti
835eb6a7cc Use the inbox for the auto-expand folder by default 2021-11-24 22:34:46 +01:00
cketti
04c114bbca
Merge pull request #5788 from k9mail/notification_refactoring
Separate notification UI/UX logic from notification creation
2021-11-24 21:17:36 +01:00
cketti
b7526588c7 Separate notification UI/UX logic from notification creation 2021-11-24 17:49:14 +01:00
Tobias Preuss
f0d3f371f0 Avoid leaking CountingOutputStream.
+ Affects com.fsck.k9.mail.filter.CountingOutputStream.
2021-11-23 09:45:05 +01:00
Tobias Preuss
2db95470db Avoid leaking CountingOutputStream.
+ Affects org.apache.commons.io.output.CountingOutputStream.
2021-11-23 09:44:27 +01:00
cketti
63364b5c30 Refactor code to export the debug log 2021-11-15 16:29:39 +01:00
cketti
61046ef0fd Update Mockito (Kotlin) to version 4.0.0 2021-10-30 05:32:51 +02:00
cketti
80f29f9b3b Update Koin to version 3.1.3 2021-10-30 05:32:51 +02:00
cketti
ac8e61b6e9 Update AndroidX WorkManager to version 2.7.0 2021-10-30 04:22:16 +02:00
cketti
96f9b3bdd6 Update AppCompat to version 1.3.1
Update AndroidX Core to version 1.7.0
Update AndroidX Activity to version 1.4.0
Update Androidx Fragment to version 1.3.6
Update Androidx Lifecycle to version 2.4.0
2021-10-30 03:28:36 +02:00
cketti
a951e07fed
Merge pull request #5752 from k9mail/clock
Convert class 'Clock' to an interface
2021-10-25 18:10:20 +02:00
cketti
20dfc9a75b Convert class 'Clock' to an interface 2021-10-23 04:00:15 +02:00
cketti
bbe015eea8 Rename .java to .kt 2021-10-23 03:53:19 +02:00
cketti
0f278ebfe2 Set subject when forwarding a message as attachment 2021-10-22 19:46:31 +02:00
cketti
01f3be62dd Don't set notification priority to high for starred messages
This is an obscure feature I doubt was used much. It only worked on Android versions prior to 8.0 anyway.
2021-10-18 17:26:24 +02:00
cketti
266064c6cf Add parameter names to Koin declarations 2021-10-15 18:07:53 +02:00
cketti
d42ddd4698 Rename NewMailNotifications to NewMailNotificationController 2021-10-15 18:07:53 +02:00
cketti
7668e14577 Rename MessageSummaryNotifications to SummaryNotificationCreator 2021-10-15 18:07:52 +02:00
cketti
5aa465a68e Rename SingleMessageNotifications to SingleMessageNotificationCreator 2021-10-15 18:07:23 +02:00
cketti
13f64bd0d7 Rename LockScreenNotifications to LockScreenNotificationCreator 2021-10-15 18:07:21 +02:00
cketti
ad5b9a300b Rename SyncNotifications to SyncNotificationController 2021-10-14 17:28:15 +02:00
cketti
f48ff91af8 Rename SendFailedNotifications to SendFailedNotificationController 2021-10-14 17:22:51 +02:00
cketti
05a75b898e Rename CertificateErrorNotifications to CertificateErrorNotificationController 2021-10-14 17:20:30 +02:00
cketti
50187f8b53 Rename AuthenticationErrorNotifications to AuthenticationErrorNotificationController 2021-10-14 17:11:15 +02:00
cketti
8836ed4dec
Merge pull request #5734 from k9mail/remove_base_notifications
Remove BaseNotifications class
2021-10-12 18:49:01 +02:00
cketti
909904fd73 Remove BaseNotifications class 2021-10-11 20:26:26 +02:00
cketti
55ed63dee1 Remove unused code 2021-10-11 19:19:12 +02:00
cketti
7a572731a2 Don't use "unread count" in notifications 2021-10-11 18:42:51 +02:00
cketti
7e80d61f08 Don't limit line length when converting from HTML to plain text 2021-10-04 17:06:06 +02:00
cketti
84eca27d4f Avoid crash when getting flow for non-existent account 2021-09-29 23:47:34 +02:00
cketti
b2c998f0c5 Convert MessageReferenceTest to Kotlin 2021-09-29 15:51:30 +02:00
cketti
f17f0c6630 Rename .java to .kt 2021-09-29 15:51:30 +02:00
cketti
7d984f8918 Convert MessageReference to Kotlin 2021-09-29 15:38:23 +02:00
cketti
44275da943 Rename .java to .kt 2021-09-29 15:38:23 +02:00
cketti
8ae5378942 Remove Flag from MessageReference 2021-09-29 15:27:45 +02:00
cketti
2ad12fbb6d
Merge pull request #5700 from k9mail/MessageStore_getFolderServerId
Moving another method from LocalStore to MessageStore
2021-09-28 15:19:48 +02:00
cketti
fc253f7fae
Merge pull request #5699 from k9mail/StorageManager_cleanup
Remove unused functionality from StorageManager and StorageProvider
2021-09-28 15:17:42 +02:00
cketti
03370b2aca
Merge pull request #5698 from k9mail/small_K9BackendStorage_fix
Don't call MessageStore.deleteFolders() with an empty list
2021-09-28 15:16:25 +02:00
cketti
fd52f60c40
Merge pull request #5696 from k9mail/fix_MemorizingMessagingListener
Make sure "memory key" in MemorizingMessagingListener doesn't change
2021-09-28 15:16:02 +02:00
cketti
96b03b71e5
Merge pull request #5695 from k9mail/fix_lock_screen_notification
Fix lock screen notification when there's only one new message
2021-09-28 15:14:24 +02:00
cketti
a6db05717e Remove LocalStore.getFolderServerId() 2021-09-24 18:55:38 +02:00
cketti
d211b72892 Add MessageStore.getFolderServerId() 2021-09-24 18:52:42 +02:00
cketti
c6936043c6 Remove unused functionality from StorageManager and StorageProvider 2021-09-24 18:39:20 +02:00
cketti
0bc6d380c5 Don't call MessageStore.deleteFolders() with an empty list 2021-09-24 18:22:24 +02:00
cketti
526a0440e1 Make sure "memory key" in MemorizingMessagingListener doesn't change
Previously, renaming an account could lead to old sync state being retained. I noticed this when the progress bar beneath the toolbar was shown even though no sync was in progress.
2021-09-23 22:07:44 +02:00
cketti
8f4c10d8b4 Fix lock screen notification when there's only one new message 2021-09-23 12:25:34 +02:00
cketti
8350a62cad
Merge pull request #5692 from k9mail/refactor_TracingPowerManager
Refactor TracingPowerManager
2021-09-23 11:46:01 +02:00
cketti
1cc41ce69d
Merge pull request #5690 from k9mail/remove_legacy_notification_settings
Remove "hide subject in notifications" setting
2021-09-22 18:37:40 +02:00
cketti
a06c54f1ad
Merge pull request #5689 from k9mail/remove_WrappedException
Remove WrappedException
2021-09-22 18:32:33 +02:00
cketti
e9d7606592
Merge pull request #5687 from k9mail/update_folder_list
Update displayed folder list when folders on server have changed
2021-09-22 18:29:37 +02:00
cketti
a63daa50a8 Rename TracingPowerManager to AndroidPowerManager 2021-09-22 12:49:45 +02:00
cketti
cd267a8e8a Use Koin to manage/obtain the TracingPowerManager instance 2021-09-22 12:47:55 +02:00
cketti
3393ae16ed Convert TracingPowerManager to Kotlin 2021-09-22 12:34:36 +02:00
cketti
27cc4d34ca Rename .java to .kt 2021-09-22 12:33:13 +02:00
cketti
8a0a56d671 Remove (unused) timer functionality from TracingPowerManager 2021-09-22 12:11:55 +02:00
cketti
1ff1bd8454 Remove "hide subject in notifications" setting
This feature didn't work properly. And the "lock screen notifications" setting offers very similar functionality.
2021-09-21 19:59:30 +02:00
cketti
1231bd5975 Remove WrappedException 2021-09-21 16:33:31 +02:00
cketti
2e1b002b21 Update displayed folder list when folders on server have changed 2021-09-21 14:30:32 +02:00
cketti
9990908640 Remove default account setting
The first account in the account list is now the default account.
2021-09-21 13:52:48 +02:00
cketti
51e6820d92
Merge pull request #5677 from k9mail/remove_Account_isAvailable
Remove Account.isAvailable()
2021-09-21 13:19:02 +02:00
cketti
d57b85b820 Fix notification sound for single message "summary" notification 2021-09-18 19:19:41 +02:00
cketti
18fbb45352 Remove UnavailableStorageException 2021-09-17 11:06:17 +02:00
cketti
0167d8dfef Remove UnavailableAccountException 2021-09-17 10:56:53 +02:00
cketti
fb8f98486f Remove Account.isAvailable() 2021-09-17 10:47:03 +02:00
cketti
129557da99 Remove storage provider locking 2021-09-17 10:37:11 +02:00
cketti
219648f142 Get rid of mount/unmount receivers for external storage
We no longer support storing the database on "external storage". Even when migrating old databases chances are very slim "external storage" actually is a removable storage device.
2021-09-17 10:01:14 +02:00
cketti
73bcfb3837 Remove unused class FixedStorageProviderBase 2021-09-17 09:47:34 +02:00
cketti
29e1593d79 Update sync notification instead of recreating it for every folder 2021-09-17 05:31:58 +02:00
cketti
79514fbad1 Replace Account.setRingNotified() mechanism
MessagingController now uses NotificationState to make sure there's only one audible notification during a single sync operation.
2021-09-16 17:54:56 +02:00
cketti
ad21449a0b Refactor notification code 2021-09-16 12:42:51 +02:00
plan3d
5437fd2024 Issue #5611: Add support for setting Reply-To header 2021-09-13 14:52:28 +02:00
cketti
0c413e34a7
Merge pull request #5650 from k9mail/show_gitlab_usernames
Show name part of certain addresses even if they contain an @ symbol
2021-09-09 12:47:00 +02:00
cketti
9156e8f699 Show name part of certain addresses even if they contain an @ symbol 2021-09-06 07:58:05 +02:00
cketti
c0f7996858 Move accounts flow code from AccountsViewModel to Preferences 2021-09-05 22:53:21 +02:00
cketti
58498b8fc2 Fix sending results in callback flows
Launching new coroutines to deliver the results from the callback to the channel can lead to the results arriving out of order.
2021-09-04 18:45:46 +02:00
cketti
288486e247 Rewrite FoldersViewModel to use Flow 2021-09-02 21:04:03 +02:00
cketti
a36d7e9d78
Merge pull request #5633 from k9mail/notification_tests
Convert notification tests to Kotlin
2021-09-02 19:13:02 +02:00
cketti
c8268dbe45 Convert notification tests to Kotlin 2021-09-01 02:19:46 +02:00
cketti
140da14939 Rename .java to .kt 2021-09-01 02:18:54 +02:00
cketti
701b640da3 Move LocalFolder.getMessageCount() to MessageStore 2021-08-31 18:38:16 +02:00
cketti
74f7eed769
Merge pull request #5620 from k9mail/refactor_FolderRepository
Remove FolderRepositoryManager
2021-08-27 22:28:24 +02:00
cketti
f2f8e4d0f3 Remove FolderRepositoryManager
Instead we use one FolderRepository instance and pass Account as parameter to individual functions.
2021-08-26 22:34:57 +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
e0fe1a2dfa
Merge pull request #5618 from k9mail/convert_to_kotlin
Convert classes in the "notification" package to Kotlin
2021-08-26 16:51:20 +02:00
cketti
5bba535699 Convert notification classes to Kotlin 2021-08-26 01:36:25 +02:00
cketti
ed6cbe1c4b Rename .java to .kt 2021-08-26 01:35:18 +02:00
cketti
d9bf7b491e
Merge pull request #5603 from k9mail/format_flowed_reply
Properly decode format=flowed body before including the text in a reply
2021-08-24 18:57:35 +02:00
cketti
9ee3a76ef1 Move format=flowed decoding to MessageExtractor 2021-08-22 16:20:15 +02:00
cketti
93a1df5bd0 Remove LocalStore.getFolderId() 2021-08-21 22:45:40 +02:00
cketti
f09f2d4003 Move LocalStore.compact() to MessageStore 2021-08-21 22:39:09 +02:00
cketti
baa94b84b9 Remove unused code 2021-08-21 22:38:10 +02:00
cketti
766cf838e0
Merge pull request #5578 from k9mail/ignore_chat_messages
Add setting to suppress notifications for chat messages
2021-08-21 21:26:45 +02:00
cketti
e229254e53
Merge pull request #5574 from k9mail/no_notification_on_first_sync
Don't create notifications when first syncing a folder
2021-08-21 21:22:57 +02:00
cketti
beaefd84d0 Merge branch '5.8-MAINT' into main 2021-08-21 21:17:37 +02:00
cketti
0ad8ce2c0d Fix check for missing incoming/outgoing server credentials 2021-08-19 23:09:39 +02:00
cketti
21102b50dc Set 'last_updated' column to NULL when clearing local messages 2021-08-18 11:55:55 +02:00
cketti
9c185b15cb Remove unnecessary code
Backend.sync() already sets the 'last checked' time.
2021-08-18 11:55:55 +02:00
cketti
326d27476b Don't create notifications when syncing a folder for the first time 2021-08-18 11:55:55 +02:00
cketti
bc366e98eb Add support for retrieving a folder's last checked time via MessageStore 2021-08-18 11:55:21 +02:00
cketti
3252002629 Rename MessageStore.setLastUpdated() to setLastChecked() 2021-08-18 11:53:53 +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
ddcdc72321
Merge pull request #5519 from andrewfg/starred-unread-count
Display both unread and starred message counts in navigation drawer
2021-08-18 01:05:30 +02:00
cketti
74a0ed8b93 Remove UnreadMessageCountProvider 2021-08-17 20:02:56 +02:00
cketti
106c132d8d Code cleanup 2021-08-17 19:57:02 +02:00
Andrew Fiddian-Green
4729ae044a Optionally show starred message count in navigation drawer 2021-08-17 19:18:26 +02:00
cketti
46c4e6fd8d Don't connect to server when incoming/outgoing server passwords are missing
If a user imports an account but doesn't provide server passwords, don't attempt to connect to the incoming or outgoing server of that account.
2021-08-17 01:19:41 +02:00
cketti
04d68624ad Remove notification when a message was deleted 2021-08-07 21:48:01 +02:00
lostfictions
8c56d0c702 make push notification low priority
fixes #5521.
2021-08-04 19:01:16 -04:00
cketti
97891d15e0
Merge pull request #5511 from k9mail/fix_identity_header
Fold identity header value so we're not generating invalid messages
2021-08-04 15:36:00 +02:00
cketti
0e54bd2bc5 Fold identity header value so we're not generating invalid messages 2021-08-04 15:21:29 +02:00
cketti
e9c45b4aa8 Disable Push if not supported by the server 2021-08-02 18:49:06 +02:00
cketti
49600c470c Reset "ring notified" flag when syncing a folder after a Push event
Without this (but with the new silent fixes) new messages downloaded after a Push event would only create silent notifications.
2021-07-31 20:38:50 +02:00
cketti
d461dece67 Fix sound/vibration for the summary notification 2021-07-31 20:36:01 +02:00
cketti
529a6c0aad Make sure summary notification is silent during quiet time 2021-07-31 20:02:59 +02:00
cketti
2ef430565d Make sure "stacked notifications" are silent 2021-07-31 20:02:18 +02:00
Matt Smith
baed7c09b8 Show full error message in notification 2021-07-17 15:36:18 +12:00
cketti
26c64806f2 Add "Push Info" screen 2021-07-15 00:20:48 +02:00
cketti
00be66b1c1 Don't throw in AccountPushController.updatePushFolders()
When the 'backendPusher' property is null the AccountPushController (and BackendPusher) have already been stopped.
2021-07-13 15:45:21 +02:00
cketti
38c0b2dfb2 Restart AccountPushControllers when connectivity returns
PushController.onConnectivityChanged() is not only called when the active network changes, but also when connectivity returns (offline -> online). In that case we need to restart the AccountPushControllers.
2021-07-10 14:28:57 +02:00
cketti
108868155e Persist general settings on a background thread 2021-07-08 22:56:45 +02:00
plan3d
68fd9cf819 Issue #2490: Inline attachments are included in forwarded messages 2021-07-06 21:00:18 +02:00
cketti
7580c04d6c Don't allow an IDLE refresh interval of 1 minute 2021-07-05 17:38:49 +02:00
cketti
95ecac8893 Close all Push connections when Android connects to another network
When the default network changes Android usually kills connections established over the old network after a little while. K-9 Mail treats this as a regular network error and sleeps for 5 minutes before trying to re-establish the Push connection(s). Closing old connections and opening new ones when a network change is detected avoids this error.
2021-07-04 21:27:38 +02:00
cketti
830b358ff3 Change 'ConnectivityChangeListener' interface
Distinguish between 'connectivity changed' and 'connectivity lost' events.
2021-07-04 21:17:06 +02:00
cketti
1a12ab3177 Add new setting: showRecentChanges 2021-07-03 14:13:29 +02:00
cketti
991f814980 Introduce GeneralSettingsManager
A first step towards moving away from the global mutable state in `K9`.
2021-07-01 17:47:10 +02:00
cketti
198975dda3 Use ConnectivityManager.registerDefaultNetworkCallback() on API 24+ 2021-06-26 23:15:15 +02:00
cketti
ec6e976198
Merge pull request #5370 from k9mail/inbox_push_class
Set push class of Inbox to 'first class' by default
2021-06-26 22:37:50 +02:00
cketti
f9f5f8eb1c Set push class of Inbox to 'first class' by default 2021-06-26 22:17:24 +02:00
cketti
fe4282a03c
Merge pull request #5368 from k9mail/connectivity_manager_network_change
Make ConnectivityManager notify when the active network changes
2021-06-26 22:02:16 +02:00
cketti
1bd3173f71 Don't start PushService if there are no Push-enabled accounts 2021-06-26 21:22:19 +02:00
cketti
0ca3c5575f Make ConnectivityManager notify when the active network changes
Also fix how isNetworkAvailable() works. We now always query the active network (if there is one).
2021-06-26 21:11:33 +02:00
cketti
ac131758b1 Make sure PushController only deals with Push accounts
We could end up with a non-Push-capable account that has `folderPushMode` set to something other than `NONE` due to missing checks in the settings import code. See issue #5363.
2021-06-24 15:22:10 +02:00
cketti
211ffb98df Set default value of 'Push folders' to 'None' 2021-06-24 14:22:00 +02:00
cketti
ebbe02c057 Add ImapPushConfigProvider 2021-06-23 15:34:31 +02:00
cketti
145eba5e2e
Merge pull request #5360 from k9mail/account_flow
Add AccountManager.getAccountFlow()
2021-06-23 12:59:59 +02:00
cketti
15bac4c18a Add AccountManager.getAccountFlow()
Instead of adding a custom callbackFlow() for each account property we're interested in, we can now use `AccountManager.getAccountFlow(accountUuid).map { it.relevantProperty }`.
2021-06-23 10:05:52 +02:00
cketti
a7f4093147 Remove unused K9JobManager.schedulePusherRefresh() 2021-06-22 16:04:20 +02:00
cketti
8fea80f14c Add PushController implementation 2021-06-22 15:30:23 +02:00
cketti
0b1a3a01fb
Merge pull request #5354 from k9mail/backend_changed_listener
Add listener mechanism to BackendManager
2021-06-21 14:16:29 +02:00
cketti
89d3cdbad5 Add listener mechanism to BackendManager 2021-06-21 14:03:45 +02:00
cketti
13caecad2d
Merge pull request #5353 from k9mail/connectivity_manager
Add ConnectivityManager to listen for changes in network availability
2021-06-21 13:58:53 +02:00
Art O Cathain
05c5319b45 Fix error when forwarding encrypted attachments
SafeContentResolver refuses to load encrypted attachments with an error:
"Content provider is not explicitly allowed:
com.fsck.k9.debug.decryptedfileprovider"

For internally provided attachments, there is no need to use
SafeContentResolver, so we use the default system ContentResolver
2021-06-21 21:08:24 +10:00
cketti
37c9ffbe90 Add ConnectivityManager to listen for changes in network availability 2021-06-19 16:11:51 +02:00
cketti
190242943c
Merge pull request #5352 from k9mail/alarm_manager
Add implementation for AndroidAlarmManager
2021-06-19 16:06:37 +02:00
cketti
f7277c911e Add implementation for AndroidAlarmManager 2021-06-18 20:29:35 +02:00
cketti
bf21572b57 Add AlarmManagerCompat 2021-06-18 19:47:00 +02:00
cketti
78ad10e3df Remove unused K9AlarmManager 2021-06-18 19:46:48 +02:00
cketti
7a940240c3 Add BootCompleteReceiver to start PushController on device boot 2021-06-18 19:34:28 +02:00
cketti
be17063212
Merge pull request #5348 from k9mail/account_push_controller
Add AccountPushController
2021-06-17 22:15:20 +02:00
cketti
bf1d528972 Add AccountPushController 2021-06-17 21:49:23 +02:00
cketti
e4af588431 Honor expunge policy when deleting messages
Previously, we didn't expunge messages when the expunge policy was set to 'immediately' (default) and no Trash folder was configured.
2021-06-16 19:47:01 +02:00
cketti
ac0f01c206
Merge pull request #5338 from k9mail/push_service
Add foreground service for Push
2021-06-13 00:09:02 +02:00
cketti
f45b8a2317 Add AutoSyncManager to listen for changes to the "auto sync" system setting 2021-06-12 23:53:15 +02:00
cketti
46a2c351d5 Add foreground service for Push 2021-06-12 17:04:45 +02:00
cketti
fb55ee76f9
Merge pull request #5337 from k9mail/notification_ids_test
Rewrite tests for NotificationIds
2021-06-12 16:00:28 +02:00
cketti
f3b7cd7d14 Add notification channel for a Push foreground service 2021-06-11 18:33:09 +02:00
cketti
5df81c2908 Rewrite tests for NotificationIds
Check the properties we actually care about instead of testing implementation details.
2021-06-11 13:52:01 +02:00
cketti
295b9d8d28
Merge pull request #5327 from k9mail/issue_4407_unifiedInbox 2021-06-04 21:38:15 +02:00
plan3d
4b488d9cbf Issue #4407: Fixed localized unified inbox title if app language was changed 2021-06-04 11:30:38 +02:00
cketti
63e6c61368 Make sure BodyTextExtractor.getBodyTextFromMessage() never returns null 2021-06-02 00:32:35 +02:00
cketti
2598d3e199 Remove "Notification opens unread messages" option 2021-06-01 09:45:12 +02:00
plan3d
1066cf84b0 Removed dead code 2021-05-31 16:30:53 +02:00
cketti
11c85017e2
Merge pull request #5313 from k9mail/push_folders_flow
Add FolderRepository.getPushFoldersFlow()
2021-05-29 13:23:08 +02:00
cketti
6862b737ed Add FolderRepository.getPushFoldersFlow()
This method returns a flow that emits the list of folders to sync via Push. It will automatically update when the account's 'Push folders' setting or a folder's Push class is changed.
2021-05-28 14:15:48 +02:00
cketti
fdaf91cd2e Remove 'Poll when connecting for push' setting 2021-05-28 12:28:54 +02:00
cketti
72b1ab5ac5 Remove message list update mechanism that no longer works
The adapter in MessageListFragment used a complicated mechanism that allowed for changing the displayed list by changing the cache and not reading the data from the database again. With the latest change to the adapter this no longer works. And so the associated "notification" mechanism can be removed.
2021-05-23 10:01:10 +02:00
cketti
769d658e5a Correctly persist message download state
Add the flag X_DOWNLOADED_FULL when the message has been downloaded completely, the flag X_DOWNLOADED_PARTIAL when only the text of a message has been downloaded, and set no additional flag when only the envelope and structure of the message has been downloaded. The latter happens when we fetch remote search results.
2021-05-10 00:47:27 +02:00
cketti
a389c1860f Move notification mechanism from K9MessageStore to NotifierMessageStore 2021-04-24 01:09:37 +02:00
cketti
8d45e9cdd3 Remove now unused code from LocalFolder 2021-04-23 22:28:40 +02:00
cketti
c204c24c23 Use new implementation in MessageStore to copy messages 2021-04-23 22:28:40 +02:00
cketti
e05bc461b5 Re-implement copy message functionality in MessageStore
Instead of loading a message into memory and then saving it to the new folder the new code copies the database entries and data files.
2021-04-23 22:28:40 +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
0e7ec3846d Upgrade Koin to 2.2.2 2021-04-22 03:54:15 +02:00
cketti
c43f27a9ff
Merge pull request #5259 from k9mail/save_messages 2021-04-20 21:23:47 +02:00
cketti
abd336addb Save message in Outbox folder using MessageStore 2021-04-18 02:28:33 +02:00
cketti
903babe917 Save drafts using MessageStore 2021-04-17 23:26:46 +02:00
cketti
f58860f8bb
Merge pull request #5257 from k9mail/save_messages
Split Backend.fetchMessage() into two methods
2021-04-17 21:45:00 +02:00
cketti
127e311385 Change FolderDetailsAccessor to better support local folders
For "local-only" folders the server ID column in the database is NULL.
2021-04-17 17:54:25 +02:00
cketti
428ae60a58 Split Backend.fetchMessage() into two methods
The two new methods now also save the downloaded message data instead of returning a Message instance.
MessageStore.saveRemoteMessage() will now replace a message if it already exists.
2021-04-17 00:04:58 +02:00
cketti
4bfe03de35
Merge pull request #5255 from k9mail/BackendStorage_to_MessageStore 2021-04-16 20:46:06 +02:00
cketti
1bbaf668f6 Remove K9BackendStorage's dependency on LocalStore 2021-04-15 01:51:57 +02:00
cketti
289744ec24 Change key/value functions in K9BackendFolder to use MessageStore 2021-04-15 01:51:54 +02:00
cketti
cf51883637 Change K9BackendFolder.getOldestMessageDate() to use MessageStore 2021-04-15 01:51:52 +02:00
cketti
0a50acd38b
Merge pull request #5251 from k9mail/BackendStorage_to_MessageStore
Change K9BackendFolder.saveMessage() to use MessageStore
2021-04-15 01:51:24 +02:00
cketti
4e4babeea6 Change K9BackendFolder.saveMessage() to use MessageStore 2021-04-15 01:19:18 +02:00
plan3d
352cd7a356 Issue #1430: Fixed lost signature spaces 2021-04-13 07:37:52 +02:00
plan3d
960989bdb2 Fixed TextBodyBuilder 2021-04-13 07:37:52 +02:00
plan3d
20a00de34c Rewrote TextBodyBuilderTest 2021-04-13 07:37:52 +02:00
cketti
1a68adc803
Merge pull request #5242 from k9mail/BackendStorage_to_MessageStore 2021-04-12 21:00:07 +02:00
cketti
35da587399 Save new account order in background thread 2021-04-10 07:29:37 +02:00
Poldi
3d9e9d96fc Allow reordering accounts in settings 2021-04-10 06:47:02 +02:00
cketti
923b0308b4 Change K9BackendFolder.setMessageFlag() to use MessageStore 2021-04-09 03:08:25 +02:00
cketti
c20de077d9 Change K9BackendFolder.getMessageFlags() to use MessageStore 2021-04-09 02:24:02 +02:00
cketti
c17db2cb94 Change K9BackendFolder.isMessagePresent() to use MessageStore 2021-04-09 02:00:10 +02:00
cketti
d52b4511fe Change K9BackendFolder.setStatus() to use MessageStore 2021-04-08 21:33:25 +02:00
cketti
e7b764e6e8 Change K9BackendFolder.setLastChecked() to use MessageStore 2021-04-08 21:28:05 +02:00
cketti
cbb5825d03 Change K9BackendFolder.setMoreMessages() to use MessageStore 2021-04-08 21:23:48 +02:00
cketti
7dc4b6dd71 Change K9BackendFolder.getMoreMessages() to use MessageStore 2021-04-08 21:12:01 +02:00
cketti
3336fd3ed3 Extract 'MoreMessages' to a separate file 2021-04-08 20:40:49 +02:00
cketti
3a86cc632e Update 'delete_message' trigger to delete entries in 'threads' table 2021-04-08 20:27:03 +02:00
cketti
cf9037a513 Add code to delete messages to MessageStore 2021-04-08 20:27:03 +02:00
cketti
9d4d7f0352 Move code to get message server IDs and dates from K9BackendFolder to MessageStore 2021-04-07 20:39:19 +02:00
cketti
484db5730d Move code to get message server IDs from K9BackendFolder to MessageStore 2021-04-07 20:23:54 +02:00
cketti
102fbc690f Move code to get highest message UID from K9BackendFolder to MessageStore 2021-04-07 20:23:52 +02:00
cketti
2e6b5710be Move code to retrieve folder details from K9BackendFolder to MessageStore 2021-04-07 17:21:40 +02:00
cketti
6373d0249f Move delete folder code from K9BackendStorage to MessageStore 2021-04-06 22:17:38 +02:00
cketti
59b8ead290 Move create/update folder code from K9BackendStorage to MessageStore 2021-04-03 18:35:29 +02:00
cketti
9932ed3b68 Move "extra values" code from K9BackendStorage to MessageStore 2021-04-03 17:48:43 +02:00
cketti
3dd7d1b6d8 Start using MessageStore in K9BackendStorage 2021-04-03 17:12:01 +02:00
cketti
035c853047 Remove unused dependency from FolderRepository 2021-04-03 02:34:57 +02:00
cketti
9c257685a3 Move more code from FolderRepository to MessageStore 2021-04-03 02:32:13 +02:00
cketti
e2bc68e0ac Move FolderRepository.updateFolderDetails() to MessageStore.updateFolderSettings() 2021-04-03 00:23:11 +02:00
cketti
796d22a132 Move FolderRepository.getFolderId() to MessageStore 2021-04-02 06:12:09 +02:00
cketti
392ae3eb3c Move FolderRepository.getDisplayFolders() to MessageStore 2021-04-02 05:52:57 +02:00
cketti
05543214e5 Move more code from FolderRepository to MessageStore 2021-04-02 01:26:12 +02:00
cketti
0250736cf5 Move code to read a single folder from FolderRepository to MessageStore 2021-04-02 00:27:02 +02:00
cketti
d5e43594c7
Merge pull request #5226 from k9mail/create_folders
Refactor LocalStore.createFolders()
2021-04-01 15:57:16 +02:00
cketti
8f67846813
Merge pull request #5224 from k9mail/MessageStore_getHeaders 2021-04-01 15:21:09 +02:00
cketti
1ee2c54f6d Refactor LocalStore.createFolders() 2021-04-01 02:45:33 +02:00
cketti
24f55ee03e Add test for RetrieveMessageOperations.getHeaders() 2021-04-01 01:32:46 +02:00
cketti
e76082568d Move code from MessageRepository to MessageStore 2021-03-31 23:03:46 +02:00
cketti
f0bb82e1a9 Remove unused code related to "latest old message seen time" 2021-03-31 18:09:25 +02:00
cketti
4748a5a190
Merge pull request #5223 from k9mail/refactor_LocalKeyStore 2021-03-31 15:42:49 +02:00
cketti
0e1ff7d6b1 Remove LocalKeyStore's dependency on Android's Context
And lazily initialize the KeyStore so we're not doing any work when the instance is created.
2021-03-30 22:08:06 +02:00
cketti
bb1c9c32be Convert 'LocalKeyStore' to Kotlin 2021-03-30 22:06:12 +02:00
cketti
e745f55413 Add tests for MessageStoreManager 2021-03-30 16:27:37 +02:00
cketti
cc65f72d66 Make 'MessageStoreManager' listen for account deletions 2021-03-30 16:27:37 +02:00
cketti
e8d9dae3fa Rename 'MessageStoreProvider' to 'MessageStoreManager' 2021-03-30 16:27:37 +02:00
cketti
2b6be48205 Add listener to be notified when an Account has been deleted 2021-03-30 16:27:37 +02:00
cketti
d3e2c6635c Add 'SettingsChangeListener' mechanism to 'Preferences' 2021-03-24 17:18:16 +01:00
cketti
827ea0059d Make everyone use Preferences.saveSettings() to save general settings 2021-03-24 17:08:17 +01:00
cketti
dc93335100 Move old migration code from 'K9' to storage module 2021-03-24 16:28:07 +01:00
cketti
fb426b4008 Remove migration code for really old K-9 Mail versions 2021-03-24 16:04:53 +01:00
cketti
9ee8746255 Move some code from 'Preferences' to 'AccountRemover' 2021-03-24 15:48:30 +01:00
cketti
370481236a Convert 'Preferences' to Kotlin 2021-03-22 22:57:33 +01:00
cketti
2ddf38e666 Rename .java to .kt 2021-03-22 22:29:04 +01:00
cketti
e642ff2896 Remove Kotlin Android extensions plugin
See https://youtrack.jetbrains.com/issue/KT-42121
2021-03-02 17:58:20 +01:00
cketti
3cd28c5b2c
Merge pull request #5152 from ByteHamster/message-header-view
Show message headers in fragment
2021-02-23 14:25:10 +01:00
cketti
2630b2a395 Add 'MessageRepository' 2021-02-20 13:28:15 +01:00
cketti
06de64cd2c Make MessageHeaderParser more flexible 2021-02-20 13:28:15 +01:00
cketti
b4f9ea29d8 Add Malayalam translation 2021-02-19 14:17:38 +01:00
cketti
1fb8c0be14
Merge pull request #5147 from k9mail/update_translations
Update translations
2021-02-16 17:13:47 +01:00
cketti
17f447705e Update translations
Add languages: be, en_GB
2021-02-16 15:26:31 +01:00
cketti
705a02f72b Get rid of Account.isEnabled()
We no longer have the concept of disabled accounts.
2021-02-16 00:28:01 +01:00
Ody-sseus
b48ad28743 Fix MessageCompose activity enabled status 2021-02-14 22:49:32 +02:00
cketti
ddabe3a238 Rewrite stored value from "hideSpecialAccounts" to "showUnifiedInbox" 2021-02-07 15:45:14 +01:00
cketti
a3e0b89f01 Rename K9.isHideSpecialAccounts to K9.isShowUnifiedInbox 2021-02-07 13:15:53 +01:00
cketti
08d6d9bebc Delete remaining store/transport URI functionality 2021-02-01 17:30:21 +01:00
cketti
696901f9c1 Use JSON as serialization format for 'ServerSettings' 2021-02-01 17:30:21 +01:00
cketti
de2560b90b Remove Account.storeUri and Account.transportUri
The URIs are still used as serialization format when saving settings
2021-02-01 12:54:02 +01:00
cketti
69ed32ff8a Convert 'ServerSettings' to Kotlin 2021-02-01 10:39:19 +01:00
cketti
1ebc487b56 Don't use custom ServerSettings subclass in SettingsImporter 2021-01-31 18:50:14 +01:00
cketti
71e2d24fbb Refresh the folder list when checking the account 2021-01-27 08:04:23 +01:00
MonkeyMatt
835c2200c9 Change default so existing accounts continue to work
Ensure accounts made before the setup changes don't get deleted
2020-12-29 13:46:33 +13:00
MonkeyMatt
d6d3fb884e Add setup finished flag on account
Relying on account name caused faults when exiting setup flow at the last step
2020-12-29 13:12:29 +13:00
MonkeyMatt
ee6d7afc75 Allow back navigation through setup screens
Fixes setup flow and ensures an account is fully setup before being usable
2020-12-28 17:39:30 +13:00
cketti
011ac576a2 Remove MessageListFragment.context 2020-11-06 14:58:21 +01:00
cketti
760875bb8e Don't crash when special local folders already exist 2020-11-01 14:44:43 +01:00
cketti
2a6b242d40
Merge pull request #5024 from k9mail/improve_outbox
Improve Outbox
2020-10-24 16:52:35 +02:00
cketti
fcedb37035 Update folder list when moving message from Outbox to Drafts 2020-10-22 19:28:47 +02:00
cketti
a36ea7a1a3 When creating messages for sending mark them as read 2020-10-22 18:24:07 +02:00
cketti
741bbe9ca8 Show number of messages in Outbox in side drawer 2020-10-22 16:57:31 +02:00
cketti
bea08ccb68 Remove EolConvertingEditText 2020-10-22 03:01:19 +02:00
cketti
2b81618ad9 Remove unused constructor parameter from 'MessagingController' 2020-10-20 03:49:45 +02:00
cketti
da728ae456 Fix logging the name of pending commands 2020-10-20 03:49:45 +02:00
cketti
d5ae39565b Remove unused parameter 2020-10-20 03:45:06 +02:00
cketti
09eb2561e9 Rename 'MessagesStoreProvider' to 'MessageStoreProvider' 2020-10-19 09:58:05 +02:00
cketti
f11b170a42 Make MessagingController.saveDraft() return message database ID 2020-10-19 09:25:56 +02:00
cketti
54e5d8af9c Change the way we replace drafts on the server
Don't overwrite the previous draft in the database. Create a new message entry and convert the previous one to a 'deleted' placeholder.
This also introduces a new pending command 'replace'. It is implemented as upload + delete.
2020-10-19 09:25:56 +02:00
cketti
1ef1af8b0f Log stack trace when pending commands fail 2020-10-18 22:01:44 +02:00
cketti
45bf5d0aef Inline constant parameter value (we always upload drafts if possible) 2020-10-18 21:53:34 +02:00
cketti
36c9e799f1 Don't use magic value when draft message ID is missing 2020-10-18 21:53:34 +02:00
cketti
1fecd0b588 Convert code to save drafts to Kotlin 2020-10-18 21:53:34 +02: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
d2fd52e206 Manually fix up formatting of some raw strings 2020-10-16 12:54:30 +02:00
cketti
a2ac5b167e Change the way moving messages between folders in the database works
Previously, when moving a message, the entry in the `messages` table was rewritten to reference the destination folder. Then a "deleted" message entry was created referencing the source folder.
This commit changes the move code to create a new entry for the message in the destination folder and then changes the original message entry to be a "deleted" entry.
It's a first step towards being able to use a message's database ID instead of the server ID in "pending commands".

This also continues the project of moving database-related code to the `storage` module. There should now be enough scaffolding in place to make moving code from `LocalStore` and `LocalFolder` relatively painless.
2020-10-15 23:51:49 +02:00
cketti
3921f57906
Merge pull request #5005 from k9mail/fix_urls_in_drafts
Fix URLs in drafts
2020-10-13 04:10:58 +02:00
cketti
2a67408981 Fix URLs in drafts
When converting from HTML to plain text, if the link text is identical to the link URL, only output the URL.
2020-10-13 03:57:47 +02:00
cketti
1835b502b5
Merge pull request #5001 from k9mail/no_encoding_in_MimeHeader
No encoding in MimeHeader
2020-10-13 03:54:13 +02:00
cketti
e3178a5117
Merge pull request #5003 from k9mail/show_recipient_name
Show recipient name for all messages in Sent, Drafts, and Outbox folders
2020-10-13 03:41:10 +02:00
cketti
5bc7ac3901 When constructing new messages check header values 2020-10-13 03:29:20 +02:00
cketti
733624cfcf
Merge pull request #4998 from k9mail/fix_EmailSectionExtractor
Fix EmailSectionExtractor
2020-10-13 03:17:28 +02:00
cketti
5f05b8bb07 Show sender/recipient name in message list based on folder
The recipient name is shown for messages in the Sent, Drafts, and Outbox folders. For messages in all other folders the sender name is shown.
2020-10-12 01:48:36 +02:00
cketti
fac346009a Only pass encoded headers to MimeHeader
Remove code to encode header values from from MimeHeader.writeTo()
2020-10-11 02:28:36 +02:00
cketti
82f8a78e88 EmailSectionExtractor: Don't consider blank lines for indentation depth 2020-10-10 01:49:13 +02:00
cketti
955f556afa Fix EmailSectionExtractor to support empty quoted lines 2020-10-10 00:36:07 +02:00
cketti
ea7ca6e3d4 Make HTTP URL detection work with parentheses 2020-10-09 04:29:02 +02:00
cketti
b1d21dc27c Clean up 'HttpUriParser'
There shouldn't be any functional changes.
2020-10-09 02:33:11 +02:00
cketti
76e43a411d Convert 'HttpUriParser' to Kotlin 2020-10-09 00:52:18 +02:00
cketti
e4297b3a4c Rename 'HttpUriParser' prior to conversion to Kotlin 2020-10-09 00:37:51 +02:00
cketti
68405c91b4
Merge pull request #4991 from k9mail/signature_detection_fix
Fix bug in signature detection
2020-10-07 16:54:44 +02:00
cketti
1a58f4d4f0 Fix bug in signature detection
When SignatureWrapper detected a signature it would exclude the last character of the text. This lead to an exception being thrown when the signature ended with a URL and the HtmlModification instance for the URL would not be fully contained within the one for the signature.
2020-10-07 15:43:29 +02:00
cketti
5312c3d1ca Treat all whitespace as separator when detecting URIs 2020-10-06 22:39:04 +02:00
cketti
0c77513407
Merge pull request #4986 from k9mail/GH-4984_fix_preview_text_extraction
Fix preview text extraction
2020-10-06 16:11:40 +02:00
cketti
b8edb11eea
Merge pull request #4983 from k9mail/signature_display
De-emphasize signature when displaying text/plain part
2020-10-06 16:10:07 +02:00
cketti
e3b8855bdd Catch unexpected exceptions in MessagePreviewCreator 2020-10-06 15:15:19 +02:00
cketti
15ca949698 Make PreviewTextExtractor work with empty string 2020-10-06 15:11:02 +02:00
cketti
ca5a044247 De-emphasize signature when displaying text/plain part 2020-10-05 18:27:10 +02:00
cketti
7d6ca63cf2 Add support for nested HtmlModifications to TextToHtml 2020-10-05 18:13:55 +02:00
cketti
3133573139 Rewrite Share functionality in message view screen
The shared text now contains subject, date, sender, and recipients in addition to the message body text.
2020-10-05 05:38:54 +02:00
cketti
a1e9a521e3 Replace somewhat complex regular expression with code
Apparently the regular expression \n*(?:[^\n]+\n?)+:\n+$ is complex enough so matching takes the regex engine on Android forever on non-trivial inputs.
2020-10-03 02:28:48 +02:00
cketti
99ce09f19d Improve preview text extraction
Using 'EmailSectionExtractor' provides the necessary context to reliably detect quote headers, i.e. text like "On $date $sender wrote:". The regular expression previously used would remove almost any line ending with ":".
2020-10-03 02:28:48 +02:00
cketti
6a25709e09 Convert 'PreviewTextExtractorTest' to Kotlin 2020-09-30 03:00:20 +02:00
cketti
4c08c964e7 Rename 'PreviewTextExtractorTest' prior to conversion to Kotlin 2020-09-30 03:00:20 +02:00
cketti
bb4ed7a15c Convert 'PreviewTextExtractor' to Kotlin 2020-09-29 23:31:24 +02:00
cketti
ab4e0229dc Rename 'PreviewTextExtractor' prior to conversion to Kotlin 2020-09-29 23:22:15 +02:00
cketti
b82be6f374 Retain some attributes of <body> element during HTML sanitization 2020-09-20 18:01:00 +02:00
cketti
10ce58d603 Add <title> tag to allow list 2020-09-20 17:42:35 +02:00
cketti
ec34b96bfa Convert 'HtmlSanitizerTest' to Kotlin 2020-09-20 17:42:35 +02:00
cketti
796eabb705 Rename 'HtmlSanitizerTest' prior to conversion to Kotlin 2020-09-20 17:42:35 +02:00
cketti
fc45e059fc Update to targetSdkVersion 29 2020-09-20 01:29:50 +02:00
cketti
391d8e403c Use mocked QuoteDateFormatter in TextQuoteCreatorTest 2020-09-20 01:08:39 +02:00
cketti
fd9d6f8d95 Use default Locale in QuoteDateFormatter 2020-09-20 01:04:33 +02:00
cketti
2db24bec08 Change QuoteHelper into QuoteDateFormatter 2020-09-19 20:44:54 +02:00
cketti
075fb35cd9 Get rid of QuoteHelper.QUOTE_BUFFER_LENGTH 2020-09-19 19:51:13 +02:00
cketti
e79dacd126 Use buildString() helper in TextQuoteCreator 2020-09-19 19:27:56 +02:00
cketti
0c97e2a4e0 Update Robolectric to 4.4
Replace usage of classes from transitive dependencies that are no longer available.
2020-09-18 03:14:46 +02:00
cketti
3211e3942c Show image previews even when wrong MIME type is used
More precisely, show image preview when the MIME type is application/octet-stream and the file extension maps to a supported image MIME type.
2020-09-09 12:16:03 +02:00
cketti
fefe183d9a
Merge pull request #4921 from k9mail/decode_encrypted_subject
Decode encrypted subject
2020-08-25 17:31:56 +02:00
cketti
bdbd8d98b2 Decode encrypted subject 2020-08-25 17:15:00 +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
4a92388ed4 Refactor code for readability and consistency 2020-08-13 17:56:55 +02:00
Victor Frandsen
009050567d Don't show standard message actions for messages in the Outbox 2020-08-13 17:42:16 +02:00
cketti
28387c685e Add missing Koin definitions to TestApp 2020-08-13 17:04:12 +02:00
Tobias Preuss
4beee75b32 Use "isNotEmpty" convenience function. 2020-07-08 14:04:37 +02:00
Tobias Preuss
35b1d17244 Use property access syntax. 2020-07-08 14:00:23 +02:00
Tobias Preuss
9c6d08142a Infer type. 2020-07-08 13:58:23 +02:00
cketti
c71c6bc230 Automatically update folder list
Refresh list of folders before syncing an individual folder if the last time the folder list was refreshed was more than 30 minutes ago.
2020-06-26 23:56:07 +02:00
cketti
ccf9004090 Remove unused Contacts from MessagingController 2020-06-26 21:43:16 +02:00
cketti
7acab6cb33 Use injected Preferences instance in MessagingController 2020-06-26 21:42:53 +02:00