@@ -4,12 +4,15 @@ namespace PrompterOne.Shared.Pages;
44
55public partial class EditorPage
66{
7- private async Task PersistDraftAsync ( string text , string ? documentNameOverride = null )
7+ private async Task PersistDraftAsync (
8+ string text ,
9+ string ? documentNameOverride = null ,
10+ CancellationToken cancellationToken = default )
811 {
912 CancelDraftAnalysis ( ) ;
1013 CancelAutosave ( ) ;
1114 var revision = PrepareDraftPersistence ( text , documentNameOverride ) ;
12- await PersistPreparedDraftAsync ( revision , CancellationToken . None ) ;
15+ await PersistPreparedDraftAsync ( revision , cancellationToken ) ;
1316 }
1417
1518 private long PrepareDraftPersistence ( string text , string ? documentNameOverride = null )
@@ -20,12 +23,15 @@ private long PrepareDraftPersistence(string text, string? documentNameOverride =
2023 return checked ( ++ _draftRevision ) ;
2124 }
2225
23- private void PersistDraftInBackground ( string text , string ? documentNameOverride = null )
26+ private void PersistDraftInBackground (
27+ string text ,
28+ string ? documentNameOverride = null ,
29+ CancellationToken cancellationToken = default )
2430 {
2531 CancelDraftAnalysis ( ) ;
2632 CancelAutosave ( ) ;
2733 var revision = PrepareDraftPersistence ( text , documentNameOverride ) ;
28- _ = InvokeAsync ( ( ) => PersistPreparedDraftAsync ( revision , CancellationToken . None ) ) ;
34+ _ = InvokeAsync ( ( ) => PersistPreparedDraftAsync ( revision , cancellationToken ) ) ;
2935 }
3036
3137 private Task PersistPreparedDraftAsync ( long revision , CancellationToken cancellationToken ) =>
@@ -65,6 +71,8 @@ await SessionService.UpdateDraftAsync(
6571 await CaptureLocalRevisionAsync ( savedDocument , cancellationToken ) ;
6672 if ( assignScriptId )
6773 {
74+ cancellationToken . ThrowIfCancellationRequested ( ) ;
75+
6876 if ( revision != _draftRevision )
6977 {
7078 StageDraftIdentity ( savedDocument . Id , savedDocument . DocumentName ) ;
@@ -133,7 +141,7 @@ private async Task RunAutosaveAsync(CancellationToken cancellationToken)
133141 await InvokeAsync ( ( ) =>
134142 {
135143 _skipNextRenderFromTyping = false ;
136- return PersistDraftAsync ( _sourceText ) ;
144+ return PersistDraftAsync ( _sourceText , cancellationToken : cancellationToken ) ;
137145 } ) ;
138146 }
139147 catch ( OperationCanceledException )
0 commit comments