package com.amsavarthan.social.hify.ui.activities.notification; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.ProgressBar; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; import com.amsavarthan.social.hify.R; import com.amsavarthan.social.hify.ui.activities.friends.SendActivity; import com.bumptech.glide.Glide; import com.bumptech.glide.request.RequestOptions; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.firestore.DocumentReference; import com.google.firebase.firestore.DocumentSnapshot; import com.google.firebase.firestore.FirebaseFirestore; import java.util.HashMap; import java.util.Map; import de.hdodenhof.circleimageview.CircleImageView; import es.dmoral.toasty.Toasty; import io.github.inflationx.calligraphy3.CalligraphyConfig; import io.github.inflationx.calligraphy3.CalligraphyInterceptor; import io.github.inflationx.viewpump.ViewPump; import io.github.inflationx.viewpump.ViewPumpContextWrapper; public class NotificationActivity extends AppCompatActivity { private TextView nameTxt, messageTxt; private String msg; private CircleImageView imageView; private TextView username; private String user_id, current_id; private Button mSend; private EditText message; private FirebaseFirestore mFirestore; private ProgressBar mBar; @Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(ViewPumpContextWrapper.wrap(newBase)); } @Override public void finish() { super.finish(); overridePendingTransitionExit(); } @Override public void startActivity(Intent intent) { super.startActivity(intent); overridePendingTransitionEnter(); } /** * Overrides the pending Activity transition by performing the "Enter" animation. */ protected void overridePendingTransitionEnter() { overridePendingTransition(R.anim.slide_from_right, R.anim.slide_to_left); } /** * Overrides the pending Activity transition by performing the "Exit" animation. */ protected void overridePendingTransitionExit() { overridePendingTransition(R.anim.slide_from_left, R.anim.slide_to_right); } @Override public boolean onSupportNavigateUp() { onBackPressed(); return true; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ViewPump.init(ViewPump.builder() .addInterceptor(new CalligraphyInterceptor( new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/bold.ttf") .setFontAttrId(R.attr.fontPath) .build())) .build()); setContentView(R.layout.activity_notification); Toolbar toolbar=findViewById(R.id.main_toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayShowHomeEnabled(true); getSupportActionBar().setDisplayHomeAsUpEnabled(true); nameTxt = findViewById(R.id.name); messageTxt = findViewById(R.id.messagetxt); imageView = findViewById(R.id.circleImageView); current_id = FirebaseAuth.getInstance().getCurrentUser().getUid(); mSend = findViewById(R.id.send); message = findViewById(R.id.message); mBar = findViewById(R.id.progressBar); msg = getIntent().getStringExtra("message"); user_id = getIntent().getStringExtra("from_id"); nameTxt.setText(getIntent().getStringExtra("name")); Glide.with(NotificationActivity.this) .setDefaultRequestOptions(new RequestOptions().placeholder(R.drawable.default_profile_picture)) .load(getIntent().getStringExtra("image")) .into(imageView); mFirestore = FirebaseFirestore.getInstance(); mFirestore.collection("Users").document(FirebaseAuth.getInstance().getCurrentUser().getUid()).get().addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() { @Override public void onSuccess(DocumentSnapshot documentSnapshot) { String image_ = documentSnapshot.getString("image"); CircleImageView imageView=findViewById(R.id.currentProfile); Glide.with(NotificationActivity.this) .setDefaultRequestOptions(new RequestOptions().placeholder(R.drawable.default_profile_picture)) .load(image_) .into(imageView); } }).addOnFailureListener(e -> { }); mFirestore.collection("Users").document(user_id).get().addOnSuccessListener(documentSnapshot -> { String name = documentSnapshot.getString("name"); nameTxt.setText(name); String image_ = documentSnapshot.getString("image"); Glide.with(NotificationActivity.this) .setDefaultRequestOptions(new RequestOptions().placeholder(R.drawable.default_profile_picture)) .load(image_) .into(imageView); }).addOnFailureListener(e -> { imageView.setVisibility(View.GONE); nameTxt.setVisibility(View.GONE); }); messageTxt.setText(msg); NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); if (notificationManager != null) { notificationManager.cancel(getIntent().getIntExtra("notification_id", 0)); } updateReadStatus(); initReply(); } private void updateReadStatus() { String read=getIntent().getStringExtra("read"); if(read.equals("false")){ Map<String,Object> readMap=new HashMap<>(); readMap.put("read","true"); mFirestore.collection("Users").document(current_id).collection("Notifications") .document(getIntent().getStringExtra("doc_id")).update(readMap).addOnSuccessListener(new OnSuccessListener<Void>() { @Override public void onSuccess(Void aVoid) { Log.i("done","read:true"); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.i("error","read:false::"+e.getLocalizedMessage()); } }); } } private void initReply() { mSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { String message_ = message.getText().toString(); if (!TextUtils.isEmpty(message_)) { mBar.setVisibility(View.VISIBLE); Map<String, Object> notificationMessage = new HashMap<>(); notificationMessage.put("reply_for", msg); notificationMessage.put("message", message_); notificationMessage.put("from", current_id); notificationMessage.put("notification_id", String.valueOf(System.currentTimeMillis())); notificationMessage.put("timestamp", String.valueOf(System.currentTimeMillis())); mFirestore.collection("Users/" + user_id + "/Notifications_reply").add(notificationMessage).addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Toasty.success(NotificationActivity.this, "Hify sent!", Toasty.LENGTH_SHORT,true).show(); message.setText(""); mBar.setVisibility(View.GONE); finish(); } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Toasty.error(NotificationActivity.this, "Error : " + e.getMessage(), Toasty.LENGTH_SHORT,true).show(); mBar.setVisibility(View.GONE); } }); } } }); } public void SendNew(View view) { SendActivity.startActivityExtra(NotificationActivity.this, user_id); overridePendingTransitionExit(); } }