diff --git a/app/src/main/java/to/bitkit/ui/components/GradientCircularProgressIndicator.kt b/app/src/main/java/to/bitkit/ui/components/GradientCircularProgressIndicator.kt
new file mode 100644
index 0000000000..b1be5f08e6
--- /dev/null
+++ b/app/src/main/java/to/bitkit/ui/components/GradientCircularProgressIndicator.kt
@@ -0,0 +1,53 @@
+package to.bitkit.ui.components
+
+import androidx.compose.animation.core.LinearEasing
+import androidx.compose.animation.core.animateFloat
+import androidx.compose.animation.core.infiniteRepeatable
+import androidx.compose.animation.core.rememberInfiniteTransition
+import androidx.compose.animation.core.tween
+import androidx.compose.foundation.Canvas
+import androidx.compose.runtime.Composable
+import androidx.compose.runtime.getValue
+import androidx.compose.runtime.remember
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Brush
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.StrokeCap
+import androidx.compose.ui.graphics.drawscope.Stroke
+import androidx.compose.ui.graphics.graphicsLayer
+import androidx.compose.ui.platform.LocalDensity
+import androidx.compose.ui.unit.Dp
+import androidx.compose.ui.unit.dp
+import to.bitkit.ui.theme.Colors
+
+@Composable
+fun GradientCircularProgressIndicator(
+ modifier: Modifier = Modifier,
+ strokeWidth: Dp = 1.dp,
+) {
+ val infiniteTransition = rememberInfiniteTransition(label = "rotation")
+ val angle by infiniteTransition.animateFloat(
+ initialValue = 0f,
+ targetValue = 360f,
+ animationSpec = infiniteRepeatable(
+ animation = tween(durationMillis = 2000, easing = LinearEasing)
+ ),
+ label = "rotation"
+ )
+
+ val brush = remember { Brush.sweepGradient(listOf(Color.Transparent, Colors.White)) }
+ val strokeWidthPx = with(LocalDensity.current) { strokeWidth.toPx() }
+ val stroke = remember(strokeWidthPx) { Stroke(width = strokeWidthPx, cap = StrokeCap.Round) }
+
+ Canvas(
+ modifier = modifier.graphicsLayer { rotationZ = angle }
+ ) {
+ drawArc(
+ brush = brush,
+ startAngle = 0f,
+ sweepAngle = 360f,
+ useCenter = false,
+ style = stroke
+ )
+ }
+}
diff --git a/app/src/main/java/to/bitkit/ui/components/SyncNodeView.kt b/app/src/main/java/to/bitkit/ui/components/SyncNodeView.kt
index 2dfdb29ea5..234a3f11bb 100644
--- a/app/src/main/java/to/bitkit/ui/components/SyncNodeView.kt
+++ b/app/src/main/java/to/bitkit/ui/components/SyncNodeView.kt
@@ -1,10 +1,10 @@
package to.bitkit.ui.components
import androidx.compose.foundation.layout.Column
-import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
-import androidx.compose.foundation.layout.height
+import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
@@ -16,6 +16,7 @@ import to.bitkit.ui.screens.transfer.components.TransferAnimationView
import to.bitkit.ui.shared.util.gradientBackground
import to.bitkit.ui.theme.AppThemeSurface
import to.bitkit.ui.theme.Colors
+import to.bitkit.ui.utils.withAccent
@Composable
fun SyncNodeView(modifier: Modifier) {
@@ -23,15 +24,7 @@ fun SyncNodeView(modifier: Modifier) {
modifier = modifier,
horizontalAlignment = Alignment.CenterHorizontally
) {
- Spacer(Modifier.height(32.dp))
-
- BodyM(
- text = stringResource(R.string.lightning__wait_text_top),
- color = Colors.White64,
- modifier = Modifier.padding(horizontal = 16.dp)
- )
-
- Spacer(modifier = Modifier.weight(1f))
+ FillHeight()
TransferAnimationView(
largeCircleRes = R.drawable.ln_sync_large,
@@ -40,11 +33,34 @@ fun SyncNodeView(modifier: Modifier) {
rotateContent = false
)
- Spacer(modifier = Modifier.weight(1f))
+ FillHeight()
+
+ Display(
+ text = stringResource(R.string.lightning__sync_connecting)
+ .withAccent(accentColor = Colors.Purple),
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(horizontal = 32.dp)
+ )
+
+ VerticalSpacer(8.dp)
- BodySSB(text = stringResource(R.string.lightning__wait_text_bottom), color = Colors.White32)
+ BodyM(
+ text = stringResource(R.string.lightning__wait_text_top),
+ color = Colors.White64,
+ modifier = Modifier
+ .fillMaxWidth()
+ .padding(horizontal = 32.dp)
+ )
+
+ VerticalSpacer(45.dp)
+
+ GradientCircularProgressIndicator(
+ strokeWidth = 1.dp,
+ modifier = Modifier.size(24.dp)
+ )
- Spacer(modifier = Modifier.height(32.dp))
+ VerticalSpacer(8.dp)
}
}
@@ -56,7 +72,6 @@ private fun Preview() {
modifier = Modifier
.fillMaxSize()
.gradientBackground()
- .padding(horizontal = 16.dp)
)
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5019b02e1d..29e02184a6 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -237,6 +237,7 @@
Spending balance
Status
Support
+ <accent>Connecting</accent>\nto network
Total Anchor Channels Reserve
Total Lightning
Total Onchain