private async Task <ArticleAggregatedVM> GetExample(Guid id, Guid?commitId) { var commit1 = new ArticleCommitMainInfoVM { Id = new Guid(new byte[] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }), Title = "Created", CreatedAt = new DateTime(2021, 05, 15, 22, 23, 22), CreatedBy = "artbiel", Description = "Article created", CommitState = CommitState.Commited, Type = ArticleCommitType.Addition, Content = "" }; var commits = new List <ArticleCommitMainInfoVM>() { commit1 }; if (await _localStorageService.ContainKeyAsync(key + id)) { var commitsFromStorage = await _localStorageService.GetItemAsync <List <ArticleCommitMainInfoVM> >(key + id); commits.AddRange(commitsFromStorage); } var article = new ArticleVM() { Id = id, Title = "Язык C# и платформа .NET", Content = commits.Last().Content, CurrentCommitId = commitId ?? commits.Last().Id, }; return(new() { ArticleInfo = article, Commits = commits }); }
//public async Task AddArticleToLocalStorage(ArticleViewModel article) //{ // await _localStorageService.SetItemAsync(devKey + article.Id, ArticleConverter.ToStorage(article)); //} //public async Task RemoveArticleFromLocalStorage(int id) //{ // await _localStorageService.RemoveItemAsync(devKey + id); //} //public async Task AddCommit(Guid articleId, ArticleCommitVM commit) //{ // if (await _localStorageService.ContainKeyAsync(key + articleId)) // { // var unsendCommits = await _localStorageService.GetItemAsync<List<ArticleCommitVM>>(key + articleId); // await _localStorageService.SetItemAsync(key + articleId, unsendCommits.Append(commit).ToList()); // } // else // { // await _localStorageService.SetItemAsync(key + articleId, new List<ArticleCommitVM>() { commit }); // } //} public async Task AddCommit(Guid articleId, ArticleCommitMainInfoVM commit) { if (await _localStorageService.ContainKeyAsync(key + articleId)) { var commits = await _localStorageService.GetItemAsync <List <ArticleCommitMainInfoVM> >(key + articleId); await _localStorageService.SetItemAsync(key + articleId, commits.Append(commit)); } else { await _localStorageService.SetItemAsync(key + articleId, new List <ArticleCommitMainInfoVM>() { commit }); } }
public override async Task HandleAsync(AddArticleCommitAction action, IDispatcher dispatcher) { var article = await _articleService.GetArticle(action.ArticleId, action.PrevCommitId); var prevCommit = article?.Commits?.FirstOrDefault(c => c.Id == action.PrevCommitId); if (prevCommit != null) { var oldContent = article.ArticleInfo.Content; var diffResult = Differ.Instance.CreateWordDiffs(oldContent, action.Content, false, false, new[] { ' ' }); var diffWords = new List <string>(); foreach (var diff in diffResult.DiffBlocks) { if (diff.InsertCountB != 0) { diffWords.AddRange(diffResult.PiecesNew.Skip(diff.InsertStartB).Take(diff.InsertCountB)); } } //var commit = new ArticleCommitVM //{ // Id = Guid.NewGuid(), // Title = action.Title, // Description = action.Description, // Type = action.CommitType, // CreatedAt = DateTime.Now, // CreatedBy = "artbiel", // CommitState = CommitState.Unsent, // DiffBlocks = diffResult.DiffBlocks.ToArticleDiffBlocks(), // DiffWords = diffWords.ToArray(), // PrevCommitId = action.PrevCommitId //}; //article.Commits.Add(commit); //dispatcher.Dispatch(new SetArticleCommitsAction(article.Commits, commit)); } var commit = new ArticleCommitMainInfoVM { Id = Guid.NewGuid(), Title = action.Title, Description = action.Description, Type = action.CommitType, CreatedAt = DateTime.Now, CreatedBy = "artbiel", CommitState = CommitState.Unsent, PrevCommitId = action.PrevCommitId, Content = action.Content }; await _articleService.AddCommit(action.ArticleId, commit); _toastService.ShowToast(MBToastLevel.Success, "Commit was successfully added!"); }
public async Task <ArticleAggregatedVM> GetArticle(Guid id, Guid?commitId) { //if (devMode) //{ // if (await _localStorageService.ContainKeyAsync(devKey + id)) // { // var article = await _localStorageService.GetItemAsync<ArticleViewModel>(devKey + id); // return ArticleConverter.FromStorage(article); // } // else // { // if ((await _courseService.GetCourse(1, devMode)).Records.Any(r => r.TargetId == id)) // { // var article = GetExample(id); // await AddArticleToLocalStorage(ArticleConverter.ToStorage(article)); // return article; // } // } //} if (await _localStorageService.ContainKeyAsync("workbanch_" + id)) { var commit1 = new ArticleCommitMainInfoVM { Id = new Guid(new byte[] { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }), Title = "Created", CreatedAt = new DateTime(2021, 05, 15, 22, 23, 22), CreatedBy = "artbiel", Description = "Article created", CommitState = CommitState.Commited, Type = ArticleCommitType.Addition, Content = "" }; var commits = new List <ArticleCommitMainInfoVM>() { commit1 }; if (await _localStorageService.ContainKeyAsync(key + id)) { var commitsFromStorage = await _localStorageService.GetItemAsync <List <ArticleCommitMainInfoVM> >(key + id); commits.AddRange(commitsFromStorage); } var article = await _localStorageService.GetItemAsync <ArticleVM>("workbanch_" + id); return(new ArticleAggregatedVM { ArticleInfo = article, Commits = commits }); } Guid courseId = new Guid(new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 }); if ((await _courseService.GetCourse(courseId)).RootRecord.Find(r => r.Id == id) != null) { var article = await GetExample(id, commitId); //if (await _localStorageService.ContainKeyAsync(key + article.Id)) //{ // var unsendCommits = await _localStorageService.GetItemAsync<List<ArticleCommitVM>>(key + article.Id); // if (unsendCommits != null && unsendCommits.Count > 0) // article.Commits.AddRange(unsendCommits); //} return(article); } return(null); }