Coverage Summary for Class: WorkspaceMembersBottomSheetKt (com.georgeci.moneysurfer.feature.workspace.members)

Class Class, % Method, % Branch, % Line, % Instruction, %
WorkspaceMembersBottomSheetKt 0% (0/1) 0% (0/3) 0% (0/30) 0% (0/18) 0% (0/401)


 package com.georgeci.moneysurfer.feature.workspace.members
 
 import androidx.compose.runtime.Composable
 import androidx.compose.runtime.getValue
 import androidx.lifecycle.compose.collectAsStateWithLifecycle
 import com.georgeci.moneysurfer.domain.primitives.UserId
 import com.georgeci.moneysurfer.domain.primitives.WorkspaceId
 import com.georgeci.moneysurfer.utils.HandleSideEffect
 import org.koin.compose.viewmodel.koinViewModel
 import org.koin.core.parameter.parametersOf
 
 /**
  * Entry point for the Members route. The surrounding [androidx.compose.material3.ModalBottomSheet]
  * is provided by [com.georgeci.moneysurfer.navigation.BottomSheetSceneStrategy] — this
  * composable renders only the sheet body. Side-effects bubble up to the host so it can navigate
  * to invite / member-actions destinations.
  */
 @Composable
 fun WorkspaceMembersBottomSheet(
     workspaceId: WorkspaceId,
     onDismiss: () -> Unit,
     onNavigateToInvite: (WorkspaceId) -> Unit,
     onNavigateToMemberActions: (WorkspaceId, UserId) -> Unit,
     viewModel: WorkspaceMembersViewModel = koinViewModel(
         key = workspaceId.value,
     ) { parametersOf(workspaceId) },
 ) {
     val state by viewModel.collectAsStateWithLifecycle()
 
     viewModel.HandleSideEffect { effect ->
         when (effect) {
             WorkspaceMembersEffect.Dismiss -> onDismiss()
             WorkspaceMembersEffect.OpenInvite -> onNavigateToInvite(workspaceId)
             is WorkspaceMembersEffect.OpenMemberActions ->
                 onNavigateToMemberActions(effect.workspaceId, effect.targetUserId)
             WorkspaceMembersEffect.LeftWorkspace -> onDismiss()
             is WorkspaceMembersEffect.ShowError -> Unit // could surface a snackbar via host
         }
     }
 
     WorkspaceMembersScreen(
         state = state,
         onEvent = viewModel::onEvent,
     )
 }