mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-11-03 21:15:35 +00:00 
			
		
		
		
	replace CreateThreadAction
This commit is contained in:
		
							parent
							
								
									a812161185
								
							
						
					
					
						commit
						447ef0d660
					
				@ -1,80 +0,0 @@
 | 
			
		||||
package awais.instagrabber.asyncs;
 | 
			
		||||
 | 
			
		||||
import android.os.AsyncTask;
 | 
			
		||||
import android.util.Log;
 | 
			
		||||
 | 
			
		||||
import androidx.annotation.NonNull;
 | 
			
		||||
 | 
			
		||||
import java.io.IOException;
 | 
			
		||||
import java.util.Collections;
 | 
			
		||||
import java.util.Locale;
 | 
			
		||||
 | 
			
		||||
import awais.instagrabber.repositories.responses.directmessages.DirectThread;
 | 
			
		||||
import awais.instagrabber.utils.Constants;
 | 
			
		||||
import awais.instagrabber.utils.CookieUtils;
 | 
			
		||||
import awais.instagrabber.utils.Utils;
 | 
			
		||||
import awais.instagrabber.webservices.DirectMessagesService;
 | 
			
		||||
import retrofit2.Call;
 | 
			
		||||
import retrofit2.Callback;
 | 
			
		||||
import retrofit2.Response;
 | 
			
		||||
 | 
			
		||||
public class CreateThreadAction extends AsyncTask<Void, Void, Void> {
 | 
			
		||||
    private static final String TAG = "CommentAction";
 | 
			
		||||
 | 
			
		||||
    private final String cookie;
 | 
			
		||||
    private final long userId;
 | 
			
		||||
    private final OnTaskCompleteListener onTaskCompleteListener;
 | 
			
		||||
    private final DirectMessagesService directMessagesService;
 | 
			
		||||
 | 
			
		||||
    public CreateThreadAction(final String cookie, final long userId, final OnTaskCompleteListener onTaskCompleteListener) {
 | 
			
		||||
        this.cookie = cookie;
 | 
			
		||||
        this.userId = userId;
 | 
			
		||||
        this.onTaskCompleteListener = onTaskCompleteListener;
 | 
			
		||||
        directMessagesService = DirectMessagesService.getInstance(CookieUtils.getCsrfTokenFromCookie(cookie),
 | 
			
		||||
                                                                  CookieUtils.getUserIdFromCookie(cookie),
 | 
			
		||||
                                                                  Utils.settingsHelper.getString(Constants.DEVICE_UUID));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected Void doInBackground(Void... lmao) {
 | 
			
		||||
        final Call<DirectThread> createThreadRequest = directMessagesService.createThread(Collections.singletonList(userId), null);
 | 
			
		||||
        createThreadRequest.enqueue(new Callback<DirectThread>() {
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onResponse(@NonNull final Call<DirectThread> call, @NonNull final Response<DirectThread> response) {
 | 
			
		||||
                if (!response.isSuccessful()) {
 | 
			
		||||
                    if (response.errorBody() != null) {
 | 
			
		||||
                        try {
 | 
			
		||||
                            final String string = response.errorBody().string();
 | 
			
		||||
                            final String msg = String.format(Locale.US,
 | 
			
		||||
                                    "onResponse: url: %s, responseCode: %d, errorBody: %s",
 | 
			
		||||
                                    call.request().url().toString(),
 | 
			
		||||
                                    response.code(),
 | 
			
		||||
                                    string);
 | 
			
		||||
                            Log.e(TAG, msg);
 | 
			
		||||
                        } catch (IOException e) {
 | 
			
		||||
                            Log.e(TAG, "onResponse: ", e);
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    Log.e(TAG, "onResponse: request was not successful and response error body was null");
 | 
			
		||||
                }
 | 
			
		||||
                onTaskCompleteListener.onTaskComplete(response.body());
 | 
			
		||||
                if (response.body() == null) {
 | 
			
		||||
                    Log.e(TAG, "onResponse: thread is null");
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            public void onFailure(@NonNull final Call<DirectThread> call, @NonNull final Throwable t) {
 | 
			
		||||
                onTaskCompleteListener.onTaskComplete(null);
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
//    @Override
 | 
			
		||||
//    protected void onPostExecute() {
 | 
			
		||||
//    }
 | 
			
		||||
 | 
			
		||||
    public interface OnTaskCompleteListener {
 | 
			
		||||
        void onTaskComplete(final DirectThread thread);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -70,7 +70,6 @@ import java.util.regex.Pattern;
 | 
			
		||||
import awais.instagrabber.BuildConfig;
 | 
			
		||||
import awais.instagrabber.R;
 | 
			
		||||
import awais.instagrabber.adapters.StoriesAdapter;
 | 
			
		||||
import awais.instagrabber.asyncs.CreateThreadAction;
 | 
			
		||||
import awais.instagrabber.customviews.helpers.SwipeGestureListener;
 | 
			
		||||
import awais.instagrabber.databinding.FragmentStoryViewerBinding;
 | 
			
		||||
import awais.instagrabber.fragments.main.ProfileFragmentDirections;
 | 
			
		||||
@ -90,6 +89,7 @@ import awais.instagrabber.repositories.requests.StoryViewerOptions.Type;
 | 
			
		||||
import awais.instagrabber.repositories.requests.directmessages.BroadcastOptions;
 | 
			
		||||
import awais.instagrabber.repositories.responses.Media;
 | 
			
		||||
import awais.instagrabber.repositories.responses.StoryStickerResponse;
 | 
			
		||||
import awais.instagrabber.repositories.responses.directmessages.DirectThread;
 | 
			
		||||
import awais.instagrabber.repositories.responses.directmessages.DirectThreadBroadcastResponse;
 | 
			
		||||
import awais.instagrabber.utils.Constants;
 | 
			
		||||
import awais.instagrabber.utils.CookieUtils;
 | 
			
		||||
@ -222,40 +222,54 @@ public class StoryViewerFragment extends Fragment {
 | 
			
		||||
            new AlertDialog.Builder(context)
 | 
			
		||||
                    .setTitle(R.string.reply_story)
 | 
			
		||||
                    .setView(input)
 | 
			
		||||
                    .setPositiveButton(R.string.confirm, (d, w) -> new CreateThreadAction(cookie, currentStory.getUserId(), thread -> {
 | 
			
		||||
                        if (thread == null) {
 | 
			
		||||
                            Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        try {
 | 
			
		||||
                            final Call<DirectThreadBroadcastResponse> request = directMessagesService
 | 
			
		||||
                                    .broadcastStoryReply(BroadcastOptions.ThreadIdOrUserIds.of(thread.getThreadId()),
 | 
			
		||||
                                                         input.getText().toString(),
 | 
			
		||||
                                                         currentStory.getStoryMediaId(),
 | 
			
		||||
                                                         String.valueOf(currentStory.getUserId()));
 | 
			
		||||
                            request.enqueue(new Callback<DirectThreadBroadcastResponse>() {
 | 
			
		||||
                                @Override
 | 
			
		||||
                                public void onResponse(@NonNull final Call<DirectThreadBroadcastResponse> call,
 | 
			
		||||
                                                       @NonNull final Response<DirectThreadBroadcastResponse> response) {
 | 
			
		||||
                                    if (!response.isSuccessful()) {
 | 
			
		||||
                                        Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                                        return;
 | 
			
		||||
                                    }
 | 
			
		||||
                                    Toast.makeText(context, R.string.answered_story, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                    .setPositiveButton(R.string.confirm, (d, w) -> {
 | 
			
		||||
                        final Call<DirectThread> createThreadRequest =
 | 
			
		||||
                                directMessagesService.createThread(Collections.singletonList(currentStory.getUserId()), null);
 | 
			
		||||
                        createThreadRequest.enqueue(new Callback<DirectThread>() {
 | 
			
		||||
                            @Override
 | 
			
		||||
                            public void onResponse(@NonNull final Call<DirectThread> call, @NonNull final Response<DirectThread> response) {
 | 
			
		||||
                                if (!response.isSuccessful() || response.body() == null) {
 | 
			
		||||
                                    Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                                    return;
 | 
			
		||||
                                }
 | 
			
		||||
                                final DirectThread thread = response.body();
 | 
			
		||||
                                try {
 | 
			
		||||
                                    final Call<DirectThreadBroadcastResponse> request = directMessagesService
 | 
			
		||||
                                            .broadcastStoryReply(BroadcastOptions.ThreadIdOrUserIds.of(thread.getThreadId()),
 | 
			
		||||
                                                    input.getText().toString(),
 | 
			
		||||
                                                    currentStory.getStoryMediaId(),
 | 
			
		||||
                                                    String.valueOf(currentStory.getUserId()));
 | 
			
		||||
                                    request.enqueue(new Callback<DirectThreadBroadcastResponse>() {
 | 
			
		||||
                                        @Override
 | 
			
		||||
                                        public void onResponse(@NonNull final Call<DirectThreadBroadcastResponse> call,
 | 
			
		||||
                                                               @NonNull final Response<DirectThreadBroadcastResponse> response) {
 | 
			
		||||
                                            if (!response.isSuccessful()) {
 | 
			
		||||
                                                Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                                                return;
 | 
			
		||||
                                            }
 | 
			
		||||
                                            Toast.makeText(context, R.string.answered_story, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                                        }
 | 
			
		||||
 | 
			
		||||
                                @Override
 | 
			
		||||
                                public void onFailure(@NonNull final Call<DirectThreadBroadcastResponse> call, @NonNull final Throwable t) {
 | 
			
		||||
                                    try {
 | 
			
		||||
                                        Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                                        Log.e(TAG, "onFailure: ", t);
 | 
			
		||||
                                    } catch (Throwable ignored) {}
 | 
			
		||||
                                        @Override
 | 
			
		||||
                                        public void onFailure(@NonNull final Call<DirectThreadBroadcastResponse> call, @NonNull final Throwable t) {
 | 
			
		||||
                                            try {
 | 
			
		||||
                                                Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                                                Log.e(TAG, "onFailure: ", t);
 | 
			
		||||
                                            } catch (Throwable ignored) {
 | 
			
		||||
                                            }
 | 
			
		||||
                                        }
 | 
			
		||||
                                    });
 | 
			
		||||
                                } catch (UnsupportedEncodingException e) {
 | 
			
		||||
                                    Log.e(TAG, "Error", e);
 | 
			
		||||
                                }
 | 
			
		||||
                            });
 | 
			
		||||
                        } catch (UnsupportedEncodingException e) {
 | 
			
		||||
                            Log.e(TAG, "Error", e);
 | 
			
		||||
                        }
 | 
			
		||||
                    }).execute())
 | 
			
		||||
                            }
 | 
			
		||||
 | 
			
		||||
                            @Override
 | 
			
		||||
                            public void onFailure(@NonNull final Call<DirectThread> call, @NonNull final Throwable t) {
 | 
			
		||||
                                Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                            }
 | 
			
		||||
                        });
 | 
			
		||||
                    })
 | 
			
		||||
                    .setNegativeButton(R.string.cancel, null)
 | 
			
		||||
                    .show();
 | 
			
		||||
            return true;
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,6 @@ import awais.instagrabber.R;
 | 
			
		||||
import awais.instagrabber.activities.MainActivity;
 | 
			
		||||
import awais.instagrabber.adapters.FeedAdapterV2;
 | 
			
		||||
import awais.instagrabber.adapters.HighlightsAdapter;
 | 
			
		||||
import awais.instagrabber.asyncs.CreateThreadAction;
 | 
			
		||||
import awais.instagrabber.asyncs.ProfilePostFetchService;
 | 
			
		||||
import awais.instagrabber.customviews.PrimaryActionModeCallback;
 | 
			
		||||
import awais.instagrabber.customviews.PrimaryActionModeCallback.CallbacksHelper;
 | 
			
		||||
@ -85,6 +84,7 @@ import awais.instagrabber.repositories.responses.FriendshipStatus;
 | 
			
		||||
import awais.instagrabber.repositories.responses.Media;
 | 
			
		||||
import awais.instagrabber.repositories.responses.User;
 | 
			
		||||
import awais.instagrabber.repositories.responses.UserProfileContextLink;
 | 
			
		||||
import awais.instagrabber.repositories.responses.directmessages.DirectThread;
 | 
			
		||||
import awais.instagrabber.utils.Constants;
 | 
			
		||||
import awais.instagrabber.utils.CookieUtils;
 | 
			
		||||
import awais.instagrabber.utils.DownloadUtils;
 | 
			
		||||
@ -92,12 +92,16 @@ import awais.instagrabber.utils.TextUtils;
 | 
			
		||||
import awais.instagrabber.utils.Utils;
 | 
			
		||||
import awais.instagrabber.viewmodels.AppStateViewModel;
 | 
			
		||||
import awais.instagrabber.viewmodels.HighlightsViewModel;
 | 
			
		||||
import awais.instagrabber.webservices.DirectMessagesService;
 | 
			
		||||
import awais.instagrabber.webservices.FriendshipService;
 | 
			
		||||
import awais.instagrabber.webservices.GraphQLService;
 | 
			
		||||
import awais.instagrabber.webservices.MediaService;
 | 
			
		||||
import awais.instagrabber.webservices.ServiceCallback;
 | 
			
		||||
import awais.instagrabber.webservices.StoriesService;
 | 
			
		||||
import awais.instagrabber.webservices.UserService;
 | 
			
		||||
import retrofit2.Call;
 | 
			
		||||
import retrofit2.Callback;
 | 
			
		||||
import retrofit2.Response;
 | 
			
		||||
 | 
			
		||||
import static androidx.core.content.PermissionChecker.checkSelfPermission;
 | 
			
		||||
import static awais.instagrabber.fragments.HashTagFragment.ARG_HASHTAG;
 | 
			
		||||
@ -122,6 +126,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
 | 
			
		||||
    private MediaService mediaService;
 | 
			
		||||
    private UserService userService;
 | 
			
		||||
    private GraphQLService graphQLService;
 | 
			
		||||
    private DirectMessagesService directMessagesService;
 | 
			
		||||
    private boolean shouldRefresh = true;
 | 
			
		||||
    private boolean hasStories = false;
 | 
			
		||||
    private HighlightsAdapter highlightsAdapter;
 | 
			
		||||
@ -313,6 +318,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
 | 
			
		||||
        final String csrfToken = CookieUtils.getCsrfTokenFromCookie(cookie);
 | 
			
		||||
        fragmentActivity = (MainActivity) requireActivity();
 | 
			
		||||
        friendshipService = isLoggedIn ? FriendshipService.getInstance(deviceUuid, csrfToken, myId) : null;
 | 
			
		||||
        directMessagesService = isLoggedIn ? DirectMessagesService.getInstance(csrfToken, myId, deviceUuid) : null;
 | 
			
		||||
        storiesService = isLoggedIn ? StoriesService.getInstance(null, 0L, null) : null;
 | 
			
		||||
        mediaService = isLoggedIn ? MediaService.getInstance(null, null, 0) : null;
 | 
			
		||||
        userService = isLoggedIn ? UserService.getInstance() : null;
 | 
			
		||||
@ -1130,20 +1136,30 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
 | 
			
		||||
        if (!disableDm) {
 | 
			
		||||
            profileDetailsBinding.btnDM.setOnClickListener(v -> {
 | 
			
		||||
                profileDetailsBinding.btnDM.setEnabled(false);
 | 
			
		||||
                new CreateThreadAction(cookie, profileModel.getPk(), thread -> {
 | 
			
		||||
                    if (thread == null) {
 | 
			
		||||
                        Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                final Call<DirectThread> createThreadRequest =
 | 
			
		||||
                        directMessagesService.createThread(Collections.singletonList(profileModel.getPk()), null);
 | 
			
		||||
                createThreadRequest.enqueue(new Callback<DirectThread>() {
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void onResponse(@NonNull final Call<DirectThread> call, @NonNull final Response<DirectThread> response) {
 | 
			
		||||
                        profileDetailsBinding.btnDM.setEnabled(true);
 | 
			
		||||
                        return;
 | 
			
		||||
                        if (!response.isSuccessful() || response.body() == null) {
 | 
			
		||||
                            Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                            return;
 | 
			
		||||
                        }
 | 
			
		||||
                        final InboxManager inboxManager = DirectMessagesManager.getInstance().getInboxManager();
 | 
			
		||||
                        final DirectThread thread = response.body();
 | 
			
		||||
                        if (!inboxManager.containsThread(thread.getThreadId())) {
 | 
			
		||||
                            thread.setTemp(true);
 | 
			
		||||
                            inboxManager.addThread(thread, 0);
 | 
			
		||||
                        }
 | 
			
		||||
                        fragmentActivity.navigateToThread(thread.getThreadId(), profileModel.getUsername());
 | 
			
		||||
                    }
 | 
			
		||||
                    final InboxManager inboxManager = DirectMessagesManager.getInstance().getInboxManager();
 | 
			
		||||
                    if (!inboxManager.containsThread(thread.getThreadId())) {
 | 
			
		||||
                        thread.setTemp(true);
 | 
			
		||||
                        inboxManager.addThread(thread, 0);
 | 
			
		||||
 | 
			
		||||
                    @Override
 | 
			
		||||
                    public void onFailure(@NonNull final Call<DirectThread> call, @NonNull final Throwable t) {
 | 
			
		||||
                        Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
 | 
			
		||||
                    }
 | 
			
		||||
                    fragmentActivity.navigateToThread(thread.getThreadId(), profileModel.getUsername());
 | 
			
		||||
                    profileDetailsBinding.btnDM.setEnabled(true);
 | 
			
		||||
                }).execute();
 | 
			
		||||
                });
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
        profileDetailsBinding.mainProfileImage.setOnClickListener(v -> {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user