Skip to content

Commit

Permalink
added cooldown + detailed lostfound
Browse files Browse the repository at this point in the history
  • Loading branch information
ChiragAgg5k committed Apr 21, 2023
1 parent a10c2b6 commit 0d4e0d1
Show file tree
Hide file tree
Showing 29 changed files with 390 additions and 113 deletions.
8 changes: 5 additions & 3 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ android {
applicationId "com.chiragagg5k.bu_news_android"
minSdk 29
targetSdk 33
versionCode 11
versionName "1.6.0"
versionCode 13
versionName "1.6.5"

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
Expand All @@ -39,7 +39,9 @@ dependencies {
implementation 'com.google.android.material:material:1.8.0' // Material Design
implementation 'androidx.constraintlayout:constraintlayout:2.1.4' // Constraint Layout
implementation platform('com.google.firebase:firebase-bom:31.2.2') // Firebase BOM
implementation 'com.google.firebase:firebase-auth:21.2.0' // Firebase Auth
implementation ('com.google.firebase:firebase-auth:21.3.0'){
exclude module: "play-services-safetynet"
} // Firebase Auth
implementation 'com.google.firebase:firebase-database' // Firebase Realtime Database
implementation 'com.google.firebase:firebase-storage' // Firebase Storage
implementation 'de.hdodenhof:circleimageview:3.1.0'// Circle Image View
Expand Down
Binary file modified app/release/app-release.aab
Binary file not shown.
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,11 @@
android:windowSoftInputMode="adjustResize">
</activity>

<activity
android:name=".LostFoundDetailActivity"
android:windowSoftInputMode="adjustResize">
</activity>

<service android:name=".NotificationHandler"
android:enabled="true"
android:exported="false">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,8 +38,6 @@

import org.jetbrains.annotations.NotNull;

import java.util.Objects;

/**
* @author Chirag Aggarwal
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
Expand Down Expand Up @@ -63,9 +62,9 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat

user = FirebaseAuth.getInstance().getCurrentUser();

if (user !=null) {
if (user != null) {
setClickHereListener();
}else{
} else {
foundTextView.setText("Found Something? Register to upload a post");
}

Expand All @@ -80,7 +79,7 @@ public void onDataChange(@NonNull DataSnapshot snapshot) {
lostFoundObjects.add(lostFoundObject);
}

LostFoundAdaptor lostFoundAdaptor = new LostFoundAdaptor(lostFoundObjects, false);
LostFoundAdaptor lostFoundAdaptor = new LostFoundAdaptor(lostFoundObjects, false, getContext());
foundRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
foundRecyclerView.setAdapter(lostFoundAdaptor);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import android.text.Spannable;
import android.text.SpannableString;
import android.text.style.ClickableSpan;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package com.chiragagg5k.bu_news_android;

import android.content.Intent;
import android.os.Bundle;
import android.widget.ImageView;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;

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.squareup.picasso.Picasso;

public class LostFoundDetailActivity extends AppCompatActivity {

ImageView backBtn, detailedLostFound_Image;
TextView detailedLostFound_ItemName, detailedLostFound_ItemDescription, detailedLostFound_UploaderName, detailedLostFound_UploaderContact, detailedLostFound_ItemLocation;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detailed_lostfound);

backBtn = findViewById(R.id.back_button);
detailedLostFound_ItemName = findViewById(R.id.detailedLostFound_ItemName);
detailedLostFound_ItemDescription = findViewById(R.id.detailedLostFound_ItemDescription);
detailedLostFound_UploaderName = findViewById(R.id.detailedLostFound_UploaderName);
detailedLostFound_UploaderContact = findViewById(R.id.detailedLostFound_UploaderContact);
detailedLostFound_Image = findViewById(R.id.detailedLostFound_Image);
detailedLostFound_ItemLocation = findViewById(R.id.detailedLostFound_ItemLocation);

Intent intent = getIntent();
String itemName = intent.getStringExtra("item_name");
String itemDescription = intent.getStringExtra("item_description");
String itemLocation = intent.getStringExtra("item_location");
String itemImageURL = intent.getStringExtra("item_image_url");
String uploaderUID = intent.getStringExtra("uploader_uid");
String uploaderContact = intent.getStringExtra("uploader_contact");

DatabaseReference userRef = FirebaseDatabase.getInstance().getReference("users").child(uploaderUID);
userRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
String uploaderName = snapshot.child("name").getValue().toString();
detailedLostFound_UploaderName.setText("Uploaded by: " + uploaderName);
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});

detailedLostFound_ItemName.setText(itemName);
detailedLostFound_ItemDescription.setText("Item Description: " + itemDescription);
detailedLostFound_UploaderContact.setText("Contact: " + uploaderContact);
detailedLostFound_ItemLocation.setText("Lost known location : " + itemLocation);

Picasso.get().load(itemImageURL).into(detailedLostFound_Image);

backBtn.setOnClickListener(v -> finish());
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.webkit.MimeTypeMap;
import android.widget.Button;
import android.widget.EditText;
Expand All @@ -20,9 +19,7 @@
import androidx.appcompat.app.AppCompatActivity;

import com.chiragagg5k.bu_news_android.objects.LostFoundObject;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnFailureListener;
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;
Expand All @@ -31,16 +28,13 @@
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.OnProgressListener;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.StorageTask;
import com.google.firebase.storage.UploadTask;
import com.squareup.picasso.Picasso;

public class LostFoundUploadActivity extends AppCompatActivity {

ImageView backBtn;
EditText title, description,location, contact;
EditText title, description, location, contact;
TextView selectImageLabel;
Button selectImage, upload;
DatabaseReference lostFoundDatabase, lostDatabase, foundDatabase;
Expand Down Expand Up @@ -108,7 +102,6 @@ public void onCancelled(@NonNull DatabaseError error) {
});



upload.setOnClickListener(v -> {
String titleText = title.getText().toString();
String descriptionText = description.getText().toString();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
import android.text.SpannableString;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
Expand Down Expand Up @@ -78,7 +77,7 @@ public void onDataChange(@NonNull DataSnapshot snapshot) {
lostFoundObjects.add(lostFoundObject);
}

LostFoundAdaptor lostFoundAdaptor = new LostFoundAdaptor(lostFoundObjects, true);
LostFoundAdaptor lostFoundAdaptor = new LostFoundAdaptor(lostFoundObjects, true, getContext());
lostRecyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
lostRecyclerView.setAdapter(lostFoundAdaptor);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,13 @@
import com.chiragagg5k.bu_news_android.objects.NewsObject;
import com.daimajia.androidanimations.library.Techniques;
import com.daimajia.androidanimations.library.YoYo;
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.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import com.google.firebase.storage.StorageTask;
Expand All @@ -37,16 +42,17 @@
@SuppressWarnings("rawtypes")
public class PostFragment extends Fragment {

TextView image_status;
TextView image_status, what_to_post_tv;
EditText heading, description;
Button choose_image, post_button;
ImageView preview_image;
StorageReference storageRef;
DatabaseReference databaseRef;
DatabaseReference databaseRef, userRef;
StorageTask uploadTask;
Uri image_uri;
Spinner category_spinner;
ArrayAdapter<CharSequence> category_adapter;
FirebaseUser user;

/**
* This is the callback for the result of the activity started by selectImage()
Expand Down Expand Up @@ -91,10 +97,14 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
image_status = view.findViewById(R.id.selected_image_tv);
category_spinner = view.findViewById(R.id.categories_spinner);
preview_image = view.findViewById(R.id.preview_image);
what_to_post_tv = view.findViewById(R.id.what_to_post_tv);

storageRef = FirebaseStorage.getInstance().getReference("uploads");
databaseRef = FirebaseDatabase.getInstance().getReference("uploads");

user = FirebaseAuth.getInstance().getCurrentUser();
userRef = FirebaseDatabase.getInstance().getReference("users").child(user.getUid());

category_adapter = ArrayAdapter.createFromResource(getContext(), R.array.choice_category_names, android.R.layout.simple_spinner_item);
category_adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
category_spinner.setAdapter(category_adapter);
Expand All @@ -111,6 +121,47 @@ public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceStat
}

});

userRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
DataSnapshot lastPostTimeSnapshot = snapshot.child("lastPostTime");
DataSnapshot isAdminSnapshot = snapshot.child("admin");
Boolean isAdmin = isAdminSnapshot.getValue(Boolean.class);

if (isAdmin != null && isAdmin) {
what_to_post_tv.setText("You are an admin. You can post anything you want without cooldown.");
return;
}

if (!lastPostTimeSnapshot.exists()) {
return;
}

long lastPostTime = lastPostTimeSnapshot.getValue(Long.class);
long currentTime = System.currentTimeMillis();
long timeDiff = currentTime - lastPostTime;
if (timeDiff < 7200000) {
post_button.setEnabled(false);
choose_image.setEnabled(false);

try {
post_button.setBackgroundColor(getResources().getColor(R.color.backgroundColorDarker));
choose_image.setBackgroundColor(getResources().getColor(R.color.backgroundColorDarker));
} catch (Exception e) {
e.printStackTrace();
}


what_to_post_tv.setText("Sorry for not informing in advance that posting has a cooldown of 2hrs! You can post again in " + (120 - timeDiff / 60000) + " minutes. Please wait.");
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});
}

/**
Expand Down Expand Up @@ -175,6 +226,9 @@ private void post() {
if (uploadId != null) databaseRef.child(uploadId).setValue(upload);
});

// update the last post time
userRef.child("lastPostTime").setValue(System.currentTimeMillis());

// clear the fields after 1 seconds
new Handler().postDelayed(() -> {
heading.setText("");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,8 @@
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.text.InputType;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
Expand Down Expand Up @@ -138,7 +135,7 @@ public void onClick(View view) {
});


}else {
} else {
Toast.makeText(ProfileActivity.this, "Authentication failed", Toast.LENGTH_SHORT).show();
dialog.cancel();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.chiragagg5k.bu_news_android.adaptors;

import android.net.Uri;
import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
Expand All @@ -10,20 +11,23 @@
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;

import com.chiragagg5k.bu_news_android.LostFoundDetailActivity;
import com.chiragagg5k.bu_news_android.R;
import com.chiragagg5k.bu_news_android.objects.LostFoundObject;
import com.squareup.picasso.Picasso;

import java.util.ArrayList;

public class LostFoundAdaptor extends RecyclerView.Adapter<LostFoundAdaptor.ViewHolder>{
public class LostFoundAdaptor extends RecyclerView.Adapter<LostFoundAdaptor.ViewHolder> {

ArrayList<LostFoundObject> lostFoundObjects;
boolean isLost;
private final Context context;

public LostFoundAdaptor(ArrayList<LostFoundObject> lostFoundObjects, boolean isLost) {
public LostFoundAdaptor(ArrayList<LostFoundObject> lostFoundObjects, boolean isLost, Context context) {
this.lostFoundObjects = lostFoundObjects;
this.isLost = isLost;
this.context = context;
}

@NonNull
Expand All @@ -41,6 +45,18 @@ public void onBindViewHolder(@NonNull LostFoundAdaptor.ViewHolder holder, int po

Picasso.get().load(lostFoundObjects.get(position).getItemImageURL()).fit().centerCrop().into(holder.itemImage);

holder.itemView.setOnClickListener(v -> {
Intent intent = new Intent(v.getContext(), LostFoundDetailActivity.class);
intent.putExtra("item_name", lostFoundObjects.get(position).getItemName());
intent.putExtra("item_description", lostFoundObjects.get(position).getItemDescription());
intent.putExtra("item_location", lostFoundObjects.get(position).getItemLocation());
intent.putExtra("item_image_url", lostFoundObjects.get(position).getItemImageURL());
intent.putExtra("item_date", lostFoundObjects.get(position).getItemDate());
intent.putExtra("uploader_uid", lostFoundObjects.get(position).getToContactUID());
intent.putExtra("uploader_contact", lostFoundObjects.get(position).getContactNo());

context.startActivity(intent);
});
}

@Override
Expand Down
Loading

0 comments on commit 0d4e0d1

Please sign in to comment.