Пример #1
0
        public LoginPageVM(
            IPixivSettingStore settingStore,
            PixivSetting setting,
            PixivClientService clientService,
            EHunterDbContextResolver <EHunterDbContext> eHunterContextResolver,
            EHunterDbContextResolver <PixivDbContext> pixivContextResolver)
        {
            _settingStore  = settingStore;
            _setting       = setting;
            _clientService = clientService;

            _connectionMode = _setting.ConnectionMode.Value;

            string?savedToken = settingStore.RefreshToken;

            if (!string.IsNullOrEmpty(savedToken))
            {
                RefreshToken = savedToken;
                LoginWithToken();
            }

            InitDatabase();
            async void InitDatabase()
            {
                await Task.WhenAll(eHunterContextResolver.InitializeTask, pixivContextResolver.InitializeTask).ConfigureAwait(true);

                DatabaseInitState = eHunterContextResolver.Resolve() is not null && pixivContextResolver.Resolve() is not null;
                CheckInitialize();
            }
        }
Пример #2
0
        public DownloadManager(PixivSetting setting, DownloaderService downloader, ICustomResolver <PixivClient> clientResolver)
        {
            _setting   = setting;
            Downloader = downloader;

            _settingSubscriber = _setting.MaxDownloadsInParallel.Subscribe(
                _ => CheckStartNew());
            ResumeDownloads();

            async void ResumeDownloads()
            {
                var client = clientResolver.Resolve();

                try
                {
                    await foreach (int id in downloader.GetResumableDownloads().ConfigureAwait(true))
                    {
                        var illust = await client.GetIllustDetailAsync(id).ConfigureAwait(true);

                        var vm = GetOrAddDownloadable(illust);
                        vm.SetWaiting();
                        QueueOne(vm);
                    }
                }
                catch
                {
                    return;
                }
            }
        }
Пример #3
0
 public PixivClientService(IProxySetting proxySetting, PixivSetting pixivSetting)
 {
     _subscribeDisposable = proxySetting.Proxy
                            .CombineLatest(pixivSetting.ConnectionMode,
                                           (proxy, mode) => mode switch
     {
         PixivConnectionMode.SystemProxy
         => new HttpClientHandler
         {
             UseProxy = true,
             Proxy    = HttpClient.DefaultProxy
         },
         PixivConnectionMode.ApplicationProxy
         => new HttpClientHandler
         {
             UseProxy = true,
             Proxy    = proxy
         },
         PixivConnectionMode.NoProxy
         => new HttpClientHandler
         {
             UseProxy = false
         },
         PixivConnectionMode.DirectConnect
         => (HttpMessageHandler) new DirectConnectHandler(),
         _ => throw new InvalidOperationException($"Unknown enum value {mode}.")
     })
Пример #4
0
        public PixivSettingsVM(PixivSetting settings, ICustomResolver <PixivClient> clientResolver)
        {
            _settings = settings;

            _maxDownloadsInParallel = _settings.MaxDownloadsInParallel.Value;
            _connectionMode         = _settings.ConnectionMode.Value;
            Client = clientResolver.Resolve();
        }