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 @@
-
+
+
+
+
\ No newline at end of file