Example #1
0
        public async Task <CreateNewResult> CreateNew(String search)
        {
            Task <CreateNewResult> createNewTask = Task.Run(() =>
            {
                LockStart("CreateNew");

                try
                {
                    return(_irpyteDownloader.Create(search)
                           .ContinueWith(task =>
                    {
                        if (task.IsFaulted)
                        {
                            logger.Error(task.Exception, "CreateNew task error");
                            return new CreateNewResult(task.Exception);
                        }
                        else
                        {
                            try
                            {
                                var id = task.Result.id;
                                var appConfig = DB.Instance.GetConfig();
                                appConfig.wallpaperId = id;
                                appConfig.imageFileNames.Clear();
                                appConfig.searchTerms = search;
                                DB.Instance.UpdateConfig(appConfig);
                                logger.Info($"Successfully updated new wallpaper id {id}");

                                return new CreateNewResult();
                            }
                            catch (Exception e)
                            {
                                logger.Error(e, "CreateNew while updating db");
                                return new CreateNewResult(e);
                            }
                        }
                    }));
                }
                finally
                {
                    LockEnd("CreateNew");
                }
            });

            return(await createNewTask);
        }