Skip to content

Commit

Permalink
feat: add onLoading in the AssetPicker
Browse files Browse the repository at this point in the history
  • Loading branch information
huhx committed Mar 19, 2024
1 parent cc045af commit f6e1d54
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -130,10 +130,11 @@ private fun DisplayTopAppBar(
@Composable
private fun DisplayBottomBar(viewModel: AssetViewModel, onPicked: (List<AssetInfo>) -> Unit) {
var cameraUri: Uri? by remember { mutableStateOf(null) }
val scope = rememberCoroutineScope()

val cameraLauncher = rememberLauncherForActivityResult(ActivityResultContracts.TakePicture()) { success ->
if (success) {
cameraUri?.let { viewModel.initDirectories() }
cameraUri?.let { scope.launch { viewModel.initDirectories() } }
} else {
viewModel.deleteImage(cameraUri)
}
Expand Down Expand Up @@ -295,7 +296,7 @@ private fun AssetImage(
navigateToPreview = navigateToPreview,
onLongClick = {
val selectResult = !selected
if (!selectResult || selectedList.size < maxAssets) {
if (selected || selectedList.size < maxAssets) {
onLongClick(selectResult)
} else {
Toast.makeText(context, errorMessage, Toast.LENGTH_SHORT).show()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ fun AssetPicker(
assetPickerConfig: AssetPickerConfig,
onPicked: (List<AssetInfo>) -> Unit,
onClose: (List<AssetInfo>) -> Unit,
onLoading: @Composable (() -> Unit)? = null,
) {
val context = LocalContext.current
val navController = rememberNavController()
Expand All @@ -40,7 +41,7 @@ fun AssetPicker(
}

if (isLoading.value) {
CircularProgressIndicator()
onLoading?.invoke() ?: CircularProgressIndicator()
} else {
CompositionLocalProvider(LocalAssetConfig provides assetPickerConfig) {
AssetPickerRoute(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@ import androidx.compose.runtime.mutableStateListOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.navigation.NavController
import com.huhx.picker.AssetRoute
import com.huhx.picker.model.AssetDirectory
import com.huhx.picker.model.AssetInfo
import com.huhx.picker.model.RequestType
import com.huhx.picker.provider.AssetPickerRepository
import kotlinx.coroutines.launch

const val init_directory = "Photos/Videos"

Expand All @@ -31,18 +29,16 @@ internal class AssetViewModel(
val selectedList = mutableStateListOf<AssetInfo>()
var directory by mutableStateOf(init_directory)

fun initDirectories() {
viewModelScope.launch {
initAssets(RequestType.COMMON)
val directoryList = assets.groupBy {
it.directory
}.map {
AssetDirectory(directory = it.key, assets = it.value)
}
_directoryGroup.clear()
_directoryGroup.add(AssetDirectory(directory = init_directory, assets = assets))
_directoryGroup.addAll(directoryList)
suspend fun initDirectories() {
initAssets(RequestType.COMMON)
val directoryList = assets.groupBy {
it.directory
}.map {
AssetDirectory(directory = it.key, assets = it.value)
}
_directoryGroup.clear()
_directoryGroup.add(AssetDirectory(directory = init_directory, assets = assets))
_directoryGroup.addAll(directoryList)
}

private suspend fun initAssets(requestType: RequestType) {
Expand Down Expand Up @@ -106,7 +102,7 @@ internal class AssetViewModel(
selectedList -= resources.toSet()
}

fun selectAll(resources: List<AssetInfo>, maxAssets: Int) : Boolean{
fun selectAll(resources: List<AssetInfo>, maxAssets: Int): Boolean {
val selectedIds = selectedList.map { it.id }
val newSelectedList = resources.filterNot { selectedIds.contains(it.id) }

Expand Down

0 comments on commit f6e1d54

Please sign in to comment.