Skip to content

Commit

Permalink
Samples
Browse files Browse the repository at this point in the history
  • Loading branch information
aritchie committed Sep 30, 2024
1 parent f4413e1 commit 700dcb1
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 16 deletions.
4 changes: 4 additions & 0 deletions samples/Sample/TriggerPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,9 @@
<TextCell Text="Request"
Command="{Binding OfflineCommand}" />

<TextCell Text="Timestamp"
Detail="{Binding OfflineTimestamp}" />

<TextCell Text="Value"
Detail="{Binding OfflineValue}" />
</TableSection>
Expand All @@ -44,6 +47,7 @@
<TextCell Text="Clear" Command="{Binding CacheClearCommand}" />
<TextCell Text="Request" Command="{Binding CacheRequestCommand}" />
<TextCell Text="Value" Detail="{Binding CacheValue}" />
<TextCell Text="Timestamp" Detail="{Binding CacheTimestamp}" />
<!-- <SwitchCell Text="Force Refresh" On="{Binding CacheForceRefresh}" /> -->
<TextCell Text="Cache has a 20s expiry time" />
</TableSection>
Expand Down
26 changes: 20 additions & 6 deletions samples/Sample/TriggerViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,11 +38,19 @@ Task PrismNav()

[ObservableProperty] string prismNavArg;


[RelayCommand]
async Task Offline() => this.OfflineValue = await mediator.Request(new OfflineRequest());
async Task Offline()
{
var context = await mediator.RequestWithContext(new OfflineRequest());
this.OfflineValue = context.Result;
this.OfflineTimestamp = context.Context.Offline()?.Timestamp;
}

[ObservableProperty] string offlineValue;
[ObservableProperty] DateTimeOffset? offlineTimestamp;


[RelayCommand]
Task ErrorTrap() => mediator.Send(new ErrorRequest());

Expand Down Expand Up @@ -90,18 +98,24 @@ async Task HttpRequest()
}
}

[RelayCommand]
async Task CacheRequest()
=> this.CacheValue = await mediator.Request(new CacheRequest());


[RelayCommand]
async Task CacheRequest()
{
var context = await mediator.RequestWithContext(new CacheRequest());
this.CacheValue = context.Result;
this.CacheTimestamp = context.Context.Cache()?.Timestamp;
}


[RelayCommand]
async Task CacheClear()
{
cache.Clear();
await dialogs.DisplayAlertAsync("Cache Cleared", "DONE", "Ok");
}
[ObservableProperty] string cacheValue;
[ObservableProperty] DateTimeOffset? cacheTimestamp;
[ObservableProperty] string lastRefreshTimerValue;

[RelayCommand]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,11 @@ public static class AppSupportExecutionContextExtensions

internal static void UserErrorNotification(this ExecutionContext context, UserErrorNotificationContext info)
=> context.Add(nameof(UserErrorNotification), info);


public static OfflineAvailableContext? Offline(this ExecutionContext context)
=> context.TryGetValue<OfflineAvailableContext>("Offline");

internal static void Offline(this ExecutionContext context, OfflineAvailableContext offlineContext)
=> context.Add("Offline", offlineContext);
}
11 changes: 1 addition & 10 deletions src/Shiny.Mediator.AppSupport/OfflineAvailableModels.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,4 @@ public record OfflineAvailableFlushRequest : IRequest;
public record OfflineAvailableContext(
string RequestKey,
DateTimeOffset Timestamp
);

public static class OfflineExtensions
{
public static OfflineAvailableContext? Offline(this ExecutionContext context)
=> context.TryGetValue<OfflineAvailableContext>("Offline");

internal static void Offline(this ExecutionContext context, OfflineAvailableContext offlineContext)
=> context.Add("Offline", offlineContext);
}
);

0 comments on commit 700dcb1

Please sign in to comment.