11package com.foke.together.presenter.viewmodel
22
33import android.content.Context
4- import android.graphics.Bitmap
54import android.net.Uri
6- import androidx.compose.runtime.getValue
7- import androidx.compose.runtime.mutableStateOf
8- import androidx.compose.runtime.setValue
95import androidx.core.content.FileProvider
106import androidx.core.net.toFile
117import androidx.lifecycle.ViewModel
128import androidx.lifecycle.viewModelScope
139import com.foke.together.domain.interactor.GeneratePhotoFrameUseCaseV1
14- import com.foke.together.domain.interactor.GetQRCodeUseCase
1510import com.foke.together.domain.interactor.entity.Status
1611import com.foke.together.domain.interactor.session.ClearSessionUseCase
1712import com.foke.together.domain.interactor.session.GetCurrentSessionUseCase
1813import com.foke.together.domain.interactor.session.UpdateSessionStatusUseCase
19- import com.foke.together.domain.interactor.web.GetDownloadUrlUseCase
20- import com.foke.together.domain.interactor.web.UploadFileUseCase
21- import com.foke.together.util.AppLog
22- import com.foke.together.util.AppPolicy
2314import com.foke.together.util.ImageFileUtil
2415import dagger.hilt.android.lifecycle.HiltViewModel
2516import dagger.hilt.android.qualifiers.ApplicationContext
26- import kotlinx.coroutines.flow.MutableStateFlow
2717import kotlinx.coroutines.launch
2818import javax.inject.Inject
2919
3020@HiltViewModel
3121class ShareViewModel @Inject constructor(
3222 @ApplicationContext private val context : Context ,
33- private val getQRCodeUseCase : GetQRCodeUseCase ,
34- private val getDownloadUrlUseCase : GetDownloadUrlUseCase ,
35- private val uploadFileUseCase : UploadFileUseCase ,
36- private val generatePhotoFrameUseCaseV1 : GeneratePhotoFrameUseCaseV1 ,
3723 private val getCurrentSessionUseCase : GetCurrentSessionUseCase ,
3824 private val updateSessionStatusUseCase : UpdateSessionStatusUseCase ,
39- private val clearSessionUseCase : ClearSessionUseCase
25+ private val clearSessionUseCase : ClearSessionUseCase ,
26+ generatePhotoFrameUseCaseV1 : GeneratePhotoFrameUseCaseV1
4027): ViewModel() {
41- val qrCodeBitmap = MutableStateFlow < Bitmap ?>( null )
28+ val qrCodeBitmap = getCurrentSessionUseCase()?.qrCodeBitmap
4229 val singleImageUri: Uri = generatePhotoFrameUseCaseV1.getFinalSingleImageUri()
4330 val twoImageUri: Uri = generatePhotoFrameUseCaseV1.getFinalTwoImageUri()
4431
45- init {
46- viewModelScope.launch {
47- generateQRcode()
48- }
49- }
50-
5132 fun downloadImage (): Result <Unit > {
5233 return getCurrentSessionUseCase()?.let { session ->
5334 val imageBitmap = ImageFileUtil .getBitmapFromUri(context, singleImageUri)
@@ -64,23 +45,7 @@ class ShareViewModel @Inject constructor(
6445 }
6546 }
6647
67- private suspend fun generateQRcode () {
68- getCurrentSessionUseCase()?.let { session ->
69- val sessionKey = session.sessionId.toString()
70-
71- val result = uploadFileUseCase(sessionKey, singleImageUri.toFile())
72- AppLog .d(TAG , " generateQRcode" ," result: $result " )
73-
74- val downloadUrl: String = getDownloadUrlUseCase(sessionKey).getOrElse { " https://foke.clon.dev" }
75- if (AppPolicy .isDebugMode) {
76- AppLog .e(TAG , " generateQRcode" , " sessionKey: $sessionKey " )
77- AppLog .e(TAG , " generateQRcode" , " downloadUrl: $downloadUrl " )
78- }
79- qrCodeBitmap.value = getQRCodeUseCase(sessionKey, downloadUrl).getOrNull()
80- }
81- }
82-
83- fun shareImage () {
48+ fun shareImage (context : Context ) {
8449 val contentUri = FileProvider .getUriForFile(
8550 context,
8651 " com.foke.together.fileprovider" ,
0 commit comments