블로그에 지난 졸업프로젝트에서 했던 주요 기능부분을 기록으로 남기려고한다. 조금? 오랜 시간이 지났지만 기억을 되살려서 기록을 해보자 저번에 RecyclerView에 대해서 포스팅을 하였을 때 https://superohinsung.tistory.com/314 [Bong#] RecyclerView에서 onCreateViewHolder와 onBindViewHolder의 차이 블로그에 지난 졸업프로젝트에서 했던 주요 기능부분을 기록으로 남기려고한다. 조금? 오랜 시간이 지났지만 기억을 되살려서 기록을 해보자. 졸업 프로젝트에서는 다른 여타 프로젝트와 달리 superohinsung.tistory.com 아래와 같은 코드를 본 적이 있을 것이다. companion object { private val diffC..
전체 코드 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..
오늘은 ktlint, detekt에 대해서 공부를 해보자. Ktlint와 Detekt는 모두 Kotlin 언어로 작성된 코드에서 코드 품질을 유지하고 개선하기 위한 도구들이다. ktlint 목적: Ktlint는 Kotlin 코드의 일관된 스타일을 유지하고 코드 포맷을 검사하는 데 사용된다. 기능: 코드 포맷팅 규칙을 정의하고 이를 기반으로 Kotlin 코드의 스타일을 검사한다. 코드베이스의 일관된 형식을 유지하면서 코드 리뷰 및 유지보수를 용이하게 한다. 사용법: Ktlint는 Gradle, Maven, 등의 빌드 도구에서 통합하여 사용할 수 있다. 터미널에서 직접 사용하거나 CI/CD 파이프라인에 통합하여 자동 검사할 수 있다. detekt 목적: Detekt는 Kotlin 코드에서 일반적인 코드 품질..