Skip to content

Commit c615b88

Browse files
committed
fix: pending tasks
1 parent b1f3d88 commit c615b88

1 file changed

Lines changed: 36 additions & 8 deletions

File tree

TelegramDownloader/Services/TaskResumeService.cs

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ private async Task ResumeTasksAsync(CancellationToken cancellationToken)
108108
var persistence = scope.ServiceProvider.GetRequiredService<ITaskPersistenceService>();
109109
var fileService = scope.ServiceProvider.GetRequiredService<IFileService>();
110110
var transactionInfo = scope.ServiceProvider.GetRequiredService<TransactionInfoService>();
111+
var telegramService = scope.ServiceProvider.GetRequiredService<ITelegramService>();
111112

112113
_logger.LogInformation("ResumeTasksAsync - Services resolved. Persistence enabled: {Enabled}, FileService type: {Type}",
113114
persistence.IsEnabled, fileService.GetType().Name);
@@ -169,7 +170,7 @@ private async Task ResumeTasksAsync(CancellationToken cancellationToken)
169170

170171
try
171172
{
172-
await ResumeUpload(task, fileService, persistence, transactionInfo);
173+
await ResumeUpload(task, fileService, persistence, transactionInfo, telegramService);
173174
}
174175
catch (Exception ex)
175176
{
@@ -299,7 +300,8 @@ private async Task ResumeUpload(
299300
PersistedTaskModel task,
300301
IFileService fileService,
301302
ITaskPersistenceService persistence,
302-
TransactionInfoService transactionInfo)
303+
TransactionInfoService transactionInfo,
304+
ITelegramService telegramService)
303305
{
304306
_logger.LogInformation("Resuming upload: {Name} (uploads restart from beginning due to Telegram API limitation)",
305307
task.Name);
@@ -318,20 +320,46 @@ private async Task ResumeUpload(
318320
uploadModel.tis = transactionInfo;
319321
uploadModel._transmitted = 0; // Reset to 0
320322
uploadModel.progress = 0;
323+
uploadModel.state = StateTask.Pending;
324+
uploadModel.startDate = DateTime.Now;
321325

322326
// Set up persistence callback
323327
uploadModel.OnProgressPersist = async (transmitted, progress, state) =>
324328
{
325329
await persistence.UpdateProgress(task.InternalId, transmitted, progress, state);
326330
};
327331

328-
// For uploads, we need to re-queue them
329-
// This is a simplified version - full implementation would integrate with FileService
330-
_logger.LogInformation("Upload task {Name} will be restarted (Telegram doesn't support upload resume)",
331-
task.Name);
332+
_logger.LogInformation("Starting upload for {Name} to channel {ChannelId}", task.Name, task.ChannelId);
333+
334+
// Execute the upload asynchronously
335+
_ = Task.Run(async () =>
336+
{
337+
try
338+
{
339+
using var fileStream = new FileStream(task.SourcePath, FileMode.Open, FileAccess.Read, FileShare.Read);
340+
341+
_logger.LogInformation("Upload callback executing for: {Name}, Size: {Size} bytes",
342+
task.Name, fileStream.Length);
332343

333-
// Mark as pending to be picked up by user action or re-queue
334-
await persistence.UpdateProgress(task.InternalId, 0, 0, StateTask.Pending);
344+
var message = await telegramService.uploadFile(
345+
task.ChannelId,
346+
fileStream,
347+
task.Name,
348+
um: uploadModel);
349+
350+
_logger.LogInformation("Upload completed successfully for {Name}, MessageId: {MessageId}",
351+
task.Name, message?.id);
352+
353+
// Mark task as completed
354+
await persistence.MarkCompleted(task.InternalId);
355+
}
356+
catch (Exception ex)
357+
{
358+
_logger.LogError(ex, "Upload failed for {Name}: {Message}", task.Name, ex.Message);
359+
uploadModel.state = StateTask.Error;
360+
await persistence.MarkError(task.InternalId, ex.Message);
361+
}
362+
});
335363
}
336364

337365
private async Task ResumeBatchTask(

0 commit comments

Comments
 (0)