Skip to content

Commit

Permalink
including room name in the image gallery toolbar
Browse files Browse the repository at this point in the history
  • Loading branch information
ouchadam committed Sep 29, 2022
1 parent 14d6257 commit ff69156
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@ import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.foundation.text.BasicTextField
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.*
import androidx.compose.material.icons.filled.Check
import androidx.compose.material.icons.filled.Close
import androidx.compose.material.icons.filled.Image
import androidx.compose.material.icons.filled.Send
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.Alignment
Expand All @@ -33,13 +36,15 @@ import app.dapk.st.core.Lce
import app.dapk.st.core.LifecycleEffect
import app.dapk.st.core.StartObserving
import app.dapk.st.core.components.CenteredLoading
import app.dapk.st.core.extensions.takeIfContent
import app.dapk.st.design.components.*
import app.dapk.st.matrix.common.RoomId
import app.dapk.st.matrix.common.UserId
import app.dapk.st.matrix.sync.MessageMeta
import app.dapk.st.matrix.sync.RoomEvent
import app.dapk.st.matrix.sync.RoomEvent.Message
import app.dapk.st.matrix.sync.RoomState
import app.dapk.st.messenger.gallery.ImageGalleryActivityPayload
import app.dapk.st.navigator.MessageAttachment
import app.dapk.st.navigator.Navigator
import coil.compose.rememberAsyncImagePainter
Expand All @@ -52,7 +57,7 @@ internal fun MessengerScreen(
attachments: List<MessageAttachment>?,
viewModel: MessengerViewModel,
navigator: Navigator,
galleryLauncher: ActivityResultLauncher<*>
galleryLauncher: ActivityResultLauncher<ImageGalleryActivityPayload>
) {
val state = viewModel.state

Expand Down Expand Up @@ -96,11 +101,15 @@ internal fun MessengerScreen(
}

@Composable
private fun MessengerViewModel.ObserveEvents(galleryLauncher: ActivityResultLauncher<*>) {
private fun MessengerViewModel.ObserveEvents(galleryLauncher: ActivityResultLauncher<ImageGalleryActivityPayload>) {
StartObserving {
this@ObserveEvents.events.launch {
when (it) {
MessengerEvent.SelectImageAttachment -> galleryLauncher.launch(null)
MessengerEvent.SelectImageAttachment -> {
state.roomState.takeIfContent()?.let {
galleryLauncher.launch(ImageGalleryActivityPayload(it.roomState.roomOverview.roomName ?: ""))
}
}
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.os.Parcelable
import androidx.activity.result.contract.ActivityResultContract
import androidx.compose.material3.Surface
import androidx.compose.runtime.Composable
Expand All @@ -14,13 +15,16 @@ import androidx.compose.runtime.mutableStateOf
import androidx.lifecycle.lifecycleScope
import app.dapk.st.core.*
import app.dapk.st.core.extensions.unsafeLazy
import app.dapk.st.messenger.MessengerModule
import kotlinx.coroutines.launch
import kotlinx.parcelize.Parcelize

class ImageGalleryActivity : DapkActivity() {

private val module by unsafeLazy { module<ImageGalleryModule>() }
private val viewModel by viewModel { module.imageGalleryViewModel() }
private val viewModel by viewModel {
val payload = intent.getParcelableExtra("key") as? ImageGalleryActivityPayload
module.imageGalleryViewModel(payload!!.roomName)
}

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand Down Expand Up @@ -63,13 +67,20 @@ fun Activity.PermissionGuard(state: State<Lce<PermissionResult>>, onGranted: @Co

}

class GetImageFromGallery : ActivityResultContract<Void?, Uri?>() {
class GetImageFromGallery : ActivityResultContract<ImageGalleryActivityPayload, Uri?>() {

override fun createIntent(context: Context, input: Void?): Intent {
override fun createIntent(context: Context, input: ImageGalleryActivityPayload): Intent {
return Intent(context, ImageGalleryActivity::class.java)
.putExtra("key", input)
}

override fun parseResult(resultCode: Int, intent: Intent?): Uri? {
return intent.takeIf { resultCode == Activity.RESULT_OK }?.data
}
}
}


@Parcelize
data class ImageGalleryActivityPayload(
val roomName: String,
) : Parcelable
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,10 @@ class ImageGalleryModule(
private val dispatchers: CoroutineDispatchers,
) : ProvidableModule {

fun imageGalleryViewModel() = ImageGalleryViewModel(
fun imageGalleryViewModel(roomName: String) = ImageGalleryViewModel(
FetchMediaFoldersUseCase(contentResolver, dispatchers),
FetchMediaUseCase(contentResolver, dispatchers),
roomName = roomName,
)

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,12 @@ import kotlinx.coroutines.launch
class ImageGalleryViewModel(
private val foldersUseCase: FetchMediaFoldersUseCase,
private val fetchMediaUseCase: FetchMediaUseCase,
roomName: String,
) : DapkViewModel<ImageGalleryState, ImageGalleryEvent>(
initialState = ImageGalleryState(
page = SpiderPage(
route = ImageGalleryPage.Routes.folders,
label = "",
label = "Send to $roomName",
parent = null,
state = ImageGalleryPage.Folders(Lce.Loading())
)
Expand Down

0 comments on commit ff69156

Please sign in to comment.