@ -132,7 +132,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
private HighlightsAdapter highlightsAdapter ;
private HighlightsViewModel highlightsViewModel ;
private MenuItem blockMenuItem , restrictMenuItem , chainingMenuItem ;
private MenuItem muteStoriesMenuItem , mutePostsMenuItem ;
private MenuItem muteStoriesMenuItem , mutePostsMenuItem , removeFollowerMenuItem ;
private boolean accountIsUpdated = false ;
private boolean postsSetupDone = false ;
private Set < Media > selectedFeedModels ;
@ -141,6 +141,23 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
private long myId ;
private PostsLayoutPreferences layoutPreferences = Utils . getPostsLayoutPreferences ( Constants . PREF_PROFILE_POSTS_LAYOUT ) ;
private final ServiceCallback < FriendshipChangeResponse > changeCb = new ServiceCallback < FriendshipChangeResponse > ( ) {
@Override
public void onSuccess ( final FriendshipChangeResponse result ) {
if ( result . getFriendshipStatus ( ) ! = null ) {
profileModel . setFriendshipStatus ( result . getFriendshipStatus ( ) ) ;
setProfileDetails ( ) ;
return ;
}
fetchProfileDetails ( ) ;
}
@Override
public void onFailure ( final Throwable t ) {
Log . e ( TAG , "Error editing relationship" , t ) ;
}
} ;
private final Runnable usernameSettingRunnable = ( ) - > {
final ActionBar actionBar = fragmentActivity . getSupportActionBar ( ) ;
if ( actionBar ! = null & & ! TextUtils . isEmpty ( username ) ) {
@ -374,8 +391,9 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
@Override
public void onCreateOptionsMenu ( @NonNull final Menu menu , @NonNull final MenuInflater inflater ) {
inflater . inflate ( R . menu . profile_menu , menu ) ;
final boolean isNotMe = profileModel ! = null & & isLoggedIn
& & ! Objects . equals ( profileModel . getPk ( ) , CookieUtils . getUserIdFromCookie ( cookie ) ) ;
blockMenuItem = menu . findItem ( R . id . block ) ;
final boolean isNotMe = profileModel ! = null & & ! Objects . equals ( profileModel . getPk ( ) , CookieUtils . getUserIdFromCookie ( cookie ) ) ;
if ( blockMenuItem ! = null ) {
if ( isNotMe ) {
blockMenuItem . setVisible ( true ) ;
@ -415,6 +433,10 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
if ( chainingMenuItem ! = null ) {
chainingMenuItem . setVisible ( isNotMe & & profileModel . hasChaining ( ) ) ;
}
removeFollowerMenuItem = menu . findItem ( R . id . remove_follower ) ;
if ( removeFollowerMenuItem ! = null ) {
removeFollowerMenuItem . setVisible ( isNotMe & & profileModel . getFriendshipStatus ( ) . isFollowedBy ( ) ) ;
}
}
@Override
@ -445,37 +467,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
}
if ( item . getItemId ( ) = = R . id . block ) {
if ( ! isLoggedIn ) return false ;
if ( profileModel . getFriendshipStatus ( ) . isBlocking ( ) ) {
friendshipService . unblock (
profileModel . getPk ( ) ,
new ServiceCallback < FriendshipChangeResponse > ( ) {
@Override
public void onSuccess ( final FriendshipChangeResponse result ) {
Log . d ( TAG , "Unblock success: " + result ) ;
fetchProfileDetails ( ) ;
}
@Override
public void onFailure ( final Throwable t ) {
Log . e ( TAG , "Error unblocking" , t ) ;
}
} ) ;
return true ;
}
friendshipService . block (
profileModel . getPk ( ) ,
new ServiceCallback < FriendshipChangeResponse > ( ) {
@Override
public void onSuccess ( final FriendshipChangeResponse result ) {
Log . d ( TAG , "Block success: " + result ) ;
fetchProfileDetails ( ) ;
}
@Override
public void onFailure ( final Throwable t ) {
Log . e ( TAG , "Error blocking" , t ) ;
}
} ) ;
friendshipService . changeBlock ( profileModel . getFriendshipStatus ( ) . isBlocking ( ) , profileModel . getPk ( ) , changeCb ) ;
return true ;
}
if ( item . getItemId ( ) = = R . id . chaining ) {
@ -493,18 +485,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
profileModel . getFriendshipStatus ( ) . isMutingReel ( ) ,
profileModel . getPk ( ) ,
true ,
new ServiceCallback < FriendshipChangeResponse > ( ) {
@Override
public void onSuccess ( final FriendshipChangeResponse result ) {
Log . d ( TAG , action + " success: " + result ) ;
fetchProfileDetails ( ) ;
}
@Override
public void onFailure ( final Throwable t ) {
Log . e ( TAG , "Error while performing " + action , t ) ;
}
} ) ;
changeCb ) ;
return true ;
}
if ( item . getItemId ( ) = = R . id . mute_posts ) {
@ -514,18 +495,12 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
profileModel . getFriendshipStatus ( ) . isMuting ( ) ,
profileModel . getPk ( ) ,
false ,
new ServiceCallback < FriendshipChangeResponse > ( ) {
@Override
public void onSuccess ( final FriendshipChangeResponse result ) {
Log . d ( TAG , action + " success: " + result ) ;
fetchProfileDetails ( ) ;
}
@Override
public void onFailure ( final Throwable t ) {
Log . e ( TAG , "Error while performing " + action , t ) ;
changeCb ) ;
return true ;
}
} ) ;
if ( item . getItemId ( ) = = R . id . remove_follower ) {
if ( ! isLoggedIn ) return false ;
friendshipService . removeFollower ( profileModel . getPk ( ) , changeCb ) ;
return true ;
}
return super . onOptionsItemSelected ( item ) ;
@ -973,6 +948,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
profileDetailsBinding . mainStatus . setText ( R . string . status_mutual ) ;
}
}
else profileDetailsBinding . mainStatus . setVisibility ( View . GONE ) ;
if ( profileModel . getFriendshipStatus ( ) . isFollowing ( ) ) {
profileDetailsBinding . btnFollow . setText ( R . string . unfollow ) ;
profileDetailsBinding . btnFollow . setChipIconResource ( R . drawable . ic_outline_person_add_disabled_24 ) ;
@ -1002,6 +978,9 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
if ( chainingMenuItem ! = null ) {
chainingMenuItem . setVisible ( profileModel . hasChaining ( ) ) ;
}
if ( removeFollowerMenuItem ! = null ) {
removeFollowerMenuItem . setVisible ( profileModel . getFriendshipStatus ( ) . isFollowedBy ( ) ) ;
}
}
}
@ -1069,52 +1048,13 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
. setTitle ( R . string . priv_acc )
. setMessage ( R . string . priv_acc_confirm )
. setPositiveButton ( R . string . confirm , ( d , w ) - >
friendshipService . unfollow (
profileModel . getPk ( ) ,
new ServiceCallback < FriendshipChangeResponse > ( ) {
@Override
public void onSuccess ( final FriendshipChangeResponse result ) {
/ / Log . d ( TAG , "Unfollow success: " + result ) ;
fetchProfileDetails ( ) ;
}
@Override
public void onFailure ( final Throwable t ) {
Log . e ( TAG , "Error unfollowing" , t ) ;
}
} ) )
friendshipService . unfollow ( profileModel . getPk ( ) , changeCb ) )
. setNegativeButton ( R . string . cancel , null )
. show ( ) ;
} else if ( profileModel . getFriendshipStatus ( ) . isFollowing ( ) | | profileModel . getFriendshipStatus ( ) . isOutgoingRequest ( ) ) {
friendshipService . unfollow (
profileModel . getPk ( ) ,
new ServiceCallback < FriendshipChangeResponse > ( ) {
@Override
public void onSuccess ( final FriendshipChangeResponse result ) {
/ / Log . d ( TAG , "Unfollow success: " + result ) ;
fetchProfileDetails ( ) ;
}
@Override
public void onFailure ( final Throwable t ) {
Log . e ( TAG , "Error unfollowing" , t ) ;
}
} ) ;
friendshipService . unfollow ( profileModel . getPk ( ) , changeCb ) ;
} else {
friendshipService . follow (
profileModel . getPk ( ) ,
new ServiceCallback < FriendshipChangeResponse > ( ) {
@Override
public void onSuccess ( final FriendshipChangeResponse result ) {
/ / Log . d ( TAG , "Follow success: " + result ) ;
fetchProfileDetails ( ) ;
}
@Override
public void onFailure ( final Throwable t ) {
Log . e ( TAG , "Error following" , t ) ;
}
} ) ;
friendshipService . follow ( profileModel . getPk ( ) , changeCb ) ;
}
} ) ;
profileDetailsBinding . btnSaved . setOnClickListener ( v - > {