Skip to content

Commit a121c22

Browse files
committed
Fixed MissedExtendableEvent resolve and reject method calls.
1 parent 9780747 commit a121c22

9 files changed

Lines changed: 116 additions & 17 deletions
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
namespace SpawnDev.BlazorJS.WebWorkers
2+
{
3+
/// <summary>
4+
/// An ExtendableEvent that was initially missed while Blazor was loading, but was held using waitUntil() so that Blazor can handle it.<br />
5+
/// Implementaors will be able to use the WaitResolve and WaitReject methods to resolve or reject the event.<br />
6+
/// </summary>
7+
public interface IMissedExtendableEvent
8+
{
9+
/// <summary>
10+
/// Resolves the ExtendableEvent.<br />
11+
/// </summary>
12+
void WaitResolve();
13+
/// <summary>
14+
/// Rejects the ExtendableEvent.<br />
15+
/// </summary>
16+
void WaitReject();
17+
}
18+
}
19+

SpawnDev.BlazorJS.WebWorkers/MissedExtendableEvent.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@
33

44
namespace SpawnDev.BlazorJS.WebWorkers
55
{
6-
internal class MissedExtendableEvent : ExtendableEvent
6+
/// <summary>
7+
/// An ExtendableEvent that was initially missed while Blazor was loading, but was held using waitUntil() so that Blazor can handle it.<br />
8+
/// </summary>
9+
internal class MissedExtendableEvent : ExtendableEvent, IMissedExtendableEvent
710
{
11+
///<inheritdoc/>
812
public MissedExtendableEvent(IJSInProcessObjectReference _ref) : base(_ref) { }
9-
public void WaitResolve() => JSRef.CallVoid("waitResolve");
10-
public void WaitReject() => JSRef.CallVoid("waitReject");
13+
///<inheritdoc/>
14+
public void WaitResolve() => JSRef!.CallVoid("waitResolve");
15+
///<inheritdoc/>
16+
public void WaitReject() => JSRef!.CallVoid("waitReject");
1117
}
1218
}
1319

SpawnDev.BlazorJS.WebWorkers/MissedExtendableMessageEvent.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@
33

44
namespace SpawnDev.BlazorJS.WebWorkers
55
{
6-
internal class MissedExtendableMessageEvent : ExtendableMessageEvent
6+
/// <summary>
7+
/// An Event that was initially missed while Blazor was loading, but was held using waitUntil() so that Blazor can handle it.<br />
8+
/// </summary>
9+
internal class MissedExtendableMessageEvent : ExtendableMessageEvent, IMissedExtendableEvent
710
{
11+
///<inheritdoc/>
812
public MissedExtendableMessageEvent(IJSInProcessObjectReference _ref) : base(_ref) { }
9-
public void WaitResolve() => JSRef.CallVoid("waitResolve");
10-
public void WaitReject() => JSRef.CallVoid("waitReject");
13+
///<inheritdoc/>
14+
public void WaitResolve() => JSRef!.CallVoid("waitResolve");
15+
///<inheritdoc/>
16+
public void WaitReject() => JSRef!.CallVoid("waitReject");
1117
}
1218
}
1319

SpawnDev.BlazorJS.WebWorkers/MissedFetchEvent.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,21 @@
33

44
namespace SpawnDev.BlazorJS.WebWorkers
55
{
6+
/// <summary>
7+
/// An Event that was initially missed while Blazor was loading, but was held using waitUntil() so that Blazor can handle it.<br />
8+
/// </summary>
69
internal class MissedFetchEvent : FetchEvent
710
{
11+
///<inheritdoc/>
812
public MissedFetchEvent(IJSInProcessObjectReference _ref) : base(_ref) { }
13+
/// <summary>
14+
/// Resolves the FetchEvent.<br />
15+
/// </summary>
16+
/// <param name="response"></param>
917
public void ResponseResolve(Response response) => JSRef!.CallVoid("responseResolve", response);
18+
/// <summary>
19+
/// Rejects the FetchEvent.<br />
20+
/// </summary>
1021
public void ResponseReject() => JSRef!.CallVoid("responseReject");
1122
}
1223
}

SpawnDev.BlazorJS.WebWorkers/MissedNotificationEvent.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@
33

44
namespace SpawnDev.BlazorJS.WebWorkers
55
{
6-
internal class MissedNotificationEvent : NotificationEvent
6+
/// <summary>
7+
/// An Event that was initially missed while Blazor was loading, but was held using waitUntil() so that Blazor can handle it.<br />
8+
/// </summary>
9+
internal class MissedNotificationEvent : NotificationEvent, IMissedExtendableEvent
710
{
11+
///<inheritdoc/>
812
public MissedNotificationEvent(IJSInProcessObjectReference _ref) : base(_ref) { }
9-
public void WaitResolve() => JSRef.CallVoid("waitResolve");
10-
public void WaitReject() => JSRef.CallVoid("waitReject");
13+
///<inheritdoc/>
14+
public void WaitResolve() => JSRef!.CallVoid("waitResolve");
15+
///<inheritdoc/>
16+
public void WaitReject() => JSRef!.CallVoid("waitReject");
1117
}
1218
}
1319

SpawnDev.BlazorJS.WebWorkers/MissedPushEvent.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,17 @@
33

44
namespace SpawnDev.BlazorJS.WebWorkers
55
{
6-
internal class MissedPushEvent : PushEvent
6+
/// <summary>
7+
/// An Event that was initially missed while Blazor was loading, but was held using waitUntil() so that Blazor can handle it.<br />
8+
/// </summary>
9+
internal class MissedPushEvent : PushEvent, IMissedExtendableEvent
710
{
11+
///<inheritdoc/>
812
public MissedPushEvent(IJSInProcessObjectReference _ref) : base(_ref) { }
9-
public void WaitResolve() => JSRef.CallVoid("waitResolve");
10-
public void WaitReject() => JSRef.CallVoid("waitReject");
13+
///<inheritdoc/>
14+
public void WaitResolve() => JSRef!.CallVoid("waitResolve");
15+
///<inheritdoc/>
16+
public void WaitReject() => JSRef!.CallVoid("waitReject");
1117
}
1218
}
1319

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using Microsoft.JSInterop;
2+
using SpawnDev.BlazorJS.JSObjects;
3+
4+
namespace SpawnDev.BlazorJS.WebWorkers
5+
{
6+
/// <summary>
7+
/// An Event that was initially missed while Blazor was loading, but was held using waitUntil() so that Blazor can handle it.<br />
8+
/// </summary>
9+
internal class MissedPushSubscriptionChangeEvent: PushSubscriptionChangeEvent, IMissedExtendableEvent
10+
{
11+
///<inheritdoc/>
12+
public MissedPushSubscriptionChangeEvent(IJSInProcessObjectReference _ref) : base(_ref) { }
13+
///<inheritdoc/>
14+
public void WaitResolve() => JSRef!.CallVoid("waitResolve");
15+
///<inheritdoc/>
16+
public void WaitReject() => JSRef!.CallVoid("waitReject");
17+
}
18+
}
19+

SpawnDev.BlazorJS.WebWorkers/MissedSyncEvent.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33

44
namespace SpawnDev.BlazorJS.WebWorkers
55
{
6-
internal class MissedSyncEvent : SyncEvent
6+
internal class MissedSyncEvent : SyncEvent, IMissedExtendableEvent
77
{
8+
///<inheritdoc/>
89
public MissedSyncEvent(IJSInProcessObjectReference _ref) : base(_ref) { }
9-
public void WaitResolve() => JSRef.CallVoid("waitResolve");
10-
public void WaitReject() => JSRef.CallVoid("waitReject");
10+
///<inheritdoc/>
11+
public void WaitResolve() => JSRef!.CallVoid("waitResolve");
12+
///<inheritdoc/>
13+
public void WaitReject() => JSRef!.CallVoid("waitReject");
1114
}
1215
}
1316

SpawnDev.BlazorJS.WebWorkers/ServiceWorkerEventHandler.cs

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ void GetMissedServiceWorkerEvents()
8282
ServiceWorker_OnPush(e.JSRefMove<MissedPushEvent>());
8383
break;
8484
case "pushsubscriptionchange":
85-
ServiceWorker_OnPushSubscriptionChange(e.JSRefMove<PushSubscriptionChangeEvent>());
85+
ServiceWorker_OnPushSubscriptionChange(e.JSRefMove<MissedPushSubscriptionChangeEvent>());
8686
break;
8787
case "sync":
8888
ServiceWorker_OnSync(e.JSRefMove<MissedSyncEvent>());
@@ -160,7 +160,7 @@ void ServiceWorker_OnNotificationClick(NotificationEvent e)
160160
/// <summary>
161161
/// Occurs when a push subscription has been invalidated, or is about to be invalidated (e.g. when a push service sets an expiration time).
162162
/// </summary>
163-
protected virtual void ServiceWorker_OnPushSubscriptionChange(PushSubscriptionChangeEvent e) { }
163+
protected virtual Task ServiceWorker_OnPushSubscriptionChangeAsync(PushSubscriptionChangeEvent e) => Task.CompletedTask;
164164
/// <summary>
165165
/// Triggered when a call to SyncManager.register is made from a service worker client page. The attempt to sync is made either immediately if the network is available or as soon as the network becomes available.
166166
/// </summary>
@@ -214,6 +214,29 @@ void ServiceWorker_OnInstall(ExtendableEvent e)
214214
e.WaitUntil(ServiceWorker_OnInstallAsync(e));
215215
}
216216
}
217+
void ServiceWorker_OnPushSubscriptionChange(PushSubscriptionChangeEvent e)
218+
{
219+
if (e is IMissedExtendableEvent missedEvent)
220+
{
221+
Async.Run(async () =>
222+
{
223+
try
224+
{
225+
await ServiceWorker_OnPushSubscriptionChangeAsync(e);
226+
missedEvent.WaitResolve();
227+
}
228+
catch (Exception ex)
229+
{
230+
Console.Error.WriteLine(ex.ToString());
231+
missedEvent.WaitReject();
232+
}
233+
});
234+
}
235+
else
236+
{
237+
e.WaitUntil(ServiceWorker_OnPushSubscriptionChangeAsync(e));
238+
}
239+
}
217240
void ServiceWorker_OnActivate(ExtendableEvent e)
218241
{
219242
if (e is MissedExtendableEvent missedEvent)

0 commit comments

Comments
 (0)