Skip to content

Commit eb1b4ea

Browse files
committed
Update OscQueryLib
1 parent 5b18c64 commit eb1b4ea

File tree

4 files changed

+34
-36
lines changed

4 files changed

+34
-36
lines changed

ShockOsc/Services/ShockOsc.cs

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
using System.Reactive.Subjects;
44
using LucHeart.CoreOSC;
55
using Microsoft.Extensions.Logging;
6+
using MudBlazor.Extensions;
67
using OpenShock.Desktop.ModuleBase.Api;
78
using OpenShock.Desktop.ModuleBase.Config;
89
using OpenShock.Desktop.ModuleBase.Models;
10+
using OpenShock.MinimalEvents;
911
using OpenShock.ShockOSC.Config;
1012
using OpenShock.ShockOSC.Models;
1113
using OpenShock.ShockOSC.Utils;
@@ -33,8 +35,8 @@ public sealed class ShockOsc
3335
private bool _isAfk;
3436
public string AvatarId = string.Empty;
3537
private readonly Random Random = new();
36-
37-
public event Func<Task>? OnGroupsChanged;
38+
39+
private readonly MinimalEvent _onGroupsChanged = new();
3840

3941
public static readonly string[] ShockerParams =
4042
{
@@ -81,14 +83,10 @@ public ShockOsc(ILogger<ShockOsc> logger,
8183
_chatboxService = chatboxService;
8284
_medalIcymiService = medalIcymiService;
8385

84-
OnGroupsChanged += () =>
85-
{
86-
SetupGroups();
87-
return Task.CompletedTask;
88-
};
86+
_onGroupsChanged.Subscribe(SetupGroups);
8987

90-
oscQueryServer.FoundVrcClient += FoundVrcClient;
91-
oscQueryServer.ParameterUpdate += OnAvatarChange;
88+
oscQueryServer.FoundVrcClient.SubscribeAsync(endPoint => SetupVrcClient((oscQueryServer, endPoint))).AsTask().Wait();
89+
oscQueryServer.ParameterUpdate.SubscribeAsync(OnAvatarChange).AsTask().Wait();
9290

9391
SetupGroups();
9492
}
@@ -109,19 +107,13 @@ private void SetupGroups()
109107
_dataLayer.ProgramGroups[id] = new ProgramGroup(id, group.Name, _oscClient, group);
110108
}
111109

112-
public Task RaiseOnGroupsChanged() => OnGroupsChanged.Raise();
113-
110+
public void RaiseOnGroupsChanged() => _onGroupsChanged.Invoke();
114111

115-
private Task FoundVrcClient(OscQueryServer arg1, IPEndPoint arg2)
116-
{
117-
return SetupVrcClient((arg1, arg2));
118-
}
119-
120112
private async Task SetupVrcClient((OscQueryServer, IPEndPoint)? client)
121113
{
122114
// stop tasks
123115
_oscServerActive = false;
124-
await Task.Delay(1000); // wait for tasks to stop
116+
await Task.Delay(1000); // wait for tasks to stop TODO: REWORK THIS
125117

126118
if (client != null)
127119
{
@@ -149,9 +141,10 @@ private async Task SetupVrcClient((OscQueryServer, IPEndPoint)? client)
149141
await _chatboxService.SendGenericMessage("Game Connected");
150142
}
151143

152-
private Task OnAvatarChange(Dictionary<string, object?> parameters, string avatarId)
144+
private Task OnAvatarChange(OscQueryServer.ParameterUpdateArgs parameterUpdateArgs)
153145
{
154-
AvatarId = avatarId;
146+
AvatarId = parameterUpdateArgs.AvatarId;
147+
var parameters = parameterUpdateArgs.Parameters;
155148
try
156149
{
157150
foreach (var obj in _dataLayer.ProgramGroups)
@@ -252,7 +245,7 @@ private async Task ReceiveLogic()
252245
case "/avatar/change":
253246
var avatarId = received.Arguments.ElementAtOrDefault(0);
254247
_logger.LogDebug("Avatar changed: {AvatarId}", avatarId);
255-
OsTask.Run(_oscQueryServer.GetParameters);
248+
OsTask.Run(_oscQueryServer.RefreshParameters);
256249
OsTask.Run(_underscoreConfig.SendUpdateForAll);
257250
return;
258251
case "/avatar/parameters/AFK":

ShockOsc/ShockOsc.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
<PackageReference Include="LucHeart.CoreOSC" Version="1.4.0" />
3636
<PackageReference Include="MeaMod.DNS" Version="1.0.71" />
3737
<PackageReference Include="OpenShock.Desktop.ModuleBase" Version="1.0.0-preview.1" />
38-
<PackageReference Include="OscQueryLibrary" Version="1.1.2" />
38+
<PackageReference Include="OscQueryLibrary" Version="1.2.0" />
3939
<PackageReference Include="SmartFormat.NET" Version="3.6.0" />
4040
<PackageReference Include="System.Reactive" Version="6.0.1" />
4141
</ItemGroup>

ShockOsc/Ui/Pages/Dash/Tabs/GroupsTab.razor

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
await InvokeAsync(StateHasChanged);
3838
ModuleConfig.SaveDeferred();
39-
await ShockOsc.RaiseOnGroupsChanged();
39+
ShockOsc.RaiseOnGroupsChanged();
4040
}
4141

4242
public async Task DeleteGroup()
@@ -47,13 +47,13 @@
4747
Group = null;
4848
await InvokeAsync(StateHasChanged);
4949
ModuleConfig.SaveDeferred();
50-
await ShockOsc.RaiseOnGroupsChanged();
50+
ShockOsc.RaiseOnGroupsChanged();
5151
}
5252

53-
private async Task OnSettingsValueChange()
53+
private void OnSettingsValueChange()
5454
{
5555
ModuleConfig.SaveDeferred();
56-
await ShockOsc.RaiseOnGroupsChanged();
56+
ShockOsc.RaiseOnGroupsChanged();
5757
}
5858

5959
private void OnGroupSettingsValueChange()

ShockOsc/Utils/OsTask.cs

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,21 @@ namespace OpenShock.ShockOSC.Utils;
77
public static class OsTask
88
{
99
private static readonly ILogger Logger = Log.ForContext(typeof(OsTask));
10-
10+
1111
public static Task Run(Func<Task?> function, CancellationToken token = default, [CallerFilePath] string file = "",
12-
[CallerMemberName] string member = "", [CallerLineNumber] int line = -1) => Task.Run(function, token).ContinueWith(
13-
t =>
14-
{
15-
if (!t.IsFaulted) return;
16-
var index = file.LastIndexOf('\\');
17-
if (index == -1) index = file.LastIndexOf('/');
18-
Logger.Error(t.Exception,
19-
"Error during task execution. {File}::{Member}:{Line}",
20-
file.Substring(index + 1, file.Length - index - 1), member, line);
21-
}, TaskContinuationOptions.OnlyOnFaulted);
12+
[CallerMemberName] string member = "", [CallerLineNumber] int line = -1)
13+
{
14+
var task = Task.Run(function, token);
15+
task.ContinueWith(
16+
t =>
17+
{
18+
if (!t.IsFaulted) return;
19+
var index = file.LastIndexOf('\\');
20+
if (index == -1) index = file.LastIndexOf('/');
21+
Logger.Error(t.Exception,
22+
"Error during task execution. {File}::{Member}:{Line}",
23+
file.Substring(index + 1, file.Length - index - 1), member, line);
24+
}, TaskContinuationOptions.OnlyOnFaulted);
25+
return task;
26+
}
2227
}

0 commit comments

Comments
 (0)