mirror of
https://github.com/KokaKiwi/BarInsta
synced 2024-12-23 05:16:58 +00:00
Add copy options in dm
This commit is contained in:
parent
38bd1c9cbd
commit
9cc019d2ae
@ -5,7 +5,13 @@ import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import awais.instagrabber.R;
|
||||
import awais.instagrabber.adapters.DirectItemsAdapter.DirectItemCallback;
|
||||
import awais.instagrabber.customviews.DirectItemContextMenu;
|
||||
import awais.instagrabber.databinding.LayoutDmBaseBinding;
|
||||
import awais.instagrabber.databinding.LayoutDmLinkBinding;
|
||||
import awais.instagrabber.repositories.responses.User;
|
||||
@ -14,6 +20,7 @@ import awais.instagrabber.repositories.responses.directmessages.DirectItemLink;
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectItemLinkContext;
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectThread;
|
||||
import awais.instagrabber.utils.TextUtils;
|
||||
import awais.instagrabber.utils.Utils;
|
||||
|
||||
public class DirectItemLinkViewHolder extends DirectItemViewHolder {
|
||||
|
||||
@ -80,4 +87,16 @@ public class DirectItemLinkViewHolder extends DirectItemViewHolder {
|
||||
protected boolean showBackground() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<DirectItemContextMenu.MenuItem> getLongClickOptions() {
|
||||
return ImmutableList.of(
|
||||
new DirectItemContextMenu.MenuItem(R.id.copy, R.string.copy, item -> {
|
||||
final DirectItemLink link = item.getLink();
|
||||
if (link == null || TextUtils.isEmpty(link.getText())) return null;
|
||||
Utils.copyText(itemView.getContext(), link.getText());
|
||||
return null;
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -12,11 +12,14 @@ import androidx.recyclerview.widget.ItemTouchHelper;
|
||||
import com.facebook.drawee.drawable.ScalingUtils;
|
||||
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
|
||||
import com.facebook.drawee.generic.RoundingParams;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import awais.instagrabber.R;
|
||||
import awais.instagrabber.adapters.DirectItemsAdapter.DirectItemCallback;
|
||||
import awais.instagrabber.customviews.DirectItemContextMenu;
|
||||
import awais.instagrabber.databinding.LayoutDmBaseBinding;
|
||||
import awais.instagrabber.databinding.LayoutDmMediaShareBinding;
|
||||
import awais.instagrabber.models.enums.DirectItemType;
|
||||
@ -30,6 +33,7 @@ import awais.instagrabber.repositories.responses.directmessages.DirectItemFelixS
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectThread;
|
||||
import awais.instagrabber.utils.NumberUtils;
|
||||
import awais.instagrabber.utils.ResponseBodyUtils;
|
||||
import awais.instagrabber.utils.Utils;
|
||||
|
||||
public class DirectItemMediaShareViewHolder extends DirectItemViewHolder {
|
||||
private static final String TAG = DirectItemMediaShareViewHolder.class.getSimpleName();
|
||||
@ -38,6 +42,7 @@ public class DirectItemMediaShareViewHolder extends DirectItemViewHolder {
|
||||
private final RoundingParams incomingRoundingParams;
|
||||
private final RoundingParams outgoingRoundingParams;
|
||||
private DirectItemType itemType;
|
||||
private Caption caption;
|
||||
|
||||
public DirectItemMediaShareViewHolder(@NonNull final LayoutDmBaseBinding baseBinding,
|
||||
@NonNull final LayoutDmMediaShareBinding binding,
|
||||
@ -113,7 +118,7 @@ public class DirectItemMediaShareViewHolder extends DirectItemViewHolder {
|
||||
}
|
||||
|
||||
private void setupCaption(@NonNull final Media media) {
|
||||
final Caption caption = media.getCaption();
|
||||
caption = media.getCaption();
|
||||
if (caption != null) {
|
||||
binding.caption.setVisibility(View.VISIBLE);
|
||||
binding.caption.setText(caption.getText());
|
||||
@ -177,4 +182,16 @@ public class DirectItemMediaShareViewHolder extends DirectItemViewHolder {
|
||||
}
|
||||
return super.getSwipeDirection();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<DirectItemContextMenu.MenuItem> getLongClickOptions() {
|
||||
final ImmutableList.Builder<DirectItemContextMenu.MenuItem> builder = ImmutableList.builder();
|
||||
if (caption != null && !TextUtils.isEmpty(caption.getText())) {
|
||||
builder.add(new DirectItemContextMenu.MenuItem(R.id.copy, R.string.copy_caption, item -> {
|
||||
Utils.copyText(itemView.getContext(), caption.getText());
|
||||
return null;
|
||||
}));
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
}
|
||||
|
@ -8,13 +8,16 @@ import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
|
||||
import com.facebook.drawee.generic.RoundingParams;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import awais.instagrabber.R;
|
||||
import awais.instagrabber.adapters.DirectItemsAdapter.DirectItemCallback;
|
||||
import awais.instagrabber.customviews.DirectItemContextMenu;
|
||||
import awais.instagrabber.databinding.LayoutDmBaseBinding;
|
||||
import awais.instagrabber.databinding.LayoutDmReelShareBinding;
|
||||
import awais.instagrabber.models.enums.MediaItemType;
|
||||
import awais.instagrabber.repositories.responses.ImageVersions2;
|
||||
import awais.instagrabber.repositories.responses.Media;
|
||||
import awais.instagrabber.repositories.responses.User;
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectItem;
|
||||
@ -22,10 +25,12 @@ import awais.instagrabber.repositories.responses.directmessages.DirectItemReelSh
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectThread;
|
||||
import awais.instagrabber.utils.ResponseBodyUtils;
|
||||
import awais.instagrabber.utils.TextUtils;
|
||||
import awais.instagrabber.utils.Utils;
|
||||
|
||||
public class DirectItemReelShareViewHolder extends DirectItemViewHolder {
|
||||
|
||||
private final LayoutDmReelShareBinding binding;
|
||||
private String type;
|
||||
|
||||
public DirectItemReelShareViewHolder(@NonNull final LayoutDmBaseBinding baseBinding,
|
||||
@NonNull final LayoutDmReelShareBinding binding,
|
||||
@ -40,7 +45,7 @@ public class DirectItemReelShareViewHolder extends DirectItemViewHolder {
|
||||
@Override
|
||||
public void bindItem(final DirectItem item, final MessageDirection messageDirection) {
|
||||
final DirectItemReelShare reelShare = item.getReelShare();
|
||||
final String type = reelShare.getType();
|
||||
type = reelShare.getType();
|
||||
if (type == null) return;
|
||||
final boolean isSelf = isSelf(item);
|
||||
final Media media = reelShare.getMedia();
|
||||
@ -170,4 +175,20 @@ public class DirectItemReelShareViewHolder extends DirectItemViewHolder {
|
||||
protected boolean canForward() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<DirectItemContextMenu.MenuItem> getLongClickOptions() {
|
||||
final ImmutableList.Builder<DirectItemContextMenu.MenuItem> builder = ImmutableList.builder();
|
||||
if (type != null && type.equals("reply")) {
|
||||
builder.add(new DirectItemContextMenu.MenuItem(R.id.copy, R.string.copy_reply, item -> {
|
||||
final DirectItemReelShare reelShare = item.getReelShare();
|
||||
if (reelShare == null) return null;
|
||||
final String text = reelShare.getText();
|
||||
if (TextUtils.isEmpty(text)) return null;
|
||||
Utils.copyText(itemView.getContext(), text);
|
||||
return null;
|
||||
}));
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
}
|
||||
|
@ -2,12 +2,20 @@ package awais.instagrabber.adapters.viewholder.directmessages;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import awais.instagrabber.R;
|
||||
import awais.instagrabber.adapters.DirectItemsAdapter.DirectItemCallback;
|
||||
import awais.instagrabber.customviews.DirectItemContextMenu;
|
||||
import awais.instagrabber.databinding.LayoutDmBaseBinding;
|
||||
import awais.instagrabber.databinding.LayoutDmTextBinding;
|
||||
import awais.instagrabber.repositories.responses.User;
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectItem;
|
||||
import awais.instagrabber.repositories.responses.directmessages.DirectThread;
|
||||
import awais.instagrabber.utils.TextUtils;
|
||||
import awais.instagrabber.utils.Utils;
|
||||
|
||||
public class DirectItemTextViewHolder extends DirectItemViewHolder {
|
||||
|
||||
@ -35,4 +43,15 @@ public class DirectItemTextViewHolder extends DirectItemViewHolder {
|
||||
protected boolean showBackground() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<DirectItemContextMenu.MenuItem> getLongClickOptions() {
|
||||
return ImmutableList.of(
|
||||
new DirectItemContextMenu.MenuItem(R.id.copy, R.string.copy, item -> {
|
||||
if (TextUtils.isEmpty(item.getText())) return null;
|
||||
Utils.copyText(itemView.getContext(), item.getText());
|
||||
return null;
|
||||
})
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -4,4 +4,5 @@
|
||||
<item name="unsend" type="id" />
|
||||
<item name="forward" type="id" />
|
||||
<item name="detail" type="id" />
|
||||
<item name="copy" type="id" />
|
||||
</resources>
|
@ -475,4 +475,6 @@
|
||||
<string name="delete_unsuccessful">Delete unsuccessful</string>
|
||||
<string name="crash_report_subject">Barinsta Crash Report</string>
|
||||
<string name="crash_report_title">Select an email app to send crash logs</string>
|
||||
<string name="copy_caption">Copy caption</string>
|
||||
<string name="copy_reply">Copy reply</string>
|
||||
</resources>
|
||||
|
Loading…
Reference in New Issue
Block a user