diff options
Diffstat (limited to 'Client')
9 files changed, 128 insertions, 48 deletions
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  | 
