Skip to content

Commit 7241106

Browse files
committed
Implementing the Like Functionality
1 parent c69233e commit 7241106

File tree

2 files changed

+71
-0
lines changed

2 files changed

+71
-0
lines changed

app/src/main/java/com/dragosholban/myinstagramapp/FeedActivity.java

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,47 @@ public void onCancelled(DatabaseError databaseError) {
8888
}
8989
});
9090

91+
// get image likes
92+
Query likesQuery = database.child("likes").orderByChild("imageId").equalTo(image.key);
93+
likesQuery.addChildEventListener(new ChildEventListener() {
94+
@Override
95+
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
96+
Like like = dataSnapshot.getValue(Like.class);
97+
image.addLike();
98+
if(like.userId.equals(fbUser.getUid())) {
99+
image.hasLiked = true;
100+
image.userLike = dataSnapshot.getKey();
101+
}
102+
mAdapter.notifyDataSetChanged();
103+
}
104+
105+
@Override
106+
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
107+
108+
}
109+
110+
@Override
111+
public void onChildRemoved(DataSnapshot dataSnapshot) {
112+
Like like = dataSnapshot.getValue(Like.class);
113+
image.removeLike();
114+
if(like.userId.equals(fbUser.getUid())) {
115+
image.hasLiked = false;
116+
image.userLike = null;
117+
}
118+
mAdapter.notifyDataSetChanged();
119+
}
120+
121+
@Override
122+
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
123+
124+
}
125+
126+
@Override
127+
public void onCancelled(DatabaseError databaseError) {
128+
129+
}
130+
});
131+
91132
mAdapter.addImage(image);
92133
}
93134

@@ -167,4 +208,21 @@ public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
167208
});
168209
}
169210
}
211+
212+
public void setLiked(Image image) {
213+
if(!image.hasLiked) {
214+
// add new Like
215+
image.hasLiked = true;
216+
Like like = new Like(image.key, fbUser.getUid());
217+
String key = database.child("likes").push().getKey();
218+
database.child("likes").child(key).setValue(like);
219+
image.userLike = key;
220+
} else {
221+
// remove Like
222+
image.hasLiked = false;
223+
if (image.userLike != null) {
224+
database.child("likes").child(image.userLike).removeValue();
225+
}
226+
}
227+
}
170228
}

app/src/main/java/com/dragosholban/myinstagramapp/ImageAdapter.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,19 @@ public void onBindViewHolder(ViewHolder holder, final int position) {
5353
holder.mTextView.setText(image.user.displayName);
5454
}
5555
Picasso.get().load(image.downloadUrl).into(holder.mImageView);
56+
57+
holder.mLikeButton.setText("Like (" + image.likes + ")");
58+
if(image.hasLiked) {
59+
holder.mLikeButton.setBackgroundColor(mActivity.getResources().getColor(R.color.colorAccent));
60+
} else {
61+
holder.mLikeButton.setBackgroundColor(mActivity.getResources().getColor(R.color.colorPrimary));
62+
}
63+
holder.mLikeButton.setOnClickListener(new View.OnClickListener() {
64+
@Override
65+
public void onClick(View v) {
66+
mActivity.setLiked(image);
67+
}
68+
});
5669
}
5770

5871
// Return the size of your dataset (invoked by the layout manager)

0 commit comments

Comments
 (0)