@@ -51,6 +51,7 @@ class ConnectViewModel : ViewModel() {
5151 private val _circleActionResponse = MutableLiveData <PostResponse ?>()
5252 private val _activeFriends = MutableLiveData <List <ActiveFriendItem >?? > ()
5353 private val _ghostModeResponse = MutableLiveData <GhostModeResponse ?>()
54+ private val _pinnedFriends = MutableLiveData <Set <String >>()
5455
5556 val ghostModeResponse: MutableLiveData <GhostModeResponse ?> = _ghostModeResponse
5657 val friendList: MutableLiveData <FriendResponse ?> = _friendList
@@ -73,6 +74,7 @@ class ConnectViewModel : ViewModel() {
7374 val isCircleRequestsLoading: MutableLiveData <Boolean > = _isCircleRequestsLoading
7475 val circleActionResponse: MutableLiveData <PostResponse ?> = _circleActionResponse
7576 val activeFriends: MutableLiveData <List <ActiveFriendItem >?? > = _activeFriends
77+ val pinnedFriends: MutableLiveData <Set <String >> = _pinnedFriends
7678
7779 fun getFriendList (
7880 token : String ,
@@ -779,6 +781,95 @@ class ConnectViewModel : ViewModel() {
779781 _activeFriends .postValue(data)
780782 }
781783
784+ fun pinFriend (
785+ username : String ,
786+ prefs : SharedPreferences ,
787+ ): Boolean {
788+ val pinnedFriend1 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_1 , " " )
789+ val pinnedFriend2 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_2 , " " )
790+ val pinnedFriend3 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_3 , " " )
791+
792+ val success =
793+ when {
794+ pinnedFriend1.isNullOrEmpty() -> {
795+ prefs.edit { putString(Constants .COMMUNITY_PINNED_FRIEND_1 , username) }
796+ true
797+ }
798+ pinnedFriend2.isNullOrEmpty() -> {
799+ prefs.edit { putString(Constants .COMMUNITY_PINNED_FRIEND_2 , username) }
800+ true
801+ }
802+ pinnedFriend3.isNullOrEmpty() -> {
803+ prefs.edit { putString(Constants .COMMUNITY_PINNED_FRIEND_3 , username) }
804+ true
805+ }
806+ else -> false
807+ }
808+
809+ if (success) {
810+ updatePinnedFriendsState(prefs)
811+ }
812+ return success
813+ }
814+
815+ fun unpinFriend (
816+ username : String ,
817+ prefs : SharedPreferences ,
818+ ) {
819+ val pinnedFriend1 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_1 , " " )
820+ val pinnedFriend2 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_2 , " " )
821+ val pinnedFriend3 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_3 , " " )
822+
823+ when (username) {
824+ pinnedFriend1 -> prefs.edit { putString(Constants .COMMUNITY_PINNED_FRIEND_1 , " " ) }
825+ pinnedFriend2 -> prefs.edit { putString(Constants .COMMUNITY_PINNED_FRIEND_2 , " " ) }
826+ pinnedFriend3 -> prefs.edit { putString(Constants .COMMUNITY_PINNED_FRIEND_3 , " " ) }
827+ }
828+
829+ updatePinnedFriendsState(prefs)
830+ }
831+
832+ fun isFriendPinned (
833+ username : String ,
834+ prefs : SharedPreferences ,
835+ ): Boolean {
836+ val pinnedFriend1 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_1 , " " )
837+ val pinnedFriend2 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_2 , " " )
838+ val pinnedFriend3 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_3 , " " )
839+
840+ return username == pinnedFriend1 || username == pinnedFriend2 || username == pinnedFriend3
841+ }
842+
843+ fun getPinnedFriends (prefs : SharedPreferences ): List <String > {
844+ val pinnedFriends = mutableListOf<String >()
845+ val pinnedFriend1 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_1 , " " )
846+ val pinnedFriend2 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_2 , " " )
847+ val pinnedFriend3 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_3 , " " )
848+
849+ if (! pinnedFriend1.isNullOrEmpty()) pinnedFriends.add(pinnedFriend1)
850+ if (! pinnedFriend2.isNullOrEmpty()) pinnedFriends.add(pinnedFriend2)
851+ if (! pinnedFriend3.isNullOrEmpty()) pinnedFriends.add(pinnedFriend3)
852+
853+ return pinnedFriends
854+ }
855+
856+ fun initializePinnedFriends (prefs : SharedPreferences ) {
857+ updatePinnedFriendsState(prefs)
858+ }
859+
860+ private fun updatePinnedFriendsState (prefs : SharedPreferences ) {
861+ val pinnedFriends = mutableSetOf<String >()
862+ val pinnedFriend1 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_1 , " " )
863+ val pinnedFriend2 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_2 , " " )
864+ val pinnedFriend3 = prefs.getString(Constants .COMMUNITY_PINNED_FRIEND_3 , " " )
865+
866+ if (! pinnedFriend1.isNullOrEmpty()) pinnedFriends.add(pinnedFriend1)
867+ if (! pinnedFriend2.isNullOrEmpty()) pinnedFriends.add(pinnedFriend2)
868+ if (! pinnedFriend3.isNullOrEmpty()) pinnedFriends.add(pinnedFriend3)
869+
870+ _pinnedFriends .postValue(pinnedFriends)
871+ }
872+
782873 data class GhostModeResponse (
783874 val success : Boolean ,
784875 )
0 commit comments