Beispiel #1
0
        static IServiceProvider CreateContainer(IAzureFunctionsApi azureFunctionsApi, IGitHubApiV3 gitHubApiV3, IGitHubGraphQLApi gitHubGraphQLApi)
        {
            var services = new Microsoft.Extensions.DependencyInjection.ServiceCollection();

            //GitTrends Refit Services
            services.AddSingleton(azureFunctionsApi);
            services.AddSingleton(gitHubApiV3);
            services.AddSingleton(gitHubGraphQLApi);

            //GitTrends Services
            services.AddSingleton <AzureFunctionsApiService>();
            services.AddSingleton <BackgroundFetchService>();
            services.AddSingleton <DeepLinkingService>();
            services.AddSingleton <NotificationService, ExtendedNotificationService>();
            services.AddSingleton <GitHubApiV3Service>();
            services.AddSingleton <GitHubApiRepositoriesService>();
            services.AddSingleton <GitHubApiStatusService>();
            services.AddSingleton <GitHubAuthenticationService>();
            services.AddSingleton <GitHubGraphQLApiService>();
            services.AddSingleton <GitHubUserService>();
            services.AddSingleton <GitTrendsContributorsService>();
            services.AddSingleton <FavIconService>();
            services.AddSingleton <FirstRunService>();
            services.AddSingleton <ImageCachingService>();
            services.AddSingleton <LanguageService>();
            services.AddSingleton <MediaElementService>();
            services.AddSingleton <ReferringSitesDatabase>();
            services.AddSingleton <RepositoryDatabase>();
            services.AddSingleton <ReviewService>();
            services.AddSingleton <MobileSortingService>();
            services.AddSingleton <SyncfusionService>();
            services.AddSingleton <ThemeService>();
            services.AddSingleton <TrendsChartSettingsService>();

            //GitTrends ViewModels
            services.AddTransient <OnboardingViewModel>();
            services.AddTransient <ReferringSitesViewModel>();
            services.AddTransient <RepositoryViewModel>();
            services.AddTransient <SettingsViewModel>();
            services.AddTransient <SplashScreenViewModel>();
            services.AddTransient <TrendsViewModel>();
            services.AddTransient <WelcomeViewModel>();

            //Mocks
            services.AddSingleton <IAnalyticsService, MockAnalyticsService>();
            services.AddSingleton <IAppInfo, MockAppInfo>();
            services.AddSingleton <IBrowser, MockBrowser>();
            services.AddSingleton <IDeviceNotificationsService, MockDeviceNotificationsService>();
            services.AddSingleton <IFileSystem, MockFileSystem>();
            services.AddSingleton <IEmail, MockEmail>();
            services.AddSingleton <ILauncher, MockLauncher>();
            services.AddSingleton <IMainThread, MockMainThread>();
            services.AddSingleton <INotificationManager, MockNotificationManager>();
            services.AddSingleton <ISecureStorage, MockSecureStorage>();
            services.AddSingleton <IPreferences, MockPreferences>();
            services.AddSingleton <IVersionTracking, MockVersionTracking>();

            return(services.BuildServiceProvider());
        }
 public static void Initialize(IAzureFunctionsApi azureFunctionsApi, IGitHubApiV3 gitHubApiV3, IGitHubGraphQLApi gitHubGraphQLApi) =>
 _serviceProviderHolder = CreateContainer(azureFunctionsApi, gitHubApiV3, gitHubGraphQLApi);
 public AzureFunctionsApiService(IAnalyticsService analyticsService, IMainThread mainThread, IAzureFunctionsApi azureFunctionsApi) : base(analyticsService, mainThread)
 {
     _azureFunctionsApiClient = azureFunctionsApi;
 }
Beispiel #4
0
        static IContainer CreateContainer()
        {
            Device.SetFlags(new[] { "Markup_Experimental", "IndicatorView_Experimental", "AppTheme_Experimental" });

            var builder = new ContainerBuilder();

            //Register Xamarin.Essentials
            builder.RegisterType <AppInfoImplementation>().As <IAppInfo>().SingleInstance();
            builder.RegisterType <BrowserImplementation>().As <IBrowser>().SingleInstance();
            builder.RegisterType <EmailImplementation>().As <IEmail>().SingleInstance();
            builder.RegisterType <FileSystemImplementation>().As <IFileSystem>().SingleInstance();
            builder.RegisterType <LauncherImplementation>().As <ILauncher>().SingleInstance();
            builder.RegisterType <MainThreadImplementation>().As <IMainThread>().SingleInstance();
            builder.RegisterType <PreferencesImplementation>().As <IPreferences>().SingleInstance();
            builder.RegisterType <SecureStorageImplementation>().As <ISecureStorage>().SingleInstance();
            builder.RegisterType <VersionTrackingImplementation>().As <IVersionTracking>().SingleInstance();

            //Register Services
            builder.RegisterType <AnalyticsService>().As <IAnalyticsService>().SingleInstance();
            builder.RegisterType <AzureFunctionsApiService>().AsSelf().SingleInstance();
            builder.RegisterType <BackgroundFetchService>().AsSelf().SingleInstance();
            builder.RegisterType <DeepLinkingService>().AsSelf().SingleInstance();
            builder.RegisterType <FavIconService>().AsSelf().SingleInstance();
            builder.RegisterType <FirstRunService>().AsSelf().SingleInstance();
            builder.RegisterType <GitHubApiV3Service>().AsSelf().SingleInstance();
            builder.RegisterType <GitHubApiRepositoriesService>().AsSelf().SingleInstance();
            builder.RegisterType <GitHubAuthenticationService>().AsSelf().SingleInstance();
            builder.RegisterType <GitHubUserService>().AsSelf().SingleInstance();
            builder.RegisterType <GitHubGraphQLApiService>().AsSelf().SingleInstance();
            builder.RegisterType <ImageCachingService>().AsSelf().SingleInstance();
            builder.RegisterType <LanguageService>().AsSelf().SingleInstance();
            builder.RegisterType <MediaElementService>().AsSelf().SingleInstance();
            builder.RegisterType <NotificationService>().AsSelf().SingleInstance();
            builder.RegisterType <ReferringSitesDatabase>().AsSelf().SingleInstance();
            builder.RegisterType <RepositoryDatabase>().AsSelf().SingleInstance();
            builder.RegisterType <ReviewService>().AsSelf().SingleInstance();
            builder.RegisterType <MobileSortingService>().AsSelf().SingleInstance();
            builder.RegisterType <SyncfusionService>().AsSelf().SingleInstance();
            builder.RegisterType <ThemeService>().AsSelf().SingleInstance();
            builder.RegisterType <TrendsChartSettingsService>().AsSelf().SingleInstance();
            builder.RegisterInstance(ShinyHost.Resolve <INotificationManager>()).As <INotificationManager>().SingleInstance();
            builder.RegisterInstance(DependencyService.Resolve <IDeviceNotificationsService>()).As <IDeviceNotificationsService>().SingleInstance();
#if !AppStore
            builder.RegisterType <UITestsBackdoorService>().AsSelf().SingleInstance();
#endif

            //Register ViewModels
            builder.RegisterType <OnboardingViewModel>().AsSelf();
            builder.RegisterType <ReferringSitesViewModel>().AsSelf();
            builder.RegisterType <RepositoryViewModel>().AsSelf();
            builder.RegisterType <SettingsViewModel>().AsSelf();
            builder.RegisterType <SplashScreenViewModel>().AsSelf();
            builder.RegisterType <TrendsViewModel>().AsSelf();
            builder.RegisterType <WelcomeViewModel>().AsSelf();

            //Register Pages
            builder.RegisterType <ChartOnboardingPage>().AsSelf();
            builder.RegisterType <ConnectToGitHubOnboardingPage>().AsSelf();
            builder.RegisterType <GitTrendsOnboardingPage>().AsSelf();
            builder.RegisterType <NotificationsOnboardingPage>().AsSelf();
            builder.RegisterType <OnboardingCarouselPage>().AsSelf();
            builder.RegisterType <ReferringSitesPage>().AsSelf().WithParameter(new TypedParameter(typeof(Repository), nameof(Repository).ToLower()));
            builder.RegisterType <RepositoryPage>().AsSelf();
            builder.RegisterType <SettingsPage>().AsSelf();
            builder.RegisterType <SplashScreenPage>().AsSelf();
            builder.RegisterType <TrendsPage>().AsSelf().WithParameter(new TypedParameter(typeof(Repository), nameof(Repository).ToLower()));
            builder.RegisterType <WelcomePage>().AsSelf();

            //Register Refit Services
            IGitHubApiV3       gitHubV3ApiClient       = RestService.For <IGitHubApiV3>(BaseApiService.CreateHttpClient(GitHubConstants.GitHubRestApiUrl));
            IGitHubGraphQLApi  gitHubGraphQLApiClient  = RestService.For <IGitHubGraphQLApi>(BaseApiService.CreateHttpClient(GitHubConstants.GitHubGraphQLApi));
            IAzureFunctionsApi azureFunctionsApiClient = RestService.For <IAzureFunctionsApi>(BaseApiService.CreateHttpClient(AzureConstants.AzureFunctionsApiUrl));

            builder.RegisterInstance(gitHubV3ApiClient).SingleInstance();
            builder.RegisterInstance(gitHubGraphQLApiClient).SingleInstance();
            builder.RegisterInstance(azureFunctionsApiClient).SingleInstance();

            return(builder.Build());
        }