aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-12-07 22:11:10 +0100
committerJelena Petrovic <jelenapetrovic.7119@gmail.com>2022-12-07 22:11:10 +0100
commitc49b777cf17a05713b3c42a3bf0b7cca59d026a4 (patch)
treea0d69a692cd1a52ddbc8a034992270cbd2a94d1e
parenta519aa027f8fce9c5bc76aa215e56bb3d8ec3880 (diff)
parent7a455a613fe4bb9d8cd935cc6f670736485d37e5 (diff)
Merge branch 'develop' of http://gitlab.pmf.kg.ac.rs/BrzoDoLokacije2022/odyssey/brzodolokacije into develop
-rw-r--r--Backend/Api/Api/Models/User.cs4
-rw-r--r--Backend/Api/Api/Services/PostService.cs6
-rw-r--r--Backend/Api/Api/Services/UserService.cs10
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/add_post_red_image.xml16
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/add_post_red_image.pngbin0 -> 610 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/add_post_red_image.pngbin0 -> 464 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/add_post_red_image.pngbin0 -> 892 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/add_post_red_image.pngbin0 -> 1286 bytes
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt50
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt3
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_add_post_red_24.xml5
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml22
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml8
17 files changed, 109 insertions, 23 deletions
diff --git a/Backend/Api/Api/Models/User.cs b/Backend/Api/Api/Models/User.cs
index cf16dbe..52d0f24 100644
--- a/Backend/Api/Api/Models/User.cs
+++ b/Backend/Api/Api/Models/User.cs
@@ -21,6 +21,7 @@ namespace Api.Models
public List<string> following { get; set; }
public int followersCount { get; set; }
public int followingCount { get; set; }
+ public List<string>? favourites { get; set; }
}
public class Login
@@ -68,7 +69,8 @@ namespace Api.Models
public List<String> following { get; set; }
public int followersCount { get; set; }
- public int followingCount { get; set; }
+ public int followingCount { get; set; }
+ public List<string>? favourites { get; set; }
}
diff --git a/Backend/Api/Api/Services/PostService.cs b/Backend/Api/Api/Services/PostService.cs
index 6d28206..cb59330 100644
--- a/Backend/Api/Api/Services/PostService.cs
+++ b/Backend/Api/Api/Services/PostService.cs
@@ -557,22 +557,28 @@ namespace Api.Services
{
string userId = _httpContext.HttpContext.User.FindFirstValue("id");
var result = false;
+ var user = await _users.Find(x => x._id == userId).FirstOrDefaultAsync();
Post post = await _posts.Find(x => x._id == postId).FirstOrDefaultAsync();
if (userId == null || post==null)
return result;
if (post.favourites == null)
post.favourites = new List<string>();
+ if(user.favourites==null)
+ user.favourites= new List<string>();
if (post.favourites.Contains(userId))
{
post.favourites.Remove(userId);
+ user.favourites.Remove(post._id);
result = false;
}
else
{
post.favourites.Add(userId);
+ user.favourites.Add(post._id);
result = true;
}
+ await _users.ReplaceOneAsync(x => x._id == user._id, user);
await _posts.ReplaceOneAsync(x => x._id == postId, post);
return result;
diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs
index 781afa8..2b3f0b8 100644
--- a/Backend/Api/Api/Services/UserService.cs
+++ b/Backend/Api/Api/Services/UserService.cs
@@ -17,9 +17,7 @@ namespace Api.Services
private readonly IMongoCollection<Post> _posts;
private readonly IJwtService _jwtService;
private IConfiguration _configuration;
- private readonly IFileService _fileService;
-
- private readonly IMongoCollection<UserSend> _usersSend;
+ private readonly IFileService _fileService;
public UserService(IDatabaseConnection settings, IMongoClient mongoClient, IJwtService jwtService, IHttpContextAccessor httpContextAccessor, IConfiguration configuration, IFileService fileService)
{
var database = mongoClient.GetDatabase(settings.DatabaseName);
@@ -364,6 +362,7 @@ namespace Api.Services
tosend.followingCount = user.followingCount;
tosend.followers = user.followers;
tosend.following = user.following;
+ tosend.favourites = user.favourites;
var userposts = await _posts.Find(x => x.ownerId == user._id).ToListAsync();
tosend.postcount = userposts.Count();
return tosend;
@@ -384,6 +383,7 @@ namespace Api.Services
tosend.followingCount = user.followingCount;
tosend.followers = user.followers;
tosend.following = user.following;
+ tosend.favourites = user.favourites;
var userposts = await _posts.Find(x => x.ownerId == user._id).ToListAsync();
tosend.postcount = userposts.Count();
return tosend;
@@ -476,6 +476,7 @@ namespace Api.Services
follower.followers = utemp.followers;
follower.followersCount = utemp.followersCount;
follower.followingCount = utemp.followingCount;
+ follower.favourites = utemp.favourites;
follower._id = utemp._id;
@@ -515,6 +516,7 @@ namespace Api.Services
follower._id = utemp._id;
follower.followersCount = utemp.followersCount;
follower.followingCount = utemp.followingCount;
+ follower.favourites = utemp.favourites;
following.Add((UserSend)follower);
}
@@ -558,6 +560,7 @@ namespace Api.Services
following._id = utemp._id;
following.followersCount = utemp.followersCount;
following.followingCount = utemp.followingCount;
+ following.favourites=utemp.favourites;
myFollowings.Add((UserSend)following);
}
@@ -672,6 +675,7 @@ namespace Api.Services
follower.followersCount = utemp.followersCount;
follower.followingCount = utemp.followingCount;
follower._id = utemp._id;
+ follower.favourites = utemp.favourites;
myfollowers.Add((UserSend)follower);
}
return myfollowers;
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/add_post_red_image.xml b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/add_post_red_image.xml
new file mode 100644
index 0000000..a7524a9
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-anydpi/add_post_red_image.xml
@@ -0,0 +1,16 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24"
+ android:viewportHeight="24"
+ android:tint="#FC3636"
+ android:alpha="0.8">
+ <group android:scaleX="1.2"
+ android:scaleY="1.2"
+ android:translateX="-2.4"
+ android:translateY="-2.4">
+ <path
+ android:fillColor="@android:color/white"
+ android:pathData="M13,7h-2v4L7,11v2h4v4h2v-4h4v-2h-4L13,7zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
+ </group>
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/add_post_red_image.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/add_post_red_image.png
new file mode 100644
index 0000000..b4fd600
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-hdpi/add_post_red_image.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/add_post_red_image.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/add_post_red_image.png
new file mode 100644
index 0000000..5cc1ebf
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-mdpi/add_post_red_image.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/add_post_red_image.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/add_post_red_image.png
new file mode 100644
index 0000000..8c33142
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xhdpi/add_post_red_image.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/add_post_red_image.png b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/add_post_red_image.png
new file mode 100644
index 0000000..0745c58
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/debug/res/drawable-xxhdpi/add_post_red_image.png
Binary files differ
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
index 34a9e6b..2f5b2d2 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt
@@ -4,18 +4,20 @@ import android.content.Intent
import android.graphics.Color
import android.os.Bundle
import android.preference.PreferenceManager
+import android.util.TypedValue
+import android.view.View
import android.view.ViewGroup
-import android.widget.FrameLayout
-import android.widget.ImageView
-import android.widget.TextView
+import android.widget.*
import androidx.appcompat.app.AppCompatActivity
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.view.isGone
import androidx.core.view.isVisible
+import androidx.core.view.setMargins
import androidx.fragment.app.FragmentTransaction
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
+import com.auth0.android.jwt.JWT
import com.example.brzodolokacije.Adapters.CommentsAdapter
import com.example.brzodolokacije.Adapters.PostImageAdapter
import com.example.brzodolokacije.Fragments.FragmentSinglePostComments
@@ -48,6 +50,7 @@ class ActivitySinglePost : AppCompatActivity() {
private var recyclerViewImages: RecyclerView?=null
private var recyclerViewComments: RecyclerView?=null
private var favouriteImage: ImageView?=null
+ private lateinit var tagLayout: LinearLayout
public lateinit var post: PostPreview
@@ -76,7 +79,6 @@ class ActivitySinglePost : AppCompatActivity() {
btnChangeHeightUp.isVisible=true
btnChangeHeightUp.isGone=false
btnChangeHeightUp.isClickable=true
-
linearLayout2=findViewById(R.id.linearLayout2)
linearLayout2.setOnClickListener {
@@ -105,12 +107,16 @@ class ActivitySinglePost : AppCompatActivity() {
fm.replace(R.id.flSinglePostFragmentContainer, fragment)
fm.commit()
- /*
+
favouriteImage=binding.ivFavourite
- // set recyclerView attributes
+ tagLayout = binding.llTags
+ loadTags()
loadFavourite()
- */
+ // set recyclerView attributes
+
+
+
translateOwnerIdToName(post.ownerId)
binding.tvUser.setOnClickListener {
@@ -152,10 +158,10 @@ class ActivitySinglePost : AppCompatActivity() {
}
- /*favouriteImage!!.setOnClickListener{
+ favouriteImage!!.setOnClickListener{
addRemoveFavourite()
}
-*/
+
binding.btnActivitySinglePostDescription.setOnClickListener {
var fm: FragmentTransaction =supportFragmentManager.beginTransaction()
val fragment = FragmentSinglePostDescription()
@@ -177,7 +183,27 @@ class ActivitySinglePost : AppCompatActivity() {
}
- /*
+ fun loadTags(){
+ if(post.tags!=null)
+ for( item in post.tags!!){
+ var newbtn = Button(this)
+ newbtn.text = item
+ var layoutParams = LinearLayout.LayoutParams(
+ LinearLayout.LayoutParams.WRAP_CONTENT,
+ 50
+ )
+ layoutParams.setMargins(3)
+ newbtn.layoutParams=layoutParams
+ newbtn.setBackgroundColor(Color.parseColor("#1C789A"))
+ newbtn.setTextColor(Color.WHITE)
+ newbtn.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10F)
+ newbtn.setPadding(3,1,3,1)
+ newbtn.isClickable=false
+ tagLayout.addView(newbtn)
+ }
+
+ }
+
fun loadFavourite(){
if(post.favourites!=null){
var jwtString=SharedPreferencesHelper.getValue("jwt",this)
@@ -212,12 +238,12 @@ class ActivitySinglePost : AppCompatActivity() {
}
- */
+
fun getMap(){
var map: MapView? = null
Configuration.getInstance().load(this, PreferenceManager.getDefaultSharedPreferences(this));
- map=findViewById(R.id.MapDialogueMapView)
+ map=findViewById(R.id.MapDialogueMap)
//findViewById(R.id.MapDialogueMapView) as MapView
map!!.setTileSource(TileSourceFactory.MAPNIK);
map!!.setBuiltInZoomControls(true);
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt
index 238c7e8..c6bfe6d 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/MapsActivity.kt
@@ -128,6 +128,8 @@ class MapsActivity : AppCompatActivity() {
var editText=EditText(this)
var dialog=AlertDialog.Builder(this).setTitle("Naziv").setMessage("Unesite naziv")
.setView(editText)
+ if(searchBar.text!=null && searchBar.text.toString().trim()!="")
+ editText.setText(searchBar.text.toString())
dialog.setPositiveButton("Dodaj") { dialog, which ->
uploadLocation(editText.text.toString())
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt
index 478a8ea..56f7900 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Adapters/ChatPreviewsAdapter.kt
@@ -70,7 +70,7 @@ class ChatPreviewsAdapter (val items : MutableList<ChatPreview>,val activity:Cha
tvUsername.text=user.username
if(user.pfp!=null) {
Glide.with(activity)
- .load(RetrofitHelper.baseUrl + "/api/post/image/" + user.pfp!!._id)
+ .load(RetrofitHelper.baseUrl + "/api/post/image/compress/" + user.pfp!!._id)
.circleCrop()
.into(ivUserImage)
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt
index a0d6146..cb213bc 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentBrowse.kt
@@ -209,8 +209,10 @@ class FragmentBrowse : Fragment(R.layout.fragment_browse) {
for(post in postList){
Log.d("main",post.toString())
val startMarker = Marker(map)
+
startMarker.setPosition(GeoPoint(post.location.latitude,post.location.longitude))
startMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM)
+ startMarker.icon=ContextCompat.getDrawable(requireContext(), R.drawable.ic_baseline_location_on_24)
startMarker.setOnMarkerClickListener(object:OnMarkerClickListener{
override fun onMarkerClick(
marker: Marker?,
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt
index 6e282a9..072be55 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt
@@ -34,5 +34,6 @@ data class UserReceive(
var following:List<String>,
var followingCount:Int,
var postIds:List<Int>,
- var postNumber:Int
+ var postNumber:Int,
+ var favourites:List<String>?
) \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt
index 882a1ae..4c4d829 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/UserPostsMapFragment.kt
@@ -10,6 +10,7 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
+import androidx.core.content.ContextCompat
import com.example.brzodolokacije.Activities.ActivitySinglePost
import com.example.brzodolokacije.Fragments.FragmentProfile
import com.example.brzodolokacije.Models.PostPreview
@@ -83,6 +84,7 @@ class UserPostsMapFragment : Fragment() {
val startMarker = Marker(map)
startMarker.setPosition(GeoPoint(post.location.latitude,post.location.longitude))
startMarker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM)
+ startMarker.icon= ContextCompat.getDrawable(requireContext(), R.drawable.ic_baseline_location_on_24)
if(flag){
flag=false
map!!.controller.animateTo(GeoPoint(post.location.latitude,post.location.longitude))
diff --git a/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_add_post_red_24.xml b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_add_post_red_24.xml
new file mode 100644
index 0000000..111c9a1
--- /dev/null
+++ b/Client/BrzoDoLokacije/app/src/main/res/drawable/ic_baseline_add_post_red_24.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FC3636"
+ android:viewportHeight="24" android:viewportWidth="24"
+ android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+ <path android:fillColor="@android:color/white" android:pathData="M13,7h-2v4L7,11v2h4v4h2v-4h4v-2h-4L13,7zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z"/>
+</vector>
diff --git a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml
index 9d59e0b..15e81cf 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/layout/activity_single_post.xml
@@ -94,6 +94,26 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tvLocationType" />
+ <LinearLayout
+ android:id="@+id/llTags"
+ android:layout_width="match_parent"
+ android:layout_height="20dp"
+ android:orientation="horizontal"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/tvUser"></LinearLayout>
+
+ <ImageView
+ android:id="@+id/ivFavourite"
+ android:layout_width="30dp"
+ android:layout_height="30dp"
+ android:clickable="true"
+ android:layout_marginRight="5dp"
+ android:src="@drawable/ic_baseline_favorite_border_24"
+ app:layout_constraintBottom_toBottomOf="@+id/tvRating"
+ app:layout_constraintEnd_toStartOf="@+id/tvRating"
+ app:layout_constraintTop_toTopOf="@+id/tvRating" />
+
<TextView
android:id="@+id/tvRating"
android:textSize="15dp"
@@ -148,7 +168,7 @@
app:cardCornerRadius="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toBottomOf="@+id/tvUser">
+ app:layout_constraintTop_toBottomOf="@+id/llTags">
<org.osmdroid.views.MapView
android:id="@+id/MapDialogueMap"
diff --git a/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml b/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml
index c024570..405bc3c 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/menu/bottom_nav_menu.xml
@@ -9,14 +9,14 @@
android:icon="@drawable/ic_baseline_list_24"
android:title="Sve objave" />
<item
+ android:id="@+id/navAddPost"
+ android:title="Dodaj"
+ android:icon="@drawable/add_post_red_image"/>
+ <item
android:id="@+id/navBrowse"
android:title="Pretraga"
android:icon="@drawable/ic_nav_browse"/>
<item
- android:id="@+id/navAddPost"
- android:title="Dodaj"
- android:icon="@drawable/ic_nav_addpost"/>
- <item
android:id="@+id/navProfile"
android:title="Profil"
android:icon="@drawable/ic_nav_profile"/>