show location quick action after receiving a question about the users location

Daniel Gultsch created

Change summary

src/main/java/eu/siacs/conversations/ui/ConversationFragment.java |  5 
src/main/java/eu/siacs/conversations/utils/UIHelper.java          | 24 +
2 files changed, 28 insertions(+), 1 deletion(-)

Detailed changes

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

@@ -59,6 +59,7 @@ import eu.siacs.conversations.ui.adapter.MessageAdapter;
 import eu.siacs.conversations.ui.adapter.MessageAdapter.OnContactPictureClicked;
 import eu.siacs.conversations.ui.adapter.MessageAdapter.OnContactPictureLongClicked;
 import eu.siacs.conversations.utils.GeoHelper;
+import eu.siacs.conversations.utils.UIHelper;
 import eu.siacs.conversations.xmpp.chatstate.ChatState;
 import eu.siacs.conversations.xmpp.jid.Jid;
 
@@ -905,7 +906,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa
 		} else {
 			if (empty) {
 				String setting = activity.getPreferences().getString("quick_action","recent");
-				if (setting.equals("recent")) {
+				if (!setting.equals("none") && UIHelper.receivedLocationQuestion(conversation.getLatestMessage())) {
+					setting = "location";
+				} else if (setting.equals("recent")) {
 					setting = activity.getPreferences().getString("recently_used_quick_action","text");
 				}
 				switch (setting) {

src/main/java/eu/siacs/conversations/utils/UIHelper.java 🔗

@@ -5,6 +5,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Date;
+import java.util.Locale;
 
 import eu.siacs.conversations.R;
 import eu.siacs.conversations.entities.Contact;
@@ -26,6 +27,19 @@ public class UIHelper {
 
 	public static final ArrayList<String> HEARTS = new ArrayList<>(Arrays.asList(BLACK_HEART_SUIT,HEAVY_BLACK_HEART_SUIT,WHITE_HEART_SUIT));
 
+	private static final ArrayList<String> LOCATION_QUESTIONS = new ArrayList<>(Arrays.asList(
+			"where are you?", //en
+			"where r u?", //en
+			"whats your 20?", //en
+			"what is your 20?", //en
+			"what's your 20?", //en
+			"whats your twenty?", //en
+			"what is your twenty?", //en
+			"what's your twenty?", //en
+			"wo bist du?", //de
+			"wo sind sie?" //de
+		));
+
 	private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE
 		| DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL;
 	private static final int FULL_DATE_FLAGS = DateUtils.FORMAT_SHOW_TIME
@@ -234,4 +248,14 @@ public class UIHelper {
 			return counterpart.toString().trim();
 		}
 	}
+
+	public static boolean receivedLocationQuestion(Message message) {
+		if (message == null
+				|| message.getStatus() != Message.STATUS_RECEIVED
+				|| message.getType() != Message.TYPE_TEXT) {
+			return false;
+		}
+		String body = message.getBody() == null ? null : message.getBody().trim().toLowerCase(Locale.getDefault());
+		return LOCATION_QUESTIONS.contains(body);
+	}
 }