Untitled
unknown
plain_text
3 years ago
31 kB
18
Indexable
package com.example.socialapp;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.cardview.widget.CardView;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.auth.FirebaseUser;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.squareup.picasso.Picasso;
public class ShowUser extends AppCompatActivity {
TextView nametv,professiontv,biotv,emailtv,websitetv,requesttv,blockreporttv;
ImageView imageView;
FirebaseDatabase database;
DatabaseReference databaseReference,databaseReference1,databaseReference2,
postnoref,db1,db2,ntref,blockRef,reportRefUser,blocklistref;
TextView button,followers_tv,posts_tv;
CardView followers_cv,posts_cd;
String url,name,age,email,privacy,p,website,bio,userid,usertoken;
RequestMember requestMember;
String name_result;
String uidreq,namereq,urlreq,professionreq;
Button sendmessage;
int postNo ;
FirebaseFirestore db = FirebaseFirestore.getInstance();
DocumentReference documentReference,documentReference1;
DatabaseReference checkVideocallRef;
String senderuid;
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String currentuid = user.getUid();
int followercount,postiv,postvv;
NewMember newMember;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_user);
database = FirebaseDatabase.getInstance();
sendmessage = findViewById(R.id.btn_sendmessage_showuser);
requestMember = new RequestMember();
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String currentUserId = user.getUid();
checkIncoming();
newMember = new NewMember();
nametv = findViewById(R.id.name_tv_showprofile);
professiontv = findViewById(R.id.age_tv_showprofile);
biotv = findViewById(R.id.bio_tv_showprofile);
emailtv = findViewById(R.id.email_tv_showProfile);
imageView = findViewById(R.id.imageView_showprofile);
websitetv = findViewById(R.id.website_tv_showprofile);
button = findViewById(R.id.btn_requestshowprofile);
requesttv = findViewById(R.id.tv_requestshowprofile);
blockreporttv = findViewById(R.id.block_reporttv);
followers_tv = findViewById(R.id.followerNo_tv);
posts_tv = findViewById(R.id.postsNo_tv);
followers_cv = findViewById(R.id.followers_cardview);
posts_cd =findViewById(R.id.followers_cardview);
Bundle extras = getIntent().getExtras();
if (extras != null){
url = extras.getString("u");
name = extras.getString("n");
userid = extras.getString("uid");
}else {
// Toast.makeText(this, "Privact account", Toast.LENGTH_SHORT).show();
}
databaseReference = database.getReference("Requests").child(userid);
databaseReference1 = database.getReference("followers").child(userid);
documentReference = db.collection("user").document(userid);
postnoref = database.getReference("User Posts").child(userid);
databaseReference2 = database.getReference("followers");
documentReference1 = db.collection("user").document(currentUserId);
db1 = database.getReference("All images").child(userid);
db2 = database.getReference("All videos").child(userid);
blockRef = database.getReference("Block users").child(currentuid);
blocklistref = database.getReference("Blocklist").child(currentuid);
ntref = database.getReference("notification").child(currentUserId);
blockRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.hasChild(userid)){
blockreporttv.setText("Unblock");
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
sendmessage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ShowUser.this,MessageActivity.class);
intent.putExtra("n",name);
intent.putExtra("u",url);
intent.putExtra("uid",userid);
startActivity(intent);
}
});
websitetv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
try {
String url = websitetv.getText().toString();
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(url));
startActivity(intent);
}catch (Exception e){
Toast.makeText(ShowUser.this, e.getMessage(), Toast.LENGTH_SHORT).show();
}
}
});
postnoref.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
postNo = (int)snapshot.getChildrenCount();
// posts_tv.setText(Integer.toString(postNo));
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String status = button.getText().toString();
if (status.equals("Follow")){
follow();
}else if (status.equals("Requested")){
delRequest();
}else if (status.equals("Following")){
unFollow();
}
}
});
followers_tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(ShowUser.this,FollowerActivity.class);
intent.putExtra("u",userid);
startActivity(intent);
}
});
blockreporttv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showBottomSheet();
}
});
}
private void showBottomSheet() {
final Dialog dialog = new Dialog(ShowUser.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.report_block_bs);
ImageView report,block;
report = dialog.findViewById(R.id.report_user);
block = dialog.findViewById(R.id.block_user);
report.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showReportSheet();
}
});
block.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
NewMember newMember = new NewMember();
newMember.setName(name);
newMember.setUrl(url);
newMember.setUid(userid);
blockRef.child(userid).setValue("blocked");
String key = blocklistref.push().getKey();
blocklistref.child(key).setValue(newMember);
Toast.makeText(ShowUser.this, "User Blocked", Toast.LENGTH_SHORT).show();
}
});
dialog.show();
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.getWindow().getAttributes().windowAnimations = R.style.Bottomanim;
dialog.getWindow().setGravity(Gravity.BOTTOM);
}
private void showReportSheet() {
final Dialog dialog = new Dialog(ShowUser.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.report_user_file_bs);
reportRefUser = database.getReference("Report users");
ReportClass reportClass = new ReportClass();
LinearLayout pretendingll = dialog.findViewById(R.id.pretending_ll);
LinearLayout shoouldnotbehere = dialog.findViewById(R.id.shouldnotberhere_ll);
Button button = dialog.findViewById(R.id.btn_report_user);
TextView pretendingtv = dialog.findViewById(R.id.pretending);
TextView shouldnotberherTv = dialog.findViewById(R.id.shouldnothere);
RadioButton spam = dialog.findViewById(R.id.spam);
RadioButton suicide = dialog.findViewById(R.id.suicide);
RadioButton nudity = dialog.findViewById(R.id.nudity);
RadioButton hatespeech = dialog.findViewById(R.id.hatespeech);
RadioButton violence = dialog.findViewById(R.id.violence);
RadioButton bullying = dialog.findViewById(R.id.bullying);
RadioButton falseinfo = dialog.findViewById(R.id.falseinfo);
RadioButton me = dialog.findViewById(R.id.me);
RadioButton someoneIknow = dialog.findViewById(R.id.someoneiknow);
RadioButton celeberity = dialog.findViewById(R.id.celebrity);
pretendingtv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pretendingll.setVisibility(View.VISIBLE);
shoouldnotbehere.setVisibility(View.GONE);
}
});
shouldnotberherTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
pretendingll.setVisibility(View.GONE);
shoouldnotbehere.setVisibility(View.VISIBLE);
}
});
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (spam.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("Spam");
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}else if (suicide.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("Suicide, Self injury");
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}else if (nudity.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("nudity or sexual activity");
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}else if (hatespeech.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("hate speech or Symbols");
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}else if (violence.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("Violence");
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}else if (bullying.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("Bullying or harassment");
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}else if (falseinfo.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("false info");
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}else if (me.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("pretending to be me");
reportClass.setType(currentuid);
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}else if (someoneIknow.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("pretending to be someone I know");
reportClass.setType(currentuid);
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}else if (celeberity.isChecked()){
reportClass.setName(name);
reportClass.setUrl(url);
reportClass.setUid(userid);
reportClass.setIssue("pretending to be celebrity");
reportClass.setType(currentuid);
String key = reportRefUser.push().getKey();
reportRefUser.child(key).setValue(reportClass);
Toast.makeText(ShowUser.this, "Reported", Toast.LENGTH_SHORT).show();
}
}
});
dialog.show();
dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.getWindow().getAttributes().windowAnimations = R.style.Bottomanim;
dialog.getWindow().setGravity(Gravity.BOTTOM);
}
private void delRequest() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String currentUserId = user.getUid();
databaseReference.child(currentUserId).removeValue();
button.setText("Follow ");
}
@Override
protected void onStart() {
super.onStart();
db1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
postiv = (int)snapshot.getChildrenCount();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
db2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
postvv = (int)snapshot.getChildrenCount();
String total = Integer.toString(postiv+postvv);
posts_tv.setText(total);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String currentUserId = user.getUid();
documentReference.get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.getResult().exists()){
String name_result = task.getResult().getString("name");
String age_result = task.getResult().getString("prof");
String bio_result = task.getResult().getString("bio");
String email_result = task.getResult().getString("email");
String web_result = task.getResult().getString("web");
String Url = task.getResult().getString("url");
p = task.getResult().getString("privacy");
if (p.equals("Public")){
professiontv.setText(bio_result);
nametv.setText(name_result);
biotv.setText(age_result);
emailtv.setText(email_result);
websitetv.setText(web_result);
Picasso.get().load(Url).into(imageView);
requesttv.setVisibility(View.GONE);
}else {
String u = button.getText().toString();
if (u.equals("Following")){
professiontv.setText(bio_result);
nametv.setText(name_result);
biotv.setText(age_result);
emailtv.setText(email_result);
websitetv.setText(web_result);
Picasso.get().load(Url).into(imageView);
requesttv.setVisibility(View.GONE);
}else {
professiontv.setText("*****************");
nametv.setText(name_result);
biotv.setText("*****************");
emailtv.setText("*****************");
websitetv.setText("*****************");
Picasso.get().load(Url).into(imageView);
requesttv.setVisibility(View.VISIBLE);
}
}
}else {
Toast.makeText(ShowUser.this, "No Profile exist", Toast.LENGTH_SHORT).show();
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
documentReference1.get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(@NonNull Task<DocumentSnapshot> task) {
if (task.getResult().exists()){
namereq = task.getResult().getString("name");
professionreq = task.getResult().getString("age");
urlreq = task.getResult().getString("url");
}else {
// Toast.makeText(ShowUser.this, "No Profile exist", Toast.LENGTH_SHORT).show();
}
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
db1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()){
postiv = (int)snapshot.getChildrenCount();
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
db2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()){
postvv = (int)snapshot.getChildrenCount();
posts_tv.setText(Integer.toString(postiv+postvv));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
// refernce for following
databaseReference1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()){
followercount = (int)snapshot.getChildrenCount();
followers_tv.setText(Integer.toString(followercount));
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
databaseReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.hasChild(currentUserId)){
button.setText("Requested");
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
databaseReference2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.child(userid).hasChild(currentUserId)){
button.setText("Following");
}else {
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}
void follow() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String currentUserId = user.getUid();
if (p.equals("Public")){
button.setText("Following");
requestMember.setUserid(currentUserId);
requestMember.setProfession(professionreq);
requestMember.setUrl(urlreq);
requestMember.setName(namereq);
databaseReference1.child(currentUserId).setValue(requestMember);
newMember.setName(name);
newMember.setUid(currentUserId);
newMember.setUrl(url);
newMember.setSeen("no");
newMember.setText("Started Following you ");
sendNotification(userid,name_result);
ntref.child(currentUserId+"f").setValue(newMember);
}else {
button.setText("Requested");
requestMember.setUserid(currentUserId);
requestMember.setProfession(professionreq);
requestMember.setUrl(urlreq);
requestMember.setName(namereq);
databaseReference.child(currentUserId).setValue(requestMember);
requesttv.setText("Wait Until your request is accepted");
sendNotification2(userid,name_result);
}
}
private void sendNotification2(String userid, String name_result) {
FirebaseDatabase.getInstance().getReference().child(userid).child("token").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
usertoken = snapshot.getValue(String.class);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
FcmNotificationsSender notificationsSender =
new FcmNotificationsSender(usertoken,"Social Media",name_result+" Sent You Follow request",
getApplicationContext(),ShowUser.this);
notificationsSender.SendNotifications();
}
},3000);
}
private void unFollow() {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
String currentUserId = user.getUid();
AlertDialog.Builder builder = new AlertDialog.Builder(ShowUser.this);
builder.setTitle("Unfollow")
.setMessage("Are you sure to Unfollow?")
.setPositiveButton("yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
databaseReference1.child(currentUserId).removeValue();
ntref.child(currentUserId+"f").removeValue();
button.setText("Follow");
followers_tv.setText("0");
Toast.makeText(ShowUser.this, "Unfollowed", Toast.LENGTH_SHORT).show();
}
})
.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.create();
builder.show();
}
private void sendNotification(String userid,String name_result){
FirebaseDatabase.getInstance().getReference().child(userid).child("token").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
usertoken = snapshot.getValue(String.class);
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
FcmNotificationsSender notificationsSender =
new FcmNotificationsSender(usertoken,"Social Media",name_result+" Started Following you",
getApplicationContext(),ShowUser.this);
notificationsSender.SendNotifications();
}
},3000);
}
public void checkIncoming(){
checkVideocallRef = database.getReference("vc");
try {
checkVideocallRef.child(currentuid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if (snapshot.exists()){
senderuid = snapshot.child("calleruid").getValue().toString();
Intent intent = new Intent(ShowUser.this,VideoCallinComing.class);
intent.putExtra("uid",senderuid );
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}else {
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
}catch (Exception e){
// Toast.makeText(context, e.getLocalizedMessage(), Toast.LENGTH_SHORT).show();
}
}
}
Editor is loading...