1
0
mirror of https://github.com/KokaKiwi/BarInsta synced 2024-11-22 22:57:29 +00:00

close #1267 and also simplify FriendshipService

This commit is contained in:
Austin Huang 2021-05-21 12:23:24 -04:00
parent e726ba3ccf
commit ec9e28bc09
No known key found for this signature in database
GPG Key ID: 84C23AA04587A91F
5 changed files with 60 additions and 111 deletions

View File

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

View File

@ -1597,7 +1597,7 @@ public final class ThreadManager {
public LiveData<Resource<Object>> blockUser(final User user) { public LiveData<Resource<Object>> blockUser(final User user) {
final MutableLiveData<Resource<Object>> data = new MutableLiveData<>(); final MutableLiveData<Resource<Object>> data = new MutableLiveData<>();
if (user == null) return data; if (user == null) return data;
friendshipService.block(user.getPk(), new ServiceCallback<FriendshipChangeResponse>() { friendshipService.changeBlock(false, user.getPk(), new ServiceCallback<FriendshipChangeResponse>() {
@Override @Override
public void onSuccess(final FriendshipChangeResponse result) { public void onSuccess(final FriendshipChangeResponse result) {
refreshChats(); refreshChats();
@ -1615,7 +1615,7 @@ public final class ThreadManager {
public LiveData<Resource<Object>> unblockUser(final User user) { public LiveData<Resource<Object>> unblockUser(final User user) {
final MutableLiveData<Resource<Object>> data = new MutableLiveData<>(); final MutableLiveData<Resource<Object>> data = new MutableLiveData<>();
if (user == null) return data; if (user == null) return data;
friendshipService.unblock(user.getPk(), new ServiceCallback<FriendshipChangeResponse>() { friendshipService.changeBlock(true, user.getPk(), new ServiceCallback<FriendshipChangeResponse>() {
@Override @Override
public void onSuccess(final FriendshipChangeResponse result) { public void onSuccess(final FriendshipChangeResponse result) {
refreshChats(); refreshChats();

View File

@ -78,14 +78,10 @@ public class FriendshipService extends BaseService {
change("destroy", targetUserId, callback); change("destroy", targetUserId, callback);
} }
public void block(final long targetUserId, public void changeBlock(final boolean unblock,
final long targetUserId,
final ServiceCallback<FriendshipChangeResponse> callback) { final ServiceCallback<FriendshipChangeResponse> callback) {
change("block", targetUserId, callback); change(unblock ? "unblock" : "block", targetUserId, callback);
}
public void unblock(final long targetUserId,
final ServiceCallback<FriendshipChangeResponse> callback) {
change("unblock", targetUserId, callback);
} }
public void toggleRestrict(final long targetUserId, public void toggleRestrict(final long targetUserId,
@ -126,6 +122,11 @@ public class FriendshipService extends BaseService {
change("ignore", targetUserId, callback); 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, private void change(final String action,
final long targetUserId, final long targetUserId,
final ServiceCallback<FriendshipChangeResponse> callback) { final ServiceCallback<FriendshipChangeResponse> callback) {

View File

@ -7,6 +7,12 @@
android:title="@string/layout" android:title="@string/layout"
app:showAsAction="never" /> app:showAsAction="never" />
<item
android:id="@+id/chaining"
android:title="@string/action_ayml"
android:visible="false"
app:showAsAction="never" />
<item <item
android:id="@+id/block" android:id="@+id/block"
android:icon="@drawable/ic_block_24" android:icon="@drawable/ic_block_24"
@ -22,8 +28,9 @@
app:showAsAction="never" /> app:showAsAction="never" />
<item <item
android:id="@+id/chaining" android:id="@+id/remove_follower"
android:title="@string/action_ayml" android:icon="@drawable/ic_block_24"
android:title="@string/remove_follower"
android:visible="false" android:visible="false"
app:showAsAction="never" /> app:showAsAction="never" />

View File

@ -126,6 +126,7 @@
<string name="mute_posts">Mute posts</string> <string name="mute_posts">Mute posts</string>
<string name="unmute_stories">Unmute stories</string> <string name="unmute_stories">Unmute stories</string>
<string name="unmute_posts">Unmute posts</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_copy">Copy bio</string>
<string name="bio_translate">Translate bio</string> <string name="bio_translate">Translate bio</string>
<string name="status_mutual">Mutual</string> <string name="status_mutual">Mutual</string>