Beispiel #1
0
        private async void Init(string pageLink)
        {
            var storage = new SqLiteBackend(DefaultStorageBackends.GetSqliteStorage(), SystemClock.Instance);
            var pages   = new ObservableCollection <GenericPageHistory>(await storage.GetPageHistoryAsync(pageLink));

            Pages = pages;
            Bindings.Update();
        }
        public static void Bootstrap(Container container)
        {
            container.Register <IClock>(() => SystemClock.Instance, Lifestyle.Singleton);
            container.Register <IPageBackendService, PageBackendService>(Lifestyle.Singleton);
            container.Register <IPageStorageBackendServiceImpl>(() => new SqLiteBackend(DefaultStorageBackends.GetSqliteStorage(), SystemClock.Instance), Lifestyle.Singleton);
            container.Register <IApplicationLauncherService, ApplicationLauncherService>(Lifestyle.Singleton);
            container.Register <IDefaultPagesService, DefaultPagesService>(Lifestyle.Transient);
            container.Register <IAssetsService, AssetsService>(Lifestyle.Singleton);
            container.Register <IMostRecentlyVisitedPagesService, MostRecentlyViewedPagesManager>(Lifestyle.Singleton);
            container.Register <IInMemoryKeyValueCache, InMemoryCache>(Lifestyle.Singleton);
            container.Register <IPersistentKeyValueCache>(() => new SqliteKeyValueCache(new SqliteDatabase(new SqliteStorageOptions {
                Path = "settings.db"
            })),
                                                          Lifestyle.Singleton);
            container.Register <IFileExplorerService, FilesUWPService>();
            container.Register <ILFSBackupService, LFSBackupService>(Lifestyle.Transient);
            container.RegisterSingleton <IPageBackend>(() => new PageSqliteBackend(new SqliteDatabase(new SqliteStorageOptions {
                Path = "test.db"
            })));
            container.RegisterSingleton <ILabelBackend, LabelSqliteBackend>();
            // container.RegisterSingleton<ILabelBackend, TestBackend>();
            container.RegisterSingleton <IPageLabelsBackend, PageLabelsSqliteBackend>();
            // container.RegisterSingleton<IPageLabelsBackend, TestBackend>();
            // TODO Lifestyle
            container.RegisterSingleton <MarkdigPipelineBuilder>();
            container.RegisterSingleton <Rendering.Markdown.Markdig.Markdig>();

            // Converter
            container.RegisterSingleton <IConverter <DbDataReader, Label>, DbReaderToLabelConverter>();
            container.RegisterSingleton <IConverter <DbDataReader, IList <Label> >, DbReaderToLabelsConverter>();
            container.RegisterSingleton <IConverter <DbDataReader, IEnumerable <Guid> >, DbReaderToLabelIdsConverter>();

            // Settings
            container.Register <IAppSettingsService, AppSettings>(Lifestyle.Singleton);
            container.Register <IFeatureFlagsService, FeatureFlagsService>(Lifestyle.Singleton);
            container.Register <IRenderingMarkdownSettingsService, RenderingMarkdownSettingsService>(Lifestyle.Singleton);
            container.Register <IBackupSyncSettingsService, BackupSyncSettingsService>();
            container.RegisterSingleton <IBackendSettingsService, BackendSettingsService>();

            // Serialization
            container.Register <IBackupSyncTargetsJsonSerializer, BackupSyncTargetsJsonSerializer>(Lifestyle.Singleton);

            // Startup Tasks
            container.RegisterSingleton <IStartupTask, CompositeStartupTask>();
            container.Collection.Register <IStartupTask>(new[] { typeof(InsertDefaultPagesStartupTask), typeof(RegisterRxExceptionHandler) }, Lifestyle.Singleton);

            container.RegisterSingleton <TranslationManager, InCodeTranslationManager>();

            // Queries
            container.RegisterSingleton <IQueryHandler <ListDiffQuery <LabelId>, ListDiffResult <LabelId> >, ListDiff <LabelId> >();
            container.RegisterSingleton <IQueryHandler <GetSupportedCultures, SupportedCultures>, SupportedCulturesQueryHandler>();
            container.RegisterSingleton <IQueryHandler <GetCurrentAppUICulture, CurrentAppUICulture>, CurrentAppUICultureQueryHandler>();
            container.RegisterSingleton <IQueryHandler <GetDebugMode, DebugMode>, DebugModeQueryHandler>();
            container.RegisterSingleton <IQueryHandler <GetCurrentAppTheme, AppTheme>, CurrentAppThemeQueryHandler>();
            container.RegisterSingleton <IQueryHandler <GetAppThemes, AppThemes>, AppThemesQueryHandler>();


            // Commands
            container.RegisterSingleton <ICommandHandler <LogEntry>, LogCmdHandler>();

            // Bug see https://github.com/reactiveui/splat/issues/597

            /*
             * Container.UseSimpleInjectorDependencyResolver();
             * Locator.CurrentMutable.InitializeSplat();
             * Locator.CurrentMutable.InitializeReactiveUI();
             */


            // ViewModels
            container.Register <AddLabelsToPageControlViewModel>();
            container.Register <PageViewerCommandBarViewModel>();
            container.Register <PersonalizationCtrlVM>();
            container.Register <PageViewerViewModel>();
            container.Register <GlobalSearchControlViewModel>();
            container.Register <NewPageViewModel>();

            // Events
            container.RegisterSingleton <IObservable <CultureChangedEventArgs>, CultureChangedEvent>();
            container.RegisterSingleton <ICommandHandler <CultureChangedEventArgs>, CultureChangedEvent>();
            container.RegisterSingleton <IObservable <ThemeChangedEventArgs>, ThemeChangedEvent>();
            container.RegisterSingleton <ICommandHandler <ThemeChangedEventArgs>, ThemeChangedEvent>();
        }