Files
Wino-Mail/Wino.Services/DatabaseService.cs

65 lines
1.8 KiB
C#
Raw Permalink Normal View History

using System.IO;
2024-04-18 01:44:37 +02:00
using System.Threading.Tasks;
using SQLite;
using Wino.Core.Domain.Entities.Calendar;
using Wino.Core.Domain.Entities.Mail;
using Wino.Core.Domain.Entities.Shared;
2024-04-18 01:44:37 +02:00
using Wino.Core.Domain.Interfaces;
2025-02-16 11:54:23 +01:00
namespace Wino.Services;
public interface IDatabaseService : IInitializeAsync
2024-04-18 01:44:37 +02:00
{
2025-02-16 11:54:23 +01:00
SQLiteAsyncConnection Connection { get; }
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public class DatabaseService : IDatabaseService
{
private const string DatabaseName = "Wino180.db";
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
private bool _isInitialized = false;
private readonly IApplicationConfiguration _folderConfiguration;
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public SQLiteAsyncConnection Connection { get; private set; }
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public DatabaseService(IApplicationConfiguration folderConfiguration)
{
_folderConfiguration = folderConfiguration;
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
public async Task InitializeAsync()
{
if (_isInitialized)
return;
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
var publisherCacheFolder = _folderConfiguration.PublisherSharedFolderPath;
var databaseFileName = Path.Combine(publisherCacheFolder, DatabaseName);
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
Connection = new SQLiteAsyncConnection(databaseFileName);
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
await CreateTablesAsync();
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
_isInitialized = true;
}
2024-04-18 01:44:37 +02:00
2025-02-16 11:54:23 +01:00
private async Task CreateTablesAsync()
{
await Connection.CreateTablesAsync(CreateFlags.None,
typeof(MailCopy),
typeof(MailItemFolder),
typeof(MailAccount),
typeof(AccountContact),
typeof(CustomServerInformation),
typeof(AccountSignature),
typeof(MergedInbox),
typeof(MailAccountPreferences),
typeof(MailAccountAlias),
typeof(AccountCalendar),
typeof(CalendarEventAttendee),
typeof(CalendarItem),
feat: Enhanced sender avatars with gravatar and favicons integration (#685) * feat: Enhanced sender avatars with gravatar and favicons integration * chore: Remove unused known companies thumbnails * feat(thumbnail): add IThumbnailService and refactor usage - Introduced a new interface `IThumbnailService` for handling thumbnail-related functionalities. - Registered `IThumbnailService` with its implementation `ThumbnailService` in the service container. - Updated `NotificationBuilder` to use an instance of `IThumbnailService` instead of static methods. - Refactored `ThumbnailService` from a static class to a regular class with instance methods and variables. - Modified `ImagePreviewControl` to utilize the new `IThumbnailService` instance. - Completed integration of `IThumbnailService` in the application by registering it in `App.xaml.cs`. * style: Show favicons as squares - Changed `hintCrop` in `NotificationBuilder` to `None` for app logo display. - Added `FaviconSquircle`, `FaviconImage`, and `isFavicon` to `ImagePreviewControl` for favicon handling. - Updated `UpdateInformation` method to manage favicon visibility. - Introduced `GetBitmapImageAsync` for converting Base64 to Bitmap images. - Enhanced XAML to include `FaviconSquircle` for improved UI appearance. * refactor thumbnail service * Removed old code and added clear method * added prefetch function * Change key from host to email * Remove redundant code * Test event * Fixed an issue with the thumbnail updated event. * Fix cutted favicons * exclude some domain from favicons * add yandex.ru * fix buttons in settings * remove prefetch method * Added thumbnails propagation to mailRenderingPage * Revert MailItemViewModel to object * Remove redundant code * spaces * await load parameter added * fix spaces * fix case sensativity for mail list thumbnails * change duckdns to google * Some cleanup. --------- Co-authored-by: Aleh Khantsevich <aleh.khantsevich@gmail.com> Co-authored-by: Burak Kaan Köse <bkaankose@outlook.com>
2025-06-21 01:40:25 +02:00
typeof(Reminder),
typeof(Thumbnail)
2025-02-16 11:54:23 +01:00
);
2024-04-18 01:44:37 +02:00
}
}