From 4aa34e071dee014417beda8dd44b3732a3db3357 Mon Sep 17 00:00:00 2001
From: ialokim <ialokim@mailbox.org>
Date: Sun, 27 Nov 2022 22:27:47 +0100
Subject: [PATCH] add tooltip to TrustIndicator

---
 .../org/briarproject/briar/desktop/ui/Tooltip.kt   |  2 +-
 .../briar/desktop/ui/TrustIndicator.kt             | 14 ++++++++++++--
 .../main/resources/strings/BriarDesktop.properties |  6 ++++++
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/Tooltip.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/Tooltip.kt
index 3a1729d60a..932b7aef8a 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/Tooltip.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/Tooltip.kt
@@ -55,6 +55,6 @@ fun Tooltip(
     },
     delayMillis = delayMillis,
     tooltipPlacement = tooltipPlacement,
-    modifier = modifier,
+    modifier = modifier, // todo: use tooltip text for semantic description
     content = content,
 )
diff --git a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/TrustIndicator.kt b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/TrustIndicator.kt
index 3cecbd9dfc..608d7a0e85 100644
--- a/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/TrustIndicator.kt
+++ b/briar-desktop/src/main/kotlin/org/briarproject/briar/desktop/ui/TrustIndicator.kt
@@ -18,6 +18,7 @@
 
 package org.briarproject.briar.desktop.ui
 
+import androidx.compose.foundation.ExperimentalFoundationApi
 import androidx.compose.foundation.layout.size
 import androidx.compose.material.Icon
 import androidx.compose.material.MaterialTheme
@@ -38,8 +39,17 @@ import org.briarproject.briar.desktop.theme.Orange500
 import org.briarproject.briar.desktop.theme.Red500
 import org.briarproject.briar.desktop.utils.InternationalizationUtils.i18n
 
+@OptIn(ExperimentalFoundationApi::class)
 @Composable
-fun TrustIndicator(status: AuthorInfo.Status) {
+fun TrustIndicator(status: AuthorInfo.Status) = Tooltip(
+    text = when (status) {
+        AuthorInfo.Status.NONE -> error("Unexpected status: $status")
+        AuthorInfo.Status.UNKNOWN -> i18n("peer.trust.stranger")
+        AuthorInfo.Status.UNVERIFIED -> i18n("peer.trust.unverified")
+        AuthorInfo.Status.VERIFIED -> i18n("peer.trust.verified")
+        AuthorInfo.Status.OURSELVES -> i18n("peer.trust.ourselves")
+    }
+) {
     if (status == AuthorInfo.Status.OURSELVES) {
         Icon(
             imageVector = Icons.Filled.Person,
@@ -50,7 +60,7 @@ fun TrustIndicator(status: AuthorInfo.Status) {
     } else {
         val gray = MaterialTheme.colors.onSurface
         val (first, second, third) = when (status) {
-            AuthorInfo.Status.NONE -> return
+            AuthorInfo.Status.NONE -> error("Unexpected status: $status")
             AuthorInfo.Status.UNKNOWN -> Triple(Red500, gray, gray)
             AuthorInfo.Status.UNVERIFIED -> Triple(Orange500, Orange500, gray)
             AuthorInfo.Status.VERIFIED -> Triple(Lime500, Lime500, Lime500)
diff --git a/briar-desktop/src/main/resources/strings/BriarDesktop.properties b/briar-desktop/src/main/resources/strings/BriarDesktop.properties
index bf6b68a846..c0888d808d 100644
--- a/briar-desktop/src/main/resources/strings/BriarDesktop.properties
+++ b/briar-desktop/src/main/resources/strings/BriarDesktop.properties
@@ -202,6 +202,12 @@ blog.invitation.response.declined.auto=The blog invitation from {0} was automati
 blog.invitation.response.accepted.received={0} accepted the blog invitation.
 blog.invitation.response.declined.received={0} declined the blog invitation.
 
+# Peer trust level
+peer.trust.unverified=Unverified contact
+peer.trust.verified=Verified contact
+peer.trust.ourselves=Me
+peer.trust.stranger=Stranger
+
 
 # Main
 main.title=Briar Desktop
-- 
GitLab