11using System . Diagnostics . CodeAnalysis ;
22using System . Text . Json ;
33using Drogecode . Blazor . ExpireStorage . Helpers ;
4- using Microsoft . AspNetCore . Components ;
54
65namespace Drogecode . Blazor . ExpireStorage ;
76
@@ -45,10 +44,12 @@ public ExpireStorageService(
4544 _sessionStorageExpireService = sessionStorageExpireService ;
4645 }
4746
47+
4848 public async Task < TRes ? > CachedRequestAsync < [ DynamicallyAccessedMembers ( DynamicallyAccessedMemberTypes . PublicParameterlessConstructor ) ] TRes > (
4949 string cacheKey ,
5050 Func < Task < TRes > > function ,
5151 CachedRequest ? request = null ,
52+ TRes ? defaultResponse = default ,
5253 CancellationToken clt = default )
5354 {
5455 request ??= new CachedRequest ( ) ;
@@ -59,7 +60,7 @@ public ExpireStorageService(
5960 cacheKey += $ "__{ Postfix } ";
6061 }
6162
62- if ( clt . IsCancellationRequested ) return default ;
63+ if ( clt . IsCancellationRequested ) return defaultResponse ;
6364 if ( request . CachedAndReplace && ! ( IsOffline && request . AlwaysCacheWhenOffline ) )
6465 {
6566 var requestCopy = request ;
@@ -114,7 +115,7 @@ public ExpireStorageService(
114115
115116 if ( request . IgnoreCache )
116117 {
117- return default ( TRes ) ;
118+ return defaultResponse ;
118119 }
119120
120121 try
@@ -145,7 +146,7 @@ public ExpireStorageService(
145146 {
146147 ConsoleHelper . WriteLine ( $ "Retry calling { cacheKey } ") ;
147148 request . RetryOnJsonException = false ;
148- return await CachedRequestAsync < TRes > ( cacheKey , function , request , clt ) ;
149+ return await CachedRequestAsync ( cacheKey , function , request , defaultResponse , clt ) ;
149150 }
150151
151152 ConsoleHelper . WriteLine ( $ "Will not retry { cacheKey } ") ;
@@ -155,7 +156,7 @@ public ExpireStorageService(
155156 ConsoleHelper . WriteLine ( ex ) ;
156157 }
157158
158- return default ( TRes ) ;
159+ return defaultResponse ;
159160 }
160161
161162 private async Task < TRes > RunSaveAndReturn < TRes > ( string cacheKey , Func < Task < TRes > > function , CachedRequest request , CancellationToken clt )
0 commit comments