From 9314f9c7e357c43a98967b3e056d83d35475d610 Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Fri, 24 Jun 2022 14:51:50 +0100 Subject: [PATCH] Show trust status in View Profile and enable only relevant buttons. GitHub issue #152 --- .../muwire/gui/profile/ViewProfileModel.groovy | 16 ++++++++++++++++ .../muwire/gui/profile/ViewProfileView.groovy | 14 +++++++++++--- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/gui/griffon-app/models/com/muwire/gui/profile/ViewProfileModel.groovy b/gui/griffon-app/models/com/muwire/gui/profile/ViewProfileModel.groovy index 238c43f8..b2485347 100644 --- a/gui/griffon-app/models/com/muwire/gui/profile/ViewProfileModel.groovy +++ b/gui/griffon-app/models/com/muwire/gui/profile/ViewProfileModel.groovy @@ -7,6 +7,8 @@ import com.muwire.core.profile.MWProfileFetchEvent import com.muwire.core.profile.MWProfileFetchStatus import com.muwire.core.profile.MWProfileHeader import com.muwire.core.profile.UIProfileFetchEvent +import com.muwire.core.trust.TrustEvent +import com.muwire.core.trust.TrustLevel import com.muwire.gui.HTMLSanitizer import griffon.core.artifact.GriffonModel import griffon.inject.MVCMember @@ -29,6 +31,8 @@ class ViewProfileModel { @Observable MWProfileFetchStatus status MWProfile profile + @Observable TrustLevel trustLevel + private boolean registered void mvcGroupInit(Map args) { @@ -36,6 +40,9 @@ class ViewProfileModel { profileHeader = profile.getHeader() if (profileHeader != null) profileTitle = HTMLSanitizer.sanitize(profileHeader.getTitle()) + + setTrustLevel(core.getTrustService().getLevel(persona.getDestination())) + core.getEventBus().register(TrustEvent.class, this) } boolean fetchEnabled() { @@ -54,6 +61,7 @@ class ViewProfileModel { } void mvcGroupDestroy() { + core.getEventBus().unregister(TrustEvent.class, this) if (registered) core.getEventBus().unregister(MWProfileFetchEvent.class, this) } @@ -70,4 +78,12 @@ class ViewProfileModel { } } } + + void onTrustEvent(TrustEvent event) { + if (event.persona != persona) + return + runInsideUIAsync { + trustLevel = event.level + } + } } diff --git a/gui/griffon-app/views/com/muwire/gui/profile/ViewProfileView.groovy b/gui/griffon-app/views/com/muwire/gui/profile/ViewProfileView.groovy index 9ec20d84..e9812826 100644 --- a/gui/griffon-app/views/com/muwire/gui/profile/ViewProfileView.groovy +++ b/gui/griffon-app/views/com/muwire/gui/profile/ViewProfileView.groovy @@ -2,6 +2,7 @@ package com.muwire.gui.profile import com.muwire.core.profile.MWProfile import com.muwire.core.profile.MWProfileFetchStatus +import com.muwire.core.trust.TrustLevel import com.muwire.gui.HTMLSanitizer import javax.imageio.ImageIO @@ -104,16 +105,23 @@ class ViewProfileView { panel(constraints: BorderLayout.SOUTH) { gridLayout(rows:1, cols: 4) panel { - label(text : bind { model.status == null ? "" : trans(model.status.name())}) + borderLayout() + panel(constraints: BorderLayout.WEST) { + label(text: trans("YOUR_TRUST") + " : ") + label(text: bind {trans(model.trustLevel.name())}) + } + panel(constraints: BorderLayout.EAST) { + label(text: bind { model.status == null ? "" : trans(model.status.name()) }) + } } panel { button(text: trans("COPY_FULL_ID"), copyFullAction) } panel { button(text: trans("ADD_CONTACT"), toolTipText: trans("TOOLTIP_PROFILE_VIEWER_ADD_CONTACT"), - addContactAction) + enabled: bind {model.trustLevel != TrustLevel.TRUSTED}, addContactAction) button(text: trans("PROFILE_VIEWER_BLOCK"), toolTipText: trans("TOOLTIP_PROFILE_VIEWER_BLOCK"), - blockAction) + enabled: bind {model.trustLevel != TrustLevel.DISTRUSTED}, blockAction) } panel { button(text : trans("CLOSE"), closeAction)