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.iOS/Screens/LoginViewController.cs
2022-11-03 16:41:13 -04:00

112 lines
3.3 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for details.
using MyDriving.Utils;
using MyDriving.ViewModel;
using System;
using System.Threading.Tasks;
using UIKit;
namespace MyDriving.iOS
{
partial class LoginViewController : UIViewController
{
bool didAnimate;
LoginViewModel viewModel;
public LoginViewController(IntPtr handle) : base(handle)
{
}
public override void ViewDidLoad()
{
viewModel = new LoginViewModel();
//Prepare buttons for fade in animation.
btnFacebook.Alpha = 0;
btnTwitter.Alpha = 0;
btnMicrosoft.Alpha = 0;
btnSkipAuth.Alpha = 0;
btnSkipAuth.Layer.CornerRadius = 4;
btnSkipAuth.Layer.MasksToBounds = true;
#if DEBUG || XTC
btnSkipAuth.Hidden = false;
#else
btnSkipAuth.Hidden = true;
#endif
}
public override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
if (didAnimate)
return;
didAnimate = true;
btnFacebook.FadeIn(0.3, 0.3f);
btnTwitter.FadeIn(0.3, 0.5f);
btnMicrosoft.FadeIn(0.3, 0.7f);
btnSkipAuth.FadeIn(0.3, 0.9f);
}
async partial void BtnFacebook_TouchUpInside(UIButton sender)
{
await LoginAsync(LoginAccount.Facebook);
}
async partial void BtnTwitter_TouchUpInside(UIButton sender)
{
await LoginAsync(LoginAccount.Twitter);
}
async partial void BtnMicrosoft_TouchUpInside(UIButton sender)
{
await LoginAsync(LoginAccount.Microsoft);
}
async Task LoginAsync(LoginAccount account)
{
switch (account)
{
case LoginAccount.Facebook:
await viewModel.ExecuteLoginFacebookCommandAsync();
break;
case LoginAccount.Microsoft:
await viewModel.ExecuteLoginMicrosoftCommandAsync();
break;
case LoginAccount.Twitter:
await viewModel.ExecuteLoginTwitterCommandAsync();
break;
}
if (viewModel.IsLoggedIn)
{
//When the first screen of the app is launched after user has logged in, initialize the processor that manages connection to OBD Device and to the IOT Hub
Services.OBDDataProcessor.GetProcessor().Initialize(ViewModel.ViewModelBase.StoreManager);
NavigateToTabs();
}
}
partial void BtnSkipAuth_TouchUpInside(UIButton sender)
{
viewModel.InitFakeUser();
NavigateToTabs();
}
void NavigateToTabs()
{
InvokeOnMainThread(() =>
{
var app = (AppDelegate) UIApplication.SharedApplication.Delegate;
var viewController =
UIStoryboard.FromName("Main", null).InstantiateViewController("tabBarController") as
UITabBarController;
viewController.SelectedIndex = 1;
app.Window.RootViewController = viewController;
});
}
}
}