Skip to content

Commit

Permalink
Update to Blazor 3.0.0-preview6 (#35)
Browse files Browse the repository at this point in the history
* Update to Blazor 3.0.0-preview6

- Update global.json to reflect the updated sdk version
- Replace Json.Deserialize by JsonSerializer.Parse in class HubConnection
- Add this. where missing in class HubConnection
- Replace onclick and bind attributes in test razor pages by @OnClick and @Bind
- Replace @functions by @code in test razor files
- Remove UseSignalR and UseBlazor from test Server Startup class Configure method
- Add UseAuthorization to Startup class
- Comment out AddMessagePackProtocol and uncommented AddJsonProtocol in Startup class
- Comment out AddMessagePackProtocol in ChatComponent class

* Update .vsts-ci.yml and .vsts-release.yml to use the .NET Core Preview 6 SDK.
  • Loading branch information
theprateik authored and galvesribeiro committed Jul 3, 2019
1 parent 9e9923a commit df584ca
Show file tree
Hide file tree
Showing 11 changed files with 103 additions and 103 deletions.
2 changes: 1 addition & 1 deletion .vsts-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ steps:
- task: DotNetCoreInstaller@0
inputs:
packageType: 'sdk'
version: '3.0.100-preview4-011223'
version: '3.0.100-preview6-012264'

- task: DotNetCoreCLI@2
inputs:
Expand Down
2 changes: 1 addition & 1 deletion .vsts-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ steps:
- task: DotNetCoreInstaller@0
inputs:
packageType: 'sdk'
version: '3.0.100-preview4-011223'
version: '3.0.100-preview6-012264'

- task: DotNetCoreCLI@2
inputs:
Expand Down
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "3.0.100-preview4-011223"
"version": "3.0.100-preview6-012264"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.Browser" Version="3.0.0-preview4-19216-03" />
<PackageReference Include="Microsoft.AspNetCore.Components.Browser" Version="3.0.0-preview6.19307.2" />
</ItemGroup>

<ItemGroup>
Expand Down
79 changes: 40 additions & 39 deletions src/Blazor.Extensions.SignalR/HubConnection.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
using Microsoft.JSInterop;
using System;
using System.Collections.Generic;
using System.Text.Json.Serialization;
using System.Threading.Tasks;

namespace Blazor.Extensions
Expand All @@ -20,63 +21,63 @@ public class HubConnection : IDisposable
internal HttpConnectionOptions Options { get; }
internal string InternalConnectionId { get; }

private Dictionary<string, Dictionary<string, HubMethodCallback>> _callbacks = new Dictionary<string, Dictionary<string, HubMethodCallback>>();
private Dictionary<string, Dictionary<string, HubMethodCallback>> callbacks = new Dictionary<string, Dictionary<string, HubMethodCallback>>();

private HubCloseCallback _closeCallback;
private IJSRuntime _runtime;
private HubCloseCallback closeCallback;
private IJSRuntime runtime;

public HubConnection(IJSRuntime runtime, HttpConnectionOptions options)
{
this._runtime = runtime;
this.runtime = runtime;
this.Options = options;
this.InternalConnectionId = Guid.NewGuid().ToString();
runtime.InvokeSync<object>(CREATE_CONNECTION_METHOD,
this.InternalConnectionId,
new DotNetObjectRef(this.Options));
DotNetObjectRef.Create(this.Options));
}


public Task StartAsync() => this._runtime.InvokeAsync<object>(START_CONNECTION_METHOD, this.InternalConnectionId);
public Task StopAsync() => this._runtime.InvokeAsync<object>(STOP_CONNECTION_METHOD, this.InternalConnectionId);
public Task StartAsync() => this.runtime.InvokeAsync<object>(START_CONNECTION_METHOD, this.InternalConnectionId);
public Task StopAsync() => this.runtime.InvokeAsync<object>(STOP_CONNECTION_METHOD, this.InternalConnectionId);

public IDisposable On<TResult1>(string methodName, Func<TResult1, Task> handler)
=> On<TResult1, object, object, object, object, object, object, object, object, object>(methodName,
=> this.On<TResult1, object, object, object, object, object, object, object, object, object>(methodName,
(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => handler(t1));

public IDisposable On<TResult1, TResult2>(string methodName, Func<TResult1, TResult2, Task> handler)
=> On<TResult1, TResult2, object, object, object, object, object, object, object, object>(methodName,
=> this.On<TResult1, TResult2, object, object, object, object, object, object, object, object>(methodName,
(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => handler(t1, t2));

public IDisposable On<TResult1, TResult2, TResult3>(string methodName, Func<TResult1, TResult2, TResult3, Task> handler)
=> On<TResult1, TResult2, TResult3, object, object, object, object, object, object, object>(methodName,
=> this.On<TResult1, TResult2, TResult3, object, object, object, object, object, object, object>(methodName,
(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => handler(t1, t2, t3));

public IDisposable On<TResult1, TResult2, TResult3, TResult4>(string methodName, Func<TResult1, TResult2, TResult3, TResult4, Task> handler)
=> On<TResult1, TResult2, TResult3, TResult4, object, object, object, object, object, object>(methodName,
=> this.On<TResult1, TResult2, TResult3, TResult4, object, object, object, object, object, object>(methodName,
(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => handler(t1, t2, t3, t4));

public IDisposable On<TResult1, TResult2, TResult3, TResult4, TResult5>(string methodName, Func<TResult1, TResult2, TResult3, TResult4, TResult5, Task> handler)
=> On<TResult1, TResult2, TResult3, TResult4, TResult5, object, object, object, object, object>(methodName,
=> this.On<TResult1, TResult2, TResult3, TResult4, TResult5, object, object, object, object, object>(methodName,
(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => handler(t1, t2, t3, t4, t5));

public IDisposable On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6>(string methodName,
Func<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, Task> handler)
=> On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, object, object, object, object>(methodName,
=> this.On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, object, object, object, object>(methodName,
(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => handler(t1, t2, t3, t4, t5, t6));

public IDisposable On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7>(string methodName,
Func<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, Task> handler)
=> On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, object, object, object>(methodName,
=> this.On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, object, object, object>(methodName,
(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => handler(t1, t2, t3, t4, t5, t6, t7));

public IDisposable On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, TResult8>(string methodName,
Func<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, TResult8, Task> handler)
=> On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, TResult8, object, object>(methodName,
=> this.On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, TResult8, object, object>(methodName,
(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => handler(t1, t2, t3, t4, t5, t6, t7, t8));

public IDisposable On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, TResult8, TResult9>(string methodName,
Func<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, TResult8, TResult9, Task> handler)
=> On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, TResult8, TResult9, object>(methodName,
=> this.On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, TResult8, TResult9, object>(methodName,
(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10) => handler(t1, t2, t3, t4, t5, t6, t7, t8, t9));

public IDisposable On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6, TResult7, TResult8, TResult9, TResult10>(string methodName,
Expand All @@ -103,103 +104,103 @@ public IDisposable On<TResult1, TResult2, TResult3, TResult4, TResult5, TResult6

if (payloads.Length > 0)
{
t1 = Json.Deserialize<TResult1>(payloads[0]);
t1 = JsonSerializer.Parse<TResult1>(payloads[0]);
}
if (payloads.Length > 1)
{
t2 = Json.Deserialize<TResult2>(payloads[1]);
t2 = JsonSerializer.Parse<TResult2>(payloads[1]);
}
if (payloads.Length > 2)
{
t3 = Json.Deserialize<TResult3>(payloads[2]);
t3 = JsonSerializer.Parse<TResult3>(payloads[2]);
}
if (payloads.Length > 3)
{
t4 = Json.Deserialize<TResult4>(payloads[3]);
t4 = JsonSerializer.Parse<TResult4>(payloads[3]);
}
if (payloads.Length > 4)
{
t5 = Json.Deserialize<TResult5>(payloads[4]);
t5 = JsonSerializer.Parse<TResult5>(payloads[4]);
}
if (payloads.Length > 5)
{
t6 = Json.Deserialize<TResult6>(payloads[5]);
t6 = JsonSerializer.Parse<TResult6>(payloads[5]);
}
if (payloads.Length > 6)
{
t7 = Json.Deserialize<TResult7>(payloads[6]);
t7 = JsonSerializer.Parse<TResult7>(payloads[6]);
}
if (payloads.Length > 7)
{
t8 = Json.Deserialize<TResult8>(payloads[7]);
t8 = JsonSerializer.Parse<TResult8>(payloads[7]);
}
if (payloads.Length > 8)
{
t9 = Json.Deserialize<TResult9>(payloads[8]);
t9 = JsonSerializer.Parse<TResult9>(payloads[8]);
}
if (payloads.Length > 9)
{
t10 = Json.Deserialize<TResult10>(payloads[9]);
t10 = JsonSerializer.Parse<TResult10>(payloads[9]);
}

return handler(t1, t2, t3, t4, t5, t6, t7, t8, t9, t10);
}
);

RegisterHandle(methodName, callback);
this.RegisterHandle(methodName, callback);

return callback;
}

internal void RegisterHandle(string methodName, HubMethodCallback callback)
{
if (this._callbacks.TryGetValue(methodName, out var methodHandlers))
if (this.callbacks.TryGetValue(methodName, out var methodHandlers))
{
methodHandlers[callback.Id] = callback;
}
else
{
this._callbacks[methodName] = new Dictionary<string, HubMethodCallback>
this.callbacks[methodName] = new Dictionary<string, HubMethodCallback>
{
{ callback.Id, callback }
};
}

this._runtime.InvokeSync<object>(ON_METHOD, this.InternalConnectionId, new DotNetObjectRef(callback));
this.runtime.InvokeSync<object>(ON_METHOD, this.InternalConnectionId, DotNetObjectRef.Create(callback));
}

internal void RemoveHandle(string methodName, string callbackId)
{
if (this._callbacks.TryGetValue(methodName, out var callbacks))
if (this.callbacks.TryGetValue(methodName, out var callbacks))
{
if (callbacks.TryGetValue(callbackId, out var callback))
{
this._runtime.InvokeSync<object>(OFF_METHOD, this.InternalConnectionId, methodName, callbackId);
this.runtime.InvokeSync<object>(OFF_METHOD, this.InternalConnectionId, methodName, callbackId);
//HubConnectionManager.Off(this.InternalConnectionId, handle.Item1);
callbacks.Remove(callbackId);

if (callbacks.Count == 0)
{
this._callbacks.Remove(methodName);
this.callbacks.Remove(methodName);
}
}
}
}

public void OnClose(Func<Exception, Task> callback)
{
this._closeCallback = new HubCloseCallback(callback);
this._runtime.InvokeSync<object>(ON_CLOSE_METHOD,
this.closeCallback = new HubCloseCallback(callback);
this.runtime.InvokeSync<object>(ON_CLOSE_METHOD,
this.InternalConnectionId,
new DotNetObjectRef(this._closeCallback));
DotNetObjectRef.Create(this.closeCallback));
}

public Task InvokeAsync(string methodName, params object[] args) =>
this._runtime.InvokeAsync<object>(INVOKE_ASYNC_METHOD, this.InternalConnectionId, methodName, args);
this.runtime.InvokeAsync<object>(INVOKE_ASYNC_METHOD, this.InternalConnectionId, methodName, args);

public Task<TResult> InvokeAsync<TResult>(string methodName, params object[] args) =>
this._runtime.InvokeAsync<TResult>(INVOKE_WITH_RESULT_ASYNC_METHOD, this.InternalConnectionId, methodName, args);
this.runtime.InvokeAsync<TResult>(INVOKE_WITH_RESULT_ASYNC_METHOD, this.InternalConnectionId, methodName, args);

public void Dispose() => this._runtime.InvokeSync<object>(REMOVE_CONNECTION_METHOD, this.InternalConnectionId);
public void Dispose() => this.runtime.InvokeSync<object>(REMOVE_CONNECTION_METHOD, this.InternalConnectionId);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
<RazorLangVersion>3.0</RazorLangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Blazor" Version="3.0.0-preview4-19216-03" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="3.0.0-preview4-19216-03" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Blazor" Version="3.0.0-preview6.19307.2" />
<PackageReference Include="Microsoft.AspNetCore.Blazor.Build" Version="3.0.0-preview6.19307.2" PrivateAssets="all" />
</ItemGroup>

<ItemGroup>
Expand Down
36 changes: 18 additions & 18 deletions test/Blazor.Extensions.SignalR.Test.Client/Pages/Chat.razor
Original file line number Diff line number Diff line change
Expand Up @@ -5,68 +5,68 @@
<h4>Serialization Test</h4>
<form class="form-inline">
<div class="input-append">
<input type="button" class="btn" value="Gimme objects!" onclick=@TellHubToDoStuff />
<input type="button" class="btn" value="Gimme objects!" @onclick=@TellHubToDoStuff />

</div>
</form>

<h4>Multiple Arguments</h4>
<form class="form-inline">
<div class="input-append">
<input type="button" class="btn" value="Gimme multiple arguments!" onclick=@DoMultipleArgs />
<input type="button" class="btn" value="Gimme multiple arguments!" @onclick=@DoMultipleArgs />

</div>
</form>

<h4>Byte array Arguments</h4>
<form class="form-inline">
<div class="input-append">
<input type="button" class="btn" value="Gimme byte array arguments!" onclick=@DoByteArrayArg />
<input type="button" class="btn" value="Gimme byte array arguments!" @onclick=@DoByteArrayArg />

</div>
</form>

<h4>To Everybody</h4>
<form class="form-inline">
<div class="input-append">
<input type="text" id="message-text" placeholder="Type a message" bind=@_toEverybody />
<input type="button" id="broadcast" class="btn" value="Broadcast" onclick=@Broadcast />
<input type="button" id="broadcast-exceptme" class="btn" value="Broadcast (Others)" onclick=@SendToOthers />
<input type="text" id="message-text" placeholder="Type a message" @bind=@ToEverybody />
<input type="button" id="broadcast" class="btn" value="Broadcast" @onclick=@Broadcast />
<input type="button" id="broadcast-exceptme" class="btn" value="Broadcast (Others)" @onclick=@SendToOthers />
</div>
</form>

<h4>To Connection</h4>
<form class="form-inline">
<div class="input-prepend input-append">
<input type="text" name="connection-message" id="connection-message-text" placeholder="Type a message" bind=@_toConnection />
<input type="text" name="connection-id" id="connection-id" placeholder="Type a connection id" bind=@_connectionId />
<input type="button" id="connection-send" class="btn" value="Send to Connection" onclick=@SendToConnection />
<input type="text" name="connection-message" id="connection-message-text" placeholder="Type a message"@bind=@ToConnection />
<input type="text" name="connection-id" id="connection-id" placeholder="Type a connection id"@bind=@ConnectionId />
<input type="button" id="connection-send" class="btn" value="Send to Connection" @onclick=@SendToConnection />
</div>
</form>

<h4>To Me</h4>
<form class="form-inline">
<div class="input-append">
<input type="text" id="me-message-text" placeholder="Type a message" bind=@_toMe />
<input type="button" id="send" class="btn" value="Send to Me" onclick=@SendToMe />
<input type="text" id="me-message-text" placeholder="Type a message"@bind=@ToMe />
<input type="button" id="send" class="btn" value="Send to Me" @onclick=@SendToMe />
</div>
</form>

<h4>Group Actions</h4>
<form class="form-inline">
<div class="input-prepend input-append">
<input type="text" name="group-message" id="group-message-text" placeholder="Type a message" bind=@_toGroup />
<input type="text" name="group-name" id="group-name" placeholder="Type a group name" bind=@_groupName />
<input type="button" id="groupmsg" class="btn" value="Send to Group" onclick=@SendToGroup />
<input type="button" id="others-groupmsg" class="btn" value="Send to Others in Group" onclick=@SendToOthersInGroup />
<input type="button" id="join-group" class="btn" value="Join Group" onclick=@JoinGroup />
<input type="button" id="leave-group" class="btn" value="Leave Group" onclick=@LeaveGroup />
<input type="text" name="group-message" id="group-message-text" placeholder="Type a message"@bind=@ToGroup />
<input type="text" name="group-name" id="group-name" placeholder="Type a group name"@bind=@GroupName />
<input type="button" id="groupmsg" class="btn" value="Send to Group" @onclick=@SendToGroup />
<input type="button" id="others-groupmsg" class="btn" value="Send to Others in Group" @onclick=@SendToOthersInGroup />
<input type="button" id="join-group" class="btn" value="Join Group" @onclick=@JoinGroup />
<input type="button" id="leave-group" class="btn" value="Leave Group" @onclick=@LeaveGroup />

</div>
</form>

<ul id="message-list">
@foreach (var msg in _messages)
@foreach (var msg in Messages)
{
<li>@msg</li>
}
Expand Down
Loading

0 comments on commit df584ca

Please sign in to comment.