void sync_OnSyncFinished(bool status)
        {
            try
            {
                IPBSync sync = resolver.GetInstanceOf <IPBSync>();
                sync.OnSyncFinished -= sync_OnSyncFinished;
                var browserImporters = resolver.GetAllInstancesOf <BrowserImportStrategyBase>();

                var results = browserImporters.Select(s => s.Import());

                var importedSitesNum       = results.Sum(r => r.Imported);
                var alredyImportedSitesNum = 0;

                List <SecureItem> userSites = pbData.GetSecureItemsByItemType(PasswordBoss.Helpers.DefaultProperties.SecurityItemType_PasswordVault).Where(x => x.Site.IsRecommendedSite == false).ToList();

                if (userSites.Count == 0)
                {
                    alredyImportedSitesNum = 0; //we didn't have anything previous. alredyImportedSitesNum can also mean overlapping between browsers
                }
                else
                {
                    alredyImportedSitesNum = results.Sum(r => r.AlreadyImported);
                }

                var inAppAnalyitics = resolver.GetInstanceOf <IInAppAnalytics>();
                if (inAppAnalyitics != null)
                {
                    ImportPasswordsItem item = new ImportPasswordsItem(importedSitesNum, ImportPasswordsTrigger.Installer, null);
                    var analytics            = inAppAnalyitics.Get <Events.ImportPasswords, ImportPasswordsItem>();
                    analytics.Log(item);
                }

                pbData.ChangePrivateSetting("setup_wizard_imported_passwords_number", importedSitesNum.ToString());
                pbData.ChangePrivateSetting("setup_wizard_already_passwords_number", alredyImportedSitesNum.ToString());

                AddEmailToPI();

                logger.Debug("sync images");
                SyncImagesHelper syncImages = new SyncImagesHelper(pbData, webApi);
                //syncImages.SyncImagesAsync();
                syncImages.SyncImages();

                logger.Debug("Finished");
            }
            finally
            {
                evDone.Set();
            }
        }
示例#2
0
        void sync_OnSyncFinished()
        {
            SyncImagesHelper syncImages = new SyncImagesHelper(pbData, webApi);

            syncImages.SyncImages();
        }
示例#3
0
        void sync_OnSyncFinished(bool status)
        {
            // RIO - Hot path
            if (!status)
            {
                try
                {
                    string _path = pbData.StorePath;

                    Application.Current.Dispatcher.Invoke((Action)(() =>
                    {
                        SystemTray.Logout();
                    }));

                    int cnt = 3;
                    do
                    {
                        Thread.Sleep(250);
                        try
                        {
                            if (Directory.Exists(_path))
                            {
                                Directory.Delete(_path, true);
                            }
                            cnt = 0;
                        }
                        catch (Exception ex)
                        {
                            logger.Error(ex.ToString());
                        }
                        cnt--;
                    } while (cnt > 0);

                    _finishVerification = false;
                }
                catch (Exception ex)
                {
                    logger.Error(ex.ToString());
                }
                finally
                {
                    Application.Current.Dispatcher.BeginInvoke((Action)(() =>
                    {
                        LoginWindow loginWindow = ((PBApp)Application.Current).FindWindow <LoginWindow>();
                        loginWindow.NavigateloginScreens();
                    }));
                    evtDone.Set();
                }
            }
            else
            {
                try
                {
                    LoginViewModel.CheckRSA(new GenerateKeysStep().Execute(), pbData, webAPI);
                    SyncImagesHelper syncImages = new SyncImagesHelper(this.pbData, this.webAPI);
                    syncImages.SyncImages();
                    _finishVerification = true;
                }
                finally
                {
                    evtDone.Set();
                }
            }
        }
示例#4
0
        public MainWindow([Import(typeof(IResolver))] IResolver resolver)//[ImportMany] IEnumerable<IUIComponent> components, [Import(typeof(IPBData))]IPBData pbData)
        {
            Application.Current.MainWindow = this;
            application = (PBApp)Application.Current;
            //masterDialog = new MasterPwdBox();
            this.resolver = resolver;


            this.components = resolver.GetAllInstancesOf <IUIComponent>();
            if (this.components == null)
            {
                this.components = new List <IUIComponent>();
            }

            this.subComponents = resolver.GetAllInstancesOf <IUISubComponent>();
            if (this.subComponents == null)
            {
                this.subComponents = new List <IUISubComponent>();
            }

            this.dialogs = resolver.GetAllInstancesOf <IDialog>();
            if (this.dialogs == null)
            {
                this.dialogs = new List <IDialog>();
            }

            this.pbData = resolver.GetInstanceOf <IPBData>();
            ServiceLocator.Register <IFolderService>(new FolderService(pbData));

            this.webApi = resolver.GetInstanceOf <IPBWebAPI>();
            this.accountSettingsUserControl = new AccountSettings.AccountSettings(resolver)
            {
                Visibility = System.Windows.Visibility.Collapsed
            };
            this.accountSettingsUserControl.Loaded += accountSettingsUserControl_Loaded;
            this.searchViewModel              = new SearchViewModel(resolver, SecureHolderCollection);
            searchViewModel.ChangeVisibility += (o, e) =>
            {
                topGrid.Visibility = searchViewModel.IsOpen ? Visibility.Collapsed : Visibility.Visible;
                var component = components.FirstOrDefault(x => x.ID == selectedUIComponentID);
                if (component != null)
                {
                    component.Selected = !searchViewModel.IsOpen;
                }
            };

            folderTreeViewModel = new FoldersTreeViewModel(resolver);
            folderTreeViewModel.SelectedFolder_Changed += (o, e) =>
            {
                if (selectedUIComponentID != null)
                {
                    var component = components.FirstOrDefault(x => x.ID == selectedUIComponentID);
                    if (component != null && component.ViewModel is ISecureHolder)
                    {
                        ((ISecureHolder)component.ViewModel).UpdateTreeView();
                    }
                }
            };
            folderTreeViewModel.FolderList_Changed += (o, e) =>
            {
                Reload();
            };
            folderTreeViewModel.ItemsToFolder_Moved += (o, e) =>
            {
                if (selectedUIComponentID != null)
                {
                    foreach (var item in e.Items.GroupBy(x => (x as ISecureItemVM).Type))
                    {
                        var holder = SecureHolderCollection.FirstOrDefault(x => x.SecureItemType == item.Key);
                        if (holder != null)
                        {
                            holder.MoveSecureItemToFolder(item, e.FolderId);
                        }
                    }
                }
            };

            foreach (var holder in SecureHolderCollection)
            {
                holder.FolderListUpdated += (o, e) => { folderTreeViewModel.UpdateFolderTree(); };
                holder.DataUpdated       += (o, e) => { searchViewModel.Update(); };
                holder.AddSecureItem     += (o, e) => { addBtn_Click(null, null); };
            }


            syncImagesHelper = new SyncImagesHelper(pbData, webApi);
            //this.pbData.OnLoginToProfile(pbData_LoginToProfile);
            this.pbData.OnProfileLock  += ProfileLock;
            this.pbData.OnUserLoggedIn += pbData_OnUserLoggedIn;

            Title = this.pbData.ActiveUser;

            resizer = new WindowResizer(this);
            InitializeComponent();

            LoadMenu();
            //LoadDialog(dialogOrder);
            Closing += OnMainClosing;
            sync     = resolver.GetInstanceOf <IPBSync>();
            if (sync != null)
            {
                sync.OnSyncFinished      += sync_OnSyncFinished;
                sync.OnSyncDeviceDeleted += sync_OnSyncDeviceDeleted;
                //sync.OnSyncSuccess += sync_OnSyncSuccess;
            }

            var advertControl = new MainWindowAdvertising(resolver);

            inAppAdvertisingGrid.Children.Add(advertControl);
            Grid.SetColumn(advertControl, 1);

            ucMainSearchBox.DataContext       = searchViewModel;
            mainSearchResultPanel.DataContext = searchViewModel;
            selectFolderControl.DataContext   = folderTreeViewModel;

            this.ResizeMode    = System.Windows.ResizeMode.CanMinimize;
            this.ShowInTaskbar = true;
            LoadForShowOnStartup();
            if (_pbExtSecureBrowserBridge == null)
            {
                _pbExtSecureBrowserBridge = resolver.GetInstanceOf <IPBExtSecureBrowserBridge>();
            }
            this.Activated += MainWindow_Activated;
            SyncAsync();
            var test = this.FindName("menuUserControl") as MenuUserControl;

            this.DataContext = new MainWindowViewModel();
        }
示例#5
0
        void sync_OnSyncFinished(bool status)
        {
            try
            {
                IPBSync sync = resolver.GetInstanceOf <IPBSync>();
                sync.OnSyncFinished -= sync_OnSyncFinished;
                List <LoginInfo> chromeLoginInfo = new List <LoginInfo>();
                List <LoginInfo> ieLoginInfo     = new List <LoginInfo>();
                List <LoginInfo> ffLoginInfo     = new List <LoginInfo>();

                Parallel.Invoke(() =>
                {
                    //loading chrome items parallel
                    if (Browsers.BrowserVersionGetter.GetChromeVersion() != null)
                    {
                        //if (!BrowserHelper.IsChromeOpened)
                        //{
                        var tmploginInfo = pbData.GetChromeAccounts();
                        chromeLoginInfo.AddRange(tmploginInfo);
                        //}
                    }
                }
                                , () =>
                {
                    if (Browsers.BrowserVersionGetter.GetIEVersion() != null)
                    {
                        //if (!BrowserHelper.IsIEOpened)
                        //{
                        var tmploginInfo = pbData.GetIEAccounts();
                        ieLoginInfo.AddRange(tmploginInfo);
                        //}
                    }
                }
                                , () =>
                {
                    if (Browsers.BrowserVersionGetter.GetFFVersion() != null)
                    {
                        //if (!BrowserHelper.IsFFOpened)
                        //{
                        var tmploginInfo = pbData.GetFFAccounts(() => { return(null); });
                        ffLoginInfo.AddRange(tmploginInfo);
                        //}
                    }
                });

                SecureItemHelper siHelper        = new SecureItemHelper(pbData, sync);
                int ieImportedSitesNum           = 0;
                int ffImportedSitesNum           = 0;
                int chromeImportedSitesNum       = 0;
                int ieAlredyImportedSitesNum     = 0;
                int ffAlredyImportedSitesNum     = 0;
                int chromeAlredyImportedSitesNum = 0;
                int alredyImportedSitesNum       = 0;

                List <SecureItem> userSites = pbData.GetSecureItemsByItemType(PasswordBoss.Helpers.DefaultProperties.SecurityItemType_PasswordVault).Where(x => x.Site.IsRecommendedSite == false).ToList();
                logger.Debug("Importing sites from browsers - Start");

                siHelper.ImportLoginInfoList(chromeLoginInfo.Where(x => !string.IsNullOrWhiteSpace(x.UserName)).Distinct().ToList(), ref chromeImportedSitesNum, ref chromeAlredyImportedSitesNum);
                siHelper.ImportLoginInfoList(ieLoginInfo.Where(x => !string.IsNullOrWhiteSpace(x.UserName)).Distinct().ToList(), ref ieImportedSitesNum, ref ieAlredyImportedSitesNum);
                siHelper.ImportLoginInfoList(ffLoginInfo.Where(x => !string.IsNullOrWhiteSpace(x.UserName)).Distinct().ToList(), ref ffImportedSitesNum, ref ffAlredyImportedSitesNum);

                logger.Debug("Importing sites from browsers - Finish");

                var importedSitesNum = ieImportedSitesNum + ffImportedSitesNum + chromeImportedSitesNum;

                if (userSites.Count == 0)
                {
                    alredyImportedSitesNum = 0;                     //we didn't have anything previous. alredyImportedSitesNum can also mean overlapping between browsers
                }
                else
                {
                    alredyImportedSitesNum = ieAlredyImportedSitesNum + ffAlredyImportedSitesNum + chromeAlredyImportedSitesNum;
                }

                var inAppAnalyitics = resolver.GetInstanceOf <IInAppAnalytics>();
                if (inAppAnalyitics != null)
                {
                    ImportPasswordsItem item = new ImportPasswordsItem(importedSitesNum, ImportPasswordsTrigger.Installer, null);
                    var analytics            = inAppAnalyitics.Get <Events.ImportPasswords, ImportPasswordsItem>();
                    analytics.Log(item);
                }

                pbData.ChangePrivateSetting("setup_wizard_imported_passwords_number", importedSitesNum.ToString());
                pbData.ChangePrivateSetting("setup_wizard_already_passwords_number", alredyImportedSitesNum.ToString());

                logger.Debug("private settings modified");
                AddEmailToPI();
                logger.Debug("added email to PI");

                SyncImagesHelper syncImages = new SyncImagesHelper(pbData, webApi);
                syncImages.SyncImages();

                logger.Debug("Finished");
            }
            finally
            {
                evDone.Set();
            }
        }