mirror of
https://github.com/Kareadita/Kavita.git
synced 2025-05-31 04:04:19 -04:00
* Code cleanup, refactored FileRepository into Unit of Work. * Added AutoCloseMenu and ReaderMode user perferences to match UI * Added extra information to ChapterInfo * Build changes * Updated the readme to have open collective information and thanks to sponsors * Fixed an issue with UnitOfWork refactor and how stats was bootsrapped. Replaced stats.kavitareader with a temp url to test out redirection bug.
54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
using System;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using API.Interfaces;
|
|
using API.Interfaces.Services;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
namespace API.Services.HostedServices
|
|
{
|
|
public class StartupTasksHostedService : IHostedService
|
|
{
|
|
private readonly IServiceProvider _provider;
|
|
|
|
public StartupTasksHostedService(IServiceProvider serviceProvider)
|
|
{
|
|
_provider = serviceProvider;
|
|
}
|
|
|
|
public async Task StartAsync(CancellationToken cancellationToken)
|
|
{
|
|
using var scope = _provider.CreateScope();
|
|
|
|
var taskScheduler = scope.ServiceProvider.GetRequiredService<ITaskScheduler>();
|
|
taskScheduler.ScheduleTasks();
|
|
|
|
try
|
|
{
|
|
await ManageStartupStatsTasks(scope, taskScheduler);
|
|
}
|
|
catch (Exception)
|
|
{
|
|
//If stats startup fail the user can keep using the app
|
|
}
|
|
}
|
|
|
|
private async Task ManageStartupStatsTasks(IServiceScope serviceScope, ITaskScheduler taskScheduler)
|
|
{
|
|
var unitOfWork = serviceScope.ServiceProvider.GetRequiredService<IUnitOfWork>();
|
|
|
|
var settingsDto = await unitOfWork.SettingsRepository.GetSettingsDtoAsync();
|
|
|
|
if (!settingsDto.AllowStatCollection) return;
|
|
|
|
taskScheduler.ScheduleStatsTasks();
|
|
|
|
var statsService = serviceScope.ServiceProvider.GetRequiredService<IStatsService>();
|
|
|
|
await statsService.CollectAndSendStatsData();
|
|
}
|
|
|
|
public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
|
|
}
|
|
} |