@@ -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