Beispiel #1
0
        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 });
        }
Beispiel #2
0
        //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 });
            }
        }
Beispiel #3
0
        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!");
        }
Beispiel #4
0
        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);
        }