diff options
Diffstat (limited to 'Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt')
-rw-r--r-- | Client/BrzoDoLokacije/app/src/main/java/com/example/brzodolokacije/Activities/ActivityUserProfile.kt | 261 |
1 files changed, 182 insertions, 79 deletions
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 4962006..0bbcf79 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 @@ -4,25 +4,34 @@ import android.annotation.SuppressLint import android.content.Intent import android.os.Bundle import android.util.Log +import android.view.View import android.widget.* import androidx.appcompat.app.AppCompatActivity +import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.view.isVisible -import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentTransaction +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout.OnRefreshListener +import com.auth0.android.jwt.JWT import com.bumptech.glide.Glide +import com.exam.DBHelper +import com.example.brzodolokacije.FragmentProfileStatistics import com.example.brzodolokacije.Fragments.FragmentUserPostsProfileActivity import com.example.brzodolokacije.Models.UserReceive import com.example.brzodolokacije.R -import com.example.brzodolokacije.R.* +import com.example.brzodolokacije.R.id +import com.example.brzodolokacije.R.layout import com.example.brzodolokacije.Services.RetrofitHelper import com.example.brzodolokacije.Services.SharedPreferencesHelper +import com.example.brzodolokacije.UserPostsMapFragment import com.google.gson.Gson import retrofit2.Call import retrofit2.Callback import retrofit2.Response -class ActivityUserProfile : AppCompatActivity() { +class ActivityUserProfile : AppCompatActivity(),OnRefreshListener { + private lateinit var swipeRefreshLayout: SwipeRefreshLayout private lateinit var name:TextView private lateinit var postsNumber:TextView private lateinit var followersNumber:TextView @@ -34,6 +43,10 @@ class ActivityUserProfile : AppCompatActivity() { private lateinit var userObject:UserReceive private lateinit var openChat:ImageButton private lateinit var unfollowUser:Button + private lateinit var btnSendMessage:ImageButton + private lateinit var followChatRow:ConstraintLayout + private lateinit var mapButton:Button + private lateinit var statisticsButton:Button private lateinit var showFollowers:Button private lateinit var showFollowing:Button @@ -56,6 +69,10 @@ class ActivityUserProfile : AppCompatActivity() { openChat=findViewById(id.activityUserProfileOpenChat) showFollowing=findViewById(id.tvActivityUserProfileFollow) showFollowers=findViewById(R.id.tvActivityUserProfileFollowers) + btnSendMessage=findViewById(R.id.activityUserProfileOpenChat) + followChatRow=findViewById(R.id.clActivityUserProfileFollow_Chat_Row) + mapButton=findViewById(R.id.btnFragmentUserProfileShowData) + statisticsButton=findViewById(R.id.btnFragmentUserProfileShowRecensions) val jsonMyObject: String @@ -65,85 +82,68 @@ class ActivityUserProfile : AppCompatActivity() { //val myObject: UserReceive = Gson().fromJson(jsonMyObject, UserReceive::class.java) userObject= Gson().fromJson(jsonMyObject, UserReceive::class.java) + updateUserData() - 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@ActivityUserProfile) - .load(RetrofitHelper.baseUrl + "/api/post/image/" + userObject.pfp!!._id) - .circleCrop()//Round image - .into(profilePicture) - } + } + else{ + finish() } - checkIfAlreadyFollow() - updateUserData() + showFollowers.setOnClickListener { + val bundle = Bundle() + bundle.putString("userId", userObject._id.toString()) + bundle.putString("show","followers") + bundle.putString("showMy","no") + val intent = Intent(this@ActivityUserProfile,ActivityShowFollowersAndFollowing::class.java) + intent.putExtras(bundle) + startActivity(intent) - followUser.setOnClickListener{ - val api = RetrofitHelper.getInstance() - val token = SharedPreferencesHelper.getValue("jwt", this@ActivityUserProfile) - var data = api.addFollower("Bearer " + token, userObject._id); - data.enqueue(object : Callback<Boolean> { - override fun onResponse( - call: Call<Boolean>, - response: Response<Boolean> - ) { - unfollowUser.isVisible=true - unfollowUser.isClickable=true - unfollowUser.isEnabled=true - followUser.isVisible=false - followUser.isClickable=false - followUser.isEnabled=false + } + mapButton.setOnClickListener { + val bundle = Bundle() - updateUserData() + bundle.putString("id", userObject._id) + bundle.putString("other","true") + val userMapFragment = UserPostsMapFragment() + userMapFragment.setArguments(bundle) + var fm: FragmentTransaction =supportFragmentManager.beginTransaction() + fm.replace(R.id.flActivityProfileFragmentContainer, userMapFragment) + fm.commit() - 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(); - } - }) + } + statisticsButton.setOnClickListener{ + + + var fragment: FragmentProfileStatistics = FragmentProfileStatistics() + val bundle = Bundle() + bundle.putString("username", userObject.username) + fragment.arguments=bundle + var fm: FragmentTransaction =supportFragmentManager.beginTransaction() + fm.replace(R.id.flActivityProfileFragmentContainer, fragment) + fm.commit() } - unfollowUser.setOnClickListener { - val api = RetrofitHelper.getInstance() - val token = SharedPreferencesHelper.getValue("jwt", this@ActivityUserProfile) - var data = api.unfollow("Bearer " + token, userObject._id); - data.enqueue(object : Callback<Boolean> { - override fun onResponse( - call: Call<Boolean>, - response: Response<Boolean> - ) { - unfollowUser.isVisible = false - unfollowUser.isClickable = false - unfollowUser.isEnabled = false - followUser.isVisible = true - followUser.isClickable = true - followUser.isEnabled = true - updateUserData() - Toast.makeText( - this@ActivityUserProfile, "VIĆ E NE PRATITE KORISNIKA", Toast.LENGTH_LONG - ).show(); - } - override fun onFailure(call: Call<Boolean>, t: Throwable) { - Toast.makeText( - this@ActivityUserProfile, t.toString(), Toast.LENGTH_LONG - ).show(); - } - }) + showFollowing.setOnClickListener { + val bundle = Bundle() + bundle.putString("userId", userObject._id.toString()) + bundle.putString("show","following") + bundle.putString("showMy","no") + val intent = Intent(this@ActivityUserProfile,ActivityShowFollowersAndFollowing::class.java) + intent.putExtras(bundle) + startActivity(intent) } - showFollowers.setOnClickListener { + setFollowerChatRow() + + showUserPosts.setOnClickListener { + showUserPostsFragment() + } + + followersNumber.setOnClickListener { val bundle = Bundle() bundle.putString("userId", userObject._id.toString()) bundle.putString("show","followers") @@ -154,7 +154,7 @@ class ActivityUserProfile : AppCompatActivity() { } - showFollowing.setOnClickListener { + followingNumber.setOnClickListener { val bundle = Bundle() bundle.putString("userId", userObject._id.toString()) bundle.putString("show","following") @@ -164,19 +164,112 @@ class ActivityUserProfile : AppCompatActivity() { startActivity(intent) } + swipeRefreshLayout = findViewById<View>(R.id.ProfileSwipeRefresh) as SwipeRefreshLayout + swipeRefreshLayout.setOnRefreshListener(this@ActivityUserProfile) + swipeRefreshLayout.setColorSchemeResources( + R.color.purple_200, + R.color.teal_200, + R.color.dark_blue_transparent, + R.color.purple_700 + ) + } + fun setFollowerChatRow(){ + if(userObject._id != SharedPreferencesHelper.getValue("jwt",this@ActivityUserProfile) + ?.let { it1 -> JWT(it1).claims["id"]?.asString() }){ + followChatRow.visibility=View.VISIBLE + followChatRow.forceLayout() + + + btnSendMessage.setOnClickListener{ + val intent: Intent = Intent(this@ActivityUserProfile, ChatActivityConversation::class.java) + intent.putExtra("userId",userObject._id) + intent.putExtra("username",userObject.username) + intent.putExtra("pfp",userObject.pfp?._id) + DBHelper.getInstance(this).readContact(userObject._id) + this.startActivity(intent) + } + + followUser.setOnClickListener{ + val api = RetrofitHelper.getInstance() + val token = SharedPreferencesHelper.getValue("jwt", this@ActivityUserProfile) + var data = api.addFollower("Bearer " + token, userObject._id); + data.enqueue(object : Callback<Boolean> { + override fun onResponse( + call: Call<Boolean>, + response: Response<Boolean> + ) { + if(response.body()==true) { + unfollowUser.isVisible = true + unfollowUser.isClickable = true + unfollowUser.isEnabled = true + followUser.isVisible = false + followUser.isClickable = false + followUser.isEnabled = false + + updateUserData() + } + } - showUserPosts.setOnClickListener { - var fm: FragmentTransaction =supportFragmentManager.beginTransaction() - val fragment = FragmentUserPostsProfileActivity() - val b = Bundle() - b.putString("userId", userObject._id.toString()) - fragment.arguments = b - fm.replace(R.id.flActivityProfileFragmentContainer, fragment) - fm.commit() + override fun onFailure(call: Call<Boolean>, t: Throwable) { + Toast.makeText( + this@ActivityUserProfile, t.toString(), Toast.LENGTH_LONG + ).show(); + } + }) + + } + unfollowUser.setOnClickListener { + val api = RetrofitHelper.getInstance() + val token = SharedPreferencesHelper.getValue("jwt", this@ActivityUserProfile) + var data = api.unfollow("Bearer " + token, userObject._id); + data.enqueue(object : Callback<Boolean> { + override fun onResponse( + call: Call<Boolean>, + response: Response<Boolean> + ) { + if(response.body()==true) { + unfollowUser.isVisible = false + unfollowUser.isClickable = false + unfollowUser.isEnabled = false + followUser.isVisible = true + followUser.isClickable = true + followUser.isEnabled = true + updateUserData() + } + } + + override fun onFailure(call: Call<Boolean>, t: Throwable) { + Toast.makeText( + this@ActivityUserProfile, t.toString(), Toast.LENGTH_LONG + ).show(); + } + }) + } } } + override fun onRefresh() { + onResume() + } + + override fun onResume(){ + super.onResume() + checkIfAlreadyFollow() + updateUserData() + showUserPostsFragment() + } + fun showUserPostsFragment(){ + var fm: FragmentTransaction =supportFragmentManager.beginTransaction() + val fragment = FragmentUserPostsProfileActivity() + val b = Bundle() + b.putString("userId", userObject._id.toString()) + fragment.arguments = b + fm.replace(R.id.flActivityProfileFragmentContainer, fragment) + fm.commit() + swipeRefreshLayout.isRefreshing=false + } + fun checkIfAlreadyFollow(){ val api = RetrofitHelper.getInstance() val token= SharedPreferencesHelper.getValue("jwt", this@ActivityUserProfile) @@ -186,6 +279,7 @@ class ActivityUserProfile : AppCompatActivity() { override fun onFailure(call: Call<Boolean>, t: Throwable) {; Log.d("fail","faillllllllllllllllllllllllllllllllllllllllllllllllllllllll") Log.d("fail",t.toString()) + swipeRefreshLayout.isRefreshing=false } @SuppressLint("ResourceAsColor") @@ -195,6 +289,7 @@ class ActivityUserProfile : AppCompatActivity() { return } var follow = response.body()!! + swipeRefreshLayout.isRefreshing=false if(follow){ Log.d("success","follow") @@ -234,7 +329,7 @@ class ActivityUserProfile : AppCompatActivity() { fun updateUserData(){ val api = RetrofitHelper.getInstance() val token = SharedPreferencesHelper.getValue("jwt", this@ActivityUserProfile) - var data = api.getProfileFromId("Bearer " + token, userObject._id); + var data = api.getProfile("Bearer " + token, userObject.username); data.enqueue(object : Callback<UserReceive> { override fun onResponse( call: Call<UserReceive>, @@ -243,15 +338,23 @@ class ActivityUserProfile : AppCompatActivity() { var userData=response.body()!! name.text=userData.name - postsNumber.text=userData.postNumber.toString() + postsNumber.text=userData.postcount.toString() followersNumber.text=userData.followersCount.toString() followingNumber.text=userData.followingCount.toString() + swipeRefreshLayout.isRefreshing=false + if(userData.pfp!=null) { + Glide.with(this@ActivityUserProfile) + .load(RetrofitHelper.baseUrl + "/api/post/image/" + userData.pfp!!._id) + .circleCrop()//Round image + .into(profilePicture) + } } override fun onFailure(call: Call<UserReceive>, t: Throwable) { Toast.makeText( this@ActivityUserProfile, t.toString(), Toast.LENGTH_LONG ).show(); + swipeRefreshLayout.isRefreshing=false } }) } |