feat: convert relay export menu to M3 dialog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+28
-21
@@ -29,8 +29,8 @@ import androidx.compose.foundation.layout.padding
|
|||||||
import androidx.compose.foundation.lazy.LazyColumn
|
import androidx.compose.foundation.lazy.LazyColumn
|
||||||
import androidx.compose.material.icons.Icons
|
import androidx.compose.material.icons.Icons
|
||||||
import androidx.compose.material.icons.filled.Share
|
import androidx.compose.material.icons.filled.Share
|
||||||
import androidx.compose.material3.DropdownMenu
|
import androidx.compose.material.icons.outlined.Description
|
||||||
import androidx.compose.material3.DropdownMenuItem
|
import androidx.compose.material.icons.outlined.FolderZip
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.Icon
|
import androidx.compose.material3.Icon
|
||||||
import androidx.compose.material3.IconButton
|
import androidx.compose.material3.IconButton
|
||||||
@@ -53,6 +53,9 @@ import com.vitorpamplona.amethyst.R
|
|||||||
import com.vitorpamplona.amethyst.model.DefaultDMRelayList
|
import com.vitorpamplona.amethyst.model.DefaultDMRelayList
|
||||||
import com.vitorpamplona.amethyst.model.DefaultIndexerRelayList
|
import com.vitorpamplona.amethyst.model.DefaultIndexerRelayList
|
||||||
import com.vitorpamplona.amethyst.model.DefaultSearchRelayList
|
import com.vitorpamplona.amethyst.model.DefaultSearchRelayList
|
||||||
|
import com.vitorpamplona.amethyst.ui.components.M3ActionDialog
|
||||||
|
import com.vitorpamplona.amethyst.ui.components.M3ActionRow
|
||||||
|
import com.vitorpamplona.amethyst.ui.components.M3ActionSection
|
||||||
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
|
import com.vitorpamplona.amethyst.ui.navigation.navs.INav
|
||||||
import com.vitorpamplona.amethyst.ui.navigation.topbars.SavingTopBar
|
import com.vitorpamplona.amethyst.ui.navigation.topbars.SavingTopBar
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
@@ -490,6 +493,7 @@ fun SettingsCategoryWithButton(
|
|||||||
@Composable
|
@Composable
|
||||||
fun ExportDropdownMenu(collection: () -> RelayListCollection) {
|
fun ExportDropdownMenu(collection: () -> RelayListCollection) {
|
||||||
var expanded by remember { mutableStateOf(false) }
|
var expanded by remember { mutableStateOf(false) }
|
||||||
|
val context = LocalContext.current
|
||||||
|
|
||||||
IconButton(onClick = { expanded = true }) {
|
IconButton(onClick = { expanded = true }) {
|
||||||
Icon(
|
Icon(
|
||||||
@@ -498,24 +502,27 @@ fun ExportDropdownMenu(collection: () -> RelayListCollection) {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
DropdownMenu(
|
if (expanded) {
|
||||||
expanded = expanded,
|
M3ActionDialog(
|
||||||
onDismissRequest = { expanded = false },
|
title = stringRes(R.string.export_actions_dialog_title),
|
||||||
) {
|
onDismiss = { expanded = false },
|
||||||
val context = LocalContext.current
|
) {
|
||||||
DropdownMenuItem(
|
M3ActionSection {
|
||||||
text = { Text(stringRes(R.string.export_as_text)) },
|
M3ActionRow(
|
||||||
onClick = {
|
icon = Icons.Outlined.Description,
|
||||||
expanded = false
|
text = stringRes(R.string.export_as_text),
|
||||||
RelayExporter(context).export(collection())
|
) {
|
||||||
},
|
expanded = false
|
||||||
)
|
RelayExporter(context).export(collection())
|
||||||
DropdownMenuItem(
|
}
|
||||||
text = { Text(stringRes(R.string.export_as_zip)) },
|
M3ActionRow(
|
||||||
onClick = {
|
icon = Icons.Outlined.FolderZip,
|
||||||
expanded = false
|
text = stringRes(R.string.export_as_zip),
|
||||||
RelayZipExporter(context).export(collection())
|
) {
|
||||||
},
|
expanded = false
|
||||||
)
|
RelayZipExporter(context).export(collection())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user