icons changed

This commit is contained in:
moon 2026-05-31 19:52:29 +06:30
parent 000c48bf6b
commit 8671d459cf
16 changed files with 455 additions and 55 deletions

96
CLAUDE.md Normal file
View File

@ -0,0 +1,96 @@
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Build Commands
```powershell
# Build debug APK
./gradlew assembleDebug
# Build release APK
./gradlew assembleRelease
# Run unit tests
./gradlew test
# Run instrumented tests (requires connected device/emulator)
./gradlew connectedAndroidTest
# Run a single unit test class
./gradlew :app:test --tests "com.mob.utsmyammer.ExampleUnitTest"
# Clean build
./gradlew clean assembleDebug
```
## Architecture Overview
**MOBPOS** is a mobile Point-of-Sale system for Myanmar, targeting Sunmi hardware devices (card readers, PIN pads, thermal printers). It processes EMV card transactions (sale, void, refund, settlement) and QR payments (MMQR, Wave Pay).
### Single-Activity Compose App
`MainActivity` hosts the entire app. Navigation is handled by Compose Navigation (`AppNavGraph.kt`) with typed routes defined in a sealed `Routes` object.
### MVVM with Shared State
- Each screen has a dedicated `ViewModel` (Hilt-injected)
- `SharedViewModel` in `viewmodel/` is the central state holder for cross-screen transaction data (card info, amount, transaction type, approval codes)
- Hardware interaction is abstracted into `CardReaderViewModel` and `EmvTransactionProcessViewModel`
- State is a mix of `LiveData` (older screens) and `StateFlow` (newer screens like card reading)
### Screen Structure Pattern
Every feature follows: `ui/<feature>/` containing:
- `*Screen.kt` — Composable UI
- `*ViewModel.kt` — business logic and state
### Key Transaction Flow
Dashboard → InputAmount → CardWaiting → ProcessingCard → SendingToHost → TransactionResult → PrintReceipt
### Local Modules
The app depends on several local library modules (in `settings.gradle.kts`):
- `:baselib` — Room DB, Retrofit, Hilt base setup
- `:paylibs` / `:paysdk-lib` — Payment SDK wrappers
- `:ecr` / `:ecr-service-lib` — Electronic Cash Register integration
- `:mpulib` / `:mpu-lib` — Mini POS Unit hardware
- `:sunmiui-lib` — Sunmi device UI components
- `:qrgen-lib` — QR code generation
### Key Dependencies
- **UI:** Jetpack Compose + Material 3, Compose Navigation
- **DI:** Hilt 2.59.2 with KSP
- **Async:** RxJava 3 + RxAndroid (primary async pattern)
- **Network:** Retrofit 3 + OkHttp 4 + GSON
- **DB:** Room 2.4.3 with RxJava 3 support
- **Hardware:** Sunmi SDK (card reader, PIN pad, printer APIs)
### Package Layout
```
com.mob.utsmyammer/
├── config/ # Constants, SunmiPayManager
├── model/ # Data models (CardTransactionType, ProcessCode, TransactionStatus)
│ └── ecr/ # ECR-specific models
├── ui/ # All Compose screens (one subdir per feature)
│ ├── components/ # Shared reusables (NumericEntryScreen, SquareButton, AppBar)
│ ├── navigation/ # AppNavGraph, Routes
│ └── theme/ # Compose theme and colors
├── utils/ # Utility functions
└── viewmodel/ # Shared ViewModels (SharedViewModel, CardReaderViewModel, etc.)
```
## Hardware Integration Notes
Sunmi device permissions are declared in `AndroidManifest.xml` (LED, MSR, ICC, PINPAD, PRINTER). When modifying card reading or PIN entry flows, be aware that `CardReaderViewModel` and the Sunmi ECR service handle hardware callbacks via RxJava subjects. Hardware callbacks arrive on background threads — always observe on the main thread before updating UI state.
## Build Configuration
- `compileSdk 36`, `minSdk 24`, `targetSdk 36`
- Java 11 toolchain, Kotlin 2.2.10
- Compose BOM 2026.02.01
- ProGuard/minification is **disabled** for all build types
- Application ID: `com.mob.ustmm`

View File

@ -1,6 +1,7 @@
package com.mob.utsmyanmar
import android.os.Bundle
import android.view.WindowManager
import androidx.activity.ComponentActivity
import androidx.activity.SystemBarStyle
import androidx.activity.compose.setContent
@ -14,9 +15,10 @@ import dagger.hilt.android.AndroidEntryPoint
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
installSplashScreen()
// installSplashScreen()
super.onCreate(savedInstanceState)
// enableEdgeToEdge()
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
setContent {
MOBPOSTheme {
val navController = rememberNavController()

View File

@ -365,7 +365,7 @@ private fun AdvertisingArea() {
val imageArray = listOf(
"https://i.ytimg.com/vi/eRUVxGRp1Ms/maxresdefault.jpg",
"https://sunmi.ua/wp-content/themes/yootheme/cache/04/p6-3-en-04a68bb5.jpeg",
"https://i.ytimg.com/vi/AwvmgTPd7qw/maxresdefault.jpg",
"https://mma.prnewswire.com/media/2080956/SUNMI_3rd_generation_products_T3_PRO_series_V3_MIX.jpg?p=facebook"
);
val pageState = rememberPagerState(pageCount = { imageArray.size })

View File

@ -13,7 +13,7 @@ annotation class P2Preview
@Preview(
name = "P3",
device = "spec:width=720px,height=1600px,dpi=300",
device = "spec:width=720px,height=1600px,dpi=270",
showBackground = true,
showSystemUi = true
)

View File

@ -1,42 +1,23 @@
package com.mob.utsmyanmar.ui.version
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.shape.CircleShape
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.ChevronLeft
import androidx.compose.material.icons.filled.Square
import androidx.compose.material3.Card
import androidx.compose.material3.CardColors
import androidx.compose.material3.CardDefaults
import androidx.compose.material3.Icon
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.collectAsState
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.text.style.TextAlign
import androidx.compose.foundation.layout.*
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material.icons.*
import androidx.compose.material.icons.filled.*
import androidx.compose.material3.*
import androidx.compose.runtime.*
import androidx.compose.ui.*
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.viewmodel.compose.viewModel
import com.mob.utsmyanmar.ui.components.appbar.AppBar
import com.mob.utsmyanmar.ui.device_info.DeviceInfoViewModel
import com.mob.utsmyanmar.ui.preview.P2Preview
import com.mob.utsmyanmar.ui.preview.P3Preview
import com.mob.utsmyanmar.ui.theme.Color
import com.mob.utsmyanmar.R
@Composable
fun VersionScreen(
@ -81,43 +62,92 @@ fun VersionScreen(
Item(
title = "PROD NAME",
value = deviceInfo.deviceModel,
icon = Icons.Default.Square
icon = {
Icon(
painter = painterResource(R.drawable.ic_function),
contentDescription = "icon",
modifier = Modifier.size(24.dp),
tint = Color.LegacyRed
)
}
)
Spacer(Modifier.height(itemSpace))
Item(
title = "TERMINAL SERIAL",
value = deviceInfo.serialNumber,
icon = Icons.Default.Square
icon = {
Icon(
painter = painterResource(R.drawable.ic_four_vertical_bars),
contentDescription = "icon",
modifier = Modifier.size(24.dp),
tint = Color.LegacyRed
)
}
)
Spacer(Modifier.height(itemSpace))
Item(
title = "HARDWARE VER",
value = deviceInfo.hardwareVersion,
icon = Icons.Default.Square
icon = {
Icon(
painter = painterResource(R.drawable.ic_gear),
contentDescription = "icon",
modifier = Modifier.size(24.dp),
tint = Color.LegacyRed
)
}
)
Spacer(Modifier.height(itemSpace))
Item(
title = "FIRMWARE VER",
value = deviceInfo.firmwareVersion,
icon = Icons.Default.Square
icon = {
Icon(
painter = painterResource(R.drawable.ic_code),
contentDescription = "icon",
modifier = Modifier.size(24.dp),
tint = Color.LegacyRed
)
}
)
Spacer(Modifier.height(itemSpace))
Item(
title = "S/W VER",
value = deviceInfo.finalVersion,
icon = Icons.Default.Square
icon = {
Icon(
painter = painterResource(R.drawable.ic_settings),
contentDescription = "icon",
modifier = Modifier.size(24.dp),
tint = Color.LegacyRed
)
}
)
Spacer(Modifier.height(itemSpace))
Item(
title = "PAYHARDWARE SERVICE VER",
value = deviceInfo.payHardwareVersion,
icon = Icons.Default.Square
icon = {
Icon(
painter = painterResource(R.drawable.ic_protection_shield),
contentDescription = "icon",
modifier = Modifier.size(24.dp),
tint = Color.LegacyRed
)
}
)
Spacer(Modifier.height(itemSpace))
Item(
title = "ROM VER",
value = deviceInfo.romVersion,
icon = Icons.Default.Square
icon = {
Icon(
painter = painterResource(R.drawable.ic_function),
contentDescription = "icon",
modifier = Modifier.size(24.dp),
tint = Color.LegacyRed
)
}
)
}
}
@ -129,7 +159,7 @@ fun VersionScreen(
fun Item(
title: String,
value: String,
icon: ImageVector
icon: @Composable () -> Unit,
) {
Row(
modifier = Modifier.fillMaxWidth(),
@ -137,24 +167,23 @@ fun Item(
verticalAlignment = Alignment.CenterVertically,
) {
Row(
modifier = Modifier.weight(1.4f),
modifier = Modifier.weight(1f),
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically
) {
Box(
modifier = Modifier.size(40.dp).background(
color = Color.CrimsonRed.copy(alpha = 0.2f),
shape = CircleShape
),
modifier = Modifier
.size(50.dp)
.background(
Color.CrimsonRed.copy(alpha = 0.1f),
shape = RoundedCornerShape(12.dp)
),
contentAlignment = Alignment.Center
){
Icon(
imageVector = icon,
contentDescription = "icon"
)
) {
icon()
}
Text(text = title)
Text(text = title, fontSize = 14.sp)
}
Row(
modifier = Modifier.weight(1f),
@ -162,11 +191,12 @@ fun Item(
horizontalArrangement = Arrangement.SpaceBetween
) {
Text(text = ":")
Text(text = value)
Text(text = value, fontSize = 14.sp)
}
}
}
@P2Preview
@P3Preview
@Composable
fun P3PreviewVersionScreen() {

View File

@ -0,0 +1,37 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="14dp"
android:height="14dp"
android:viewportWidth="14"
android:viewportHeight="14">
<path
android:pathData="M9.078,4.669L4.669,9.078M4.669,4.669L9.078,9.078"
android:strokeAlpha="0.8"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#6F0D1E"
android:strokeLineCap="round"/>
<path
android:pathData="M6.873,12.997C10.255,12.997 12.997,10.255 12.997,6.873C12.997,3.491 10.255,0.75 6.873,0.75C3.491,0.75 0.75,3.491 0.75,6.873C0.75,10.255 3.491,12.997 6.873,12.997Z"
android:strokeAlpha="0.8"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#6F0D1E"
android:strokeLineCap="round"/>
</vector>

View File

@ -0,0 +1,20 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:viewportHeight="16" android:viewportWidth="16" android:width="24dp">
<path android:fillColor="#00000000" android:pathData="M4.573,5.227L1.96,7.84L4.573,10.453M11.107,5.227L13.72,7.84L11.107,10.453M9.147,2.613L6.533,13.067" android:strokeColor="#6F0D1E" android:strokeLineCap="round" android:strokeLineJoin="round" android:strokeWidth="2"/>
</vector>

View File

@ -0,0 +1,20 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:viewportHeight="12" android:viewportWidth="12" android:width="24dp">
<path android:fillColor="#6F0D1E" android:fillType="evenOdd" android:pathData="M11.025,-0C11.22,-0 11.407,0.077 11.545,0.215C11.683,0.353 11.76,0.54 11.76,0.735L11.76,11.025C11.76,11.22 11.683,11.407 11.545,11.545C11.407,11.683 11.22,11.76 11.025,11.76C10.83,11.76 10.643,11.683 10.505,11.545C10.367,11.407 10.29,11.22 10.29,11.025L10.29,0.735C10.29,0.54 10.367,0.353 10.505,0.215C10.643,0.077 10.83,-0 11.025,-0ZM0.735,-0C0.93,-0 1.117,0.077 1.255,0.215C1.393,0.353 1.47,0.54 1.47,0.735L1.47,11.025C1.47,11.22 1.393,11.407 1.255,11.545C1.117,11.683 0.93,11.76 0.735,11.76C0.54,11.76 0.353,11.683 0.215,11.545C0.077,11.407 -0,11.22 -0,11.025L-0,0.735C-0,0.54 0.077,0.353 0.215,0.215C0.353,0.077 0.54,-0 0.735,-0ZM7.595,-0C7.79,-0 7.977,0.077 8.115,0.215C8.253,0.353 8.33,0.54 8.33,0.735L8.33,11.025C8.33,11.22 8.253,11.407 8.115,11.545C7.977,11.683 7.79,11.76 7.595,11.76C7.4,11.76 7.213,11.683 7.075,11.545C6.937,11.407 6.86,11.22 6.86,11.025L6.86,0.735C6.86,0.54 6.937,0.353 7.075,0.215C7.213,0.077 7.4,-0 7.595,-0ZM4.165,-0C4.36,-0 4.547,0.077 4.685,0.215C4.823,0.353 4.9,0.54 4.9,0.735L4.9,11.025C4.9,11.22 4.823,11.407 4.685,11.545C4.547,11.683 4.36,11.76 4.165,11.76C3.97,11.76 3.783,11.683 3.645,11.545C3.507,11.407 3.43,11.22 3.43,11.025L3.43,0.735C3.43,0.54 3.507,0.353 3.645,0.215C3.783,0.077 3.97,-0 4.165,-0Z"/>
</vector>

View File

@ -0,0 +1,25 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="12dp"
android:viewportWidth="12"
android:viewportHeight="12">
<path
android:pathData="M0,0.653C0,0.48 0.069,0.314 0.191,0.191C0.314,0.069 0.48,0 0.653,0H4.573C4.747,0 4.913,0.069 5.035,0.191C5.158,0.314 5.227,0.48 5.227,0.653V4.573C5.227,4.747 5.158,4.913 5.035,5.035C4.913,5.158 4.747,5.227 4.573,5.227H0.653C0.48,5.227 0.314,5.158 0.191,5.035C0.069,4.913 0,4.747 0,4.573V0.653ZM0,7.187C0,7.013 0.069,6.847 0.191,6.725C0.314,6.602 0.48,6.533 0.653,6.533H4.573C4.747,6.533 4.913,6.602 5.035,6.725C5.158,6.847 5.227,7.013 5.227,7.187V11.107C5.227,11.28 5.158,11.446 5.035,11.569C4.913,11.691 4.747,11.76 4.573,11.76H0.653C0.48,11.76 0.314,11.691 0.191,11.569C0.069,11.446 0,11.28 0,11.107V7.187ZM6.533,0.653C6.533,0.48 6.602,0.314 6.725,0.191C6.847,0.069 7.013,0 7.187,0H11.107C11.28,0 11.446,0.069 11.569,0.191C11.691,0.314 11.76,0.48 11.76,0.653V4.573C11.76,4.747 11.691,4.913 11.569,5.035C11.446,5.158 11.28,5.227 11.107,5.227H7.187C7.013,5.227 6.847,5.158 6.725,5.035C6.602,4.913 6.533,4.747 6.533,4.573V0.653ZM6.533,7.187C6.533,7.013 6.602,6.847 6.725,6.725C6.847,6.602 7.013,6.533 7.187,6.533H11.107C11.28,6.533 11.446,6.602 11.569,6.725C11.691,6.847 11.76,7.013 11.76,7.187V11.107C11.76,11.28 11.691,11.446 11.569,11.569C11.446,11.691 11.28,11.76 11.107,11.76H7.187C7.013,11.76 6.847,11.691 6.725,11.569C6.602,11.446 6.533,11.28 6.533,11.107V7.187Z"
android:fillColor="#6F0D1E"
android:fillAlpha="0.8"/>
</vector>

View File

@ -0,0 +1,20 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:viewportHeight="16" android:viewportWidth="16" android:width="24dp">
<path android:fillColor="#6F0D1E" android:pathData="M15.595,7.53C15.642,7.538 15.68,7.585 15.68,7.632V9.614C15.679,9.638 15.67,9.661 15.655,9.68C15.64,9.698 15.619,9.711 15.595,9.716L13.717,10.066C13.691,10.072 13.668,10.084 13.649,10.101C13.629,10.118 13.615,10.14 13.606,10.165L13.019,11.629C13.009,11.653 13.004,11.679 13.006,11.705C13.008,11.731 13.016,11.757 13.03,11.779L14.097,13.333C14.11,13.354 14.115,13.378 14.113,13.402C14.11,13.426 14.1,13.449 14.084,13.467L12.683,14.867C12.665,14.883 12.643,14.893 12.619,14.896C12.595,14.898 12.571,14.892 12.55,14.88L11.023,13.832C11.001,13.818 10.976,13.811 10.95,13.81C10.925,13.809 10.899,13.815 10.877,13.826L10.204,14.186C10.194,14.191 10.183,14.194 10.172,14.195C10.161,14.196 10.149,14.195 10.139,14.191C10.128,14.187 10.119,14.181 10.111,14.173C10.103,14.165 10.097,14.156 10.093,14.145L8.704,10.79C8.696,10.768 8.695,10.743 8.702,10.72C8.71,10.698 8.725,10.678 8.745,10.665L8.913,10.562C8.945,10.542 8.987,10.509 9.02,10.48C9.419,10.225 9.725,9.847 9.892,9.403C10.058,8.96 10.076,8.474 9.943,8.019C9.81,7.564 9.534,7.165 9.154,6.88C8.775,6.596 8.314,6.442 7.84,6.442C7.366,6.442 6.905,6.596 6.526,6.88C6.146,7.165 5.87,7.564 5.737,8.019C5.604,8.474 5.622,8.96 5.788,9.403C5.955,9.847 6.261,10.225 6.66,10.48C6.693,10.51 6.735,10.543 6.767,10.562L6.935,10.665C6.955,10.678 6.97,10.698 6.978,10.72C6.985,10.743 6.984,10.768 6.976,10.79L5.587,14.145C5.583,14.155 5.577,14.165 5.569,14.173C5.561,14.181 5.552,14.187 5.541,14.191C5.531,14.194 5.519,14.196 5.508,14.195C5.497,14.194 5.486,14.191 5.476,14.186L4.803,13.826C4.781,13.815 4.755,13.809 4.73,13.81C4.704,13.811 4.679,13.818 4.657,13.831L3.129,14.88C3.109,14.892 3.085,14.898 3.061,14.896C3.037,14.894 3.014,14.884 2.996,14.867L1.595,13.467C1.579,13.449 1.568,13.426 1.566,13.402C1.564,13.378 1.57,13.354 1.582,13.333L2.649,11.778C2.663,11.756 2.671,11.731 2.673,11.705C2.675,11.679 2.671,11.653 2.66,11.629L2.074,10.165C2.065,10.14 2.05,10.119 2.031,10.102C2.012,10.085 1.988,10.073 1.963,10.066L0.085,9.716C0.061,9.71 0.04,9.698 0.025,9.679C0.009,9.66 0.001,9.637 0,9.613L0,7.632C0,7.585 0.039,7.538 0.085,7.53L2.01,7.172C2.036,7.166 2.06,7.154 2.079,7.137C2.099,7.12 2.115,7.098 2.125,7.074L2.715,5.696C2.725,5.673 2.729,5.647 2.728,5.621C2.726,5.595 2.719,5.57 2.705,5.548L1.584,3.913C1.571,3.892 1.566,3.868 1.568,3.844C1.57,3.82 1.58,3.798 1.596,3.78L2.997,2.378C3.014,2.361 3.037,2.351 3.061,2.349C3.086,2.347 3.11,2.353 3.13,2.366L4.794,3.508C4.833,3.535 4.9,3.54 4.943,3.519L6.278,2.973C6.324,2.958 6.367,2.907 6.376,2.86L6.746,0.869C6.752,0.845 6.765,0.824 6.783,0.809C6.802,0.794 6.825,0.785 6.849,0.783H8.831C8.879,0.783 8.925,0.822 8.934,0.868L9.304,2.86C9.31,2.885 9.322,2.908 9.339,2.928C9.356,2.948 9.378,2.963 9.402,2.973L10.737,3.519C10.761,3.529 10.787,3.534 10.813,3.532C10.839,3.53 10.865,3.522 10.887,3.508L12.55,2.366C12.571,2.353 12.595,2.348 12.619,2.35C12.643,2.352 12.666,2.363 12.683,2.379L14.084,3.78C14.118,3.813 14.123,3.874 14.097,3.913L12.974,5.548C12.961,5.57 12.954,5.595 12.952,5.621C12.95,5.647 12.955,5.673 12.965,5.696L13.555,7.074C13.566,7.098 13.581,7.119 13.601,7.136C13.621,7.153 13.644,7.165 13.67,7.172L15.595,7.53Z"/>
</vector>

View File

@ -0,0 +1,25 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="11dp"
android:height="14dp"
android:viewportWidth="11"
android:viewportHeight="14">
<path
android:pathData="M1.306,13.716C0.947,13.716 0.64,13.588 0.384,13.333C0.128,13.077 0,12.77 0,12.41V5.878C0,5.519 0.128,5.212 0.384,4.956C0.64,4.701 0.948,4.573 1.306,4.572H1.959V3.266C1.959,2.362 2.278,1.592 2.915,0.956C3.552,0.319 4.322,0 5.225,0C6.128,-0 6.899,0.318 7.536,0.956C8.174,1.593 8.492,2.363 8.491,3.266V4.572H9.144C9.503,4.572 9.811,4.7 10.067,4.956C10.323,5.212 10.451,5.52 10.45,5.878V12.41C10.45,12.769 10.323,13.077 10.067,13.333C9.811,13.589 9.504,13.717 9.144,13.716H1.306ZM1.306,12.41H9.144V5.878H1.306V12.41ZM6.148,10.066C6.404,9.811 6.532,9.504 6.532,9.144C6.532,8.784 6.404,8.477 6.148,8.222C5.893,7.967 5.585,7.839 5.225,7.838C4.866,7.837 4.558,7.965 4.303,8.222C4.048,8.479 3.92,8.786 3.919,9.144C3.918,9.502 4.046,9.81 4.303,10.067C4.56,10.324 4.867,10.452 5.225,10.45C5.583,10.449 5.891,10.32 6.148,10.066ZM3.266,4.572H7.185V3.266C7.185,2.721 6.994,2.259 6.613,1.878C6.232,1.497 5.77,1.306 5.225,1.306C4.681,1.306 4.218,1.497 3.837,1.878C3.456,2.259 3.266,2.721 3.266,3.266V4.572Z"
android:fillColor="#6F0D1E"
android:fillAlpha="0.8"/>
</vector>

View File

@ -0,0 +1,35 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="17dp"
android:viewportWidth="16"
android:viewportHeight="17">
<path
android:pathData="M7.922,9.629C8.565,9.629 9.182,9.373 9.637,8.918M7.922,9.629C7.278,9.629 6.661,9.373 6.206,8.918M7.922,9.629V11.449M9.637,8.918C10.092,8.463 10.348,7.846 10.348,7.202M9.637,8.918L10.924,10.205M10.348,7.202C10.348,6.559 10.092,5.942 9.637,5.486M10.348,7.202H12.168M9.637,5.486C9.182,5.031 8.565,4.776 7.922,4.776M9.637,5.486L10.924,4.2M7.922,4.776C7.278,4.776 6.661,5.031 6.206,5.486M7.922,4.776V2.956M6.206,5.486C5.751,5.942 5.495,6.559 5.495,7.202M6.206,5.486L4.919,4.2M5.495,7.202C5.495,7.846 5.751,8.463 6.206,8.918M5.495,7.202H3.675M6.206,8.918L4.919,10.205M7.517,2.956H8.326M10.638,3.913L11.21,4.486M12.168,6.798V7.607M11.21,9.919L10.638,10.491M8.326,11.449H7.517M5.205,10.491L4.633,9.919M3.675,7.607V6.798M4.633,4.486L5.205,3.913"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#6F0D1E"
android:strokeLineCap="round"/>
<path
android:pathData="M1.47,7.798V2.824C1.469,2.636 1.522,2.453 1.623,2.295C1.723,2.137 1.867,2.012 2.037,1.934C3.867,1.135 5.844,0.732 7.84,0.751C9.836,0.732 11.814,1.135 13.643,1.934C13.813,2.012 13.957,2.137 14.057,2.295C14.158,2.453 14.211,2.636 14.21,2.824V7.798C14.21,10.21 13.144,13.551 8.544,15.32C8.091,15.494 7.589,15.494 7.136,15.32C2.534,13.547 1.47,10.231 1.47,7.798Z"
android:strokeLineJoin="round"
android:strokeWidth="1.5"
android:fillColor="#00000000"
android:strokeColor="#6F0D1E"
android:strokeLineCap="round"/>
</vector>

View File

@ -0,0 +1,20 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android" android:height="24dp" android:viewportHeight="16" android:viewportWidth="16" android:width="24dp">
<path android:fillColor="#6F0D1E" android:pathData="M6.043,14.373L5.782,12.283C5.64,12.228 5.507,12.163 5.382,12.087C5.257,12.01 5.135,11.929 5.014,11.842L3.071,12.658L1.274,9.555L2.956,8.281C2.945,8.205 2.94,8.131 2.94,8.061V7.62C2.94,7.549 2.945,7.475 2.956,7.399L1.274,6.125L3.071,3.022L5.014,3.838C5.134,3.751 5.259,3.67 5.39,3.593C5.521,3.517 5.651,3.452 5.782,3.397L6.043,1.307H9.637L9.898,3.397C10.04,3.452 10.173,3.517 10.299,3.593C10.424,3.67 10.546,3.751 10.666,3.838L12.609,3.022L14.406,6.125L12.724,7.399C12.735,7.475 12.74,7.549 12.74,7.62V8.06C12.74,8.131 12.729,8.205 12.707,8.281L14.39,9.555L12.593,12.658L10.666,11.842C10.546,11.929 10.421,12.01 10.29,12.087C10.159,12.163 10.029,12.228 9.898,12.283L9.637,14.373H6.043ZM7.873,10.127C8.504,10.127 9.043,9.903 9.49,9.457C9.936,9.011 10.159,8.472 10.159,7.84C10.159,7.208 9.936,6.669 9.49,6.223C9.043,5.777 8.504,5.553 7.873,5.553C7.23,5.553 6.688,5.777 6.247,6.223C5.806,6.669 5.586,7.208 5.586,7.84C5.586,8.472 5.807,9.011 6.248,9.457C6.689,9.903 7.23,10.127 7.873,10.127Z"/>
</vector>

View File

@ -0,0 +1,24 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="12dp"
android:height="14dp"
android:viewportWidth="12"
android:viewportHeight="14">
<path
android:pathData="M11.212,7.908C11.822,8.309 11.794,9.239 11.127,9.591L6.436,12.071C6.247,12.17 6.038,12.223 5.825,12.223C5.612,12.223 5.402,12.17 5.214,12.071L0.522,9.591C-0.144,9.238 -0.173,8.309 0.438,7.908L0.479,7.934L5.214,10.438C5.402,10.537 5.612,10.589 5.825,10.589C6.038,10.589 6.247,10.537 6.436,10.438L11.127,7.958C11.156,7.942 11.184,7.926 11.212,7.908ZM11.212,5.295C11.346,5.384 11.457,5.505 11.534,5.648C11.61,5.79 11.65,5.95 11.65,6.112C11.65,6.273 11.61,6.433 11.534,6.575C11.457,6.718 11.346,6.839 11.212,6.929L11.127,6.978L6.436,9.458C6.265,9.548 6.077,9.599 5.884,9.608C5.691,9.617 5.498,9.582 5.32,9.508L5.215,9.458L0.522,6.978C-0.144,6.625 -0.173,5.696 0.438,5.295L0.479,5.321L5.214,7.824C5.385,7.915 5.573,7.966 5.766,7.975C5.959,7.983 6.152,7.949 6.33,7.875L6.436,7.824L11.127,5.344C11.156,5.329 11.184,5.312 11.212,5.295ZM6.436,0.152L11.127,2.632C11.824,2.999 11.824,3.997 11.127,4.364L6.436,6.845C6.247,6.945 6.038,6.997 5.825,6.997C5.612,6.997 5.402,6.945 5.214,6.845L0.522,4.364C-0.174,3.996 -0.174,2.999 0.522,2.632L5.214,0.152C5.402,0.052 5.612,0 5.825,0C6.038,0 6.247,0.052 6.436,0.152Z"
android:fillColor="#6F0D1E"/>
</vector>

View File

@ -0,0 +1,46 @@
<!--
~ Copyright (C) 2026 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="16dp"
android:height="16dp"
android:viewportWidth="16"
android:viewportHeight="16">
<path
android:pathData="M8.067,6.041C7.921,5.894 7.838,5.694 7.838,5.486C7.838,5.279 7.921,5.079 8.067,4.932L10.419,2.581C10.491,2.506 10.578,2.446 10.673,2.405C10.769,2.364 10.872,2.343 10.976,2.342C11.08,2.341 11.183,2.361 11.279,2.4C11.376,2.44 11.463,2.498 11.537,2.571C11.61,2.645 11.669,2.732 11.708,2.829C11.747,2.925 11.767,3.028 11.766,3.132C11.766,3.236 11.744,3.339 11.703,3.435C11.662,3.53 11.602,3.617 11.527,3.689L9.176,6.041C9.029,6.188 8.829,6.27 8.622,6.27C8.414,6.27 8.214,6.188 8.067,6.041Z"
android:fillColor="#6F0D1E"
android:fillAlpha="0.8"
android:fillType="evenOdd"/>
<path
android:pathData="M13.878,6.041C13.731,6.188 13.532,6.27 13.324,6.27C13.116,6.27 12.917,6.188 12.77,6.041L10.419,3.689C10.276,3.541 10.197,3.343 10.199,3.138C10.201,2.932 10.283,2.736 10.428,2.591C10.574,2.445 10.77,2.363 10.976,2.361C11.181,2.359 11.379,2.438 11.527,2.581L13.878,4.932C14.025,5.079 14.108,5.279 14.108,5.487C14.108,5.694 14.025,5.894 13.878,6.041Z"
android:fillColor="#6F0D1E"
android:fillAlpha="0.8"
android:fillType="evenOdd"/>
<path
android:pathData="M10.973,3.919C11.181,3.919 11.38,4.002 11.527,4.149C11.674,4.295 11.757,4.495 11.757,4.703V10.973C11.757,11.181 11.674,11.38 11.527,11.527C11.38,11.674 11.181,11.757 10.973,11.757C10.765,11.757 10.566,11.674 10.419,11.527C10.272,11.38 10.189,11.181 10.189,10.973V4.703C10.189,4.495 10.272,4.295 10.419,4.149C10.566,4.002 10.765,3.919 10.973,3.919ZM7.608,9.635C7.755,9.782 7.838,9.981 7.838,10.189C7.838,10.397 7.755,10.596 7.608,10.743L5.257,13.095C5.109,13.238 4.911,13.316 4.706,13.315C4.5,13.313 4.303,13.231 4.158,13.085C4.013,12.94 3.93,12.743 3.929,12.538C3.927,12.332 4.006,12.134 4.149,11.986L6.5,9.635C6.647,9.488 6.846,9.406 7.054,9.406C7.262,9.406 7.461,9.488 7.608,9.635Z"
android:fillColor="#6F0D1E"
android:fillAlpha="0.8"
android:fillType="evenOdd"/>
<path
android:pathData="M1.797,9.635C1.944,9.488 2.144,9.406 2.351,9.406C2.559,9.406 2.759,9.488 2.905,9.635L5.257,11.986C5.332,12.059 5.391,12.145 5.432,12.241C5.474,12.336 5.495,12.439 5.496,12.543C5.497,12.647 5.477,12.751 5.438,12.847C5.398,12.943 5.34,13.031 5.267,13.104C5.193,13.178 5.105,13.236 5.009,13.276C4.913,13.315 4.81,13.335 4.706,13.334C4.601,13.333 4.499,13.311 4.403,13.27C4.307,13.229 4.221,13.17 4.149,13.095L1.797,10.743C1.65,10.596 1.568,10.397 1.568,10.189C1.568,9.981 1.65,9.782 1.797,9.635Z"
android:fillColor="#6F0D1E"
android:fillAlpha="0.8"
android:fillType="evenOdd"/>
<path
android:pathData="M4.703,11.757C4.495,11.757 4.295,11.674 4.149,11.527C4.002,11.38 3.919,11.181 3.919,10.973V4.703C3.919,4.495 4.002,4.295 4.149,4.149C4.295,4.002 4.495,3.919 4.703,3.919C4.911,3.919 5.11,4.002 5.257,4.149C5.404,4.295 5.487,4.495 5.487,4.703V10.973C5.487,11.181 5.404,11.38 5.257,11.527C5.11,11.674 4.911,11.757 4.703,11.757Z"
android:fillColor="#6F0D1E"
android:fillAlpha="0.8"
android:fillType="evenOdd"/>
</vector>

View File

@ -58,7 +58,7 @@ android {
dependencies {
def lottieVersion = "3.5.0"
def roomVersion = "2.4.3"
def roomVersion = "2.8.4"
implementation fileTree(include: ['*.jar', '*.aar'], dir: 'libs')