예제 #1
0
 void SetupRecyclerView()
 {
     postRecyclerView.SetLayoutManager(new Android.Support.V7.Widget.LinearLayoutManager(postRecyclerView.Context));
     postAdapter = new PostAdapter(ListOfPost);
     postRecyclerView.SetAdapter(postAdapter);
     postAdapter.ItemLongClick += PostAdapter_ItemLongClick;
 }
                public void IgnoresBlogNameCase()
                {
                    // Arrange
                    var date         = DateTime.Now;
                    var yesterday    = date.AddDays(-1);
                    var threeDaysAgo = date.AddDays(-3);
                    var fiveDaysAgo  = date.AddDays(-5);
                    var basePost     = new BasePost
                    {
                        Notes = new List <BaseNote>
                        {
                            new BaseNote {
                                PostId = "1", Type = NoteType.Reblog, Timestamp = threeDaysAgo, BlogName = "blackjackkent"
                            },
                            new BaseNote {
                                PostId = "2", Type = NoteType.Reblog, Timestamp = yesterday, BlogName = "partnerBlog"
                            },
                            new BaseNote {
                                PostId = "3", Type = NoteType.Reblog, Timestamp = fiveDaysAgo, BlogName = "partnerblog"
                            }
                        }
                    };
                    var adapter = new PostAdapter(basePost);

                    // Act
                    var note = adapter.GetMostRecentRelevantNote("blackjackkent", "partnerblog");

                    // Assert
                    note.Should().NotBe(null);
                    note.PostId.Should().Be("2");
                    note.Timestamp.Should().Be(yesterday);
                }
                public void ReturnsUsersMostRecentReblogIfPartnerIdentifierProvidedAndTheirTurn()
                {
                    // Arrange
                    var date         = DateTime.Now;
                    var yesterday    = date.AddDays(-1);
                    var threeDaysAgo = date.AddDays(-3);
                    var fiveDaysAgo  = date.AddDays(-5);
                    var basePost     = new BasePost
                    {
                        Notes = new List <BaseNote>
                        {
                            new BaseNote {
                                PostId = "1", Type = NoteType.Reblog, Timestamp = threeDaysAgo, BlogName = "blackjackkent"
                            },
                            new BaseNote {
                                PostId = "2", Type = NoteType.Reblog, Timestamp = yesterday, BlogName = "someOtherBlog"
                            },
                            new BaseNote {
                                PostId = "3", Type = NoteType.Reblog, Timestamp = fiveDaysAgo, BlogName = "partnerblog"
                            }
                        }
                    };
                    var adapter = new PostAdapter(basePost);

                    // Act
                    var note = adapter.GetMostRecentRelevantNote("blackjackkent", "partnerblog");

                    // Assert
                    note.Should().NotBe(null);
                    note.PostId.Should().Be("1");
                    note.Timestamp.Should().Be(threeDaysAgo);
                }
                public void ReturnsNullIfNotesContainsNoReblogs()
                {
                    // Arrange
                    var basePost = new BasePost
                    {
                        Notes = new List <BaseNote>
                        {
                            new BaseNote {
                                Type = NoteType.Like
                            },
                            new BaseNote {
                                Type = NoteType.Reply
                            },
                            new BaseNote {
                                Type = NoteType.Posted
                            }
                        }
                    };
                    var adapter = new PostAdapter(basePost);

                    // Act
                    var note = adapter.GetMostRecentRelevantNote("blackjackkent", "mypartner");

                    // Assert
                    note.Should().BeNull();
                }
예제 #5
0
        private void InitializeAdapters()
        {
            ListView postsView = FindViewById <ListView>(Resource.Id.postsView);

            this.postAdapter  = new PostAdapter(this, CommonData.Hub);
            postsView.Adapter = this.postAdapter;
        }
예제 #6
0
        public PostDto Procurar(Guid id)
        {
            var post = postRepositorio.Procurar(id);

            var postDto = PostAdapter.toDto(post);

            return(postDto);
        }
예제 #7
0
        public void Insert(PostDto postDto)
        {
            Post post = PostAdapter.toDomain(postDto);

            post.id = Guid.NewGuid();

            postRepositorio.Inserir(post);
        }
예제 #8
0
        public void DrawPosts(IList <Post> posts)
        {
            LinearLayoutManager linerLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.Vertical, false);

            recyclerViewPostsResults.HasFixedSize = false;
            recyclerViewPostsResults.SetLayoutManager(linerLayoutManager);
            _PostAdapter = new PostAdapter(posts, this);
            recyclerViewPostsResults.SetAdapter(_PostAdapter);
        }
예제 #9
0
        public List <PostDto> Listar()
        {
            var posts = postRepositorio.Listar();

            List <PostDto> postDtos = new List <PostDto>();

            foreach (var post in posts)
            {
                postDtos.Add(PostAdapter.toDto(post));
            }

            return(postDtos);
        }
                public void ReturnsNullIfNotesAreEmpty()
                {
                    // Arrange
                    var basePost = new BasePost
                    {
                        Notes = new List <BaseNote>()
                    };
                    var adapter = new PostAdapter(basePost);

                    // Act
                    var note = adapter.GetMostRecentRelevantNote("blackjackkent", "mypartner");

                    // Assert
                    note.Should().BeNull();
                }
예제 #11
0
        public async Task <PostViewModel> AddPost(AddPostRequest request)
        {
            var currentUser = Feature.CurrentUser(httpContextAccessor, userRepository);
            var post        = PostAdapter.FromRequest(request);

            post.AuthorId = currentUser.Id.ToString();
            await postRepository.AddAsync(post);

            await fcmRepository.AddToGroup(new AddUserToGroupRequest()
            {
                GroupName = post.OId,
                Type      = Feature.GetTypeName(post),
                UserIds   = new List <string> {
                    currentUser.OId
                }
            });

            foreach (var item in request.Fields)
            {
                item.ObjectId = post.OId;
            }

            await levelService.AddObjectLevel(request.Fields);

            var userMatchs = await GetUsersMatchPostField(post);

            foreach (var user in userMatchs)
            {
                var followBuilder = Builders <Follow> .Filter;
                var followFilter  = followBuilder.Eq("from_id", user.OId) & followBuilder.Eq("to_id", currentUser.OId);
                var follows       = await followRepository.FindListAsync(followFilter);

                follows.ForEach(async x =>
                {
                    var notificationDetail = new Noftication()
                    {
                        AuthorId        = currentUser.OId,
                        OwnerId         = currentUser.OId,
                        ObjectId        = post.OId,
                        ObjectThumbnail = post.Title
                    };
                    await fcmRepository.PushNotify(x.FromId, notificationDetail, NotificationContent.AddPostNotification);
                });
            }
            var response = mapper.Map <PostViewModel>(post);

            return(response);
        }
            public void HandlesInvalidPostObjectType()
            {
                // Arrange
                var postDateTime = DateTime.Now;
                var basePost     = new PhotoPost()
                {
                    Id        = 12345,
                    Timestamp = postDateTime,
                    BlogName  = "blackjackkent",
                    Url       = "http://www.test.com"
                };

                // Act
                var adapter = new PostAdapter(basePost);

                // Assert
                adapter.Id.Should().Be(basePost.Id.ToString(CultureInfo.InvariantCulture));
                adapter.Timestamp.Should().Be(basePost.Timestamp);
                adapter.BlogName.Should().Be(basePost.BlogName);
                adapter.Url.Should().Be(basePost.Url);
                adapter.Title.Should().Be(null);
            }
            public void PopulatesPropertiesFromBasePost()
            {
                // Arrange
                var postDateTime = DateTime.Now;
                var basePost     = new TextPost()
                {
                    Id        = 12345,
                    Timestamp = postDateTime,
                    BlogName  = "blackjackkent",
                    Url       = "http://www.test.com",
                    Title     = "My Awesome Title"
                };

                // Act
                var adapter = new PostAdapter(basePost);

                // Assert
                adapter.Id.Should().Be(basePost.Id.ToString(CultureInfo.InvariantCulture));
                adapter.Timestamp.Should().Be(basePost.Timestamp);
                adapter.BlogName.Should().Be(basePost.BlogName);
                adapter.Url.Should().Be(basePost.Url);
                adapter.Title.Should().Be(basePost.Title);
            }
예제 #14
0
        public void Update(PostDto postDto)
        {
            Post post = PostAdapter.toDomain(postDto);

            postRepositorio.Alterar(post);
        }
예제 #15
0
 public PostsController(AzureBlobService azureBlobService, PostAdapter postAdapter, IdentityHelper identityHelper)
 {
     _azureBlobService = azureBlobService;
     _postAdapter      = postAdapter;
     _identityHelper   = identityHelper;
 }
예제 #16
0
        private void SetUpRecycler()
        {
            postAdapter = new PostAdapter(this, posts);
            mainRecycler.SetAdapter(postAdapter);
            emptyObserver = new RecyclerViewEmptyObserver(mainRecycler, emptyRoot);
            postAdapter.RegisterAdapterDataObserver(emptyObserver);
            postAdapter.ItemLongClick += (s1, e1) =>
            {
                string postID  = posts[e1.Position].ID;
                string ownerID = posts[e1.Position].OwnerId;

                if (SessionManager.GetFirebaseAuth().CurrentUser.Uid != ownerID)
                {
                    return;
                }

                var sweetDialog = new SweetAlertDialog(this, SweetAlertDialog.WarningType);
                sweetDialog.SetTitleText("Post Options");
                sweetDialog.SetContentText("Do you want to edit or delete selected post?");
                sweetDialog.SetCancelText("Delete");
                sweetDialog.SetConfirmText("Edit");
                sweetDialog.SetConfirmClickListener(new SweetConfirmClick(
                                                        onClick: d1 =>
                {
                    d1.ChangeAlertType(SweetAlertDialog.SuccessType);
                    d1.SetTitleText("Done");
                    d1.SetContentText("");
                    d1.ShowCancelButton(false);
                    d1.SetConfirmText("OK");
                    d1.SetConfirmClickListener(null);
                    d1.Show();
                }));
                sweetDialog.SetCancelClickListener(new SweetConfirmClick(
                                                       onClick: d2 =>
                {
                    SessionManager.GetFireDB().GetReference("posts").Child(postID).RemoveValue()
                    .AddOnCompleteListener(new OncompleteListener((onComplete) =>
                    {
                        switch (onComplete.IsSuccessful)
                        {
                        case false:
                            break;

                        default:
                            StorageReference storageReference = FirebaseStorage.Instance.GetReference("postImages/" + postID);
                            storageReference.DeleteAsync();
                            postAdapter.NotifyItemRemoved(e1.Position);
                            postAdapter.NotifyItemRangeChanged(e1.Position, posts.Count);
                            break;
                        }
                    }));
                    d2.ChangeAlertType(SweetAlertDialog.SuccessType);
                    d2.SetTitleText("Deleted");
                    d2.SetContentText("");
                    d2.ShowCancelButton(false);
                    d2.SetConfirmText("OK");
                    d2.SetConfirmClickListener(null);
                    d2.Show();
                }));
                sweetDialog.Show();
            };

            postAdapter.ItemClick += (s2, e2) =>
            {
                var intent = new Intent(this, typeof(FullscreenImageActivity));

                PostParcelable postParcelable = new PostParcelable();
                postParcelable.PostItem = posts[e2.Position];

                intent.PutExtra(Constants.TRANSITION_NAME, ViewCompat.GetTransitionName(e2.ImageView));
                intent.PutExtra(Constants.POST_DATA_EXTRA, postParcelable);
                intent.PutExtra(Constants.PARCEL_TYPE, 0);
                var options = ActivityOptionsCompat.MakeSceneTransitionAnimation(this, e2.ImageView,
                                                                                 ViewCompat.GetTransitionName(e2.ImageView));
                StartActivity(intent, options.ToBundle());
            };
        }