블로그에 지난 졸업프로젝트에서 했던 주요 기능부분을 기록으로 남기려고한다. 조금? 오랜 시간이 지났지만 기억을 되살려서 기록을 해보자 저번에 RecyclerView에 대해서 포스팅을 하였을 때 https://superohinsung.tistory.com/314 [Bong#] RecyclerView에서 onCreateViewHolder와 onBindViewHolder의 차이 블로그에 지난 졸업프로젝트에서 했던 주요 기능부분을 기록으로 남기려고한다. 조금? 오랜 시간이 지났지만 기억을 되살려서 기록을 해보자. 졸업 프로젝트에서는 다른 여타 프로젝트와 달리 superohinsung.tistory.com 아래와 같은 코드를 본 적이 있을 것이다. companion object { private val diffC..
지난 프로젝트에 대한 회상 겸 정리할 겸 작성을 해보았다. (물론 너무 오랜 시간이 지나긴했지만...) 우리가 ComposeUi를 도입한 이유 선언형 프로그래밍: Compose는 선언적인 구문을 사용하므로 UI의 현재 상태를 더 직관적으로 표현할 수 있습니다. XML의 경우 계층적인 구조를 가지기 때문에 UI 구조를 이해하기 어려울 수 있지만, Compose는 코드의 순서대로 UI를 정의하여 가독성을 높입니다. 간편한 실시간 미리보기: Compose는 실시간 미리 보기(Real-time Preview)를 제공하여 UI 변경 사항을 즉시 확인할 수 있습니다. 이는 빠른 반복 및 디자인 작업을 도와줍니다. (XML또한 볼 수는 있지만....) 상태 관리의 편의성: Compose는 내부적으로 상태를 자동으로 ..
전체 코드 data class PostDto( val uuid: String = "", val writerUuid: String = "", val content: String = "", val imageUrl: String = "", val dateTime: Date = Date() ) @RequiresApi(Build.VERSION_CODES.O) suspend fun uploadPost( content: String, imageUri: Uri ): Result { val currentUser = Firebase.auth.currentUser require(currentUser != null) val db = Firebase.firestore val storageRef = Firebase.storage..
이번에는 PostCreateViewModel에 대해서 리뷰를 해보자. 전체 코드 class PostCreateViewModel : ViewModel() { private val _uiState = MutableStateFlow(PostCreateUiState()) val uiState = _uiState.asStateFlow() fun selectImage(uri: Uri) { _uiState.update { it.copy(selectedImage = uri) } } fun changeToEditMode() { _uiState.update { it.copy(isCreating = false) } } @RequiresApi(Build.VERSION_CODES.O) fun uploadContent(conte..
이번에는 포스팅을 업로드하는 PostCreate 부분에 대해서 리뷰를 해보자. 이 기능은 EditTextView 뿐만 아니라 이미지 또한 스마트폰 갤러리에서 선택하여 파이어베이스 저장소에 저장해야 전체코드 class PostCreateActivity : AppCompatActivity() { lateinit var binding: ActivityPostCreateBinding private val viewModel: PostCreateViewModel by viewModels() private val fileChooserContract = registerForActivityResult(ActivityResultContracts.GetContent()) { imageUri -> if (imageUri !=..
이번에는 ViewModel에 대해서 어떤식으로 구성을 하였는지에 대해서 보이려고 한다. 코드 import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.example.sangsangstagram.data.AuthRepository import com.google.firebase.auth.ktx.auth import com.google.firebase.ktx.Firebase import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.asStateFlow import kotlinx.coroutines.flow.update impo..