aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTAMARA JERINIC <tamara.jerinic@gmail.com>2022-11-28 16:34:41 +0100
committerTAMARA JERINIC <tamara.jerinic@gmail.com>2022-11-28 16:34:41 +0100
commit74936fc8083a6d0ff242d5328786822471dfc58f (patch)
tree4c1c17e2aaf5a593a0ff75c8e46c78da9bc7ed81
parenta0c779057e0c1d3c223593e38372adfc00e85d7d (diff)
Omogućeno praćenje korisnika. Dodata provera pratilaca na back-u.
-rw-r--r--Backend/Api/Api/Controllers/UserController.cs18
-rw-r--r--Backend/Api/Api/Interfaces/IUserService.cs5
-rw-r--r--Backend/Api/Api/Services/UserService.cs92
-rw-r--r--Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml2
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivitySinglePost.kt3
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt127
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowers.kt6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowing.kt6
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt4
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt18
-rw-r--r--Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Models/User.kt8
-rw-r--r--Client/BrzoDoLokacije/app/src/main/res/values/colors.xml2
12 files changed, 233 insertions, 58 deletions
diff --git a/Backend/Api/Api/Controllers/UserController.cs b/Backend/Api/Api/Controllers/UserController.cs
index 7764af1..ada0f35 100644
--- a/Backend/Api/Api/Controllers/UserController.cs
+++ b/Backend/Api/Api/Controllers/UserController.cs
@@ -89,14 +89,26 @@ namespace Api.Controllers
return Ok(await _userService.GetFollowing(id));
}
- [HttpGet("addFollower")]
+ [HttpGet("{id}/addFollower")]
[Authorize(Roles = "User")]
- public async Task<ActionResult<List<UserSend>>> AddFollower(string userId, string followerId)
+ public async Task<ActionResult<Boolean>> AddFollower(string id)
{
- return Ok(await _userService.AddFollower(userId, followerId));
+ return Ok(await _userService.AddFollower(id));
}
+ [HttpGet("{id}/myFollowings")]
+ [Authorize(Roles = "User")]
+ public async Task<ActionResult<List<UserSend>>> GetMyFollowings()
+ {
+ return Ok(await _userService.GetMyFollowings());
+ }
+ [HttpGet("{id}/checkIfAlreadyFollow")]
+ [Authorize(Roles = "User")]
+ public async Task<ActionResult<Boolean>> CheckIfAlreadyFollow(String id)
+ {
+ return Ok(await _userService.CheckIfAlreadyFollow(id));
+ }
}
}
diff --git a/Backend/Api/Api/Interfaces/IUserService.cs b/Backend/Api/Api/Interfaces/IUserService.cs
index 5770de1..21dcdc0 100644
--- a/Backend/Api/Api/Interfaces/IUserService.cs
+++ b/Backend/Api/Api/Interfaces/IUserService.cs
@@ -27,8 +27,11 @@ namespace Api.Interfaces
Task<UserSend> GetUserData(string username);
Task<UserSend> GetSelfUserData(string id);
- Task<Boolean> AddFollower(string userId,string followerId);
+ Task<Boolean> AddFollower(string followerId);
Task<List<UserSend>> GetFollowers(string id);
Task<List<UserSend>> GetFollowing(string id);
+ Task<List<UserSend>> GetMyFollowings();
+
+ Task<Boolean> CheckIfAlreadyFollow(string id);
}
}
diff --git a/Backend/Api/Api/Services/UserService.cs b/Backend/Api/Api/Services/UserService.cs
index f616d99..7bfc24a 100644
--- a/Backend/Api/Api/Services/UserService.cs
+++ b/Backend/Api/Api/Services/UserService.cs
@@ -380,20 +380,25 @@ namespace Api.Services
return tosend;
}
- public async Task<Boolean> AddFollower(string userId,string followerId)
+ public async Task<Boolean> AddFollower(string followerId)
{
- User u = await _users.Find(user => user._id==userId).FirstOrDefaultAsync();
+ string id = null;
+ if (_httpContext.HttpContext.User.FindFirstValue("id") != null)
+ {
+ id = _httpContext.HttpContext.User.FindFirstValue("id").ToString();
+ }
User f = await _users.Find(user => user._id == followerId).FirstOrDefaultAsync();
-
- if (userId != null && followerId!=null)
+ User u = await _users.Find(user => user._id == id).FirstOrDefaultAsync();
+
+ if (id != null && followerId!=null)
{
if (u.followers == null)
u.followers = new List<string>();
u.followers.Add(followerId);
if (f.following == null)
f.following = new List<string>();
- f.following.Add(userId);
- _users.ReplaceOne(user=>user._id==userId, u);
+ f.following.Add(id);
+ _users.ReplaceOne(user=>user._id==id, u);
_users.ReplaceOne(user => user._id == followerId, f);
return true;
}
@@ -428,6 +433,7 @@ namespace Api.Services
followers.Add((UserSend)follower);
}
}
+ u.followersCount=followers.Count() ;
return followers;
}
return null;
@@ -459,9 +465,83 @@ namespace Api.Services
following.Add((UserSend)follower);
}
}
+ u.followersCount = following.Count();
return following;
}
return null;
}
+
+ public async Task<List<UserSend>> GetMyFollowings()
+ {
+ string id = null;
+
+ if (_httpContext.HttpContext.User.FindFirstValue("id") != null)
+ {
+ id = _httpContext.HttpContext.User.FindFirstValue("id").ToString();
+ }
+ User u = await _users.Find(user => user._id == id).FirstOrDefaultAsync();
+ List<UserSend> myFollowings = new List<UserSend>();
+ if (u != null)
+ {
+
+ if (u.following != null && u.following.Count() > 0)
+ {
+ foreach (string userid in u.following)
+ {
+ User utemp = await _users.Find(user => user._id == userid).FirstOrDefaultAsync();
+ if (utemp == null)
+ {
+ continue;
+ }
+ UserSend following = new UserSend();
+ following.pfp = utemp.pfp;
+ following.username = utemp.username;
+ following.email = utemp.username;
+ following.followers = utemp.followers;
+ following._id = utemp._id;
+
+ myFollowings.Add((UserSend)following);
+ }
+ }
+ return myFollowings;
+ }
+ return null;
+ }
+
+ public async Task<bool> CheckIfAlreadyFollow(string id)
+ {
+ string myId = null;
+
+ if (_httpContext.HttpContext.User.FindFirstValue("id") != null)
+ {
+ myId = _httpContext.HttpContext.User.FindFirstValue("id").ToString();
+ }
+
+ User u = await _users.Find(user => user._id == myId).FirstOrDefaultAsync();
+ User f = await _users.Find(user => user._id == id).FirstOrDefaultAsync();
+
+ if (u != null)
+ {
+
+ if (u.following != null && u.following.Count() > 0)
+ {
+ foreach (string userid in u.following)
+ {
+ User utemp = await _users.Find(user => user._id == userid).FirstOrDefaultAsync();
+ if (utemp == null)
+ {
+ continue;
+ }
+ if (utemp._id == f._id)
+ {
+ return true;
+ }
+ }
+ }
+
+ }
+
+ return false;
+ }
}
}
diff --git a/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml b/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml
index 6d9839f..394c76a 100644
--- a/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml
+++ b/Client/BrzoDoLokacije/.idea/deploymentTargetDropDown.xml
@@ -12,6 +12,6 @@
</deviceKey>
</Target>
</targetSelectedWithDropDown>
- <timeTargetWasSelectedWithDropDown value="2022-11-27T22:12:40.688602400Z" />
+ <timeTargetWasSelectedWithDropDown value="2022-11-28T13:21:51.009462400Z" />
</component>
</project> \ No newline at end of file
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 0e9c9da..e925984 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
@@ -303,6 +303,7 @@ class ActivitySinglePost : AppCompatActivity() {
}
fun translateOwnerIdToName(id:String) {
+ //binding.tvUser.text="proba"
var token= SharedPreferencesHelper.getValue("jwt", this).toString()
val api= RetrofitHelper.getInstance()
val request= api.getProfileFromId("Bearer " + token, id)
@@ -313,6 +314,7 @@ class ActivitySinglePost : AppCompatActivity() {
return
}
userData = response.body()!!
+
binding.tvUser.text= userData!!.username.toString()
}
@@ -322,4 +324,5 @@ class ActivitySinglePost : AppCompatActivity() {
})
}
+
}
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt
index 2d290db..c03dbd3 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt
@@ -1,26 +1,28 @@
package com.example.brzodolokacije.Activities
+import android.annotation.SuppressLint
+import android.graphics.Color
+import android.graphics.PorterDuff
+import android.graphics.drawable.Drawable
import android.os.Bundle
-import android.widget.Button
-import android.widget.FrameLayout
-import android.widget.ImageButton
-import android.widget.ImageView
-import android.widget.TextView
-import androidx.annotation.DrawableRes
+import android.util.Log
+import android.widget.*
import androidx.appcompat.app.AppCompatActivity
+import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import com.bumptech.glide.Glide
import com.example.brzodolokacije.Fragments.FragmentShowUserPosts
-import com.example.brzodolokacije.Models.PostPreview
-import com.example.brzodolokacije.Models.User
import com.example.brzodolokacije.Models.UserReceive
import com.example.brzodolokacije.R
+import com.example.brzodolokacije.R.*
import com.example.brzodolokacije.Services.RetrofitHelper
import com.example.brzodolokacije.Services.SharedPreferencesHelper
import com.google.gson.Gson
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
+import java.security.AccessController.getContext
+
class ActivityUserProfile : AppCompatActivity() {
private lateinit var name:TextView
@@ -28,58 +30,125 @@ class ActivityUserProfile : AppCompatActivity() {
private lateinit var followersNumber:TextView
private lateinit var followingNumber:TextView
private lateinit var profilePicture:ImageView
- private lateinit var followUser: ImageButton
+ private lateinit var followUser: Button
private lateinit var showUserPosts: Button
private lateinit var fragmentContainer: FrameLayout
- private lateinit var myObject:UserReceive
+ private lateinit var userObject:UserReceive
+ private lateinit var openChat:ImageButton
+
+ private lateinit var followersList: MutableList<UserReceive>
+ private lateinit var followingList: MutableList<UserReceive>
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- setContentView(R.layout.activity_user_profile)
+ setContentView(layout.activity_user_profile)
- name=findViewById(R.id.tvActivityUserProfileName)
- postsNumber=findViewById(R.id.tvActivityUserProfilePostsNo)
- followersNumber=findViewById(R.id.tvActivityUserProfileFollowersNo)
- followingNumber=findViewById(R.id.tvActivityUserProfileFollowNo)
- profilePicture=findViewById(R.id.tvActivityProfileProfilePicture)
- followUser=findViewById(R.id.btnActivityUserProfileFollow)
- showUserPosts=findViewById(R.id.btnActivityUserProfileShowPosts)
- fragmentContainer=findViewById(R.id.flActivityProfileFragmentContainer)
+ name=findViewById(id.tvActivityUserProfileName)
+ postsNumber=findViewById(id.tvActivityUserProfilePostsNo)
+ followersNumber=findViewById(id.tvActivityUserProfileFollowersNo)
+ followingNumber=findViewById(id.tvActivityUserProfileFollowNo)
+ profilePicture=findViewById(id.tvActivityProfileProfilePicture)
+ followUser=findViewById(id.btnActivityUserProfileFollow)
+ showUserPosts=findViewById(id.btnActivityUserProfileShowPosts)
+ fragmentContainer=findViewById(id.flActivityProfileFragmentContainer)
+ openChat=findViewById(id.activityUserProfileOpenChat)
val jsonMyObject: String
val extras = intent.extras
if (extras != null) {
jsonMyObject = extras.getString("user")!!
- myObject= Gson().fromJson(jsonMyObject, UserReceive::class.java)
+ //val myObject: UserReceive = Gson().fromJson(jsonMyObject, UserReceive::class.java)
- name.text=myObject.name
- postsNumber.text=myObject.postNumber.toString()
- followersNumber.text=myObject.followers.toString()
- followingNumber.text=myObject.following.toString()
+ userObject= Gson().fromJson(jsonMyObject, UserReceive::class.java)
- if(myObject.pfp!=null) {
+ name.text=userObject.name
+ postsNumber.text=userObject.postNumber.toString()
+ followersNumber.text=userObject?.followersCount.toString()
+ followingNumber.text=userObject?.followingCount.toString()
+
+ if(userObject.pfp!=null) {
Glide.with(this)
- .load(RetrofitHelper.baseUrl + "/api/post/image/" + myObject.pfp!!._id)
+ .load(RetrofitHelper.baseUrl + "/api/post/image/" + userObject.pfp!!._id)
.circleCrop()//Round image
.into(profilePicture)
}
}
+ checkIfAlreadyFollow()
+
followUser.setOnClickListener{
+
+ checkIfAlreadyFollow()
+
+
val api = RetrofitHelper.getInstance()
val token= SharedPreferencesHelper.getValue("jwt", this@ActivityUserProfile)
- api.addFollower("Bearer "+token,myObject._id);
+ var data=api.addFollower("Bearer "+token,userObject._id);
+ data.enqueue(object : Callback<Boolean> {
+ override fun onResponse(
+ call: Call<Boolean>,
+ response: Response<Boolean>
+ ) {
+ Toast.makeText(
+ this@ActivityUserProfile, "PRATITE KORISNIKA", Toast.LENGTH_LONG
+ ).show();
+ }
+ override fun onFailure(call: Call<Boolean>, t: Throwable) {
+ Toast.makeText(
+ this@ActivityUserProfile, t.toString(), Toast.LENGTH_LONG
+ ).show();
+ }
+ })
}
showUserPosts.setOnClickListener {
val bundle = Bundle()
- bundle.putString("user", Gson().toJson(myObject))
+ bundle.putString("user", Gson().toJson(userObject))
val fragment = Fragment()
fragment.arguments = bundle
getSupportFragmentManager().beginTransaction()
- .replace(R.id.flActivityProfileFragmentContainer,FragmentShowUserPosts()).commit()
+ .replace(id.flActivityProfileFragmentContainer,FragmentShowUserPosts()).commit()
}
}
+ fun checkIfAlreadyFollow(){
+ val api = RetrofitHelper.getInstance()
+ val token= SharedPreferencesHelper.getValue("jwt", this@ActivityUserProfile)
+ var data=api.checkIfAlreadyFollow("Bearer "+token,userObject._id);
+ data.enqueue(object : Callback<Boolean> {
+
+ override fun onFailure(call: Call<Boolean>, t: Throwable) {;
+ Log.d("fail","faillllllllllllllllllllllllllllllllllllllllllllllllllllllll")
+ Log.d("fail",t.toString())
+ }
+
+ @SuppressLint("ResourceAsColor")
+ override fun onResponse(call: Call<Boolean>, response: Response<Boolean>) {
+ Log.d("success","successsssssssssssssssssss")
+ if (response.body() == null) {
+ return
+ }
+ var follow = response.body()!!
+ if(follow){
+ Log.d("success","follow")
+ followUser.setCompoundDrawablesWithIntrinsicBounds(drawable.ic_outline_person_remove_24,0,0,0)
+ followUser.text="Ne prati više"
+
+ }
+ if(!follow){
+ Log.d("success","not follow")
+ followUser.setCompoundDrawablesWithIntrinsicBounds(drawable.ic_outline_person_add_alt_24,0,0,0)
+ followUser.text="Prati"
+ }
+
+ }
+ })
+
+ }
+
+ fun checkIfAlreadyFollowChangeButton(){
+
+ }
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowers.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowers.kt
index f1d9321..7450134 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowers.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowers.kt
@@ -44,7 +44,7 @@ class FragmentFollowers : Fragment() {
).show();
}
- getFollowers()
+ //getFollowers()
btnBack.setOnClickListener {
val fragmentProfile = FragmentProfile()
@@ -56,7 +56,7 @@ class FragmentFollowers : Fragment() {
return view
}
- fun getFollowers(){
+ /* fun getFollowers(){
val api = RetrofitHelper.getInstance()
val data=api.getFollowers(userId)
data.enqueue(object : Callback<MutableList<UserReceive>> {
@@ -80,5 +80,5 @@ class FragmentFollowers : Fragment() {
).show();
}
})
- }
+ }*/
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowing.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowing.kt
index b7a40dc..6f2ce65 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowing.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentFollowing.kt
@@ -38,7 +38,7 @@ class FragmentFollowing : Fragment() {
).show();
}
- getFollowing()
+ //getFollowing()
back.setOnClickListener {
val fragmentProfile = FragmentProfile()
@@ -50,7 +50,7 @@ class FragmentFollowing : Fragment() {
return view
}
- fun getFollowing(){
+ /*fun getFollowing(){
val api = RetrofitHelper.getInstance()
val data=api.getFollowers(userId)
data.enqueue(object : Callback<MutableList<UserReceive>> {
@@ -74,5 +74,5 @@ class FragmentFollowing : Fragment() {
).show();
}
})
- }
+ }*/
} \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
index 3427658..669b978 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Fragments/FragmentProfile.kt
@@ -214,8 +214,8 @@ class FragmentProfile : Fragment(com.example.brzodolokacije.R.layout.fragment_pr
username.setText("@"+user.username)
postsCount.setText(user.postcount.toString())
- followersCount.setText(user.followersNumber.toString())
- followingCount.setText(user.followingNumber.toString())
+ followersCount.setText(user.followersCount.toString())
+ followingCount.setText(user.followingCount.toString())
userId=user._id
diff --git a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
index 8556047..fc2d24f 100644
--- a/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
+++ b/Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Interfaces/IBackendApi.kt
@@ -72,14 +72,14 @@ interface IBackendApi {
//@POST("putanja")
//fun add(@Body obj:Post,@Header("Authorization") authHeader:String):Call<Post>
- @POST("/api/user/{id}/followers")
- fun getFollowers(@Path("id") id:String):Call <MutableList<UserReceive>>
+ @GET("/api/user/{id}/followers")
+ fun getFollowers(@Header("Authorization") authHeader:String,@Path("id") id:String):Call <MutableList<UserReceive>>
- @POST("/api/user{id}/following")
- fun getFollowing(@Path("id") id:String):Call <MutableList<UserReceive>>
+ @GET("/api/user/{id}/following")
+ fun getFollowing(@Header("Authorization") authHeader:String,@Path("id") id:String):Call <MutableList<UserReceive>>
- @POST("/api/user{id}/addFollower")
- fun addFollower(@Header("Authorization") authHeader:String,@Path("id") id:String):Call<UserReceive>
+ @GET("/api/user/{id}/addFollower")
+ fun addFollower(@Header("Authorization") authHeader:String,@Path("id") id:String):Call<Boolean>
@GET("/api/user/{id}/id/profile")
fun getProfileFromId(@Header("Authorization") authHeader:String,@Path("id") username:String):Call<UserReceive>
@@ -95,4 +95,10 @@ interface IBackendApi {
@GET("api/Location/search")
fun searchLocationsQuery(@Header("Authorization") authHeader:String,@Query("query") query: String):Call<MutableList<Location>>
+ @GET("/api/user/{id}/myFollowings")
+ fun getMyFollowings(@Header("Authorization") authHeader:String):Call <MutableList<UserReceive>>
+
+ @GET("/api/user/{id}/checkIfAlreadyFollow")
+ fun checkIfAlreadyFollow(@Header("Authorization") authHeader:String,@Path("id") id:String):Call<Boolean>
+
} \ No newline at end of file
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 46338b3..6e282a9 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
@@ -29,10 +29,10 @@ data class UserReceive(
var creationDate: Date,
var pfp:PostImage?,
var postcount:Int,
- var followers:List<User>,
- var followersNumber:Int,
- var following:List<User>,
- var followingNumber:Int,
+ var followers:List<String>,
+ var followersCount:Int,
+ var following:List<String>,
+ var followingCount:Int,
var postIds:List<Int>,
var postNumber:Int
) \ No newline at end of file
diff --git a/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml b/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml
index 0d4da4f..fe34814 100644
--- a/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml
+++ b/Client/BrzoDoLokacije/app/src/main/res/values/colors.xml
@@ -7,5 +7,7 @@
<color name="teal_700">#FF018786</color>
<color name="black">#FF000000</color>
<color name="white">#FFFFFFFF</color>
+ <color name="unfollow">#c4c4c4</color>
<color name="dark_blue_transparent">#DE093A4C</color>
+ <color name="button_main">#183e4b</color>
</resources> \ No newline at end of file