diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d61fd79..847bd61 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -49,6 +49,10 @@ android:name=".room.RoomActivity" android:theme="@style/Theme.TwoM" /> + + \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/create/CreateActivity.kt b/app/src/main/java/eu/steffo/twom/create/CreateActivity.kt new file mode 100644 index 0000000..7cafddc --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/create/CreateActivity.kt @@ -0,0 +1,5 @@ +package eu.steffo.twom.create + +import androidx.activity.ComponentActivity + +class CreateActivity : ComponentActivity() \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/login/LoginActivityScaffold.kt b/app/src/main/java/eu/steffo/twom/login/LoginActivityScaffold.kt index d2c74e3..140da35 100644 --- a/app/src/main/java/eu/steffo/twom/login/LoginActivityScaffold.kt +++ b/app/src/main/java/eu/steffo/twom/login/LoginActivityScaffold.kt @@ -1,24 +1,14 @@ package eu.steffo.twom.login import androidx.compose.foundation.layout.padding -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack -import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text -import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview -import eu.steffo.twom.R import eu.steffo.twom.theme.TwoMTheme import org.matrix.android.sdk.api.session.Session -@OptIn(ExperimentalMaterial3Api::class) @Composable @Preview fun LoginActivityScaffold( @@ -28,23 +18,16 @@ fun LoginActivityScaffold( TwoMTheme { Scaffold( topBar = { - TopAppBar ( - navigationIcon = { - IconButton(onClick = onBack) { - Icon( - imageVector = Icons.Filled.ArrowBack, - contentDescription = LocalContext.current.getString(R.string.back) - ) - } - }, - title = { Text(LocalContext.current.getString(R.string.login_title)) } + LoginActivityTopBar( + onBack = onBack, ) - } - ) { - LoginActivityControl( - modifier = Modifier.padding(it), - onLogin = onLogin - ) - } + }, + content = { + LoginActivityControl( + modifier = Modifier.padding(it), + onLogin = onLogin + ) + }, + ) } } \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/login/LoginActivityTopBar.kt b/app/src/main/java/eu/steffo/twom/login/LoginActivityTopBar.kt new file mode 100644 index 0000000..4921f0f --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/login/LoginActivityTopBar.kt @@ -0,0 +1,32 @@ +package eu.steffo.twom.login + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar +import androidx.compose.runtime.Composable +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.tooling.preview.Preview +import eu.steffo.twom.R + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +@Preview +fun LoginActivityTopBar( + onBack: () -> Unit = {}, +) { + TopAppBar( + navigationIcon = { + IconButton(onClick = onBack) { + Icon( + imageVector = Icons.Filled.ArrowBack, + contentDescription = LocalContext.current.getString(R.string.back) + ) + } + }, + title = { Text(LocalContext.current.getString(R.string.login_title)) } + ) +} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/main/MainActivity.kt b/app/src/main/java/eu/steffo/twom/main/MainActivity.kt index ec50553..adb0b68 100644 --- a/app/src/main/java/eu/steffo/twom/main/MainActivity.kt +++ b/app/src/main/java/eu/steffo/twom/main/MainActivity.kt @@ -9,6 +9,7 @@ import androidx.activity.result.ActivityResult import androidx.activity.result.ActivityResultLauncher import androidx.activity.result.contract.ActivityResultContracts import androidx.lifecycle.lifecycleScope +import eu.steffo.twom.create.CreateActivity import eu.steffo.twom.login.LoginActivity import eu.steffo.twom.matrix.TwoMMatrix import eu.steffo.twom.room.RoomActivity @@ -19,6 +20,7 @@ import org.matrix.android.sdk.api.session.Session class MainActivity : ComponentActivity() { private lateinit var loginLauncher: ActivityResultLauncher private lateinit var roomLauncher: ActivityResultLauncher + private lateinit var createLauncher: ActivityResultLauncher private var session: Session? = null @@ -26,7 +28,6 @@ class MainActivity : ComponentActivity() { super.onCreate(savedInstanceState) TwoMMatrix.ensureMatrix(applicationContext) - TwoMMatrix.ensureDefaultAvatar(applicationContext) fetchLastSession() openSession() @@ -43,6 +44,12 @@ class MainActivity : ComponentActivity() { this::onRoom ) + createLauncher = + registerForActivityResult( + ActivityResultContracts.StartActivityForResult(), + this::onCreate + ) + resetContent() } @@ -115,13 +122,23 @@ class MainActivity : ComponentActivity() { Log.d("Main", "Clicked a room, launching room activity...") val intent = Intent(applicationContext, RoomActivity::class.java) intent.putExtra(RoomActivity.ROOM_ID_EXTRA, roomId) - loginLauncher.launch(intent) + roomLauncher.launch(intent) } private fun onRoom(result: ActivityResult) { Log.d("Main", "Received result from room activity: $result") } + private fun onClickCreate() { + Log.d("Main", "Clicked the New button, launching create activity...") + val intent = Intent(applicationContext, CreateActivity::class.java) + loginLauncher.launch(intent) + } + + private fun onCreate(result: ActivityResult) { + Log.d("Main", "Received result from create activity: $result") + } + private fun resetContent() { Log.d("Main", "Recomposing...") setContent { @@ -129,6 +146,7 @@ class MainActivity : ComponentActivity() { onClickLogin = this::onClickLogin, onClickLogout = this::onClickLogout, onClickRoom = this::onClickRoom, + onClickCreate = this::onClickCreate, session = session, ) } diff --git a/app/src/main/java/eu/steffo/twom/main/ProfileIconButton.kt b/app/src/main/java/eu/steffo/twom/main/MainActivityAccountIconButton.kt similarity index 67% rename from app/src/main/java/eu/steffo/twom/main/ProfileIconButton.kt rename to app/src/main/java/eu/steffo/twom/main/MainActivityAccountIconButton.kt index 3b1446d..4cfdef9 100644 --- a/app/src/main/java/eu/steffo/twom/main/ProfileIconButton.kt +++ b/app/src/main/java/eu/steffo/twom/main/MainActivityAccountIconButton.kt @@ -19,31 +19,31 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import eu.steffo.twom.R import eu.steffo.twom.matrix.LocalSession -import eu.steffo.twom.matrix.UserAvatar +import eu.steffo.twom.matrix.avatar.AvatarFromUserId @Composable @Preview(showBackground = true) -fun ProfileIconButton( +fun MainActivityAccountIconButton( modifier: Modifier = Modifier, + onClickLogin: () -> Unit = {}, onClickLogout: () -> Unit = {}, ) { val session = LocalSession.current var expanded by remember { mutableStateOf(false) } - Box { + Box(modifier) { IconButton( - enabled = (session != null), onClick = { expanded = true }, ) { if (session == null) { Icon( imageVector = Icons.Filled.AccountCircle, - contentDescription = LocalContext.current.getString(R.string.account_label), + contentDescription = LocalContext.current.getString(R.string.main_account_label), ) } else { - UserAvatar( + AvatarFromUserId( userId = session.myUserId, - contentDescription = LocalContext.current.getString(R.string.account_label), + contentDescription = LocalContext.current.getString(R.string.main_account_label), ) } } @@ -51,12 +51,25 @@ fun ProfileIconButton( expanded = expanded, onDismissRequest = { expanded = false }, ) { - if (session != null) { + if (session == null) { DropdownMenuItem( text = { - Text(stringResource(id = R.string.profile_logout_text)) + Text(stringResource(id = R.string.main_account_login_text)) }, - onClick = onClickLogout + onClick = { + expanded = false + onClickLogin() + } + ) + } else { + DropdownMenuItem( + text = { + Text(stringResource(id = R.string.main_account_logout_text)) + }, + onClick = { + expanded = false + onClickLogout() + } ) } } diff --git a/app/src/main/java/eu/steffo/twom/main/MainActivityContent.kt b/app/src/main/java/eu/steffo/twom/main/MainActivityContent.kt new file mode 100644 index 0000000..3e1260e --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/main/MainActivityContent.kt @@ -0,0 +1,24 @@ +package eu.steffo.twom.main + +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import eu.steffo.twom.matrix.LocalSession + +@Composable +fun MainActivityContent( + modifier: Modifier = Modifier, + onClickRoom: (roomId: String) -> Unit = {}, +) { + val session = LocalSession.current + + if (session == null) { + MainActivityNotLoggedIn( + modifier = modifier, + ) + } else { + MainActivityRoomList( + modifier = modifier, + onClickRoom = onClickRoom, + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/main/MainActivityCreateFAB.kt b/app/src/main/java/eu/steffo/twom/main/MainActivityCreateFAB.kt new file mode 100644 index 0000000..fc45876 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/main/MainActivityCreateFAB.kt @@ -0,0 +1,41 @@ +package eu.steffo.twom.main + +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Add +import androidx.compose.material3.ExtendedFloatingActionButton +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import eu.steffo.twom.R +import eu.steffo.twom.matrix.LocalSession + +@Composable +@Preview +fun MainActivityCreateFAB( + modifier: Modifier = Modifier, + onClickCreate: () -> Unit = {}, +) { + val session = LocalSession.current + + val shouldDisplay = (session != null || LocalView.current.isInEditMode) + + if (shouldDisplay) { + ExtendedFloatingActionButton( + modifier = modifier, + onClick = onClickCreate, + icon = { + Icon( + Icons.Filled.Add, + contentDescription = null + ) + }, + text = { + Text(stringResource(R.string.main_efab_create_text)) + } + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/main/MainActivityNotLoggedInControl.kt b/app/src/main/java/eu/steffo/twom/main/MainActivityNotLoggedIn.kt similarity index 59% rename from app/src/main/java/eu/steffo/twom/main/MainActivityNotLoggedInControl.kt rename to app/src/main/java/eu/steffo/twom/main/MainActivityNotLoggedIn.kt index ae3d520..25dc2b4 100644 --- a/app/src/main/java/eu/steffo/twom/main/MainActivityNotLoggedInControl.kt +++ b/app/src/main/java/eu/steffo/twom/main/MainActivityNotLoggedIn.kt @@ -2,8 +2,6 @@ package eu.steffo.twom.main import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.material3.Button import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -14,21 +12,16 @@ import eu.steffo.twom.theme.TwoMPadding @Composable @Preview(showBackground = true) -fun MatrixActivityNotLoggedInControl( +fun MainActivityNotLoggedIn( modifier: Modifier = Modifier, onClickLogin: () -> Unit = {}, ) { Column(modifier) { Row(TwoMPadding.base) { - Text(LocalContext.current.getString(R.string.notloggedin_text)) + Text(LocalContext.current.getString(R.string.main_notloggedin_text_1)) } Row(TwoMPadding.base) { - Button( - modifier = Modifier.fillMaxWidth(), - onClick = onClickLogin, - ) { - Text(LocalContext.current.getString(R.string.notloggedin_login_text)) - } + Text(LocalContext.current.getString(R.string.main_notloggedin_text_2)) } } } \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/main/MainActivityRoomListControl.kt b/app/src/main/java/eu/steffo/twom/main/MainActivityRoomList.kt similarity index 92% rename from app/src/main/java/eu/steffo/twom/main/MainActivityRoomListControl.kt rename to app/src/main/java/eu/steffo/twom/main/MainActivityRoomList.kt index 41b956e..81b897c 100644 --- a/app/src/main/java/eu/steffo/twom/main/MainActivityRoomListControl.kt +++ b/app/src/main/java/eu/steffo/twom/main/MainActivityRoomList.kt @@ -11,7 +11,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Preview import eu.steffo.twom.R import eu.steffo.twom.matrix.LocalSession import eu.steffo.twom.theme.TwoMPadding @@ -19,8 +18,7 @@ import org.matrix.android.sdk.api.session.room.model.RoomSummary import org.matrix.android.sdk.api.session.room.roomSummaryQueryParams @Composable -@Preview -fun MainActivityRoomListControl( +fun MainActivityRoomList( modifier: Modifier = Modifier, onClickRoom: (roomId: String) -> Unit = {}, ) { @@ -47,7 +45,7 @@ fun MainActivityRoomListControl( } else if (roomSummaries!!.isEmpty()) { Text( modifier = TwoMPadding.base, - text = stringResource(R.string.room_list_empty_text) + text = stringResource(R.string.main_roomlist_empty_text) ) } else { roomSummaries!!.forEach { diff --git a/app/src/main/java/eu/steffo/twom/main/MainActivityScaffold.kt b/app/src/main/java/eu/steffo/twom/main/MainActivityScaffold.kt index 5e81df9..ba4f14b 100644 --- a/app/src/main/java/eu/steffo/twom/main/MainActivityScaffold.kt +++ b/app/src/main/java/eu/steffo/twom/main/MainActivityScaffold.kt @@ -1,57 +1,45 @@ package eu.steffo.twom.main import androidx.compose.foundation.layout.padding -import androidx.compose.material3.CenterAlignedTopAppBar -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.tooling.preview.Preview -import eu.steffo.twom.R import eu.steffo.twom.matrix.LocalSession import eu.steffo.twom.theme.TwoMTheme import org.matrix.android.sdk.api.session.Session -@OptIn(ExperimentalMaterial3Api::class) @Composable @Preview fun MatrixActivityScaffold( onClickLogin: () -> Unit = {}, onClickLogout: () -> Unit = {}, onClickRoom: (roomId: String) -> Unit = {}, + onClickCreate: () -> Unit = {}, session: Session? = null, ) { TwoMTheme { CompositionLocalProvider(LocalSession provides session) { Scaffold( topBar = { - CenterAlignedTopAppBar( - title = { - Text(LocalContext.current.getString(R.string.app_name)) - }, - actions = { - ProfileIconButton( - onClickLogout = onClickLogout - ) - }, - ) - } - ) { - if (session == null) { - MatrixActivityNotLoggedInControl( - modifier = Modifier.padding(it), + MainActivityTopBar( onClickLogin = onClickLogin, + onClickLogout = onClickLogout, ) - } else { - MainActivityRoomListControl( + }, + floatingActionButton = { + MainActivityCreateFAB( + onClickCreate = onClickCreate, + ) + }, + content = { + MainActivityContent( modifier = Modifier.padding(it), onClickRoom = onClickRoom, ) } - } + ) } } } \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/main/MainActivityTopBar.kt b/app/src/main/java/eu/steffo/twom/main/MainActivityTopBar.kt new file mode 100644 index 0000000..4053102 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/main/MainActivityTopBar.kt @@ -0,0 +1,33 @@ +package eu.steffo.twom.main + +import androidx.compose.material3.CenterAlignedTopAppBar +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.tooling.preview.Preview +import eu.steffo.twom.R + + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +@Preview +fun MainActivityTopBar( + modifier: Modifier = Modifier, + onClickLogin: () -> Unit = {}, + onClickLogout: () -> Unit = {}, +) { + CenterAlignedTopAppBar( + modifier = modifier, + title = { + Text(LocalContext.current.getString(R.string.app_name)) + }, + actions = { + MainActivityAccountIconButton( + onClickLogin = onClickLogin, + onClickLogout = onClickLogout, + ) + }, + ) +} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/main/RoomListItem.kt b/app/src/main/java/eu/steffo/twom/main/RoomListItem.kt index 4cdf2c0..e27df66 100644 --- a/app/src/main/java/eu/steffo/twom/main/RoomListItem.kt +++ b/app/src/main/java/eu/steffo/twom/main/RoomListItem.kt @@ -10,7 +10,7 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.unit.dp -import eu.steffo.twom.matrix.Avatar +import eu.steffo.twom.matrix.avatar.AvatarFromURL import org.matrix.android.sdk.api.session.room.model.RoomSummary @@ -32,7 +32,7 @@ fun RoomListItem( .size(40.dp) .clip(MaterialTheme.shapes.medium) ) { - Avatar( + AvatarFromURL( url = roomSummary.avatarUrl, ) } diff --git a/app/src/main/java/eu/steffo/twom/matrix/DefaultAvatar.kt b/app/src/main/java/eu/steffo/twom/matrix/DefaultAvatar.kt deleted file mode 100644 index 945f90c..0000000 --- a/app/src/main/java/eu/steffo/twom/matrix/DefaultAvatar.kt +++ /dev/null @@ -1,17 +0,0 @@ -package eu.steffo.twom.matrix - -import androidx.compose.foundation.Image -import androidx.compose.runtime.Composable -import androidx.compose.ui.Modifier - -@Composable -fun DefaultAvatar( - modifier: Modifier = Modifier, - contentDescription: String = "", -) { - Image( - modifier = Modifier, - bitmap = TwoMMatrix.defaultAvatar, - contentDescription = contentDescription, - ) -} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/matrix/TwoMMatrix.kt b/app/src/main/java/eu/steffo/twom/matrix/TwoMMatrix.kt index 9e5e803..e30066f 100644 --- a/app/src/main/java/eu/steffo/twom/matrix/TwoMMatrix.kt +++ b/app/src/main/java/eu/steffo/twom/matrix/TwoMMatrix.kt @@ -1,11 +1,7 @@ package eu.steffo.twom.matrix import android.content.Context -import android.graphics.BitmapFactory import android.util.Log -import androidx.compose.ui.graphics.ImageBitmap -import androidx.compose.ui.graphics.asImageBitmap -import eu.steffo.twom.R import org.matrix.android.sdk.api.Matrix import org.matrix.android.sdk.api.MatrixConfiguration @@ -40,27 +36,4 @@ object TwoMMatrix { } return null } - - /** - * The avatar to default to when another one is not available. - * - * [Avatar] will expect this to be available. - */ - lateinit var defaultAvatar: ImageBitmap - - /** - * Make sure the [matrix] object is available, decoding it if it isn't initialized. - * - * Uses the passed [Context] to access the application resources. - */ - fun ensureDefaultAvatar(context: Context): ImageBitmap? { - if (!this::defaultAvatar.isInitialized) { - Log.d("Matrix", "Initializing default avatar...") - defaultAvatar = - BitmapFactory.decodeResource(context.resources, R.drawable.avatar_default) - .asImageBitmap() - return defaultAvatar - } - return null - } } diff --git a/app/src/main/java/eu/steffo/twom/matrix/avatar/AvatarFromDefault.kt b/app/src/main/java/eu/steffo/twom/matrix/avatar/AvatarFromDefault.kt new file mode 100644 index 0000000..d853e10 --- /dev/null +++ b/app/src/main/java/eu/steffo/twom/matrix/avatar/AvatarFromDefault.kt @@ -0,0 +1,36 @@ +package eu.steffo.twom.matrix.avatar + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.tooling.preview.Preview + +@Composable +@Preview(widthDp = 40, heightDp = 40) +fun AvatarFromDefault( + modifier: Modifier = Modifier, + contentDescription: String = "", +) { + Box( + modifier = modifier + .fillMaxSize() + .background(MaterialTheme.colorScheme.tertiary), + ) { + Text( + modifier = Modifier + .align(Alignment.Center) + .semantics { + this.contentDescription = "" + }, + color = MaterialTheme.colorScheme.onTertiary, + text = "?", + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/matrix/Avatar.kt b/app/src/main/java/eu/steffo/twom/matrix/avatar/AvatarFromURL.kt similarity index 92% rename from app/src/main/java/eu/steffo/twom/matrix/Avatar.kt rename to app/src/main/java/eu/steffo/twom/matrix/avatar/AvatarFromURL.kt index 25bb70f..6706f76 100644 --- a/app/src/main/java/eu/steffo/twom/matrix/Avatar.kt +++ b/app/src/main/java/eu/steffo/twom/matrix/avatar/AvatarFromURL.kt @@ -1,4 +1,4 @@ -package eu.steffo.twom.matrix +package eu.steffo.twom.matrix.avatar import android.graphics.BitmapFactory import android.util.Log @@ -13,10 +13,11 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.ImageBitmap import androidx.compose.ui.graphics.asImageBitmap import androidx.compose.ui.tooling.preview.Preview +import eu.steffo.twom.matrix.LocalSession @Composable -@Preview -fun Avatar( +@Preview(widthDp = 40, heightDp = 40) +fun AvatarFromURL( modifier: Modifier = Modifier, url: String? = "", contentDescription: String = "", @@ -52,7 +53,7 @@ fun Avatar( } if (session == null || url == null || avatar == null) { - DefaultAvatar( + AvatarFromDefault( modifier = modifier, contentDescription = contentDescription ) diff --git a/app/src/main/java/eu/steffo/twom/matrix/UserAvatar.kt b/app/src/main/java/eu/steffo/twom/matrix/avatar/AvatarFromUserId.kt similarity index 85% rename from app/src/main/java/eu/steffo/twom/matrix/UserAvatar.kt rename to app/src/main/java/eu/steffo/twom/matrix/avatar/AvatarFromUserId.kt index b81312a..820b230 100644 --- a/app/src/main/java/eu/steffo/twom/matrix/UserAvatar.kt +++ b/app/src/main/java/eu/steffo/twom/matrix/avatar/AvatarFromUserId.kt @@ -1,4 +1,4 @@ -package eu.steffo.twom.matrix +package eu.steffo.twom.matrix.avatar import android.util.Log import androidx.compose.runtime.Composable @@ -8,9 +8,12 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview +import eu.steffo.twom.matrix.LocalSession @Composable -fun UserAvatar( +@Preview(widthDp = 40, heightDp = 40) +fun AvatarFromUserId( modifier: Modifier = Modifier, userId: String = "", contentDescription: String = "", @@ -33,12 +36,12 @@ fun UserAvatar( } if (avatarUrl == null) { - DefaultAvatar( + AvatarFromDefault( modifier = modifier, contentDescription = contentDescription, ) } else { - Avatar( + AvatarFromURL( modifier = modifier, url = avatarUrl!!, contentDescription = contentDescription, diff --git a/app/src/main/java/eu/steffo/twom/room/RoomActivity.kt b/app/src/main/java/eu/steffo/twom/room/RoomActivity.kt index 3b78e72..62d42ac 100644 --- a/app/src/main/java/eu/steffo/twom/room/RoomActivity.kt +++ b/app/src/main/java/eu/steffo/twom/room/RoomActivity.kt @@ -6,5 +6,4 @@ class RoomActivity : ComponentActivity() { companion object { const val ROOM_ID_EXTRA = "roomId" } - } \ No newline at end of file diff --git a/app/src/main/java/eu/steffo/twom/theme/TwoMTheme.kt b/app/src/main/java/eu/steffo/twom/theme/TwoMTheme.kt index cba4fb6..710ee53 100644 --- a/app/src/main/java/eu/steffo/twom/theme/TwoMTheme.kt +++ b/app/src/main/java/eu/steffo/twom/theme/TwoMTheme.kt @@ -19,12 +19,19 @@ fun TwoMTheme( content: @Composable () -> Unit ) { val context = LocalContext.current + val darkTheme = isSystemInDarkTheme() - val colorScheme = if (darkTheme) { - dynamicDarkColorScheme(context) - } else { - dynamicLightColorScheme(context) + val colorScheme = when (darkTheme) { + true -> dynamicDarkColorScheme(context) + false -> dynamicLightColorScheme(context) } + val typography = Typography() + + MaterialTheme( + colorScheme = colorScheme, + typography = typography, + content = content + ) val view = LocalView.current if (!view.isInEditMode) { @@ -34,12 +41,4 @@ fun TwoMTheme( WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme } } - - val typography = Typography() - - MaterialTheme( - colorScheme = colorScheme, - typography = typography, - content = content - ) } diff --git a/app/src/main/res/drawable/avatar_default.png b/app/src/main/res/drawable/avatar_default.png deleted file mode 100644 index 65f4d62..0000000 Binary files a/app/src/main/res/drawable/avatar_default.png and /dev/null differ diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 5b07ab8..7060fc3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,11 +19,12 @@ Password Show password Hide password - To use TwoM, you need to be logged into Matrix. - Login - You are logged in. - My account - Logout - There are no rooms. + To use TwoM, you need to select the Matrix account to use. + My account + Logout + There are no rooms. Loading... + New + Log into your Matrix account by clicking the icon on the top right of the screen. + Login \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 070e498..580acb6 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,5 +1,8 @@ - +