From f85d43806621ccf79016f24b810a9f84461c9d46 Mon Sep 17 00:00:00 2001 From: Austin Huang Date: Wed, 1 Jul 2020 23:20:54 -0400 Subject: [PATCH] v16.6-a3: Invite/kick actions now visible, preparations on message actions --- .../activities/DirectMessagesUserInbox.java | 59 ++++++++++++++++++- .../adapters/MessageItemsAdapter.java | 18 +++++- .../instagrabber/dialogs/AboutDialog.java | 2 +- .../direct_messages/DirectItemModel.java | 18 ++++-- .../java/awais/instagrabber/utils/Utils.java | 17 ++++-- 5 files changed, 102 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/awais/instagrabber/activities/DirectMessagesUserInbox.java b/app/src/main/java/awais/instagrabber/activities/DirectMessagesUserInbox.java index e8b077d5..2fe38652 100755 --- a/app/src/main/java/awais/instagrabber/activities/DirectMessagesUserInbox.java +++ b/app/src/main/java/awais/instagrabber/activities/DirectMessagesUserInbox.java @@ -4,6 +4,7 @@ import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; +import android.view.View; import android.widget.Toast; import androidx.annotation.Nullable; @@ -18,17 +19,25 @@ import java.util.List; import awais.instagrabber.R; import awais.instagrabber.adapters.MessageItemsAdapter; import awais.instagrabber.asyncs.direct_messages.UserInboxFetcher; +import awais.instagrabber.asyncs.UsernameFetcher; import awais.instagrabber.customviews.helpers.RecyclerLazyLoader; import awais.instagrabber.databinding.ActivityDmsBinding; import awais.instagrabber.interfaces.FetchListener; +import awais.instagrabber.models.PostModel; import awais.instagrabber.models.ProfileModel; +import awais.instagrabber.models.StoryModel; import awais.instagrabber.models.direct_messages.DirectItemModel; +import awais.instagrabber.models.direct_messages.DirectItemModel.DirectItemMediaModel; import awais.instagrabber.models.direct_messages.InboxThreadModel; +import awais.instagrabber.models.enums.DirectItemType; +import awais.instagrabber.models.enums.MediaItemType; import awais.instagrabber.models.enums.UserInboxDirection; import awais.instagrabber.utils.Constants; import awais.instagrabber.utils.Utils; public final class DirectMessagesUserInbox extends AppCompatActivity { + private DirectItemModel directItemModel; + private final ProfileModel myProfileHolder = new ProfileModel(false, false, null, null, null, null, null, null, null, 0, 0, 0); private final ArrayList users = new ArrayList<>(); private final ArrayList directItemModels = new ArrayList<>(); private final FetchListener fetchListener = new FetchListener() { @@ -90,12 +99,58 @@ public final class DirectMessagesUserInbox extends AppCompatActivity { dmsBinding.rvDirectMessages.setAdapter(messageItemsAdapter = new MessageItemsAdapter(directItemModels, users, v -> { // todo do something with clicked message - Log.d("AWAISKING_APP", "--> " + v.getTag()); + Object tag = v.getTag(); + if (tag instanceof DirectItemModel) { + directItemModel = (DirectItemModel) tag; + final String username = getUser(directItemModel.getUserId()).getUsername(); + final DirectItemType itemType = directItemModel.getItemType(); + switch(itemType) { + case MEDIA_SHARE: + startActivity(new Intent(this, PostViewer.class) + .putExtra(Constants.EXTRAS_POST, new PostModel(directItemModel.getMediaModel().getCode()))); + break; + /*case STORY_SHARE: + startActivity(new Intent(this, StoryViewer.class) + .putExtra(Constants.EXTRAS_USERNAME, directItemModel.getReelShare().getReelOwnerName()) + .putExtra(Constants.EXTRAS_STORIES, new StoryModel( + directItemModel.getReelShare().getReelId(), + directItemModel.getReelShare().getMedia() + )) + ); + break;*/ + case TEXT: + searchUsername(username); + } + + /* + startActivity(new Intent(this, PostViewer.class) + .putExtra(Constants.EXTRAS_POST, new PostModel(tag.toString()))); + */ + } }, (view, text, isHashtag) -> { // todo mention click stuff - })); new UserInboxFetcher(threadModel.getThreadId(), UserInboxDirection.OLDER, null, fetchListener).executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } + + @Nullable + private ProfileModel getUser(final long userId) { + if (users != null) { + for (final ProfileModel user : users) + if (Long.toString(userId).equals(user.getId())) return user; + return myProfileHolder; + } + return null; + } + + private void searchUsername(final String text) { + if (Main.scanHack != null) { + Main.scanHack.onResult(text); + setResult(6969); + Intent intent = new Intent(getApplicationContext(), Main.class); + intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); + startActivity(intent); + } + } } \ No newline at end of file diff --git a/app/src/main/java/awais/instagrabber/adapters/MessageItemsAdapter.java b/app/src/main/java/awais/instagrabber/adapters/MessageItemsAdapter.java index 2b7f170c..92bd29a4 100755 --- a/app/src/main/java/awais/instagrabber/adapters/MessageItemsAdapter.java +++ b/app/src/main/java/awais/instagrabber/adapters/MessageItemsAdapter.java @@ -1,13 +1,16 @@ package awais.instagrabber.adapters; import android.content.Context; +import android.content.res.Resources; import android.text.Spanned; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -20,6 +23,7 @@ import com.bumptech.glide.RequestManager; import java.util.ArrayList; import awais.instagrabber.R; +import awais.instagrabber.activities.Main; import awais.instagrabber.adapters.viewholder.directmessages.TextMessageViewHolder; import awais.instagrabber.interfaces.MentionClickListener; import awais.instagrabber.models.ProfileModel; @@ -30,6 +34,7 @@ import awais.instagrabber.models.enums.DirectItemType; import awais.instagrabber.models.enums.MediaItemType; import awais.instagrabber.models.enums.RavenExpiringMediaType; import awais.instagrabber.models.enums.RavenMediaViewType; +import awais.instagrabber.utils.Constants; import awais.instagrabber.utils.Utils; import static awais.instagrabber.models.direct_messages.DirectItemModel.DirectItemLinkContext; @@ -163,6 +168,10 @@ public final class MessageItemsAdapter extends RecyclerView.Adapter { + Utils.copyText(v.getContext(), holder.tvMessage.getText()); + Toast.makeText(v.getContext(), R.string.clipboard_copied, Toast.LENGTH_SHORT).show(); + }); break; case LINK: { @@ -351,7 +360,14 @@ public final class MessageItemsAdapter extends RecyclerView.Adapter"+text+"", 63)); + holder.tvMessage.setVisibility(View.VISIBLE); } break; } diff --git a/app/src/main/java/awais/instagrabber/dialogs/AboutDialog.java b/app/src/main/java/awais/instagrabber/dialogs/AboutDialog.java index f727b885..51f43053 100755 --- a/app/src/main/java/awais/instagrabber/dialogs/AboutDialog.java +++ b/app/src/main/java/awais/instagrabber/dialogs/AboutDialog.java @@ -38,7 +38,7 @@ public final class AboutDialog extends BottomSheetDialogFragment { if (!Utils.isEmpty(Utils.telegramPackage)) intent.setPackage(Utils.telegramPackage); } else - intent.setData(Uri.parse("https://gitlab.com/AwaisKing/instagrabber/")); + intent.setData(Uri.parse("https://github.com/austinhuang0131/instagrabber/")); startActivity(intent); }; btnProject.setOnClickListener(onClickListener); diff --git a/app/src/main/java/awais/instagrabber/models/direct_messages/DirectItemModel.java b/app/src/main/java/awais/instagrabber/models/direct_messages/DirectItemModel.java index 87e82d8b..eba340eb 100755 --- a/app/src/main/java/awais/instagrabber/models/direct_messages/DirectItemModel.java +++ b/app/src/main/java/awais/instagrabber/models/direct_messages/DirectItemModel.java @@ -291,6 +291,7 @@ public final class DirectItemModel implements Serializable, Comparable" + + desc.substring(boldItem.getInt("start") + q*7, boldItem.getInt("end") + q*7) + + "" + desc.substring(boldItem.getInt("end") + q*7, desc.length()); + } + actionLogModel = new DirectItemActionLogModel(desc); break; case MEDIA_SHARE: @@ -642,6 +650,7 @@ public final class Utils { reelShareModel = new DirectItemReelShareModel( storyShare.optBoolean("is_reel_persisted"), storyShare.getJSONObject("media").getJSONObject("user").getLong("pk"), + storyShare.getJSONObject("media").getJSONObject("user").getString("username"), storyShare.getString("text"), storyShare.getString("story_share_type"), storyShare.getString("reel_type"),