Gate schedule menu on version and text to send

Stephen Paul Weber created

Change summary

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java              | 5 
src/main/java/eu/siacs/conversations/ui/util/ConversationMenuConfigurator.java | 5 
2 files changed, 6 insertions(+), 4 deletions(-)

Detailed changes

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java 🔗

@@ -1355,7 +1355,7 @@ public class ConversationFragment extends XmppFragment
             } else {
                 menuUnmute.setVisible(false);
             }
-            ConversationMenuConfigurator.configureAttachmentMenu(conversation, menu);
+            ConversationMenuConfigurator.configureAttachmentMenu(conversation, menu, TextUtils.isEmpty(binding.textinput.getText()));
             ConversationMenuConfigurator.configureEncryptionMenu(conversation, menu);
             if (conversation.getBooleanAttribute(Conversation.ATTRIBUTE_PINNED_ON_TOP, false)) {
                 menuTogglePinned.setTitle(R.string.remove_from_favorites);
@@ -1629,7 +1629,7 @@ public class ConversationFragment extends XmppFragment
                 MenuItem newItem = menu.add(item.getGroupId(), item.getItemId(), item.getOrder(), item.getTitle());
                 newItem.setIcon(item.getIcon());
             }
-            ConversationMenuConfigurator.configureAttachmentMenu(conversation, menu);
+            ConversationMenuConfigurator.configureAttachmentMenu(conversation, menu, TextUtils.isEmpty(binding.textinput.getText()));
             return;
         }
 
@@ -2023,7 +2023,6 @@ public class ConversationFragment extends XmppFragment
     }
 
     private void scheduleMessage() {
-        // TODO: also gate menu option in UI behind version check
         // TODO: upgrade to material you/3
         if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N) {
             final Calendar now = Calendar.getInstance();

src/main/java/eu/siacs/conversations/ui/util/ConversationMenuConfigurator.java 🔗

@@ -51,7 +51,7 @@ public class ConversationMenuConfigurator {
 		microphoneAvailable = context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MICROPHONE);
 	}
 
-	public static void configureAttachmentMenu(@NonNull Conversation conversation, Menu menu) {
+	public static void configureAttachmentMenu(@NonNull Conversation conversation, Menu menu, boolean isTextEmpty) {
 		final MenuItem menuAttach = menu.findItem(R.id.action_attach_file);
 
 		final boolean visible;
@@ -63,6 +63,9 @@ public class ConversationMenuConfigurator {
 		if (menuAttach != null) menuAttach.setVisible(visible);
 		if (visible) menu.findItem(R.id.attach_record_voice).setVisible(microphoneAvailable);
 		menu.findItem(R.id.attach_subject).setVisible(conversation.getNextEncryption() == Message.ENCRYPTION_NONE);
+		if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.N || isTextEmpty) {
+			menu.findItem(R.id.attach_schedule).setVisible(false);
+		}
 	}
 
 	public static void configureEncryptionMenu(@NonNull Conversation conversation, Menu menu) {