Add events for the search screen (#726)

This commit is contained in:
David Perez
2024-01-22 22:35:46 -06:00
committed by Álison Fernandes
parent b65671bce7
commit 03222cbdaf
5 changed files with 69 additions and 2 deletions

View File

@@ -48,6 +48,7 @@ data class SearchArgs(
*/
fun NavGraphBuilder.searchDestination(
onNavigateBack: () -> Unit,
onNavigateToEditSend: (sendId: String) -> Unit,
) {
composableWithSlideTransitions(
route = SEARCH_ROUTE,
@@ -61,6 +62,7 @@ fun NavGraphBuilder.searchDestination(
) {
SearchScreen(
onNavigateBack = onNavigateBack,
onNavigateToEditSend = onNavigateToEditSend,
)
}
}

View File

@@ -1,5 +1,6 @@
package com.x8bit.bitwarden.ui.platform.feature.search
import android.widget.Toast
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Spacer
@@ -19,6 +20,7 @@ import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.input.nestedscroll.nestedScroll
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.unit.dp
@@ -29,6 +31,8 @@ import com.x8bit.bitwarden.ui.platform.base.util.EventsEffect
import com.x8bit.bitwarden.ui.platform.components.BitwardenScaffold
import com.x8bit.bitwarden.ui.platform.components.BitwardenTopAppBar
import com.x8bit.bitwarden.ui.platform.components.NavigationIcon
import com.x8bit.bitwarden.ui.platform.manager.intent.IntentManager
import com.x8bit.bitwarden.ui.platform.theme.LocalIntentManager
/**
* The search UI for vault items or send items.
@@ -37,12 +41,22 @@ import com.x8bit.bitwarden.ui.platform.components.NavigationIcon
@Composable
fun SearchScreen(
onNavigateBack: () -> Unit,
onNavigateToEditSend: (sendId: String) -> Unit,
intentManager: IntentManager = LocalIntentManager.current,
viewModel: SearchViewModel = hiltViewModel(),
) {
val state by viewModel.stateFlow.collectAsStateWithLifecycle()
val context = LocalContext.current
EventsEffect(viewModel = viewModel) { event ->
when (event) {
SearchEvent.NavigateBack -> onNavigateBack()
is SearchEvent.NavigateToEditSend -> onNavigateToEditSend(event.sendId)
is SearchEvent.ShowShareSheet -> intentManager.shareText(event.content)
is SearchEvent.ShowToast -> {
Toast
.makeText(context, event.message(context.resources), Toast.LENGTH_SHORT)
.show()
}
}
}

View File

@@ -3,6 +3,7 @@ package com.x8bit.bitwarden.ui.platform.feature.search
import android.os.Parcelable
import androidx.lifecycle.SavedStateHandle
import com.x8bit.bitwarden.ui.platform.base.BaseViewModel
import com.x8bit.bitwarden.ui.platform.base.util.Text
import com.x8bit.bitwarden.ui.platform.feature.search.model.SearchType
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.parcelize.Parcelize
@@ -60,4 +61,25 @@ sealed class SearchEvent {
* Navigates back to the previous screen.
*/
data object NavigateBack : SearchEvent()
/**
* Navigates to edit a send.
*/
data class NavigateToEditSend(
val sendId: String,
) : SearchEvent()
/**
* Shares the [content] with share sheet.
*/
data class ShowShareSheet(
val content: String,
) : SearchEvent()
/**
* Show a toast with the given [message].
*/
data class ShowToast(
val message: Text,
) : SearchEvent()
}

View File

@@ -99,7 +99,6 @@ fun NavGraphBuilder.vaultUnlockedGraph(
} else {
VaultAddEditType.EditItem(vaultItemId)
},
)
},
onNavigateToMoveToOrganization = {
@@ -125,7 +124,10 @@ fun NavGraphBuilder.vaultUnlockedGraph(
passwordHistoryDestination(onNavigateBack = { navController.popBackStack() })
foldersDestination(onNavigateBack = { navController.popBackStack() })
generatorModalDestination(onNavigateBack = { navController.popBackStack() })
searchDestination(onNavigateBack = { navController.popBackStack() })
searchDestination(
onNavigateBack = { navController.popBackStack() },
onNavigateToEditSend = { navController.navigateToAddSend(AddSendType.EditItem(it)) },
)
}
}