mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-11-03 21:15:35 +00:00 
			
		
		
		
	Complete almost all Profile actions using service
This commit is contained in:
		
							parent
							
								
									40e810e88c
								
							
						
					
					
						commit
						6ee476b590
					
				@ -114,7 +114,7 @@ public final class SavedViewer extends BaseLanguageActivity implements SwipeRefr
 | 
				
			|||||||
                    savedBinding.mainPosts.setVisibility(View.VISIBLE);
 | 
					                    savedBinding.mainPosts.setVisibility(View.VISIBLE);
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                final PostModel model = result[result.length - 1];
 | 
					                final PostModel model = result.length > 0 ? result[result.length - 1] : null;
 | 
				
			||||||
                if (model != null) {
 | 
					                if (model != null) {
 | 
				
			||||||
                    endCursor = model.getEndCursor();
 | 
					                    endCursor = model.getEndCursor();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -130,13 +130,12 @@ public final class SavedViewer extends BaseLanguageActivity implements SwipeRefr
 | 
				
			|||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    model.setPageCursor(false, null);
 | 
					                    model.setPageCursor(false, null);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                savedBinding.swipeRefreshLayout.setRefreshing(false);
 | 
					 | 
				
			||||||
                // if (oldSize == 0) {
 | 
					 | 
				
			||||||
                //     Toast.makeText(getApplicationContext(), R.string.empty_list, Toast.LENGTH_SHORT).show();
 | 
					 | 
				
			||||||
                //     finish();
 | 
					 | 
				
			||||||
                // }
 | 
					 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					            savedBinding.swipeRefreshLayout.setRefreshing(false);
 | 
				
			||||||
 | 
					            // if (oldSize == 0) {
 | 
				
			||||||
 | 
					            //     Toast.makeText(getApplicationContext(), R.string.empty_list, Toast.LENGTH_SHORT).show();
 | 
				
			||||||
 | 
					            //     finish();
 | 
				
			||||||
 | 
					            // }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -103,7 +103,7 @@ public class DirectMessageInboxFragment extends Fragment implements SwipeRefresh
 | 
				
			|||||||
            NavHostFragment.findNavController(this).navigate(action);
 | 
					            NavHostFragment.findNavController(this).navigate(action);
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        inboxList.setAdapter(inboxAdapter);
 | 
					        inboxList.setAdapter(inboxAdapter);
 | 
				
			||||||
        listViewModel = new ViewModelProvider(fragmentActivity).get(InboxThreadModelListViewModel.class);
 | 
					        listViewModel = new ViewModelProvider(this).get(InboxThreadModelListViewModel.class);
 | 
				
			||||||
        listViewModel.getList().observe(fragmentActivity, inboxAdapter::submitList);
 | 
					        listViewModel.getList().observe(fragmentActivity, inboxAdapter::submitList);
 | 
				
			||||||
        initData();
 | 
					        initData();
 | 
				
			||||||
        return root;
 | 
					        return root;
 | 
				
			||||||
@ -127,6 +127,12 @@ public class DirectMessageInboxFragment extends Fragment implements SwipeRefresh
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void onDestroy() {
 | 
				
			||||||
 | 
					        super.onDestroy();
 | 
				
			||||||
 | 
					        listViewModel.getList().postValue(Collections.emptyList());
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void initData() {
 | 
					    private void initData() {
 | 
				
			||||||
        lazyLoader = new RecyclerLazyLoader(layoutManager, (page, totalItemsCount) -> {
 | 
					        lazyLoader = new RecyclerLazyLoader(layoutManager, (page, totalItemsCount) -> {
 | 
				
			||||||
            if (!Utils.isEmpty(endCursor))
 | 
					            if (!Utils.isEmpty(endCursor))
 | 
				
			||||||
 | 
				
			|||||||
@ -59,7 +59,8 @@ import awais.instagrabber.models.ProfileModel;
 | 
				
			|||||||
import awais.instagrabber.models.StoryModel;
 | 
					import awais.instagrabber.models.StoryModel;
 | 
				
			||||||
import awais.instagrabber.models.enums.DownloadMethod;
 | 
					import awais.instagrabber.models.enums.DownloadMethod;
 | 
				
			||||||
import awais.instagrabber.models.enums.ItemGetType;
 | 
					import awais.instagrabber.models.enums.ItemGetType;
 | 
				
			||||||
import awais.instagrabber.repositories.responses.FriendshipRepositoryChangeResponseRootObject;
 | 
					import awais.instagrabber.repositories.responses.FriendshipRepoChangeRootResponse;
 | 
				
			||||||
 | 
					import awais.instagrabber.repositories.responses.FriendshipRepoRestrictRootResponse;
 | 
				
			||||||
import awais.instagrabber.services.FriendshipService;
 | 
					import awais.instagrabber.services.FriendshipService;
 | 
				
			||||||
import awais.instagrabber.services.ServiceCallback;
 | 
					import awais.instagrabber.services.ServiceCallback;
 | 
				
			||||||
import awais.instagrabber.utils.Constants;
 | 
					import awais.instagrabber.utils.Constants;
 | 
				
			||||||
@ -222,10 +223,10 @@ public class ProfileFragment extends Fragment {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
        setupPosts();
 | 
					        setupPosts();
 | 
				
			||||||
        setupCommonListeners();
 | 
					        setupCommonListeners();
 | 
				
			||||||
        fetchProfile();
 | 
					        fetchUsername();
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void fetchProfile() {
 | 
					    private void fetchUsername() {
 | 
				
			||||||
        final String uid = Utils.getUserIdFromCookie(cookie);
 | 
					        final String uid = Utils.getUserIdFromCookie(cookie);
 | 
				
			||||||
        if (username == null && uid != null) {
 | 
					        if (username == null && uid != null) {
 | 
				
			||||||
            final FetchListener<String> fetchListener = username -> {
 | 
					            final FetchListener<String> fetchListener = username -> {
 | 
				
			||||||
@ -339,36 +340,18 @@ public class ProfileFragment extends Fragment {
 | 
				
			|||||||
                            binding.btnRestrict,
 | 
					                            binding.btnRestrict,
 | 
				
			||||||
                            ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.btn_orange_background)));
 | 
					                            ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.btn_orange_background)));
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (profileModel.isReallyPrivate()) {
 | 
					                binding.btnBlock.setVisibility(View.VISIBLE);
 | 
				
			||||||
                    binding.btnBlock.setVisibility(View.VISIBLE);
 | 
					                binding.btnTagged.setVisibility(View.VISIBLE);
 | 
				
			||||||
                    binding.btnTagged.setVisibility(View.GONE);
 | 
					                if (profileModel.getBlocked()) {
 | 
				
			||||||
                    if (profileModel.getBlocked()) {
 | 
					                    binding.btnBlock.setText(R.string.unblock);
 | 
				
			||||||
                        binding.btnBlock.setText(R.string.unblock);
 | 
					                    ViewCompat.setBackgroundTintList(
 | 
				
			||||||
                        ViewCompat.setBackgroundTintList(
 | 
					                            binding.btnBlock,
 | 
				
			||||||
                                binding.btnBlock,
 | 
					                            ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.btn_green_background)));
 | 
				
			||||||
                                ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.btn_green_background)));
 | 
					 | 
				
			||||||
                    } else {
 | 
					 | 
				
			||||||
                        binding.btnBlock.setText(R.string.block);
 | 
					 | 
				
			||||||
                        ViewCompat.setBackgroundTintList(
 | 
					 | 
				
			||||||
                                binding.btnBlock,
 | 
					 | 
				
			||||||
                                ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.btn_red_background)));
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                } else {
 | 
					                } else {
 | 
				
			||||||
                    binding.btnBlock.setVisibility(View.GONE);
 | 
					                    binding.btnBlock.setText(R.string.block);
 | 
				
			||||||
                    binding.btnSaved.setVisibility(View.VISIBLE);
 | 
					                    ViewCompat.setBackgroundTintList(
 | 
				
			||||||
                    binding.btnTagged.setVisibility(View.VISIBLE);
 | 
					                            binding.btnBlock,
 | 
				
			||||||
                    if (profileModel.getBlocked()) {
 | 
					                            ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.btn_red_background)));
 | 
				
			||||||
                        binding.btnSaved.setText(R.string.unblock);
 | 
					 | 
				
			||||||
                        ViewCompat.setBackgroundTintList(
 | 
					 | 
				
			||||||
                                binding.btnSaved,
 | 
					 | 
				
			||||||
                                ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.btn_green_background)));
 | 
					 | 
				
			||||||
                    } else {
 | 
					 | 
				
			||||||
                        binding.btnSaved.setText(R.string.block);
 | 
					 | 
				
			||||||
                        ViewCompat.setBackgroundTintList(
 | 
					 | 
				
			||||||
                                binding.btnSaved,
 | 
					 | 
				
			||||||
                                ColorStateList.valueOf(ContextCompat.getColor(requireContext(), R.color.btn_red_background))
 | 
					 | 
				
			||||||
                        );
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
@ -511,10 +494,11 @@ public class ProfileFragment extends Fragment {
 | 
				
			|||||||
                        userIdFromCookie,
 | 
					                        userIdFromCookie,
 | 
				
			||||||
                        profileModel.getId(),
 | 
					                        profileModel.getId(),
 | 
				
			||||||
                        Utils.getCsrfTokenFromCookie(cookie),
 | 
					                        Utils.getCsrfTokenFromCookie(cookie),
 | 
				
			||||||
                        new ServiceCallback<FriendshipRepositoryChangeResponseRootObject>() {
 | 
					                        new ServiceCallback<FriendshipRepoChangeRootResponse>() {
 | 
				
			||||||
                            @Override
 | 
					                            @Override
 | 
				
			||||||
                            public void onSuccess(final FriendshipRepositoryChangeResponseRootObject result) {
 | 
					                            public void onSuccess(final FriendshipRepoChangeRootResponse result) {
 | 
				
			||||||
                                Log.d(TAG, "Unfollow success: " + result);
 | 
					                                Log.d(TAG, "Unfollow success: " + result);
 | 
				
			||||||
 | 
					                                fetchProfileDetails();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            @Override
 | 
					                            @Override
 | 
				
			||||||
@ -527,10 +511,11 @@ public class ProfileFragment extends Fragment {
 | 
				
			|||||||
                        userIdFromCookie,
 | 
					                        userIdFromCookie,
 | 
				
			||||||
                        profileModel.getId(),
 | 
					                        profileModel.getId(),
 | 
				
			||||||
                        Utils.getCsrfTokenFromCookie(cookie),
 | 
					                        Utils.getCsrfTokenFromCookie(cookie),
 | 
				
			||||||
                        new ServiceCallback<FriendshipRepositoryChangeResponseRootObject>() {
 | 
					                        new ServiceCallback<FriendshipRepoChangeRootResponse>() {
 | 
				
			||||||
                            @Override
 | 
					                            @Override
 | 
				
			||||||
                            public void onSuccess(final FriendshipRepositoryChangeResponseRootObject result) {
 | 
					                            public void onSuccess(final FriendshipRepoChangeRootResponse result) {
 | 
				
			||||||
                                Log.d(TAG, "Follow success: " + result);
 | 
					                                Log.d(TAG, "Follow success: " + result);
 | 
				
			||||||
 | 
					                                fetchProfileDetails();
 | 
				
			||||||
                            }
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                            @Override
 | 
					                            @Override
 | 
				
			||||||
@ -543,12 +528,61 @@ public class ProfileFragment extends Fragment {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        binding.btnRestrict.setOnClickListener(v -> {
 | 
					        binding.btnRestrict.setOnClickListener(v -> {
 | 
				
			||||||
            if (!isLoggedIn) return;
 | 
					            if (!isLoggedIn) return;
 | 
				
			||||||
            // restrict
 | 
					            final String action = profileModel.getRestricted() ? "Unrestrict" : "Restrict";
 | 
				
			||||||
            // new ProfileAction().execute("restrict");
 | 
					            friendshipService.toggleRestrict(
 | 
				
			||||||
 | 
					                    profileModel.getId(),
 | 
				
			||||||
 | 
					                    !profileModel.getRestricted(),
 | 
				
			||||||
 | 
					                    Utils.getCsrfTokenFromCookie(cookie),
 | 
				
			||||||
 | 
					                    new ServiceCallback<FriendshipRepoRestrictRootResponse>() {
 | 
				
			||||||
 | 
					                        @Override
 | 
				
			||||||
 | 
					                        public void onSuccess(final FriendshipRepoRestrictRootResponse result) {
 | 
				
			||||||
 | 
					                            Log.d(TAG, action + " success: " + result);
 | 
				
			||||||
 | 
					                            fetchProfileDetails();
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        @Override
 | 
				
			||||||
 | 
					                        public void onFailure(final Throwable t) {
 | 
				
			||||||
 | 
					                            Log.e(TAG, "Error while performing " + action, t);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        binding.btnBlock.setOnClickListener(v -> {
 | 
					        binding.btnBlock.setOnClickListener(v -> {
 | 
				
			||||||
            if (!isLoggedIn) return;
 | 
					            if (!isLoggedIn) return;
 | 
				
			||||||
            // new MainHelper.ProfileAction().execute("block");
 | 
					            if (profileModel.getBlocked()) {
 | 
				
			||||||
 | 
					                friendshipService.unblock(
 | 
				
			||||||
 | 
					                        userIdFromCookie,
 | 
				
			||||||
 | 
					                        profileModel.getId(),
 | 
				
			||||||
 | 
					                        Utils.getCsrfTokenFromCookie(cookie),
 | 
				
			||||||
 | 
					                        new ServiceCallback<FriendshipRepoChangeRootResponse>() {
 | 
				
			||||||
 | 
					                            @Override
 | 
				
			||||||
 | 
					                            public void onSuccess(final FriendshipRepoChangeRootResponse result) {
 | 
				
			||||||
 | 
					                                Log.d(TAG, "Unblock success: " + result);
 | 
				
			||||||
 | 
					                                fetchProfileDetails();
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                            @Override
 | 
				
			||||||
 | 
					                            public void onFailure(final Throwable t) {
 | 
				
			||||||
 | 
					                                Log.e(TAG, "Error unblocking", t);
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                        });
 | 
				
			||||||
 | 
					                return;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            friendshipService.block(
 | 
				
			||||||
 | 
					                    userIdFromCookie,
 | 
				
			||||||
 | 
					                    profileModel.getId(),
 | 
				
			||||||
 | 
					                    Utils.getCsrfTokenFromCookie(cookie),
 | 
				
			||||||
 | 
					                    new ServiceCallback<FriendshipRepoChangeRootResponse>() {
 | 
				
			||||||
 | 
					                        @Override
 | 
				
			||||||
 | 
					                        public void onSuccess(final FriendshipRepoChangeRootResponse result) {
 | 
				
			||||||
 | 
					                            Log.d(TAG, "Block success: " + result);
 | 
				
			||||||
 | 
					                            fetchProfileDetails();
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                        @Override
 | 
				
			||||||
 | 
					                        public void onFailure(final Throwable t) {
 | 
				
			||||||
 | 
					                            Log.e(TAG, "Error blocking", t);
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
 | 
					                    });
 | 
				
			||||||
        });
 | 
					        });
 | 
				
			||||||
        binding.btnSaved.setOnClickListener(v -> startActivity(new Intent(requireContext(), SavedViewer.class)
 | 
					        binding.btnSaved.setOnClickListener(v -> startActivity(new Intent(requireContext(), SavedViewer.class)
 | 
				
			||||||
                .putExtra(Constants.EXTRAS_INDEX, "$" + profileModel.getId())
 | 
					                .putExtra(Constants.EXTRAS_INDEX, "$" + profileModel.getId())
 | 
				
			||||||
 | 
				
			|||||||
@ -1,4 +0,0 @@
 | 
				
			|||||||
package awais.instagrabber.fragments.settings.helpers;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
public class AutoSummaryDropDownPreference {
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
@ -2,10 +2,12 @@ package awais.instagrabber.repositories;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import java.util.Map;
 | 
					import java.util.Map;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import awais.instagrabber.repositories.responses.FriendshipRepositoryChangeResponseRootObject;
 | 
					import awais.instagrabber.repositories.responses.FriendshipRepoChangeRootResponse;
 | 
				
			||||||
 | 
					import awais.instagrabber.repositories.responses.FriendshipRepoRestrictRootResponse;
 | 
				
			||||||
import retrofit2.Call;
 | 
					import retrofit2.Call;
 | 
				
			||||||
import retrofit2.http.FieldMap;
 | 
					import retrofit2.http.FieldMap;
 | 
				
			||||||
import retrofit2.http.FormUrlEncoded;
 | 
					import retrofit2.http.FormUrlEncoded;
 | 
				
			||||||
 | 
					import retrofit2.http.Header;
 | 
				
			||||||
import retrofit2.http.POST;
 | 
					import retrofit2.http.POST;
 | 
				
			||||||
import retrofit2.http.Path;
 | 
					import retrofit2.http.Path;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -13,7 +15,14 @@ public interface FriendshipRepository {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    @FormUrlEncoded
 | 
					    @FormUrlEncoded
 | 
				
			||||||
    @POST("/api/v1/friendships/{action}/{id}/")
 | 
					    @POST("/api/v1/friendships/{action}/{id}/")
 | 
				
			||||||
    Call<FriendshipRepositoryChangeResponseRootObject> change(@Path("action") String action,
 | 
					    Call<FriendshipRepoChangeRootResponse> change(@Header("User-Agent") String userAgent,
 | 
				
			||||||
                                                              @Path("id") String id,
 | 
					                                                  @Path("action") String action,
 | 
				
			||||||
                                                              @FieldMap Map<String, String> form);
 | 
					                                                  @Path("id") String id,
 | 
				
			||||||
 | 
					                                                  @FieldMap Map<String, String> form);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @FormUrlEncoded
 | 
				
			||||||
 | 
					    @POST("/api/v1/restrict_action/{action}/")
 | 
				
			||||||
 | 
					    Call<FriendshipRepoRestrictRootResponse> toggleRestrict(@Header("User-Agent") String userAgent,
 | 
				
			||||||
 | 
					                                                            @Path("action") String action,
 | 
				
			||||||
 | 
					                                                            @FieldMap Map<String, String> form);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,6 +1,8 @@
 | 
				
			|||||||
package awais.instagrabber.repositories.responses;
 | 
					package awais.instagrabber.repositories.responses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FriendshipRepositoryChangeResponseFriendshipStatus {
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class FriendshipRepoChangeResponseFriendshipStatus {
 | 
				
			||||||
    private boolean following;
 | 
					    private boolean following;
 | 
				
			||||||
    private boolean followedBy;
 | 
					    private boolean followedBy;
 | 
				
			||||||
    private boolean blocking;
 | 
					    private boolean blocking;
 | 
				
			||||||
@ -10,14 +12,14 @@ public class FriendshipRepositoryChangeResponseFriendshipStatus {
 | 
				
			|||||||
    private boolean outgoingRequest;
 | 
					    private boolean outgoingRequest;
 | 
				
			||||||
    private boolean isBestie;
 | 
					    private boolean isBestie;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public FriendshipRepositoryChangeResponseFriendshipStatus(final boolean following,
 | 
					    public FriendshipRepoChangeResponseFriendshipStatus(final boolean following,
 | 
				
			||||||
                                                              final boolean followedBy,
 | 
					                                                        final boolean followedBy,
 | 
				
			||||||
                                                              final boolean blocking,
 | 
					                                                        final boolean blocking,
 | 
				
			||||||
                                                              final boolean muting,
 | 
					                                                        final boolean muting,
 | 
				
			||||||
                                                              final boolean isPrivate,
 | 
					                                                        final boolean isPrivate,
 | 
				
			||||||
                                                              final boolean incomingRequest,
 | 
					                                                        final boolean incomingRequest,
 | 
				
			||||||
                                                              final boolean outgoingRequest,
 | 
					                                                        final boolean outgoingRequest,
 | 
				
			||||||
                                                              final boolean isBestie) {
 | 
					                                                        final boolean isBestie) {
 | 
				
			||||||
        this.following = following;
 | 
					        this.following = following;
 | 
				
			||||||
        this.followedBy = followedBy;
 | 
					        this.followedBy = followedBy;
 | 
				
			||||||
        this.blocking = blocking;
 | 
					        this.blocking = blocking;
 | 
				
			||||||
@ -60,6 +62,7 @@ public class FriendshipRepositoryChangeResponseFriendshipStatus {
 | 
				
			|||||||
        return isBestie;
 | 
					        return isBestie;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NonNull
 | 
				
			||||||
    @Override
 | 
					    @Override
 | 
				
			||||||
    public String toString() {
 | 
					    public String toString() {
 | 
				
			||||||
        return "FriendshipRepositoryChangeResponseFriendshipStatus{" +
 | 
					        return "FriendshipRepositoryChangeResponseFriendshipStatus{" +
 | 
				
			||||||
@ -1,15 +1,16 @@
 | 
				
			|||||||
package awais.instagrabber.repositories.responses;
 | 
					package awais.instagrabber.repositories.responses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public class FriendshipRepositoryChangeResponseRootObject {
 | 
					public class FriendshipRepoChangeRootResponse {
 | 
				
			||||||
    private FriendshipRepositoryChangeResponseFriendshipStatus friendshipStatus;
 | 
					    private FriendshipRepoChangeResponseFriendshipStatus friendshipStatus;
 | 
				
			||||||
    private String status;
 | 
					    private String status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public FriendshipRepositoryChangeResponseRootObject(final FriendshipRepositoryChangeResponseFriendshipStatus friendshipStatus, final String status) {
 | 
					    public FriendshipRepoChangeRootResponse(final FriendshipRepoChangeResponseFriendshipStatus friendshipStatus,
 | 
				
			||||||
 | 
					                                            final String status) {
 | 
				
			||||||
        this.friendshipStatus = friendshipStatus;
 | 
					        this.friendshipStatus = friendshipStatus;
 | 
				
			||||||
        this.status = status;
 | 
					        this.status = status;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public FriendshipRepositoryChangeResponseFriendshipStatus getFriendshipStatus() {
 | 
					    public FriendshipRepoChangeResponseFriendshipStatus getFriendshipStatus() {
 | 
				
			||||||
        return friendshipStatus;
 | 
					        return friendshipStatus;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -0,0 +1,40 @@
 | 
				
			|||||||
 | 
					package awais.instagrabber.repositories.responses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class FriendshipRepoRestrictResponseFriendshipStatus extends FriendshipRepoChangeResponseFriendshipStatus {
 | 
				
			||||||
 | 
					    private boolean isRestricted;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public FriendshipRepoRestrictResponseFriendshipStatus(final boolean following,
 | 
				
			||||||
 | 
					                                                          final boolean followedBy,
 | 
				
			||||||
 | 
					                                                          final boolean blocking,
 | 
				
			||||||
 | 
					                                                          final boolean muting,
 | 
				
			||||||
 | 
					                                                          final boolean isPrivate,
 | 
				
			||||||
 | 
					                                                          final boolean incomingRequest,
 | 
				
			||||||
 | 
					                                                          final boolean outgoingRequest,
 | 
				
			||||||
 | 
					                                                          final boolean isBestie,
 | 
				
			||||||
 | 
					                                                          final boolean isRestricted) {
 | 
				
			||||||
 | 
					        super(following, followedBy, blocking, muting, isPrivate, incomingRequest, outgoingRequest, isBestie);
 | 
				
			||||||
 | 
					        this.isRestricted = isRestricted;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isRestricted() {
 | 
				
			||||||
 | 
					        return isRestricted;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NonNull
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String toString() {
 | 
				
			||||||
 | 
					        return "FriendshipRepoRestrictResponseFriendshipStatus{" +
 | 
				
			||||||
 | 
					                "following=" + isFollowing() +
 | 
				
			||||||
 | 
					                ", followedBy=" + isFollowedBy() +
 | 
				
			||||||
 | 
					                ", blocking=" + isBlocking() +
 | 
				
			||||||
 | 
					                ", muting=" + isMuting() +
 | 
				
			||||||
 | 
					                ", isPrivate=" + isPrivate() +
 | 
				
			||||||
 | 
					                ", incomingRequest=" + isIncomingRequest() +
 | 
				
			||||||
 | 
					                ", outgoingRequest=" + isOutgoingRequest() +
 | 
				
			||||||
 | 
					                ", isBestie=" + isBestie() +
 | 
				
			||||||
 | 
					                ", isRestricted=" + isRestricted() +
 | 
				
			||||||
 | 
					                '}';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,65 @@
 | 
				
			|||||||
 | 
					package awais.instagrabber.repositories.responses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class FriendshipRepoRestrictResponseUsersItem {
 | 
				
			||||||
 | 
					    private long pk;
 | 
				
			||||||
 | 
					    private String username;
 | 
				
			||||||
 | 
					    private String fullName;
 | 
				
			||||||
 | 
					    private boolean isPrivate;
 | 
				
			||||||
 | 
					    private String profilePicUrl;
 | 
				
			||||||
 | 
					    private FriendshipRepoRestrictResponseFriendshipStatus friendshipStatus;
 | 
				
			||||||
 | 
					    private boolean isVerified;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public FriendshipRepoRestrictResponseUsersItem(final long pk, final String username, final String fullName, final boolean isPrivate, final String profilePicUrl, final FriendshipRepoRestrictResponseFriendshipStatus friendshipStatus, final boolean isVerified) {
 | 
				
			||||||
 | 
					        this.pk = pk;
 | 
				
			||||||
 | 
					        this.username = username;
 | 
				
			||||||
 | 
					        this.fullName = fullName;
 | 
				
			||||||
 | 
					        this.isPrivate = isPrivate;
 | 
				
			||||||
 | 
					        this.profilePicUrl = profilePicUrl;
 | 
				
			||||||
 | 
					        this.friendshipStatus = friendshipStatus;
 | 
				
			||||||
 | 
					        this.isVerified = isVerified;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public long getPk() {
 | 
				
			||||||
 | 
					        return pk;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getUsername() {
 | 
				
			||||||
 | 
					        return username;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getFullName() {
 | 
				
			||||||
 | 
					        return fullName;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isPrivate() {
 | 
				
			||||||
 | 
					        return isPrivate;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getProfilePicUrl() {
 | 
				
			||||||
 | 
					        return profilePicUrl;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public FriendshipRepoRestrictResponseFriendshipStatus getFriendshipStatus() {
 | 
				
			||||||
 | 
					        return friendshipStatus;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public boolean isVerified() {
 | 
				
			||||||
 | 
					        return isVerified;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NonNull
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String toString() {
 | 
				
			||||||
 | 
					        return "FriendshipRepoRestrictResponseUsersItem{" +
 | 
				
			||||||
 | 
					                "pk=" + pk +
 | 
				
			||||||
 | 
					                ", username='" + username + '\'' +
 | 
				
			||||||
 | 
					                ", fullName='" + fullName + '\'' +
 | 
				
			||||||
 | 
					                ", isPrivate=" + isPrivate +
 | 
				
			||||||
 | 
					                ", profilePicUrl='" + profilePicUrl + '\'' +
 | 
				
			||||||
 | 
					                ", friendshipStatus=" + friendshipStatus +
 | 
				
			||||||
 | 
					                ", isVerified=" + isVerified +
 | 
				
			||||||
 | 
					                '}';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,32 @@
 | 
				
			|||||||
 | 
					package awais.instagrabber.repositories.responses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class FriendshipRepoRestrictRootResponse {
 | 
				
			||||||
 | 
					    private List<FriendshipRepoRestrictResponseUsersItem> users;
 | 
				
			||||||
 | 
					    private String status;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public FriendshipRepoRestrictRootResponse(final List<FriendshipRepoRestrictResponseUsersItem> users, final String status) {
 | 
				
			||||||
 | 
					        this.users = users;
 | 
				
			||||||
 | 
					        this.status = status;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public List<FriendshipRepoRestrictResponseUsersItem> getUsers() {
 | 
				
			||||||
 | 
					        return users;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getStatus() {
 | 
				
			||||||
 | 
					        return status;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NonNull
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public String toString() {
 | 
				
			||||||
 | 
					        return "FriendshipRepoRestrictRootResponse{" +
 | 
				
			||||||
 | 
					                "users=" + users +
 | 
				
			||||||
 | 
					                ", status='" + status + '\'' +
 | 
				
			||||||
 | 
					                '}';
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -0,0 +1,25 @@
 | 
				
			|||||||
 | 
					package awais.instagrabber.repositories.responses;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class LoginRequiredResponse {
 | 
				
			||||||
 | 
					    private String message = "login_required";
 | 
				
			||||||
 | 
					    private int logoutReason;
 | 
				
			||||||
 | 
					    private String status = "fail";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public LoginRequiredResponse(final String message, final int logoutReason, final String status) {
 | 
				
			||||||
 | 
					        this.message = message;
 | 
				
			||||||
 | 
					        this.logoutReason = logoutReason;
 | 
				
			||||||
 | 
					        this.status = status;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getMessage() {
 | 
				
			||||||
 | 
					        return message;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public int getLogoutReason() {
 | 
				
			||||||
 | 
					        return logoutReason;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public String getStatus() {
 | 
				
			||||||
 | 
					        return status;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@ -1,5 +1,10 @@
 | 
				
			|||||||
package awais.instagrabber.services;
 | 
					package awais.instagrabber.services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.google.gson.FieldNamingPolicy;
 | 
				
			||||||
 | 
					import com.google.gson.Gson;
 | 
				
			||||||
 | 
					import com.google.gson.GsonBuilder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import awais.instagrabber.BuildConfig;
 | 
				
			||||||
import okhttp3.OkHttpClient;
 | 
					import okhttp3.OkHttpClient;
 | 
				
			||||||
import retrofit2.Retrofit;
 | 
					import retrofit2.Retrofit;
 | 
				
			||||||
import retrofit2.converter.gson.GsonConverterFactory;
 | 
					import retrofit2.converter.gson.GsonConverterFactory;
 | 
				
			||||||
@ -11,15 +16,20 @@ public abstract class BaseService {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    Retrofit.Builder getRetrofitBuilder() {
 | 
					    Retrofit.Builder getRetrofitBuilder() {
 | 
				
			||||||
        if (builder == null) {
 | 
					        if (builder == null) {
 | 
				
			||||||
            final OkHttpClient client = new OkHttpClient.Builder()
 | 
					            final OkHttpClient.Builder clientBuilder = new OkHttpClient.Builder()
 | 
				
			||||||
                    .addInterceptor(new AddCookiesInterceptor())
 | 
					                    .addInterceptor(new AddCookiesInterceptor())
 | 
				
			||||||
                    .followRedirects(false)
 | 
					                    .followRedirects(true)
 | 
				
			||||||
                    .followSslRedirects(false)
 | 
					                    .followSslRedirects(true);
 | 
				
			||||||
                    .build();
 | 
					            if (BuildConfig.DEBUG) {
 | 
				
			||||||
 | 
					                // clientBuilder.addInterceptor(new LoggingInterceptor());
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            final Gson gson = new GsonBuilder()
 | 
				
			||||||
 | 
					                    .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
 | 
				
			||||||
 | 
					                    .create();
 | 
				
			||||||
            builder = new Retrofit.Builder()
 | 
					            builder = new Retrofit.Builder()
 | 
				
			||||||
                    .addConverterFactory(ScalarsConverterFactory.create())
 | 
					                    .addConverterFactory(ScalarsConverterFactory.create())
 | 
				
			||||||
                    .addConverterFactory(GsonConverterFactory.create())
 | 
					                    .addConverterFactory(GsonConverterFactory.create(gson))
 | 
				
			||||||
                    .client(client);
 | 
					                    .client(clientBuilder.build());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        return builder;
 | 
					        return builder;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -7,7 +7,9 @@ import java.util.Map;
 | 
				
			|||||||
import java.util.UUID;
 | 
					import java.util.UUID;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import awais.instagrabber.repositories.FriendshipRepository;
 | 
					import awais.instagrabber.repositories.FriendshipRepository;
 | 
				
			||||||
import awais.instagrabber.repositories.responses.FriendshipRepositoryChangeResponseRootObject;
 | 
					import awais.instagrabber.repositories.responses.FriendshipRepoChangeRootResponse;
 | 
				
			||||||
 | 
					import awais.instagrabber.repositories.responses.FriendshipRepoRestrictRootResponse;
 | 
				
			||||||
 | 
					import awais.instagrabber.utils.Constants;
 | 
				
			||||||
import awais.instagrabber.utils.Utils;
 | 
					import awais.instagrabber.utils.Utils;
 | 
				
			||||||
import retrofit2.Call;
 | 
					import retrofit2.Call;
 | 
				
			||||||
import retrofit2.Callback;
 | 
					import retrofit2.Callback;
 | 
				
			||||||
@ -38,40 +40,89 @@ public class FriendshipService extends BaseService {
 | 
				
			|||||||
    public void follow(final String userId,
 | 
					    public void follow(final String userId,
 | 
				
			||||||
                       final String targetUserId,
 | 
					                       final String targetUserId,
 | 
				
			||||||
                       final String crsfToken,
 | 
					                       final String crsfToken,
 | 
				
			||||||
                       final ServiceCallback<FriendshipRepositoryChangeResponseRootObject> callback) {
 | 
					                       final ServiceCallback<FriendshipRepoChangeRootResponse> callback) {
 | 
				
			||||||
        change("create", userId, targetUserId, crsfToken, callback);
 | 
					        change("create", userId, targetUserId, crsfToken, callback);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public void unfollow(final String userId,
 | 
					    public void unfollow(final String userId,
 | 
				
			||||||
                         final String targetUserId,
 | 
					                         final String targetUserId,
 | 
				
			||||||
                         final String crsfToken,
 | 
					                         final String crsfToken,
 | 
				
			||||||
                         final ServiceCallback<FriendshipRepositoryChangeResponseRootObject> callback) {
 | 
					                         final ServiceCallback<FriendshipRepoChangeRootResponse> callback) {
 | 
				
			||||||
        change("destroy", userId, targetUserId, crsfToken, callback);
 | 
					        change("destroy", userId, targetUserId, crsfToken, callback);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private void change(final String action,
 | 
					    public void block(final String userId,
 | 
				
			||||||
                        final String userId,
 | 
					                      final String targetUserId,
 | 
				
			||||||
 | 
					                      final String crsfToken,
 | 
				
			||||||
 | 
					                      final ServiceCallback<FriendshipRepoChangeRootResponse> callback) {
 | 
				
			||||||
 | 
					        change("block", userId, targetUserId, crsfToken, callback);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void unblock(final String userId,
 | 
				
			||||||
                        final String targetUserId,
 | 
					                        final String targetUserId,
 | 
				
			||||||
                        final String crsfToken,
 | 
					                        final String crsfToken,
 | 
				
			||||||
                        final ServiceCallback<FriendshipRepositoryChangeResponseRootObject> callback) {
 | 
					                        final ServiceCallback<FriendshipRepoChangeRootResponse> callback) {
 | 
				
			||||||
        final Map<String, Object> form = new HashMap<>(5);
 | 
					        change("unblock", userId, targetUserId, crsfToken, callback);
 | 
				
			||||||
        form.put("_csrftoken", crsfToken);
 | 
					    }
 | 
				
			||||||
        form.put("_uid", userId);
 | 
					
 | 
				
			||||||
 | 
					    public void restrict(final String targetUserId,
 | 
				
			||||||
 | 
					                         final String csrfToken,
 | 
				
			||||||
 | 
					                         final ServiceCallback<FriendshipRepoRestrictRootResponse> callback) {
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public void toggleRestrict(final String targetUserId,
 | 
				
			||||||
 | 
					                               final boolean restrict,
 | 
				
			||||||
 | 
					                               final String csrfToken,
 | 
				
			||||||
 | 
					                               final ServiceCallback<FriendshipRepoRestrictRootResponse> callback) {
 | 
				
			||||||
 | 
					        final Map<String, String> form = new HashMap<>(3);
 | 
				
			||||||
 | 
					        form.put("_csrftoken", csrfToken);
 | 
				
			||||||
        form.put("_uuid", UUID.randomUUID().toString());
 | 
					        form.put("_uuid", UUID.randomUUID().toString());
 | 
				
			||||||
        form.put("user_id", targetUserId);
 | 
					        form.put("target_user_id", targetUserId);
 | 
				
			||||||
        final Map<String, String> signedForm = Utils.sign(form);
 | 
					        final String action = restrict ? "restrict" : "unrestrict";
 | 
				
			||||||
        final Call<FriendshipRepositoryChangeResponseRootObject> request = repository.change(action, targetUserId, signedForm);
 | 
					        final Call<FriendshipRepoRestrictRootResponse> request = repository.toggleRestrict(Constants.I_USER_AGENT, action, form);
 | 
				
			||||||
        request.enqueue(new Callback<FriendshipRepositoryChangeResponseRootObject>() {
 | 
					        request.enqueue(new Callback<FriendshipRepoRestrictRootResponse>() {
 | 
				
			||||||
            @Override
 | 
					            @Override
 | 
				
			||||||
            public void onResponse(@NonNull final Call<FriendshipRepositoryChangeResponseRootObject> call,
 | 
					            public void onResponse(@NonNull final Call<FriendshipRepoRestrictRootResponse> call,
 | 
				
			||||||
                                   @NonNull final Response<FriendshipRepositoryChangeResponseRootObject> response) {
 | 
					                                   @NonNull final Response<FriendshipRepoRestrictRootResponse> response) {
 | 
				
			||||||
                if (callback != null) {
 | 
					                if (callback != null) {
 | 
				
			||||||
                    callback.onSuccess(response.body());
 | 
					                    callback.onSuccess(response.body());
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            @Override
 | 
					            @Override
 | 
				
			||||||
            public void onFailure(@NonNull final Call<FriendshipRepositoryChangeResponseRootObject> call,
 | 
					            public void onFailure(@NonNull final Call<FriendshipRepoRestrictRootResponse> call,
 | 
				
			||||||
 | 
					                                  @NonNull final Throwable t) {
 | 
				
			||||||
 | 
					                if (callback != null) {
 | 
				
			||||||
 | 
					                    callback.onFailure(t);
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        });
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private void change(final String action,
 | 
				
			||||||
 | 
					                        final String userId,
 | 
				
			||||||
 | 
					                        final String targetUserId,
 | 
				
			||||||
 | 
					                        final String csrfToken,
 | 
				
			||||||
 | 
					                        final ServiceCallback<FriendshipRepoChangeRootResponse> callback) {
 | 
				
			||||||
 | 
					        final Map<String, Object> form = new HashMap<>(5);
 | 
				
			||||||
 | 
					        form.put("_csrftoken", csrfToken);
 | 
				
			||||||
 | 
					        form.put("_uid", userId);
 | 
				
			||||||
 | 
					        form.put("_uuid", UUID.randomUUID().toString());
 | 
				
			||||||
 | 
					        form.put("radio_type", "wifi-none");
 | 
				
			||||||
 | 
					        form.put("user_id", targetUserId);
 | 
				
			||||||
 | 
					        final Map<String, String> signedForm = Utils.sign(form);
 | 
				
			||||||
 | 
					        final Call<FriendshipRepoChangeRootResponse> request = repository.change(Constants.I_USER_AGENT, action, targetUserId, signedForm);
 | 
				
			||||||
 | 
					        request.enqueue(new Callback<FriendshipRepoChangeRootResponse>() {
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onResponse(@NonNull final Call<FriendshipRepoChangeRootResponse> call,
 | 
				
			||||||
 | 
					                                   @NonNull final Response<FriendshipRepoChangeRootResponse> response) {
 | 
				
			||||||
 | 
					                if (callback != null) {
 | 
				
			||||||
 | 
					                    callback.onSuccess(response.body());
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            @Override
 | 
				
			||||||
 | 
					            public void onFailure(@NonNull final Call<FriendshipRepoChangeRootResponse> call,
 | 
				
			||||||
                                  @NonNull final Throwable t) {
 | 
					                                  @NonNull final Throwable t) {
 | 
				
			||||||
                if (callback != null) {
 | 
					                if (callback != null) {
 | 
				
			||||||
                    callback.onFailure(t);
 | 
					                    callback.onFailure(t);
 | 
				
			||||||
 | 
				
			|||||||
@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					package awais.instagrabber.services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import android.util.Log;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import androidx.annotation.NonNull;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import okhttp3.Interceptor;
 | 
				
			||||||
 | 
					import okhttp3.Request;
 | 
				
			||||||
 | 
					import okhttp3.Response;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class LoggingInterceptor implements Interceptor {
 | 
				
			||||||
 | 
					    private static final String TAG = "LoggingInterceptor";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @NonNull
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public Response intercept(Interceptor.Chain chain) throws IOException {
 | 
				
			||||||
 | 
					        Request request = chain.request();
 | 
				
			||||||
 | 
					        long t1 = System.nanoTime();
 | 
				
			||||||
 | 
					        Log.i(TAG, String.format("Sending request %s on %s%n%s",
 | 
				
			||||||
 | 
					                request.url(), chain.connection(), request.headers()));
 | 
				
			||||||
 | 
					        Response response = chain.proceed(request);
 | 
				
			||||||
 | 
					        long t2 = System.nanoTime();
 | 
				
			||||||
 | 
					        Log.i(TAG, String.format("Received response for %s in %.1fms%n%s\nbody: %s",
 | 
				
			||||||
 | 
					                response.request().url(), (t2 - t1) / 1e6d, response.headers(), response.body()));
 | 
				
			||||||
 | 
					        return response;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user