mirror of
https://github.com/Steffo99/twom.git
synced 2024-11-21 23:54:26 +00:00
Begin creating rooms
This commit is contained in:
parent
8d32d17d32
commit
5ca508f645
4 changed files with 64 additions and 5 deletions
|
@ -1,10 +1,17 @@
|
|||
package eu.steffo.twom.create
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.compose.setContent
|
||||
|
||||
class CreateActivity : ComponentActivity() {
|
||||
companion object {
|
||||
const val NAME_EXTRA = "name"
|
||||
const val DESCRIPTION_EXTRA = "description"
|
||||
const val AVATAR_EXTRA = "avatar"
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
|
@ -15,8 +22,16 @@ class CreateActivity : ComponentActivity() {
|
|||
setResult(RESULT_CANCELED)
|
||||
finish()
|
||||
},
|
||||
onClickCreate = {
|
||||
setResult(RESULT_OK)
|
||||
onClickCreate = { name: String, description: String, avatarUri: Uri? ->
|
||||
val resultIntent = Intent()
|
||||
resultIntent.putExtra(NAME_EXTRA, name)
|
||||
resultIntent.putExtra(DESCRIPTION_EXTRA, description)
|
||||
if (avatarUri != null) {
|
||||
// Kotlin cannot use nullable types in Java interop generics
|
||||
resultIntent.putExtra(AVATAR_EXTRA, avatarUri)
|
||||
}
|
||||
|
||||
setResult(RESULT_OK, resultIntent)
|
||||
finish()
|
||||
},
|
||||
)
|
||||
|
|
|
@ -39,7 +39,7 @@ import eu.steffo.twom.theme.TwoMPadding
|
|||
@Preview
|
||||
fun CreateActivityContent(
|
||||
modifier: Modifier = Modifier,
|
||||
onClickCreate: () -> Unit = {},
|
||||
onClickCreate: (name: String, description: String, avatarUri: Uri?) -> Unit = { _, _, _ -> },
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
|
||||
|
@ -105,7 +105,9 @@ fun CreateActivityContent(
|
|||
Button(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth(),
|
||||
onClick = onClickCreate,
|
||||
onClick = {
|
||||
onClickCreate(name, description, avatarUri)
|
||||
},
|
||||
) {
|
||||
Text(stringResource(R.string.create_complete_text))
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package eu.steffo.twom.create
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.Scaffold
|
||||
import androidx.compose.runtime.Composable
|
||||
|
@ -11,7 +12,7 @@ import eu.steffo.twom.theme.TwoMTheme
|
|||
@Preview
|
||||
fun CreateActivityScaffold(
|
||||
onClickBack: () -> Unit = {},
|
||||
onClickCreate: () -> Unit = {},
|
||||
onClickCreate: (name: String, description: String, avatarUri: Uri?) -> Unit = { _, _, _ -> },
|
||||
) {
|
||||
TwoMTheme {
|
||||
Scaffold(
|
||||
|
@ -21,6 +22,7 @@ fun CreateActivityScaffold(
|
|||
content = {
|
||||
CreateActivityContent(
|
||||
modifier = Modifier.padding(it),
|
||||
onClickCreate = onClickCreate,
|
||||
)
|
||||
}
|
||||
)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package eu.steffo.twom.main
|
||||
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import androidx.activity.ComponentActivity
|
||||
|
@ -15,6 +16,8 @@ import eu.steffo.twom.matrix.TwoMMatrix
|
|||
import eu.steffo.twom.room.RoomActivity
|
||||
import kotlinx.coroutines.launch
|
||||
import org.matrix.android.sdk.api.session.Session
|
||||
import org.matrix.android.sdk.api.session.room.model.create.CreateRoomParams
|
||||
import org.matrix.android.sdk.api.session.room.model.create.CreateRoomPreset
|
||||
|
||||
|
||||
class MainActivity : ComponentActivity() {
|
||||
|
@ -137,6 +140,43 @@ class MainActivity : ComponentActivity() {
|
|||
|
||||
private fun onCreate(result: ActivityResult) {
|
||||
Log.d("Main", "Received result from create activity: $result")
|
||||
if (result.resultCode == RESULT_OK) {
|
||||
val intent: Intent = result.data!!
|
||||
val name = intent.getStringExtra(CreateActivity.NAME_EXTRA)
|
||||
val description = intent.getStringExtra(CreateActivity.DESCRIPTION_EXTRA)
|
||||
@Suppress("DEPRECATION") val avatarUri =
|
||||
intent.getParcelableExtra<Uri>(CreateActivity.AVATAR_EXTRA)
|
||||
|
||||
if (name == null) {
|
||||
Log.w("Main", "Result from create activity did not have `name` extra set")
|
||||
return
|
||||
}
|
||||
if (description == null) {
|
||||
Log.w("Main", "Result from create activity did not have `description` extra set")
|
||||
return
|
||||
}
|
||||
|
||||
lifecycleScope.launch {
|
||||
val currentSession = session
|
||||
|
||||
val createRoomParams = CreateRoomParams()
|
||||
createRoomParams.name = name
|
||||
createRoomParams.topic = description
|
||||
createRoomParams.avatarUri = avatarUri
|
||||
createRoomParams.preset = CreateRoomPreset.PRESET_PRIVATE_CHAT
|
||||
createRoomParams.roomType = TwoMMatrix.ROOM_TYPE
|
||||
|
||||
Log.d(
|
||||
"Main",
|
||||
"Creating room '$name' with description '$description' and avatar '$avatarUri'..."
|
||||
)
|
||||
val roomId = currentSession!!.roomService().createRoom(createRoomParams)
|
||||
Log.d(
|
||||
"Main",
|
||||
"Created room '$name' with description '$description' and avatar '$avatarUri': $roomId"
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun resetContent() {
|
||||
|
|
Loading…
Reference in a new issue