@@ -3,6 +3,9 @@ package com.foke.together.presenter.viewmodel
3
3
import android.content.Context
4
4
import android.graphics.Bitmap
5
5
import android.net.Uri
6
+ import androidx.compose.runtime.getValue
7
+ import androidx.compose.runtime.mutableStateOf
8
+ import androidx.compose.runtime.setValue
6
9
import androidx.core.content.FileProvider
7
10
import androidx.core.net.toFile
8
11
import androidx.lifecycle.ViewModel
@@ -11,13 +14,11 @@ import com.foke.together.domain.interactor.GeneratePhotoFrameUseCase
11
14
import com.foke.together.domain.interactor.GetQRCodeUseCase
12
15
import com.foke.together.domain.interactor.web.GetDownloadUrlUseCase
13
16
import com.foke.together.domain.interactor.web.SessionKeyUseCase
17
+ import com.foke.together.util.AppLog
14
18
import com.foke.together.util.AppPolicy
15
19
import com.foke.together.util.ImageFileUtil
16
20
import dagger.hilt.android.lifecycle.HiltViewModel
17
- import dagger.hilt.android.qualifiers.ActivityContext
18
21
import dagger.hilt.android.qualifiers.ApplicationContext
19
- import kotlinx.coroutines.flow.Flow
20
- import kotlinx.coroutines.flow.flow
21
22
import kotlinx.coroutines.launch
22
23
import javax.inject.Inject
23
24
@@ -29,15 +30,16 @@ class ShareViewModel @Inject constructor(
29
30
private val sessionKeyUseCase : SessionKeyUseCase ,
30
31
private val generatePhotoFrameUseCase : GeneratePhotoFrameUseCase
31
32
): ViewModel() {
32
- val qrCodeBitmap: Flow <Bitmap > = flow{
33
- val qrCodeBitmap = generateQRcode()
34
- emit(qrCodeBitmap)
35
- }
36
-
33
+ var qrCodeBitmap by mutableStateOf<Bitmap ?>(null )
37
34
val singleImageUri: Uri = generatePhotoFrameUseCase.getFinalSingleImageUri()
38
-
39
35
val twoImageUri: Uri = generatePhotoFrameUseCase.getFinalTwoImageUri()
40
36
37
+ init {
38
+ viewModelScope.launch {
39
+ generateQRcode()
40
+ }
41
+ }
42
+
41
43
fun downloadImage () {
42
44
val imageBitmap = ImageFileUtil .getBitmapFromUri(context, singleImageUri)
43
45
viewModelScope.launch {
@@ -49,19 +51,15 @@ class ShareViewModel @Inject constructor(
49
51
}
50
52
}
51
53
52
- suspend fun generateQRcode (): Bitmap {
54
+ private suspend fun generateQRcode () {
53
55
val sessionKey = sessionKeyUseCase.getSessionKey()
54
- val downloadUrl: String = getDownloadUrlUseCase(sessionKey).toString()
55
- if (downloadUrl.contains(" Failure" )){
56
- return Bitmap .createBitmap(
57
- 1 ,1 ,Bitmap .Config .ARGB_8888 )
56
+ val downloadUrl: String = getDownloadUrlUseCase(sessionKey).getOrElse { " https://4cuts.store" }
57
+
58
+ if (AppPolicy .isDebugMode) {
59
+ AppLog .e(TAG , " generateQRcode" , " sessionKey: $sessionKey " )
60
+ AppLog .e(TAG , " generateQRcode" , " downloadUrl: $downloadUrl " )
58
61
}
59
- return getQRCodeUseCase(sessionKey, downloadUrl)
60
- // return a empty bitmap if the qr code generation fails
61
- .getOrElse(
62
- return Bitmap .createBitmap(
63
- 1 ,1 ,Bitmap .Config .ARGB_8888 )
64
- )
62
+ qrCodeBitmap = getQRCodeUseCase(sessionKey, downloadUrl).getOrNull()
65
63
}
66
64
67
65
fun shareImage () {
@@ -76,4 +74,8 @@ class ShareViewModel @Inject constructor(
76
74
fun printImage (activityContext : Context ) {
77
75
ImageFileUtil .printFromUri(activityContext,twoImageUri)
78
76
}
77
+
78
+ companion object {
79
+ private val TAG = ShareViewModel ::class .java.simpleName
80
+ }
79
81
}
0 commit comments