* feat(notification): ✨ Add notification removal feature
Implemented a new method `RemoveNotificationAsync` in the `INotificationBuilder` interface to allow the removal of toast notifications for specific emails identified by a unique ID.
This change enhances the notification management by ensuring that notifications can be cleared when emails are marked as read. The `NotificationBuilder` class has been updated to include logic for removing existing notifications and to use the unique ID as a tag for the toast notifications, facilitating their removal. Additionally, the `AppShellViewModel` has been modified to call this new method when an email is updated and marked as read.
This improvement aims to provide a better user experience by keeping the notification area relevant and up-to-date.
* feat(notification): ✨ Add MailReadStatusChanged event handling
Introduced a new event system for handling email read status changes. This includes the addition of a listener in `NotificationBuilder` that removes notifications when an email is marked as read.
• Added `MailReadStatusChanged` record to represent the event.
• Registered a listener in `NotificationBuilder` to handle notification removal.
• Removed the `OnMailUpdated` method from `AppShellViewModel`, delegating notification management to the new event system.
• Updated `MailService` to send `MailReadStatusChanged` events when emails are marked as read.
This change improves the communication between components and enhances the notification management system.
* refactor: Remove comments
* Little cleanup.
---------
Co-authored-by: Burak Kaan Köse <bkaankose@outlook.com>
* feat(preferences): ✨ Add email sync interval setting
Introduced a new property `EmailSyncIntervalMinutes` in the `IPreferencesService` interface to allow users to configure the email synchronization interval in minutes. This feature enhances user control over email sync behavior.
• Updated `resources.json` to include translations for the new setting.
• Implemented the logic for the new property in `PreferencesService.cs`, with a default value of 3 minutes.
• Added binding and UI support in `AppPreferencesPageViewModel.cs` and `AppPreferencesPage.xaml` to allow users to modify the sync interval.
• Integrated the new setting into `ServerContext.cs` to dynamically adjust the synchronization timer based on user preferences.
This change improves the user experience by providing customizable email synchronization settings.
* Minimum interval and added an icon.
* Proper SetProperty usage.
* Making sure the minimum sync interval is 1 in the ServerContext.
* Making sure the minimum is applied to first trigger of the sync timer.
---------
Co-authored-by: Burak Kaan Köse <bkaankose@outlook.com>