Kotlin 1주차 (24.09.05)

최지웅·2024년 9월 6일
0

PIXELRO

목록 보기
3/7
  1. 홈 화면 댓글보기 아래에 조그맣게 "ji"라고 써있는 글자를 발견하였다.
  • PostUI맨 밑에 Long.getTimeElaspsedText(): String꼴로 내가 닉네임인 "jimo"를 쓰려다 시간이 없어 대충 쓴 "ji"를 발견하여 임시적으로 "see translation"로 수정하였다.
  • 추가적인 공부를 진행하자. 구글 검색으로 나오지 않아 GPT를 참고하였다. 위 함수는 Long 타입의 값에 대해 확장 함수를 정의한 것이다. 함수의 목적은 Long값을 시간으로 변환시켜 문자열로 표현하려한 것 즉, 이 앱에서는 작성 시간을 표현하려한 함수같다. 다만 오픈소스상에서 미구현 상태로 두었기에 동떨어진 함수가 되었는데, 자연스럽게 두기 위해 함수는 그대로 두고 "see translation"을 넣어 번역하는 버튼인 것 처럼 해두었다. 호출 부분을 보면
Text(
     post.timeStamp.getTimeElapsedText(),
     style = MaterialTheme.typography.labelSmall.copy(fontSize = 10.sp)
)

으로 post에 저장된 timestamp값을 가져오려 하였다. 그리고 실제 PostRepository에서 임시 데이터를 populatePosts()함수로 생성할 때

timeStamp=System.currentTimeMillis() - (index*60000)

으로 실제 시간값을 저장함을 찾을 수 있었다. 구현까지 다 해놓고 왜 미구현일까 하고 실제 github를 다시 참조했는데, 내가 나중에 넣으려고 대충 값을 써둔 것이었지 구현이 되어어있었다. 이를 수정해주자.

  1. 어제 SDK 버전 업그레이드로 인한 대규모 의존성 변경으로 인해 몇가지 코드가 Deprecated되었다. 이를 수정해며 안쓰는 import들을 지워주자.
  • ui.PostUI의 PostHeader함수에서 이미지 그리기에 사용된 rememberImagePainter->rememberAsyncImagePainter로 변경
  • InstaApp의 InstaApp함수에서 rememberAnimatedNavController->rememberNavController로 변경
  • InstaApp의 InstaApp함수에서 AnimatedNavHost와 composable도 Deprecated가 떠서 확인해보니
Replace with navigation-compose NavHost with the same parameters. Change import from com.google.accompanist.navigation.animation.AnimatedNavHost to androidx.navigation.compose.NavHost.

라고한다. NavHost로 바꾸니 생성자가 없다고 뜬다. 하지만 현재 코드는 navController를 받아 사용하기에 변경이 불가하다 판단하여 멈추겠다.

  1. 시간이 남아 로그인 시 사용되는 Repository도 구현해보고자 한다. 참조 코드에서는 Repository를 외부에서 가져오기에 오픈소스 코드와 같은 방식으로 테스트 계정을 만들고, 존재하는 계정에만 로그인이 되게끔 해보려했는데 오류가 발생했다.
C:\Users\pixelro\Instagram_clone_try4\app\build\generated\hilt\component_sources\debug\com\example\instagram_clone_try4\InstaApplication_HiltComponents.java:124: error: [Dagger/MissingBinding] com.example.instagram_clone_try4.data.SignInRepository cannot be provided without an @Provides-annotated method.
  public abstract static class SingletonC implements InstaApplication_GeneratedInjector,
                         ^
  
  Missing binding usage:
      com.example.instagram_clone_try4.data.SignInRepository is injected at
          com.example.instagram_clone_try4.SignInViewModel(��, signInRepository)
      com.example.instagram_clone_try4.SignInViewModel is injected at
          com.example.instagram_clone_try4.SignInViewModel_HiltModules.BindsModule.binds(arg0)
      @dagger.hilt.android.internal.lifecycle.HiltViewModelMap java.util.Map<java.lang.String,javax.inject.Provider<androidx.lifecycle.ViewModel>> is requested at
          dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.ViewModelFactoriesEntryPoint.getHiltViewModelMap() [com.example.instagram_clone_try4.InstaApplication_HiltComponents.SingletonC �� com.example.instagram_clone_try4.InstaApplication_HiltComponents.ActivityRetainedC �� com.example.instagram_clone_try4.InstaApplication_HiltComponents.ViewModelC]
  • 해결해야하는데 실제 과제를 받아 미루어 두기로 한다.
  1. 이제 실제 과제를 수행한다. git 설정이 햇갈려 아래 정리해두겠다.
git checkout new_branch
git add -A
git commit -m ""
git push origin new_branch
profile
이제 3학년..

0개의 댓글