Exemple #1
0
        protected override async void OnStart()
        {
            DependencyResolver.Init();
            var navigationService = DependencyResolver.Resolve <INavigationService>();

            if (CrossConnectivity.Current.IsConnected)
            {
                var secureStorage = new SecureStorage();
                if (secureStorage.CheckUserStored())
                {
                    var user = await secureStorage.GetUser();

                    // user = null => setup probably interrupted
                    if (user != null)
                    {
                        // user needs to check address
                        UserService.SetCurrentUser(user);
                        this.MainPage = new NavigationPage(navigationService.LoggedInEntryPoint);
                    }
                    else
                    {
                        this.MainPage = new NavigationPage(navigationService.LoginEntryPoint);
                    }
                }
                else
                {
                    this.MainPage = new NavigationPage(navigationService.LoginEntryPoint);
                }
            }
            else
            {
                this.MainPage = new NavigationPage(new OfflinePage());
            }
        }
Exemple #2
0
        private async void TaskCompleted(BackgroundTaskRegistration sender, BackgroundTaskCompletedEventArgs args)
        {
            // Should be moved to the runtime component, but it's not possible to set a reference to Chiota
            var secureStorage = new SecureStorage();

            if (secureStorage.CheckUserStored())
            {
                var user = await secureStorage.GetUser();

                if (user != null)
                {
                    // request list is needed for information
                    var contactRequestList = await user.TangleMessenger.GetJsonMessageAsync <Contact>(user.RequestAddress, 3);

                    var contactsOnApproveAddress = await new SqLiteHelper().LoadContacts(user.PublicKeyAddress);

                    var approvedContacts =
                        contactRequestList.Intersect(contactsOnApproveAddress, new ChatAdressComparer()).ToList();

                    // currently no messages for contact request due to perfomance issues
                    foreach (var contact in approvedContacts.Where(c => !c.Rejected))
                    {
                        var encryptedMessages = await user.TangleMessenger.GetMessagesAsync(contact.ChatAddress);

                        if (encryptedMessages.Any(c => !c.Stored))
                        {
                            this.CreateNotification(contact);
                        }
                    }
                }
            }
        }
Exemple #3
0
        public App()
        {
            this.InitializeComponent();
            var secureStorage = new SecureStorage();

            if (secureStorage.CheckUserStored())
            {
                this.MainPage = new NavigationPage(new ContactPage(secureStorage.GetUser()));
            }
            else
            {
                this.MainPage = new NavigationPage(new LoginPage());
            }
        }
Exemple #4
0
        private async Task <bool> LookForNewNotifications()
        {
            if (CrossConnectivity.Current.IsConnected)
            {
                // seed needs to be stored on device!!
                var secureStorage = new SecureStorage();
                if (!secureStorage.CheckUserStored())
                {
                    return(true);
                }

                var user = await secureStorage.GetUser();

                if (user == null)
                {
                    return(true);
                }

                var interactor = DependencyResolver.Resolve <IUsecaseInteractor <GetContactsRequest, GetContactsResponse> >();
                var response   = await interactor.ExecuteAsync(
                    new GetContactsRequest
                {
                    ContactRequestAddress = new Address(user.RequestAddress),
                    PublicKeyAddress      = new Address(user.PublicKeyAddress)
                });

                if (response.Code != ResponseCode.Success)
                {
                    return(true);
                }

                // currently no messages for contact request due to perfomance issues
                var contactNotificationId = 0;
                foreach (var contact in response.ApprovedContacts.Where(c => !c.Rejected))
                {
                    var encryptedMessages = await user.TangleMessenger.GetMessagesAsync(contact.ChatAddress);

                    if (encryptedMessages.Any(c => !c.Stored))
                    {
                        this.CreateNotification(contactNotificationId, contact);
                    }

                    contactNotificationId++;
                }
            }

            return(true);
        }
Exemple #5
0
        private async void TaskCompleted(BackgroundTaskRegistration sender, BackgroundTaskCompletedEventArgs args)
        {
            // Should be moved to the runtime component, but it's not possible to set a reference to Chiota
            var secureStorage = new SecureStorage();

            if (!secureStorage.CheckUserStored())
            {
                return;
            }

            var user = await secureStorage.GetUser();

            if (user == null)
            {
                return;
            }

            var interactor = DependencyResolver.Resolve <IUsecaseInteractor <GetContactsRequest, GetContactsResponse> >();
            var response   = await interactor.ExecuteAsync(
                new GetContactsRequest
            {
                ContactRequestAddress = new Address(user.RequestAddress),
                PublicKeyAddress      = new Address(user.PublicKeyAddress)
            });

            if (response.Code != ResponseCode.Success)
            {
                return;
            }

            // currently no messages for contact request due to perfomance issues
            foreach (var contact in response.ApprovedContacts.Where(c => !c.Rejected))
            {
                var encryptedMessages = await user.TangleMessenger.GetMessagesAsync(contact.ChatAddress);

                if (encryptedMessages.Any(c => !c.Stored))
                {
                    this.CreateNotification(contact);
                }
            }
        }
        private async Task <bool> LookForNewNotifications()
        {
            if (CrossConnectivity.Current.IsConnected)
            {
                // seed needs to be stored on device!!
                var secureStorage = new SecureStorage();
                if (secureStorage.CheckUserStored())
                {
                    var user = await secureStorage.GetUser();

                    if (user != null)
                    {
                        // request list is needed for information
                        var contactRequestList = await user.TangleMessenger.GetJsonMessageAsync <Contact>(user.RequestAddress, 3);

                        var contactsOnApproveAddress = await new SqLiteHelper().LoadContacts(user.PublicKeyAddress);

                        var approvedContacts = contactRequestList.Intersect(contactsOnApproveAddress, new ChatAdressComparer())
                                               .ToList();

                        // currently no messages for contact request due to perfomance issues
                        var contactNotificationId = 0;
                        foreach (var contact in approvedContacts.Where(c => !c.Rejected))
                        {
                            var encryptedMessages = await user.TangleMessenger.GetMessagesAsync(contact.ChatAddress);

                            if (encryptedMessages.Any(c => !c.Stored))
                            {
                                this.CreateNotification(contactNotificationId, contact);
                            }

                            contactNotificationId++;
                        }
                    }
                }
            }

            return(true);
        }
Exemple #7
0
        protected override async void OnStart()
        {
            DependencyResolver.Init();

            var navigationService = DependencyResolver.Resolve <INavigationService>();

            if (CrossConnectivity.Current.IsConnected)
            {
                var secureStorage = new SecureStorage();

                // Reset in case something isn't working
                // secureStorage.DeleteUser();
                if (secureStorage.CheckUserStored())
                {
                    var user = await secureStorage.GetUser();

                    if (user != null)
                    {
                        UserService.SetCurrentUser(user);
                        this.MainPage = new NavigationPage(navigationService.LoggedInEntryPoint);
                    }
                    else
                    {
                        this.MainPage = new NavigationPage(navigationService.LoginEntryPoint);
                    }
                }
                else
                {
                    this.MainPage = new NavigationPage(navigationService.LoginEntryPoint);
                }
            }
            else
            {
                this.MainPage = new NavigationPage(new OfflinePage());
            }
        }