private void Authorise()
        {
            Pin pin;

            try
            {
                pin = Pin.CreateFrom(OneTimePin);
            }
            catch (Exception e)
            {
                base.ShowPopup(CustomPopupMessageType.Error, e.Message, AppResources.CustomPopupGenericOkMessage, null);
                return;
            }

            base.ShowHeaderLoader();
            OneTimePinTextBoxIsEnabled = false;

            Action authorise = async() =>
            {
                try
                {
                    cancellationTokenSource = new CancellationTokenSource();

                    user = await DrumbleApi.Authorise(cancellationTokenSource.Token, user, email, pin);

                    if (user.IsBumbleRegistered)
                    {
                        base.HideHeaderLoader();
                        OneTimePinTextBoxIsEnabled = true;

                        AuthoriseMessage.Send(user, Messages.Enums.AuthoriseMessageReason.Authorised);

                        NavigationService.GoBack();
                    }
                    else
                    {
                        // TODO error display something went wrong... but what?
                    }
                }
                catch (Exception e)
                {
                    base.HideHeaderLoader();
                    OneTimePinTextBoxIsEnabled = true;

                    base.ShowPopup(CustomPopupMessageType.Error, e.Message, AppResources.CustomPopupGenericOkMessage, null);
                }
            };

            DispatcherHelper.CheckBeginInvokeOnUI(authorise);
        }
        private void SetEmailDetails(AuthoriseMessage authoriseMessage)
        {
            switch (authoriseMessage.Reason)
            {
                case Messages.Enums.AuthoriseMessageReason.CanceledAuthorisation:

                    break;
                case Messages.Enums.AuthoriseMessageReason.Authorised:
                    user = authoriseMessage.User;

                    UnitOfWork.UserRepository.Update(user);
                    UnitOfWork.Save();

                    base.HideHeaderLoader();
                    EmailTextBoxIsEnabled = true;

                    NavigationService.NavigateTo("/Views/Profile.xaml");

                    break;
            }

        }
        private void SetEmailDetails(AuthoriseMessage authoriseMessage)
        {
            switch (authoriseMessage.Reason)
            {
            case Messages.Enums.AuthoriseMessageReason.CanceledAuthorisation:

                break;

            case Messages.Enums.AuthoriseMessageReason.Authorised:
                user = authoriseMessage.User;

                UnitOfWork.UserRepository.Update(user);
                UnitOfWork.Save();

                base.HideHeaderLoader();
                EmailTextBoxIsEnabled = true;

                NavigationService.NavigateTo("/Views/Profile.xaml");

                break;
            }
        }