package
com.example.socialmediaapp;
import
android.app.ProgressDialog;
import
android.content.Intent;
import
android.net.Uri;
import
android.os.Bundle;
import
android.view.LayoutInflater;
import
android.view.View;
import
android.view.ViewGroup;
import
android.widget.ImageView;
import
android.widget.TextView;
import
android.widget.Toast;
import
androidx.annotation.NonNull;
import
androidx.annotation.Nullable;
import
androidx.fragment.app.Fragment;
import
androidx.recyclerview.widget.LinearLayoutManager;
import
androidx.recyclerview.widget.RecyclerView;
import
com.bumptech.glide.Glide;
import
com.google.android.material.floatingactionbutton.FloatingActionButton;
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.Query;
import
com.google.firebase.database.ValueEventListener;
import
com.google.firebase.storage.StorageReference;
import
java.util.ArrayList;
import
java.util.List;
/**
* A simple {@link Fragment} subclass.
*/
public
class
ProfileFragment
extends
Fragment {
private
FirebaseAuth firebaseAuth;
FirebaseUser firebaseUser;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
ImageView avatartv, covertv;
TextView nam, email, phone;
RecyclerView postrecycle;
StorageReference storageReference;
String storagepath =
"Users_Profile_Cover_image/"
;
FloatingActionButton fab;
List<ModelPost> posts;
AdapterPosts adapterPosts;
String uid;
ProgressDialog pd;
private
static
final
int
CAMERA_REQUEST =
100
;
private
static
final
int
STORAGE_REQUEST =
200
;
private
static
final
int
IMAGEPICK_GALLERY_REQUEST =
300
;
private
static
final
int
IMAGE_PICKCAMERA_REQUEST =
400
;
String cameraPermission[];
String storagePermission[];
Uri imageuri;
public
ProfileFragment() {
}
@Override
public
View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_profile, container,
false
);
firebaseAuth = FirebaseAuth.getInstance();
firebaseUser = firebaseAuth.getCurrentUser();
firebaseDatabase = FirebaseDatabase.getInstance();
databaseReference = firebaseDatabase.getReference(
"Users"
);
avatartv = view.findViewById(R.id.avatartv);
nam = view.findViewById(R.id.nametv);
email = view.findViewById(R.id.emailtv);
uid = FirebaseAuth.getInstance().getUid();
fab = view.findViewById(R.id.fab);
postrecycle = view.findViewById(R.id.recyclerposts);
posts =
new
ArrayList<>();
pd =
new
ProgressDialog(getActivity());
loadMyPosts();
pd.setCanceledOnTouchOutside(
false
);
Query query = databaseReference.orderByChild(
"email"
).equalTo(firebaseUser.getEmail());
query.addValueEventListener(
new
ValueEventListener() {
@Override
public
void
onDataChange(
@NonNull
DataSnapshot dataSnapshot) {
for
(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
String name =
""
+ dataSnapshot1.child(
"name"
).getValue();
String emaill =
""
+ dataSnapshot1.child(
"email"
).getValue();
String image =
""
+ dataSnapshot1.child(
"image"
).getValue();
nam.setText(name);
email.setText(emaill);
try
{
Glide.with(getActivity()).load(image).into(avatartv);
}
catch
(Exception e) {
}
}
}
@Override
public
void
onCancelled(
@NonNull
DatabaseError databaseError) {
}
});
fab.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View v) {
startActivity(
new
Intent(getActivity(), EditProfilePage.
class
));
}
});
return
view;
}
private
void
loadMyPosts() {
LinearLayoutManager layoutManager =
new
LinearLayoutManager(getActivity());
layoutManager.setReverseLayout(
true
);
layoutManager.setStackFromEnd(
true
);
postrecycle.setLayoutManager(layoutManager);
DatabaseReference databaseReference = FirebaseDatabase.getInstance().getReference(
"Posts"
);
Query query = databaseReference.orderByChild(
"uid"
).equalTo(uid);
query.addValueEventListener(
new
ValueEventListener() {
@Override
public
void
onDataChange(
@NonNull
DataSnapshot dataSnapshot) {
posts.clear();
for
(DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
ModelPost modelPost = dataSnapshot1.getValue(ModelPost.
class
);
posts.add(modelPost);
adapterPosts =
new
AdapterPosts(getActivity(), posts);
postrecycle.setAdapter(adapterPosts);
}
}
@Override
public
void
onCancelled(
@NonNull
DatabaseError databaseError) {
Toast.makeText(getActivity(), databaseError.getMessage(), Toast.LENGTH_LONG).show();
}
});
}
@Override
public
void
onCreate(
@Nullable
Bundle savedInstanceState) {
setHasOptionsMenu(
true
);
super
.onCreate(savedInstanceState);
}
}