Skip to content

Commit 5bd8ba7

Browse files
committed
updated
1 parent 825549d commit 5bd8ba7

3 files changed

Lines changed: 26 additions & 34 deletions

File tree

core/ui/src/commonMain/kotlin/com/mifos/core/ui/components/MifosUserImage.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,9 @@ fun MifosUserImage(
3232
) {
3333

3434
val context = LocalPlatformContext.current
35-
val uploadedImage by remember { mutableStateOf<ByteArray?>(null) }
3635

3736
val painter = rememberAsyncImagePainter(
38-
model = uploadedImage,
37+
model = bitmap,
3938
imageLoader = ImageLoader(context),
4039
)
4140
if (bitmap == null) {
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package com.mifos.core.ui.util
2+
3+
import kotlin.io.encoding.Base64
4+
import kotlin.io.encoding.ExperimentalEncodingApi
5+
6+
@OptIn(ExperimentalEncodingApi::class)
7+
fun ImageToByteArray(image:String?): ByteArray? {
8+
if (image.isNullOrBlank()) return null
9+
val base64String = image.substringAfter(",")
10+
val cleanBase64 = base64String
11+
.replace("\\s".toRegex(), "")
12+
.replace("[^A-Za-z0-9+/=]".toRegex(), "")
13+
14+
try {
15+
val decodedBytes = Base64.decode(cleanBase64)
16+
val decodedBitmap = ImageUtil.compressImage(decodedBytes)
17+
return decodedBitmap
18+
} catch (e: Exception) {
19+
return null
20+
}
21+
}

feature/client/src/commonMain/kotlin/com/mifos/feature/client/clientDetails/ClientDetailsViewModel.kt

Lines changed: 4 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.mifos.core.data.repository.ClientDetailsRepository
2121
import com.mifos.core.datastore.UserPreferencesRepository
2222
import com.mifos.core.domain.useCases.GetClientDetailsUseCase
2323
import com.mifos.core.domain.useCases.UploadClientImageUseCase
24+
import com.mifos.core.ui.util.ImageToByteArray
2425
import com.mifos.core.ui.util.ImageUtil
2526
import com.mifos.feature.client.utils.createImageRequestBody
2627
import com.mifos.room.entities.accounts.loans.LoanAccountEntity
@@ -47,7 +48,6 @@ import kotlin.io.encoding.ExperimentalEncodingApi
4748
class ClientDetailsViewModel(
4849
private val uploadClientImageUseCase: UploadClientImageUseCase,
4950
private val getClientDetailsUseCase: GetClientDetailsUseCase,
50-
private val prefManager: UserPreferencesRepository,
5151
private val clientDetailsRepo: ClientDetailsRepository,
5252
savedStateHandle: SavedStateHandle,
5353
) : ViewModel() {
@@ -75,7 +75,7 @@ class ClientDetailsViewModel(
7575

7676
init {
7777
viewModelScope.launch {
78-
getUserPhoto()
78+
getUserProfile()
7979
}
8080
}
8181
private fun uploadImage(id: Int, imageFile: PlatformFile) = viewModelScope.launch {
@@ -159,44 +159,16 @@ class ClientDetailsViewModel(
159159
}
160160
}
161161

162-
suspend fun getUserPhoto(){
162+
suspend fun getUserProfile(){
163163
clientDetailsRepo.getImage(clientId.value).collect { result->
164164
when(result)
165165
{
166166
is DataState.Error -> {}
167167
DataState.Loading -> _showLoading.value = true
168168
is DataState.Success -> {
169-
setUserProfile(result.data)
169+
_profileImage.value=ImageToByteArray(result.data)
170170
}
171171
}
172-
173-
}
174-
}
175-
176-
@OptIn(ExperimentalEncodingApi::class)
177-
private fun setUserProfile(image: String?) {
178-
179-
Logger.e("Revanth"){
180-
image.toString()
181-
}
182-
if (image.isNullOrBlank()) return
183-
184-
// val base64String = image.substringAfter(",", image)
185-
// if (!base64String.matches(Regex("^[A-Za-z0-9+/=]+$"))) return
186-
val base64String = image.substringAfter(",")
187-
188-
val cleanBase64 = base64String
189-
.replace("\\s".toRegex(), "")
190-
.replace("[^A-Za-z0-9+/=]".toRegex(), "")
191-
192-
try {
193-
val decodedBytes = Base64.decode(cleanBase64)
194-
val decodedBitmap = ImageUtil.compressImage(decodedBytes)
195-
_profileImage.value=decodedBitmap
196-
} catch (e: Exception) {
197-
Logger.e("Mifos"){
198-
e.toString()
199-
}
200172
}
201173
}
202174
}

0 commit comments

Comments
 (0)