cleanup prep and leave call prep

This commit is contained in:
2026-04-09 16:53:29 -04:00
parent dad5de3d7f
commit dc37933fb8
2 changed files with 46 additions and 28 deletions

View File

@@ -249,6 +249,7 @@ public partial class MainPage : ContentPage
case "rtc_call_left":
{
SafeSendRawToWebView("RTC call left notification received.");
RtcLeaveCallback();
break;
}
}
@@ -416,6 +417,7 @@ public partial class MainPage : ContentPage
}
}
#region RTC Functions
public async Task<bool> JoinRtcChannel()
{
if (string.IsNullOrWhiteSpace(_currentChannelId))
@@ -530,23 +532,36 @@ public partial class MainPage : ContentPage
SafeSendRawToWebView("AnswerCallback failed: " + ex.Message);
}
}
private void OnSendMessageButtonClicked(object sender, EventArgs e)
{
SafeSendRawToWebView($"Hello from C#!");
}
private async void OnHybridWebViewRawMessageReceived(object sender, HybridWebViewRawMessageReceivedEventArgs e)
public async void RtcLeaveCallback()
{
if (e.Message == "rtc_page_ready")
try
{
await PushRtcContextToJsAsync();
return;
await hybridWebView.InvokeJavaScriptAsync("RtcLeaveCall", [], []);
}
catch (Exception ex)
{
SafeSendRawToWebView("RtcLeaveCallback failed: " + ex.Message);
}
await DisplayAlertAsync("Raw Message Received", e.Message, "OK");
}
private async Task SendRtcSignalToJsAsync(string rawJson)
{
var jsArg = JsonSerializer.Serialize(rawJson);
await hybridWebView.EvaluateJavaScriptAsync($"window.handleRtcSignal({jsArg})");
} //Remove?
private async Task PushRtcContextToJsAsync()
{
var usernameJson = JsonSerializer.Serialize(_username);
var channelIdJson = JsonSerializer.Serialize(_currentChannelId);
await hybridWebView.EvaluateJavaScriptAsync($"window.setUsername({usernameJson})");
await hybridWebView.EvaluateJavaScriptAsync($"window.setChannelId({channelIdJson})");
Console.WriteLine($"[{_username}] pushed RTC context into HybridWebView.");
} //Remove?
public void SendRtcSignal(string json)
{
if (string.IsNullOrWhiteSpace(_serverPublicKey))
@@ -584,23 +599,24 @@ public partial class MainPage : ContentPage
_wsc.Send(JsonSerializer.Serialize(payload));
Console.WriteLine($"[{_username}] sent RTC signal: {rtcSignal.Type} -> {rtcSignal.ChannelId}");
}
} //Remove?
private async Task SendRtcSignalToJsAsync(string rawJson)
{
var jsArg = JsonSerializer.Serialize(rawJson);
await hybridWebView.EvaluateJavaScriptAsync($"window.handleRtcSignal({jsArg})");
}
private async Task PushRtcContextToJsAsync()
#endregion
private void OnSendMessageButtonClicked(object sender, EventArgs e)
{
var usernameJson = JsonSerializer.Serialize(_username);
var channelIdJson = JsonSerializer.Serialize(_currentChannelId);
SafeSendRawToWebView($"Hello from C#!");
}
await hybridWebView.EvaluateJavaScriptAsync($"window.setUsername({usernameJson})");
await hybridWebView.EvaluateJavaScriptAsync($"window.setChannelId({channelIdJson})");
private async void OnHybridWebViewRawMessageReceived(object sender, HybridWebViewRawMessageReceivedEventArgs e)
{
if (e.Message == "rtc_page_ready")
{
await PushRtcContextToJsAsync();
return;
}
Console.WriteLine($"[{_username}] pushed RTC context into HybridWebView.");
await DisplayAlertAsync("Raw Message Received", e.Message, "OK");
}
private void SafeSendRawToWebView(string message)