Skip to content

Instantly share code, notes, and snippets.

@RBonaventure
Last active December 21, 2017 11:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RBonaventure/bf6182296718867a43eb93e13d8d1daa to your computer and use it in GitHub Desktop.
Save RBonaventure/bf6182296718867a43eb93e13d8d1daa to your computer and use it in GitHub Desktop.
firestore-like
/* @method Permet l'ajout d'un document à la collection 'like'
* Reference path : /resources/{resourceId}/likes/{uniqueLikeId}
*/
public void like() {
Map<String, Date> like = new HashMap<>();
like.put("date", new Date());
// mRef est la référence d'un collaborateur que l'on récupère via https://gist.github.com/RBonaventure/12283d6115d9960421470dde949acc41#file-firestore-fetch-data-java-L8
mRef.collection(FirestoreCollections.LIKES).document(App.getGUID())
.set(like).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(!task.isSuccessful()) {
Log.v(TAG, task.getException().toString());
}
}
});
}
/*
* Voici comment écouter l'enregistrement de notre like et changer l'icône à afficher en fonction de cette information
*/
mRef.collection(FirestoreCollections.LIKES).document(App.getGUID()).addSnapshotListener(listener);
ContextCompat.getDrawable(mContext, documentSnapshot.exists() ? R.drawable.ic_thumb_up : R.drawable.ic_thumb_up_outline)
/*
* Pour compter le nombre de like c'est moins propre puisqu'on doit d'abord récupérer l'ensemble des likes
* puis calculer la taille du tableau retourné.
* @see Firebase Functions pour calculer cela automatiquement à chaque insertion
*/
mRef.collection(FirestoreCollections.LIKES).document(App.getGUID()).addSnapshotListener(listener);
holder.mLike.setText(documentSnapshots.getDocuments().size() + "");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment