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; }
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()); }