mirror of
				https://github.com/KokaKiwi/BarInsta
				synced 2025-10-30 19:15:35 +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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user