mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-11-22 14:47:29 +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.BuildConfig;
|
||||||
import awais.instagrabber.R;
|
import awais.instagrabber.R;
|
||||||
import awais.instagrabber.adapters.StoriesAdapter;
|
import awais.instagrabber.adapters.StoriesAdapter;
|
||||||
import awais.instagrabber.asyncs.CreateThreadAction;
|
|
||||||
import awais.instagrabber.customviews.helpers.SwipeGestureListener;
|
import awais.instagrabber.customviews.helpers.SwipeGestureListener;
|
||||||
import awais.instagrabber.databinding.FragmentStoryViewerBinding;
|
import awais.instagrabber.databinding.FragmentStoryViewerBinding;
|
||||||
import awais.instagrabber.fragments.main.ProfileFragmentDirections;
|
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.requests.directmessages.BroadcastOptions;
|
||||||
import awais.instagrabber.repositories.responses.Media;
|
import awais.instagrabber.repositories.responses.Media;
|
||||||
import awais.instagrabber.repositories.responses.StoryStickerResponse;
|
import awais.instagrabber.repositories.responses.StoryStickerResponse;
|
||||||
|
import awais.instagrabber.repositories.responses.directmessages.DirectThread;
|
||||||
import awais.instagrabber.repositories.responses.directmessages.DirectThreadBroadcastResponse;
|
import awais.instagrabber.repositories.responses.directmessages.DirectThreadBroadcastResponse;
|
||||||
import awais.instagrabber.utils.Constants;
|
import awais.instagrabber.utils.Constants;
|
||||||
import awais.instagrabber.utils.CookieUtils;
|
import awais.instagrabber.utils.CookieUtils;
|
||||||
@ -222,40 +222,54 @@ public class StoryViewerFragment extends Fragment {
|
|||||||
new AlertDialog.Builder(context)
|
new AlertDialog.Builder(context)
|
||||||
.setTitle(R.string.reply_story)
|
.setTitle(R.string.reply_story)
|
||||||
.setView(input)
|
.setView(input)
|
||||||
.setPositiveButton(R.string.confirm, (d, w) -> new CreateThreadAction(cookie, currentStory.getUserId(), thread -> {
|
.setPositiveButton(R.string.confirm, (d, w) -> {
|
||||||
if (thread == null) {
|
final Call<DirectThread> createThreadRequest =
|
||||||
Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
|
directMessagesService.createThread(Collections.singletonList(currentStory.getUserId()), null);
|
||||||
return;
|
createThreadRequest.enqueue(new Callback<DirectThread>() {
|
||||||
}
|
@Override
|
||||||
try {
|
public void onResponse(@NonNull final Call<DirectThread> call, @NonNull final Response<DirectThread> response) {
|
||||||
final Call<DirectThreadBroadcastResponse> request = directMessagesService
|
if (!response.isSuccessful() || response.body() == null) {
|
||||||
.broadcastStoryReply(BroadcastOptions.ThreadIdOrUserIds.of(thread.getThreadId()),
|
Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
|
||||||
input.getText().toString(),
|
return;
|
||||||
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();
|
|
||||||
}
|
}
|
||||||
|
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
|
@Override
|
||||||
public void onFailure(@NonNull final Call<DirectThreadBroadcastResponse> call, @NonNull final Throwable t) {
|
public void onFailure(@NonNull final Call<DirectThreadBroadcastResponse> call, @NonNull final Throwable t) {
|
||||||
try {
|
try {
|
||||||
Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
|
Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
|
||||||
Log.e(TAG, "onFailure: ", t);
|
Log.e(TAG, "onFailure: ", t);
|
||||||
} catch (Throwable ignored) {}
|
} catch (Throwable ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
Log.e(TAG, "Error", e);
|
||||||
}
|
}
|
||||||
});
|
}
|
||||||
} catch (UnsupportedEncodingException e) {
|
|
||||||
Log.e(TAG, "Error", e);
|
@Override
|
||||||
}
|
public void onFailure(@NonNull final Call<DirectThread> call, @NonNull final Throwable t) {
|
||||||
}).execute())
|
Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
.setNegativeButton(R.string.cancel, null)
|
.setNegativeButton(R.string.cancel, null)
|
||||||
.show();
|
.show();
|
||||||
return true;
|
return true;
|
||||||
|
@ -55,7 +55,6 @@ import awais.instagrabber.R;
|
|||||||
import awais.instagrabber.activities.MainActivity;
|
import awais.instagrabber.activities.MainActivity;
|
||||||
import awais.instagrabber.adapters.FeedAdapterV2;
|
import awais.instagrabber.adapters.FeedAdapterV2;
|
||||||
import awais.instagrabber.adapters.HighlightsAdapter;
|
import awais.instagrabber.adapters.HighlightsAdapter;
|
||||||
import awais.instagrabber.asyncs.CreateThreadAction;
|
|
||||||
import awais.instagrabber.asyncs.ProfilePostFetchService;
|
import awais.instagrabber.asyncs.ProfilePostFetchService;
|
||||||
import awais.instagrabber.customviews.PrimaryActionModeCallback;
|
import awais.instagrabber.customviews.PrimaryActionModeCallback;
|
||||||
import awais.instagrabber.customviews.PrimaryActionModeCallback.CallbacksHelper;
|
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.Media;
|
||||||
import awais.instagrabber.repositories.responses.User;
|
import awais.instagrabber.repositories.responses.User;
|
||||||
import awais.instagrabber.repositories.responses.UserProfileContextLink;
|
import awais.instagrabber.repositories.responses.UserProfileContextLink;
|
||||||
|
import awais.instagrabber.repositories.responses.directmessages.DirectThread;
|
||||||
import awais.instagrabber.utils.Constants;
|
import awais.instagrabber.utils.Constants;
|
||||||
import awais.instagrabber.utils.CookieUtils;
|
import awais.instagrabber.utils.CookieUtils;
|
||||||
import awais.instagrabber.utils.DownloadUtils;
|
import awais.instagrabber.utils.DownloadUtils;
|
||||||
@ -92,12 +92,16 @@ import awais.instagrabber.utils.TextUtils;
|
|||||||
import awais.instagrabber.utils.Utils;
|
import awais.instagrabber.utils.Utils;
|
||||||
import awais.instagrabber.viewmodels.AppStateViewModel;
|
import awais.instagrabber.viewmodels.AppStateViewModel;
|
||||||
import awais.instagrabber.viewmodels.HighlightsViewModel;
|
import awais.instagrabber.viewmodels.HighlightsViewModel;
|
||||||
|
import awais.instagrabber.webservices.DirectMessagesService;
|
||||||
import awais.instagrabber.webservices.FriendshipService;
|
import awais.instagrabber.webservices.FriendshipService;
|
||||||
import awais.instagrabber.webservices.GraphQLService;
|
import awais.instagrabber.webservices.GraphQLService;
|
||||||
import awais.instagrabber.webservices.MediaService;
|
import awais.instagrabber.webservices.MediaService;
|
||||||
import awais.instagrabber.webservices.ServiceCallback;
|
import awais.instagrabber.webservices.ServiceCallback;
|
||||||
import awais.instagrabber.webservices.StoriesService;
|
import awais.instagrabber.webservices.StoriesService;
|
||||||
import awais.instagrabber.webservices.UserService;
|
import awais.instagrabber.webservices.UserService;
|
||||||
|
import retrofit2.Call;
|
||||||
|
import retrofit2.Callback;
|
||||||
|
import retrofit2.Response;
|
||||||
|
|
||||||
import static androidx.core.content.PermissionChecker.checkSelfPermission;
|
import static androidx.core.content.PermissionChecker.checkSelfPermission;
|
||||||
import static awais.instagrabber.fragments.HashTagFragment.ARG_HASHTAG;
|
import static awais.instagrabber.fragments.HashTagFragment.ARG_HASHTAG;
|
||||||
@ -122,6 +126,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
private MediaService mediaService;
|
private MediaService mediaService;
|
||||||
private UserService userService;
|
private UserService userService;
|
||||||
private GraphQLService graphQLService;
|
private GraphQLService graphQLService;
|
||||||
|
private DirectMessagesService directMessagesService;
|
||||||
private boolean shouldRefresh = true;
|
private boolean shouldRefresh = true;
|
||||||
private boolean hasStories = false;
|
private boolean hasStories = false;
|
||||||
private HighlightsAdapter highlightsAdapter;
|
private HighlightsAdapter highlightsAdapter;
|
||||||
@ -313,6 +318,7 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
final String csrfToken = CookieUtils.getCsrfTokenFromCookie(cookie);
|
final String csrfToken = CookieUtils.getCsrfTokenFromCookie(cookie);
|
||||||
fragmentActivity = (MainActivity) requireActivity();
|
fragmentActivity = (MainActivity) requireActivity();
|
||||||
friendshipService = isLoggedIn ? FriendshipService.getInstance(deviceUuid, csrfToken, myId) : null;
|
friendshipService = isLoggedIn ? FriendshipService.getInstance(deviceUuid, csrfToken, myId) : null;
|
||||||
|
directMessagesService = isLoggedIn ? DirectMessagesService.getInstance(csrfToken, myId, deviceUuid) : null;
|
||||||
storiesService = isLoggedIn ? StoriesService.getInstance(null, 0L, null) : null;
|
storiesService = isLoggedIn ? StoriesService.getInstance(null, 0L, null) : null;
|
||||||
mediaService = isLoggedIn ? MediaService.getInstance(null, null, 0) : null;
|
mediaService = isLoggedIn ? MediaService.getInstance(null, null, 0) : null;
|
||||||
userService = isLoggedIn ? UserService.getInstance() : null;
|
userService = isLoggedIn ? UserService.getInstance() : null;
|
||||||
@ -1130,20 +1136,30 @@ public class ProfileFragment extends Fragment implements SwipeRefreshLayout.OnRe
|
|||||||
if (!disableDm) {
|
if (!disableDm) {
|
||||||
profileDetailsBinding.btnDM.setOnClickListener(v -> {
|
profileDetailsBinding.btnDM.setOnClickListener(v -> {
|
||||||
profileDetailsBinding.btnDM.setEnabled(false);
|
profileDetailsBinding.btnDM.setEnabled(false);
|
||||||
new CreateThreadAction(cookie, profileModel.getPk(), thread -> {
|
final Call<DirectThread> createThreadRequest =
|
||||||
if (thread == null) {
|
directMessagesService.createThread(Collections.singletonList(profileModel.getPk()), null);
|
||||||
Toast.makeText(context, R.string.downloader_unknown_error, Toast.LENGTH_SHORT).show();
|
createThreadRequest.enqueue(new Callback<DirectThread>() {
|
||||||
|
@Override
|
||||||
|
public void onResponse(@NonNull final Call<DirectThread> call, @NonNull final Response<DirectThread> response) {
|
||||||
profileDetailsBinding.btnDM.setEnabled(true);
|
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())) {
|
@Override
|
||||||
thread.setTemp(true);
|
public void onFailure(@NonNull final Call<DirectThread> call, @NonNull final Throwable t) {
|
||||||
inboxManager.addThread(thread, 0);
|
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 -> {
|
profileDetailsBinding.mainProfileImage.setOnClickListener(v -> {
|
||||||
|
Loading…
Reference in New Issue
Block a user