Skip to content

Commit 6c5339d

Browse files
committed
1.0.2 - First offline response was not from cache
1 parent cc1a0e0 commit 6c5339d

5 files changed

Lines changed: 18 additions & 5 deletions

File tree

Demo/ExpireStorage.Demo/ExpireStorage.Demo.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="Drogecode.Blazor.ExpireStorage" Version="1.0.1" />
13+
<PackageReference Include="Drogecode.Blazor.ExpireStorage" Version="1.0.2" />
1414
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="10.0.8" />
1515
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="10.0.8" PrivateAssets="all" />
1616
<PackageReference Include="MudBlazor" Version="9.4.0" />

Demo/ExpireStorage.Demo/Pages/Home.razor.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ private async Task Save()
3434
StateHasChanged();
3535
_cachedRequest.ExpireLocalStorage = DateTime.UtcNow.AddDays(_storageSettings.LocalStorageDaysInFuture);
3636
_cachedRequest.ExpireSession = DateTime.UtcNow.AddMinutes(_storageSettings.SessionStorageMinutesInFuture);
37+
_cachedRequest.RetryOnFreshOffline = true;
3738

3839
var value = await StorageService.CachedRequestAsync(_storageSettings.Key,
3940
async () => await FunctionToCall(),

Src/Drogecode.Blazor.ExpireStorage/Models/CachedRequest.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,4 +41,9 @@ public class CachedRequest
4141
/// Retry once on JsonException.
4242
/// </summary>
4343
public bool RetryOnJsonException { get; set; } = true;
44+
45+
/// <summary>
46+
/// Retry when this is the call that triggers the offline state.
47+
/// </summary>
48+
public bool RetryOnFreshOffline { get; set; } = true;
4449
}

Src/Drogecode.Blazor.ExpireStorage/Services/ExpireStorageService.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,14 @@ public ExpireStorageService(
112112
catch (HttpRequestException)
113113
{
114114
ConsoleHelper.WriteLine("HttpRequestException");
115+
var oldOffline = IsOffline;
115116
IsOffline = true;
117+
if (!oldOffline && request is { CacheWhenOffline: true, RetryOnFreshOffline: true }) // Only retry once
118+
{
119+
ConsoleHelper.WriteLine($"Retry calling offline {cacheKey}");
120+
request.RetryOnFreshOffline = false;
121+
return await CachedRequestAsync(cacheKey, function, request, defaultResponse, clt);
122+
}
116123
}
117124
catch (TaskCanceledException)
118125
{

Tests/Drogecode.Blazor.ExpireStorage.Tests/Drogecode.Blazor.ExpireStorage.Tests.csproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="AwesomeAssertions" Version="9.4.0" />
12-
<PackageReference Include="coverlet.collector" Version="10.0.0">
12+
<PackageReference Include="coverlet.collector" Version="10.0.1">
1313
<PrivateAssets>all</PrivateAssets>
1414
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
1515
</PackageReference>
16-
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="10.0.7" />
17-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.7" />
18-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.4.0" />
16+
<PackageReference Include="Microsoft.Extensions.Caching.Memory" Version="10.0.8" />
17+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="10.0.8" />
18+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="18.5.1" />
1919
<PackageReference Include="Xunit.DependencyInjection" Version="11.2.1" />
2020
<PackageReference Include="Xunit.DependencyInjection.Logging" Version="11.0.0" />
2121
<PackageReference Include="xunit.runner.visualstudio" Version="3.1.5">

0 commit comments

Comments
 (0)