Skip to content

Commit f016747

Browse files
committed
feat: Enhance empty state UI for deeplinks with informative messaging
1 parent 8f80160 commit f016747

File tree

2 files changed

+43
-6
lines changed

2 files changed

+43
-6
lines changed

app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/Home.kt

Lines changed: 42 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import androidx.compose.foundation.layout.fillMaxWidth
1818
import androidx.compose.foundation.layout.height
1919
import androidx.compose.foundation.layout.imePadding
2020
import androidx.compose.foundation.layout.padding
21+
import androidx.compose.foundation.layout.size
2122
import androidx.compose.foundation.lazy.LazyColumn
2223
import androidx.compose.foundation.lazy.items
2324
import androidx.compose.foundation.shape.RoundedCornerShape
@@ -46,6 +47,7 @@ import androidx.compose.runtime.snapshots.SnapshotStateList
4647
import androidx.compose.ui.Alignment
4748
import androidx.compose.ui.Modifier
4849
import androidx.compose.ui.platform.LocalContext
50+
import androidx.compose.ui.text.style.TextAlign
4951
import androidx.compose.ui.text.style.TextOverflow
5052
import androidx.compose.ui.unit.dp
5153
import com.yogeshpaliyal.deepr.Deepr
@@ -61,6 +63,7 @@ import com.yogeshpaliyal.deepr.viewmodel.SortOrder
6163
import compose.icons.tablericons.Copy
6264
import compose.icons.tablericons.DotsVertical
6365
import compose.icons.tablericons.Filter
66+
import compose.icons.tablericons.Link
6467
import compose.icons.tablericons.Plus
6568
import compose.icons.tablericons.Settings
6669
import compose.icons.tablericons.Trash
@@ -306,12 +309,46 @@ fun DeeprList(
306309
onShortcutClick: (Deepr) -> Unit,
307310
onItemLongClick: (Deepr) -> Unit
308311
) {
309-
LazyColumn(modifier = modifier, contentPadding = PaddingValues(vertical = 8.dp)) {
310-
if (accounts.isEmpty()) {
311-
item {
312-
Text(text = "No deeplinks found.")
312+
if (accounts.isEmpty()) {
313+
// When empty, use a Column with weights to ensure vertical centering
314+
Column(
315+
modifier = modifier.fillMaxSize(),
316+
horizontalAlignment = Alignment.CenterHorizontally
317+
) {
318+
Spacer(modifier = Modifier.weight(1f)) // Push content down
319+
320+
Column(
321+
horizontalAlignment = Alignment.CenterHorizontally,
322+
verticalArrangement = Arrangement.Center,
323+
modifier = Modifier.padding(16.dp)
324+
) {
325+
Icon(
326+
TablerIcons.Link,
327+
contentDescription = "No links",
328+
modifier = Modifier
329+
.size(80.dp)
330+
.padding(bottom = 16.dp),
331+
tint = MaterialTheme.colorScheme.primary
332+
)
333+
Text(
334+
text = "No deeplinks saved yet",
335+
style = MaterialTheme.typography.headlineSmall,
336+
textAlign = TextAlign.Center
337+
)
338+
Spacer(modifier = Modifier.height(8.dp))
339+
Text(
340+
text = "Save your frequently used deeplinks below to quickly access them later.",
341+
style = MaterialTheme.typography.bodyLarge,
342+
textAlign = TextAlign.Center,
343+
color = MaterialTheme.colorScheme.onSurfaceVariant,
344+
modifier = Modifier.padding(horizontal = 32.dp)
345+
)
313346
}
314-
} else {
347+
348+
Spacer(modifier = Modifier.weight(1f)) // Push content up
349+
}
350+
} else {
351+
LazyColumn(modifier = modifier, contentPadding = PaddingValues(vertical = 8.dp)) {
315352
items(accounts) { account ->
316353
DeeprItem(
317354
account = account,

app/src/main/java/com/yogeshpaliyal/deepr/ui/screens/Settings.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -132,4 +132,4 @@ fun SettingsScreen(backStack: SnapshotStateList<Any>) {
132132
}
133133
}
134134
}
135-
}
135+
}

0 commit comments

Comments
 (0)