public static void Initialize(this FoundationMvvmCross self, App app, IScheduler scheduler)
        {
            Func <ITogglDataSource, ISyncManager> createSyncManager(ITogglApi api) => dataSource =>
            TogglSyncManager.CreateSyncManager(self.Database, api, dataSource, self.TimeService, self.AnalyticsService, retryDelayLimit, scheduler);

            ITogglDataSource createDataSource(ITogglApi api)
            => new TogglDataSource(api, self.Database, self.TimeService, self.ApiErrorHandlingService, self.BackgroundService, createSyncManager(api), TimeSpan.FromMinutes(5), self.ShortcutCreator)
            .RegisterServices();

            var loginManager =
                new LoginManager(self.ApiFactory, self.Database, self.GoogleService, self.ShortcutCreator, self.AccessRestrictionStorage, createDataSource);

            app.Initialize(loginManager, self.NavigationService, self.AccessRestrictionStorage);
        }
        public static FoundationMvvmCross RevokeNewUserIfNeeded(this FoundationMvvmCross self)
        {
            var now      = self.TimeService.CurrentDateTime;
            var lastUsed = self.OnboardingStorage.GetLastOpened();

            self.OnboardingStorage.SetLastOpened(now);
            if (lastUsed == null)
            {
                return(self);
            }

            var lastUsedDate = DateTimeOffset.Parse(lastUsed);
            var offset       = now - lastUsedDate;

            if (offset < TimeSpan.FromDays(newUserThreshold))
            {
                return(self);
            }

            self.OnboardingStorage.SetIsNewUser(false);
            return(self);
        }