Добавьте файлы проекта.

This commit is contained in:
Курнат Андрей
2026-03-13 21:01:04 +03:00
commit b460f17029
111 changed files with 5803 additions and 0 deletions

View File

@@ -0,0 +1,40 @@
using Android.Gms.Tasks;
namespace Massenger.Client;
internal static class AndroidTaskExtensions
{
public static Task<string?> AsStringAsync(this Android.Gms.Tasks.Task task, System.Threading.CancellationToken cancellationToken = default)
{
var taskCompletionSource = new TaskCompletionSource<string?>(TaskCreationOptions.RunContinuationsAsynchronously);
if (cancellationToken.CanBeCanceled)
{
cancellationToken.Register(() => taskCompletionSource.TrySetCanceled(cancellationToken));
}
task.AddOnCompleteListener(new TaskCompletionListener(taskCompletionSource));
return taskCompletionSource.Task;
}
private sealed class TaskCompletionListener(TaskCompletionSource<string?> taskCompletionSource)
: Java.Lang.Object,
IOnCompleteListener
{
public void OnComplete(Android.Gms.Tasks.Task task)
{
if (task.IsCanceled)
{
taskCompletionSource.TrySetCanceled();
return;
}
if (!task.IsSuccessful)
{
taskCompletionSource.TrySetException(new InvalidOperationException(task.Exception?.Message ?? "Android task failed."));
return;
}
taskCompletionSource.TrySetResult(task.Result?.ToString());
}
}
}