From 00533367cd2774625f2a9d57681f7d4072dc271e Mon Sep 17 00:00:00 2001 From: jiabaow Date: Sat, 21 May 2022 09:36:11 +0200 Subject: [PATCH 01/26] extract setUpRecycleView in SearchUserActivity.kt --- .../vibester/activity/SearchUserActivity.kt | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt b/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt index 6ff7700bd..91625bb41 100644 --- a/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt +++ b/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt @@ -42,7 +42,6 @@ class SearchUserActivity : AppCompatActivity(), OnItemClickListener { var users = arrayListOf() lateinit var userProfileAdapter: UserProfileAdapter - private var recyclerView: RecyclerView? = null private var searchEditText: EditText? = null private var uidList: ArrayList = ArrayList() @@ -54,13 +53,7 @@ class SearchUserActivity : AppCompatActivity(), OnItemClickListener { supportActionBar?.hide() setContentView(R.layout.activity_search_user) - recyclerView = findViewById(R.id.searchList) - recyclerView!!.setHasFixedSize(true) - recyclerView!!.layoutManager = LinearLayoutManager(this) - - userProfileAdapter = UserProfileAdapter(this.users, authenticator, usersRepo, imageGetter, this) - - recyclerView!!.adapter = userProfileAdapter + setUpRecycleView() searchEditText = findViewById(R.id.searchUserET) searchForUsers("") @@ -87,6 +80,15 @@ class SearchUserActivity : AppCompatActivity(), OnItemClickListener { }) } + private fun setUpRecycleView() { + findViewById(R.id.searchList).apply { + layoutManager = LinearLayoutManager(context) + userProfileAdapter = UserProfileAdapter(users, authenticator, usersRepo, imageGetter, this@SearchUserActivity) + adapter = userProfileAdapter + setHasFixedSize(true) + } + } + /** * Callback to update users in adapter during search */ From dffb899939b316b8599ea61201fb2cd77128d63a Mon Sep 17 00:00:00 2001 From: jiabaow Date: Sat, 21 May 2022 09:40:39 +0200 Subject: [PATCH 02/26] extract listener inn onCreate() in SearchUserActivity.kt --- .../java/ch/sdp/vibester/activity/SearchUserActivity.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt b/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt index 91625bb41..a51db4e20 100644 --- a/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt +++ b/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt @@ -58,8 +58,13 @@ class SearchUserActivity : AppCompatActivity(), OnItemClickListener { searchEditText = findViewById(R.id.searchUserET) searchForUsers("") - val buttonScan: FloatingActionButton = findViewById(R.id.searchUser_scanning) + setScanBtnListener() + + setSearchFieldListener() + } + private fun setScanBtnListener() { + val buttonScan: FloatingActionButton = findViewById(R.id.searchUser_scanning) val extras = intent.extras buttonScan.setOnClickListener { @@ -70,7 +75,9 @@ class SearchUserActivity : AppCompatActivity(), OnItemClickListener { } startActivity(qrIntent) } + } + private fun setSearchFieldListener() { searchEditText!!.addTextChangedListener(object:TextWatcher{ override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {} override fun onTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) { From b2184f3fd1d8b7601e2a892cb923100176e7c6e4 Mon Sep 17 00:00:00 2001 From: jiabaow Date: Sat, 21 May 2022 09:41:16 +0200 Subject: [PATCH 03/26] fix typo in SearchUserActivity.kt --- .../main/java/ch/sdp/vibester/activity/SearchUserActivity.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt b/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt index a51db4e20..855566f15 100644 --- a/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt +++ b/app/src/main/java/ch/sdp/vibester/activity/SearchUserActivity.kt @@ -113,7 +113,7 @@ class SearchUserActivity : AppCompatActivity(), OnItemClickListener { /** * Search for users by usernames in Firebase Realtime Database - * @param inputUsername search text inputed by user + * @param inputUsername search text inputted by user */ private fun searchForUsers(inputUsername:String){ usersRepo.searchByField("username", inputUsername, callback = ::setUserInAdapter, callbackUid = ::setUserInAdapter2) From a2d0b5360d4271cd20148862987ed1c5054a0113 Mon Sep 17 00:00:00 2001 From: jiabaow Date: Sat, 21 May 2022 09:50:59 +0200 Subject: [PATCH 04/26] show following icon in profile --- app/src/main/res/layout/profile_following_item.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/app/src/main/res/layout/profile_following_item.xml b/app/src/main/res/layout/profile_following_item.xml index e240ee1bd..ca4e28685 100644 --- a/app/src/main/res/layout/profile_following_item.xml +++ b/app/src/main/res/layout/profile_following_item.xml @@ -20,4 +20,16 @@ android:text="@string/profile_username" android:textSize="19sp" /> + + + \ No newline at end of file From e93b473008a02407eb720624f8f8be3b84022d77 Mon Sep 17 00:00:00 2001 From: jiabaow Date: Sat, 21 May 2022 10:18:24 +0200 Subject: [PATCH 05/26] change to ADD btn when click on unfollow btn in profile --- .../activity/profile/ProfileActivity.kt | 8 +++--- .../vibester/user/ProfileFollowingAdapter.kt | 26 ++++++++++++++++++- .../sdp/vibester/user/UserProfileAdapter.kt | 2 +- .../res/layout/profile_following_item.xml | 22 +++++++++++++--- 4 files changed, 48 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/ch/sdp/vibester/activity/profile/ProfileActivity.kt b/app/src/main/java/ch/sdp/vibester/activity/profile/ProfileActivity.kt index 5f77bb121..45cf4e0f0 100644 --- a/app/src/main/java/ch/sdp/vibester/activity/profile/ProfileActivity.kt +++ b/app/src/main/java/ch/sdp/vibester/activity/profile/ProfileActivity.kt @@ -49,7 +49,7 @@ open class ProfileActivity : AppCompatActivity(), OnItemClickListener { val imageRequestCode = 100 private var followings: MutableList ? = null - private var profileFriendsAdapter: ProfileFollowingAdapter?= null + private var profileFollowingAdapter: ProfileFollowingAdapter?= null override fun onCreate(savedInstanceState: Bundle?) { requestWindowFeature(Window.FEATURE_NO_TITLE) @@ -70,14 +70,14 @@ open class ProfileActivity : AppCompatActivity(), OnItemClickListener { private fun setupRecycleViewForFriends() { findViewById(R.id.profile_followingList).apply { layoutManager = LinearLayoutManager(context) - adapter = followings?.let { ProfileFollowingAdapter(it, this@ProfileActivity) } + adapter = followings?.let { ProfileFollowingAdapter(it, dataGetter, authenticator,this@ProfileActivity) } setHasFixedSize(true) } } private fun showFriendsPosition(friends: MutableList?) { - profileFriendsAdapter = ProfileFollowingAdapter(friends!!, this) - findViewById(R.id.profile_followingList)!!.adapter = profileFriendsAdapter + profileFollowingAdapter = ProfileFollowingAdapter(friends!!, dataGetter, authenticator, this) + findViewById(R.id.profile_followingList)!!.adapter = profileFollowingAdapter } diff --git a/app/src/main/java/ch/sdp/vibester/user/ProfileFollowingAdapter.kt b/app/src/main/java/ch/sdp/vibester/user/ProfileFollowingAdapter.kt index d5e8d8fd2..33014d081 100644 --- a/app/src/main/java/ch/sdp/vibester/user/ProfileFollowingAdapter.kt +++ b/app/src/main/java/ch/sdp/vibester/user/ProfileFollowingAdapter.kt @@ -2,10 +2,13 @@ package ch.sdp.vibester.user import android.view.View import android.view.ViewGroup +import android.widget.Button import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import ch.sdp.vibester.R +import ch.sdp.vibester.auth.FireBaseAuthenticator +import ch.sdp.vibester.database.DataGetter import ch.sdp.vibester.helper.AdapterHelper import ch.sdp.vibester.helper.loadImg @@ -14,8 +17,11 @@ import ch.sdp.vibester.helper.loadImg */ class ProfileFollowingAdapter constructor( private val following: MutableList, - private val listener: OnItemClickListener? + val dataGetter: DataGetter, + authenticator: FireBaseAuthenticator, + private val listener: OnItemClickListener?, ): RecyclerView.Adapter() { + private val currentUser = authenticator.getCurrUser() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProfileFollowingViewHolder { return ProfileFollowingViewHolder( @@ -39,6 +45,24 @@ class ProfileFollowingAdapter constructor( fun bind(user: User) { itemView.findViewById(R.id.profile_following_username).text = user.username itemView.findViewById(R.id.profile_following_profile_image).loadImg(user.image) + + unFollowBtnListener(user) + + } + + private fun unFollowBtnListener(user: User) { + itemView.findViewById(R.id.profile_unfollowIcon).setOnClickListener { + if (currentUser != null) { + dataGetter.setSubFieldValue(currentUser.uid, "following", user.uid, false) + changeImageToBtn() + } + } + + } + + private fun changeImageToBtn() { + itemView.findViewById(R.id.profile_unfollowIcon).visibility = View.INVISIBLE + itemView.findViewById