Match the execution screen's visual polish to the app's own Swap flow

The structural separation (dedicated screen, no amount input) was already
in place, but the screen itself was much sparser than Swap's own execution
UI - just a label and a timer, no "Do not close the app!" warning and no
summary of what's actually being bridged. Added both, reusing components
already proven on Bridge's own input screen (BridgeAssetInputView in
non-editable mode, same as the main screen's fromCard/toCard) rather than
reaching into feature-swap-impl's Swap-specific components.

Also added the signatories' contact channel (t.me/pezkuwidestek) to the
existing "still processing" message, and made explicit that funds are safe
and on-chain even when auto-pay doesn't complete within the wait window -
this is the message shown when a real transfer lands in manual review, not
just the pre-submit consent gate.
This commit is contained in:
2026-07-15 21:47:32 -07:00
parent 3c06ae00e0
commit 272921dcdf
5 changed files with 147 additions and 24 deletions
@@ -13,39 +13,88 @@
app:layout_constraintTop_toTopOf="parent"
app:titleText="@string/bridge_title" />
<LinearLayout
<ScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:gravity="center"
android:orientation="vertical"
android:padding="24dp"
app:layout_constraintBottom_toTopOf="@id/bridgeExecutionDoneButton"
app:layout_constraintTop_toBottomOf="@id/bridgeExecutionToolbar">
<TextView
android:id="@+id/bridgeExecutionLabel"
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="@color/text_secondary"
tools:text="Waiting for confirmation on Pezkuwi Asset Hub…" />
android:orientation="vertical"
android:padding="16dp">
<io.novafoundation.nova.common.view.ExecutionTimerView
android:id="@+id/bridgeExecutionTimer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp" />
<!-- Only visible while a real on-chain operation is genuinely in flight (submitting
or waiting on the destination) - gone once resolved, same as the Swap execution
screen's equivalent warning. -->
<TextView
android:id="@+id/bridgeExecutionDoNotClose"
style="@style/TextAppearance.NovaFoundation.Bold.Title2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="@string/bridge_execution_do_not_close"
android:textColor="@color/text_primary" />
<io.novafoundation.nova.common.view.AlertView
android:id="@+id/bridgeExecutionPendingReviewAlert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:visibility="gone"
app:alertMode="warning" />
<TextView
android:id="@+id/bridgeExecutionLabel"
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:gravity="center"
android:textColor="@color/text_secondary"
tools:text="Waiting for confirmation on Pezkuwi Asset Hub…" />
</LinearLayout>
<io.novafoundation.nova.common.view.ExecutionTimerView
android:id="@+id/bridgeExecutionTimer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp" />
<io.novafoundation.nova.common.view.AlertView
android:id="@+id/bridgeExecutionPendingReviewAlert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:visibility="gone"
app:alertMode="warning" />
<TextView
android:id="@+id/bridgeExecutionFromLabel"
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
android:text="@string/bridge_you_send"
android:textColor="@color/text_secondary" />
<io.novafoundation.nova.feature_assets.presentation.bridge.view.BridgeAssetInputView
android:id="@+id/bridgeExecutionFromCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp" />
<TextView
android:id="@+id/bridgeExecutionToLabel"
style="@style/TextAppearance.NovaFoundation.Regular.Footnote"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/bridge_you_receive"
android:textColor="@color/text_secondary" />
<io.novafoundation.nova.feature_assets.presentation.bridge.view.BridgeAssetInputView
android:id="@+id/bridgeExecutionToCard"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp" />
</LinearLayout>
</ScrollView>
<io.novafoundation.nova.common.view.PrimaryButton
android:id="@+id/bridgeExecutionDoneButton"