This repository has been archived on 2022-11-03. You can view files and clone it, but cannot push or open issues or pull requests.
DevOpsOpenHack/MobileApps/MyDriving/MyDriving.UWP/Helpers/Authentication.cs
2022-11-03 16:41:13 -04:00

66 lines
1.9 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for details.
using System;
using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.WindowsAzure.MobileServices;
using MyDriving.Utils;
using MyDriving.Utils.Interfaces;
using Windows.UI.Core;
namespace MyDriving.UWP.Helpers
{
public class Authentication : IAuthentication
{
public void ClearCookies()
{
}
public async Task<MobileServiceUser> LoginAsync(IMobileServiceClient client,
MobileServiceAuthenticationProvider provider)
{
var coreWindow = Windows.ApplicationModel.Core.CoreApplication.MainView;
// Dispatcher needed to run on UI Thread
var dispatcher = coreWindow.CoreWindow.Dispatcher;
MobileServiceUser user = null;
try
{
if (dispatcher.HasThreadAccess) //is running on UI thread
{
user = await client.LoginAsync(provider);
}
else
{
await dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
{
user = await client.LoginAsync(provider);
});
}
if (user != null)
{
Settings.Current.AuthToken = user?.MobileServiceAuthenticationToken ?? string.Empty;
Settings.Current.AzureMobileUserId = user?.UserId ?? string.Empty;
}
}
catch (Exception e)
{
if (!e.Message.Contains("cancelled"))
{
e.Data["method"] = "LoginAsync";
Logger.Instance.Report(e);
}
}
return user;
}
}
}