Display error message if all contact keys purged

Andreas Straub created

Change summary

src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java | 10 +
src/main/res/layout/activity_trust_keys.xml                    | 32 ++++
src/main/res/values/strings.xml                                |  2 
3 files changed, 44 insertions(+)

Detailed changes

src/main/java/eu/siacs/conversations/ui/TrustKeysActivity.java ๐Ÿ”—

@@ -32,6 +32,8 @@ public class TrustKeysActivity extends XmppActivity implements OnKeyStatusUpdate
 	private boolean hasNoTrustedKeys = true;
 
 	private Contact contact;
+	private TextView keyErrorMessage;
+	private LinearLayout keyErrorMessageCard;
 	private TextView ownKeysTitle;
 	private LinearLayout ownKeys;
 	private LinearLayout ownKeysCard;
@@ -92,6 +94,8 @@ public class TrustKeysActivity extends XmppActivity implements OnKeyStatusUpdate
 		}
 		hasNoTrustedKeys = getIntent().getBooleanExtra("has_no_trusted", false);
 
+		keyErrorMessageCard = (LinearLayout) findViewById(R.id.key_error_message_card);
+		keyErrorMessage = (TextView) findViewById(R.id.key_error_message);
 		ownKeysTitle = (TextView) findViewById(R.id.own_keys_title);
 		ownKeys = (LinearLayout) findViewById(R.id.own_keys_details);
 		ownKeysCard = (LinearLayout) findViewById(R.id.own_keys_card);
@@ -157,6 +161,12 @@ public class TrustKeysActivity extends XmppActivity implements OnKeyStatusUpdate
 			setFetching();
 			lock();
 		} else {
+			if (!hasForeignKeys && !hasOtherTrustedKeys) {
+				keyErrorMessageCard.setVisibility(View.VISIBLE);
+				keyErrorMessage.setText(R.string.error_no_keys_to_trust);
+				ownKeys.removeAllViews(); ownKeysCard.setVisibility(View.GONE);
+				foreignKeys.removeAllViews(); foreignKeysCard.setVisibility(View.GONE);
+			}
 			lockOrUnlockAsNeeded();
 			setDone();
 		}

src/main/res/layout/activity_trust_keys.xml ๐Ÿ”—

@@ -15,6 +15,38 @@
             android:layout_height="wrap_content"
             android:orientation="vertical">
 
+            <LinearLayout
+                android:id="@+id/key_error_message_card"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginLeft="@dimen/activity_horizontal_margin"
+                android:layout_marginRight="@dimen/activity_horizontal_margin"
+                android:layout_marginTop="@dimen/activity_vertical_margin"
+                android:layout_marginBottom="@dimen/activity_vertical_margin"
+                android:background="@drawable/infocard_border"
+                android:orientation="vertical"
+                android:padding="@dimen/infocard_padding"
+                android:visibility="gone">
+
+                <TextView
+                    android:id="@+id/key_error_message_title"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="@color/black87"
+                    android:textSize="?attr/TextSizeHeadline"
+                    android:textStyle="bold"
+                    android:text="@string/error_trustkeys_title"/>
+
+                <TextView
+                    android:id="@+id/key_error_message"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textColor="@color/black87"
+                    android:textSize="?attr/TextSizeBody"
+                    android:padding="8dp"/>
+
+            </LinearLayout>
+
             <LinearLayout
                 android:id="@+id/own_keys_card"
                 android:layout_width="fill_parent"

src/main/res/values/strings.xml ๐Ÿ”—

@@ -397,6 +397,8 @@
 	<string name="purge_key">Purge key</string>
 	<string name="purge_key_desc_part1">Are you sure you want to purge this key?</string>
 	<string name="purge_key_desc_part2">It will irreversibly be considered compromised, and you can never build a session with it again.</string>
+	<string name="error_no_keys_to_trust">There are no usable keys available for this contact. If you have purged any of their keys, they need to generate new ones.</string>
+	<string name="error_trustkeys_title">Error</string>
 	<string name="fetching_history_from_server">Fetching history from server</string>
 	<string name="no_more_history_on_server">No more history on server</string>
 	<string name="updating">Updatingโ€ฆ</string>