mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-10-30 19:15:35 +00:00 
			
		
		
		
	close #1267 and also simplify FriendshipService
This commit is contained in:
		
							parent
							
								
									e726ba3ccf
								
							
						
					
					
						commit
						ec9e28bc09
					
				| @ -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 -> { | ||||
|  | ||||
| @ -1597,7 +1597,7 @@ public final class ThreadManager { | ||||
|     public LiveData<Resource<Object>> blockUser(final User user) { | ||||
|         final MutableLiveData<Resource<Object>> data = new MutableLiveData<>(); | ||||
|         if (user == null) return data; | ||||
|         friendshipService.block(user.getPk(), new ServiceCallback<FriendshipChangeResponse>() { | ||||
|         friendshipService.changeBlock(false, user.getPk(), new ServiceCallback<FriendshipChangeResponse>() { | ||||
|             @Override | ||||
|             public void onSuccess(final FriendshipChangeResponse result) { | ||||
|                 refreshChats(); | ||||
| @ -1615,7 +1615,7 @@ public final class ThreadManager { | ||||
|     public LiveData<Resource<Object>> unblockUser(final User user) { | ||||
|         final MutableLiveData<Resource<Object>> data = new MutableLiveData<>(); | ||||
|         if (user == null) return data; | ||||
|         friendshipService.unblock(user.getPk(), new ServiceCallback<FriendshipChangeResponse>() { | ||||
|         friendshipService.changeBlock(true, user.getPk(), new ServiceCallback<FriendshipChangeResponse>() { | ||||
|             @Override | ||||
|             public void onSuccess(final FriendshipChangeResponse result) { | ||||
|                 refreshChats(); | ||||
|  | ||||
| @ -78,14 +78,10 @@ public class FriendshipService extends BaseService { | ||||
|         change("destroy", targetUserId, callback); | ||||
|     } | ||||
| 
 | ||||
|     public void block(final long targetUserId, | ||||
|                       final ServiceCallback<FriendshipChangeResponse> callback) { | ||||
|         change("block", targetUserId, callback); | ||||
|     } | ||||
| 
 | ||||
|     public void unblock(final long targetUserId, | ||||
|                         final ServiceCallback<FriendshipChangeResponse> callback) { | ||||
|         change("unblock", targetUserId, callback); | ||||
|     public void changeBlock(final boolean unblock, | ||||
|                             final long targetUserId, | ||||
|                             final ServiceCallback<FriendshipChangeResponse> callback) { | ||||
|         change(unblock ? "unblock" : "block", targetUserId, callback); | ||||
|     } | ||||
| 
 | ||||
|     public void toggleRestrict(final long targetUserId, | ||||
| @ -126,6 +122,11 @@ public class FriendshipService extends BaseService { | ||||
|         change("ignore", targetUserId, callback); | ||||
|     } | ||||
| 
 | ||||
|     public void removeFollower(final long targetUserId, | ||||
|                                final ServiceCallback<FriendshipChangeResponse> callback) { | ||||
|         change("remove_follower", targetUserId, callback); | ||||
|     } | ||||
| 
 | ||||
|     private void change(final String action, | ||||
|                         final long targetUserId, | ||||
|                         final ServiceCallback<FriendshipChangeResponse> callback) { | ||||
|  | ||||
| @ -7,6 +7,12 @@ | ||||
|         android:title="@string/layout" | ||||
|         app:showAsAction="never" /> | ||||
| 
 | ||||
|     <item | ||||
|         android:id="@+id/chaining" | ||||
|         android:title="@string/action_ayml" | ||||
|         android:visible="false" | ||||
|         app:showAsAction="never" /> | ||||
| 
 | ||||
|     <item | ||||
|         android:id="@+id/block" | ||||
|         android:icon="@drawable/ic_block_24" | ||||
| @ -22,8 +28,9 @@ | ||||
|         app:showAsAction="never" /> | ||||
| 
 | ||||
|     <item | ||||
|         android:id="@+id/chaining" | ||||
|         android:title="@string/action_ayml" | ||||
|         android:id="@+id/remove_follower" | ||||
|         android:icon="@drawable/ic_block_24" | ||||
|         android:title="@string/remove_follower" | ||||
|         android:visible="false" | ||||
|         app:showAsAction="never" /> | ||||
| 
 | ||||
|  | ||||
| @ -126,6 +126,7 @@ | ||||
|     <string name="mute_posts">Mute posts</string> | ||||
|     <string name="unmute_stories">Unmute stories</string> | ||||
|     <string name="unmute_posts">Unmute posts</string> | ||||
|     <string name="remove_follower">Remove follower</string> | ||||
|     <string name="bio_copy">Copy bio</string> | ||||
|     <string name="bio_translate">Translate bio</string> | ||||
|     <string name="status_mutual">Mutual</string> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user