-
Notifications
You must be signed in to change notification settings - Fork 0
[FEAT] 마이 프로필 및 회원 탈퇴 #33
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
124 commits
Select commit
Hold shift + click to select a range
9b25c62
feat: 온보딩 버튼 컴포넌트 추가
stopstone 172e602
feat: 온보딩 페이지 인디케이터 UI 구현
stopstone be8479c
feat: 온보딩 페이지 모델 구현
stopstone 61d1fd4
feat: 온보딩 화면 구현
stopstone 22c741b
feat: 온보딩 네비게이션 설정
stopstone 717b0d4
feat: 온보딩 페이지 이미지 추가
stopstone ad971ef
feat: 온보딩 화면 이미지 추가
stopstone c4ff3c9
feat: 온보딩 UI 이미지 영역 수정
stopstone 262ded3
feat: 온보딩 페이지 백그라운드 구성
stopstone 45513a1
feat: 온보딩 배경 추가
stopstone 7768d8f
refactor: 불필요한 패딩 제거
stopstone 846bbce
feat: 온보딩 백그라운드 색상 변경
stopstone a053f43
refactor: OnboardingScreen UI 레이아웃 조정
stopstone 18af35b
refactor: AnnotatedString.Builder 확장 함수 추가
stopstone 037f6d3
feat: DataStore 분리 및 Qualifier 적용
stopstone ffc32db
feat: 온보딩 DataStore 추가
stopstone 0e3ff5e
feat: 온보딩 완료 상태 저장 로직 추가
stopstone 98a8d85
feat: 온보딩 버튼 로딩 상태 추가
stopstone fa5cadc
feat: 온보딩 화면 UI 상태 및 사이드 이펙트 처리
stopstone 25f2f20
feat: 온보딩 버튼 텍스트 stirng.xml 리소스 추가
stopstone 22ec755
feat: 온보딩 레포지토리 추가 및 ViewModel 연동
stopstone a99de45
refactor: 온보딩 페이지 데이터 - remember로 성능 최적화
stopstone 2ae7148
refactor: 온보딩 Preferences 키 상수화
stopstone 1fa484d
refactor: 불필요한 코드 제거
stopstone 508f2d5
refactor: 온보딩 페이지 데이터 모델 변경
stopstone 5845e24
refactor: 디자인 가이드에 맞게 텍스트 수정
stopstone 588a6a3
feat: Color.kt 온보딩 배경 장식 색상 추가
stopstone 7360949
refactor: 불필요한 import문 제거
stopstone 02458a5
feat: 마이페이지 구성에 필요한 리소스 추가
stopstone 6510ade
feat: LoginType enum 추가
stopstone 6f5853b
feat: 마이프로필 컴포넌트 추가
stopstone ade3245
feat: 내 정보 화면 UI 및 ViewModel 구현
stopstone c76569d
refactor: LoginType model 패키지로 이동
stopstone b1dc0b3
feat: 내 프로필 화면 navigation 구현
stopstone 6cc6646
feat: Glide Compose 라이브러리 추가
stopstone 6e5b3d4
feat: 회원 정보 API 연동
stopstone 4beb928
feat: MyProfile 에러 핸들링 추가
stopstone 1e45366
feat: 프로필 이미지 로딩 구현
stopstone 0cc546e
feat: 멤버 정보 API 연동
stopstone 7fa85de
feat: 내 정보 화면 및 API 연동
stopstone 7ce6782
feat: 마이프로필 뒤로가기 기능 구현
stopstone ee361dd
refactor: 마이프로필 정보에 매퍼 적용 및 UI 연결
stopstone edcedd1
feat: 마이프로필 로그아웃 기능 구현
stopstone 58f927e
refactor: 로딩 화면 범위 수정
stopstone 175c29b
refactor: MyProfileScreen 부분별 코드 분리
stopstone 6e6b67a
feat: 회원탈퇴 화면 이동 로직 구현
stopstone 3e6ea19
feat: 회원탈퇴 API 연동
stopstone 3dd19fe
feat: 회원탈퇴 사유 모델 추가
stopstone 6418d94
feat: 회원탈퇴 화면 TopAppBar 구현
stopstone 761beb1
feat: 회원탈퇴 화면 및 기능 구현
stopstone b71d500
feat: NearOutlinedTextField 컴포넌트 추가
stopstone d515da3
refactor: NearOutlinedTextField 키보드 상호작용 개선
stopstone 567636c
feat: 텍스트필드 에러 상태 및 관련 기능 추가
stopstone 5e1e55a
feat: 회원탈퇴 화면 UI 및 로직 개선
stopstone d7f9a59
style: 회원탈퇴 화면 앱바 패딩 수정
stopstone 18c3095
refactor: 의견 입력 에러 메시지 수정
stopstone abc4337
feat: 회원탈퇴 화면 뒤로가기 추가
stopstone 5c245f4
feat: 회원탈퇴 화면에 닉네임 전달 로직 추가
stopstone 427e766
chore: 탈퇴 화면 하단 패딩 수정
stopstone 5505311
chore: NearServiceInfoRow 클릭 범위 수정 및 리플효과 제거
stopstone 47c1b92
refactor: WithdrawTopAppBar → NearCancelTopAppBar로 이름 변경 및 이동
stopstone 634872a
chore: 미사용 import 제거
stopstone 08ad462
refactor: Modifier 파라미터 적용
stopstone 66a6488
chore: build.gradle.kts 약관 URL 정보 추가
stopstone b0fe6b1
feat: 약관 및 정책 웹뷰 화면 연동
stopstone 3917c00
refactor: 약관 및 정책 목록 표시 로직 개선
stopstone ad35f20
refactor: 약관 페이지 title 형식 수정
stopstone 59d478a
feat: MY 페이지, 탈퇴하기 화면 string.xml 리소스 적용
stopstone fddabb7
remove: 회원 탈퇴 사유 모델 제거
stopstone f2ab07f
refactor: LoginType의 프로퍼티명 수정
stopstone fb48a73
chore: 내 정보 화면 배경색 추가
stopstone 2fac627
feat: 온보딩 버튼 컴포넌트 추가
stopstone ea7a2e1
feat: 온보딩 페이지 인디케이터 UI 구현
stopstone 0c22958
feat: 온보딩 페이지 모델 구현
stopstone c536bf4
feat: 온보딩 화면 구현
stopstone dcfd9ca
feat: 온보딩 네비게이션 설정
stopstone 3396b74
feat: 온보딩 페이지 이미지 추가
stopstone 48834cf
feat: 온보딩 화면 이미지 추가
stopstone d3c08c5
feat: 온보딩 UI 이미지 영역 수정
stopstone d58d85d
feat: 온보딩 페이지 백그라운드 구성
stopstone 9d1453b
feat: 온보딩 배경 추가
stopstone 7b59095
refactor: 불필요한 패딩 제거
stopstone fc190f0
feat: 온보딩 백그라운드 색상 변경
stopstone 1577a75
refactor: OnboardingScreen UI 레이아웃 조정
stopstone 1596dab
refactor: AnnotatedString.Builder 확장 함수 추가
stopstone 2834cc6
feat: DataStore 분리 및 Qualifier 적용
stopstone b749fcb
feat: 온보딩 DataStore 추가
stopstone c19802b
feat: 온보딩 완료 상태 저장 로직 추가
stopstone e798851
feat: 온보딩 버튼 로딩 상태 추가
stopstone 5cf9a2f
feat: 온보딩 화면 UI 상태 및 사이드 이펙트 처리
stopstone dc46da1
feat: 온보딩 버튼 텍스트 stirng.xml 리소스 추가
stopstone 66ac5a1
feat: 온보딩 레포지토리 추가 및 ViewModel 연동
stopstone 93ab1c3
refactor: 온보딩 페이지 데이터 - remember로 성능 최적화
stopstone b6577d0
refactor: 온보딩 Preferences 키 상수화
stopstone f30d851
refactor: 불필요한 코드 제거
stopstone 4d59fef
refactor: 온보딩 페이지 데이터 모델 변경
stopstone d8a4c99
refactor: 디자인 가이드에 맞게 텍스트 수정
stopstone cd47e30
feat: Color.kt 온보딩 배경 장식 색상 추가
stopstone b29e18c
refactor: 불필요한 import문 제거
stopstone 38045f7
feat: 앱 시작 시 온보딩 및 로그인 상태에 따른 화면 분기 처리
stopstone 25b7bd9
Merge remote-tracking branch 'origin/feat/onboarding-pages' into feat…
stopstone a35fba3
refactor: 온보딩 관련 중복 문자열 제거
stopstone 3d9cb34
Merge branch 'dev' into feat/my-profile
stopstone 7be0ca9
refactor: 인증 헤더 삭제
stopstone 3c9719e
refactor: MyProfileUiState에서 사용하지 않는 error 필드 제거
stopstone a89f88e
refactor: RouteWebView에서 toRoute 사용하도록 수정
stopstone 00bb29d
feat: WebView 뒤로가기 기능 추가
stopstone c192e13
refactor: Glide의 contentScale 옵션 제거
stopstone c186b40
fix: `NearOutlinedTextField` 에러 상태 반영 오류 수정
stopstone 2b1acb2
refactor: 회원탈퇴 화면 에러 처리 방식 변경
stopstone ce51d82
chore: ci 워크플로우에 개인정보처리방침 URL 추가
stopstone c389154
Merge pull request #29 from near-Contact-Reminder/feat/onboarding-pages
stopstone 2b4c1d0
refactor: Glide에서 Coil로 이미지 로딩 라이브러리 변경
stopstone 4522d0f
refactor: API 응답 타입 수정
stopstone fc13f52
feat: flow를 간소화 한 apiCallFlow 추가
stopstone 5ecc798
refactor: API 호출 Flow 적용
stopstone b652c3e
refactor: 회원 탈퇴 API 에러 핸들링 수정
stopstone 9e6aad2
refactor: Member 관련 데이터 모델 네이밍 및 매퍼 구조 변경
stopstone dc3acc4
refactor: `WithdrawRequest` 모델의 위치 변경 및 관련 로직 수정
stopstone 96dec0a
fix: 중복된 NavGraph 정의 제거
stopstone 158ecc5
refactor: `MyProfileInfo`를 `MyProfileInfoUIModel`로 이름 변경
stopstone 2b53a2c
refactor: 불필요한 import 제거
stopstone 0494397
Merge branch 'feat/my-profile' into dev
stopstone 3522577
refactor: `NearNavHost` 시작 화면 `startDestination`으로 통합
stopstone File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
17 changes: 17 additions & 0 deletions
17
Near/app/src/main/java/com/alarmy/near/data/entity/MemberInfoEntity.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| package com.alarmy.near.data.entity | ||
|
|
||
| import kotlinx.serialization.Serializable | ||
|
|
||
| /** | ||
| * 회원 정보 Data Layer 엔티티 | ||
| * API 응답 데이터를 나타내는 모델 | ||
| */ | ||
| @Serializable | ||
| data class MemberInfoEntity( | ||
| val memberId: String, | ||
| val username: String, | ||
| val nickname: String, | ||
| val imageUrl: String?, | ||
| val notificationAgreedAt: String?, | ||
| val providerType: String, | ||
| ) |
13 changes: 13 additions & 0 deletions
13
Near/app/src/main/java/com/alarmy/near/data/entity/WithdrawRequestEntity.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| package com.alarmy.near.data.entity | ||
|
|
||
| import kotlinx.serialization.Serializable | ||
|
|
||
| /** | ||
| * 회원 탈퇴 요청 Data Layer 엔티티 | ||
| * Network Layer의 WithdrawRequest와 동일한 구조 | ||
| */ | ||
| @Serializable | ||
| data class WithdrawRequestEntity( | ||
| val reasonType: String, | ||
| val customReason: String? = null, | ||
| ) |
48 changes: 48 additions & 0 deletions
48
Near/app/src/main/java/com/alarmy/near/data/local/datastore/OnboardingPreferences.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,48 @@ | ||
| package com.alarmy.near.data.local.datastore | ||
|
|
||
| import androidx.datastore.core.DataStore | ||
| import androidx.datastore.preferences.core.Preferences | ||
| import androidx.datastore.preferences.core.booleanPreferencesKey | ||
| import androidx.datastore.preferences.core.edit | ||
| import com.alarmy.near.data.di.OnboardingDataStore | ||
| import kotlinx.coroutines.flow.Flow | ||
| import kotlinx.coroutines.flow.map | ||
| import javax.inject.Inject | ||
| import javax.inject.Singleton | ||
|
|
||
| /** | ||
| * 온보딩 완료 상태를 관리하는 DataStore | ||
| * 최초 접속 여부를 확인하여 온보딩 화면 표시 여부를 결정 | ||
| */ | ||
| @Singleton | ||
| class OnboardingPreferences @Inject constructor( | ||
| @OnboardingDataStore private val dataStore: DataStore<Preferences>, | ||
| ) { | ||
| companion object { | ||
| private val ONBOARDING_COMPLETED_KEY = booleanPreferencesKey("onboarding_completed") | ||
| } | ||
|
|
||
| /** | ||
| * 온보딩 완료 여부를 확인하는 Flow | ||
| * true: 온보딩 완료됨, false: 온보딩 미완료 | ||
| */ | ||
| val isOnboardingCompleted: Flow<Boolean> = dataStore.data.map { preferences -> | ||
| preferences[ONBOARDING_COMPLETED_KEY] ?: false | ||
| } | ||
|
|
||
| /** | ||
| * 온보딩 완료 상태를 저장 | ||
| */ | ||
| suspend fun setOnboardingCompleted(completed: Boolean) { | ||
| dataStore.edit { preferences -> | ||
| preferences[ONBOARDING_COMPLETED_KEY] = completed | ||
| } | ||
| } | ||
|
|
||
| /** | ||
| * 온보딩 완료 상태를 true로 설정 | ||
| */ | ||
| suspend fun markOnboardingAsCompleted() { | ||
| setOnboardingCompleted(true) | ||
| } | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
70 changes: 70 additions & 0 deletions
70
Near/app/src/main/java/com/alarmy/near/data/mapper/MemberMapper.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| package com.alarmy.near.data.mapper | ||
|
|
||
| import com.alarmy.near.data.entity.MemberInfoEntity | ||
| import com.alarmy.near.data.entity.WithdrawRequestEntity | ||
| import com.alarmy.near.model.member.MemberInfo | ||
| import com.alarmy.near.network.request.WithdrawRequest | ||
| import com.alarmy.near.presentation.feature.myprofile.model.LoginType | ||
| import com.alarmy.near.presentation.feature.myprofile.model.MyProfileInfoUIModel | ||
| import com.alarmy.near.presentation.feature.myprofile.model.WithdrawReason | ||
|
|
||
| /** | ||
| * Data Layer Entity를 Model Layer로 변환 | ||
| */ | ||
| fun MemberInfoEntity.toModel(): MemberInfo = | ||
| MemberInfo( | ||
| memberId = memberId, | ||
| username = username, | ||
| nickname = nickname, | ||
| imageUrl = imageUrl, | ||
| notificationAgreedAt = notificationAgreedAt, | ||
| providerType = providerType, | ||
| ) | ||
|
|
||
| /** | ||
| * Model Layer를 Data Layer Entity로 변환 | ||
| */ | ||
| fun MemberInfo.toEntity(): MemberInfoEntity = | ||
| MemberInfoEntity( | ||
| memberId = memberId, | ||
| username = username, | ||
| nickname = nickname, | ||
| imageUrl = imageUrl, | ||
| notificationAgreedAt = notificationAgreedAt, | ||
| providerType = providerType, | ||
| ) | ||
|
|
||
| /** | ||
| * WithdrawReason을 Network Layer로 변환 | ||
| */ | ||
| fun WithdrawReason.toRequest(customReason: String? = null): WithdrawRequest = | ||
| WithdrawRequest( | ||
| reasonType = this.name, | ||
| customReason = customReason, | ||
| ) | ||
|
|
||
| fun WithdrawRequest.toEntity(): WithdrawRequestEntity = | ||
| WithdrawRequestEntity( | ||
| reasonType = reasonType, | ||
| customReason = customReason, | ||
| ) | ||
|
|
||
| /** | ||
| * Model 계층 모델을 UI 계층 모델로 변환 | ||
| */ | ||
| fun MemberInfo.toMyProfileInfoUIModel(): MyProfileInfoUIModel = | ||
| MyProfileInfoUIModel( | ||
| nickname = nickname, | ||
| imageUrl = imageUrl, | ||
| notificationAgreedAt = notificationAgreedAt, | ||
| providerType = mapProviderType(providerType), | ||
| ) | ||
|
|
||
| /** | ||
| * ProviderType 문자열을 LoginType enum으로 변환 | ||
| */ | ||
| private fun mapProviderType(providerType: String): LoginType = | ||
| when (providerType.uppercase()) { | ||
| "KAKAO" -> LoginType.KAKAO | ||
| else -> LoginType.ETC | ||
| } |
13 changes: 13 additions & 0 deletions
13
Near/app/src/main/java/com/alarmy/near/data/repository/MemberRepository.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| package com.alarmy.near.data.repository | ||
|
|
||
| import com.alarmy.near.model.member.MemberInfo | ||
| import com.alarmy.near.presentation.feature.myprofile.model.WithdrawReason | ||
| import kotlinx.coroutines.flow.Flow | ||
|
|
||
| interface MemberRepository { | ||
| // 현재 로그인한 회원의 정보를 조회 | ||
| fun getMyInfo(): Flow<MemberInfo> | ||
|
|
||
| // 회원 탈퇴 | ||
| fun withdraw(reason: WithdrawReason, customReason: String? = null): Flow<Unit> | ||
| } |
38 changes: 38 additions & 0 deletions
38
Near/app/src/main/java/com/alarmy/near/data/repository/MemberRepositoryImpl.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| package com.alarmy.near.data.repository | ||
|
|
||
| import com.alarmy.near.data.mapper.toEntity | ||
| import com.alarmy.near.data.mapper.toModel | ||
| import com.alarmy.near.data.mapper.toRequest | ||
| import com.alarmy.near.model.member.MemberInfo | ||
| import com.alarmy.near.network.service.MemberApiService | ||
| import com.alarmy.near.presentation.feature.myprofile.model.WithdrawReason | ||
| import com.alarmy.near.utils.extensions.apiCallFlow | ||
| import kotlinx.coroutines.flow.Flow | ||
| import javax.inject.Inject | ||
| import javax.inject.Singleton | ||
|
|
||
| /** | ||
| * 회원 정보 Repository 구현체 | ||
| */ | ||
| @Singleton | ||
| class MemberRepositoryImpl | ||
| @Inject | ||
| constructor( | ||
| private val memberApiService: MemberApiService, | ||
| ) : MemberRepository { | ||
| // 현재 로그인한 회원의 정보를 조회 | ||
| override fun getMyInfo(): Flow<MemberInfo> = | ||
| apiCallFlow { | ||
| memberApiService.getMyInfo().toModel() | ||
| } | ||
|
|
||
| // 회원 탈퇴 | ||
| override fun withdraw( | ||
| reason: WithdrawReason, | ||
| customReason: String?, | ||
| ): Flow<Unit> = | ||
| apiCallFlow { | ||
| val request = reason.toRequest(customReason) | ||
| memberApiService.withdraw(request.toEntity()) | ||
| } | ||
| } |
37 changes: 37 additions & 0 deletions
37
Near/app/src/main/java/com/alarmy/near/data/repository/OnBoardingRepository.kt
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| package com.alarmy.near.data.repository | ||
|
|
||
| import kotlinx.coroutines.flow.Flow | ||
|
|
||
| /** | ||
| * 온보딩 관련 데이터를 관리하는 Repository 인터페이스 | ||
| * 온보딩 완료 상태의 저장, 조회, 확인 기능을 제공 | ||
| */ | ||
| interface OnBoardingRepository { | ||
|
|
||
| /** | ||
| * 온보딩 완료 여부를 확인하는 Flow | ||
| * true: 온보딩 완료됨, false: 온보딩 미완료 | ||
| */ | ||
| fun observeOnboardingStatus(): Flow<Boolean> | ||
|
|
||
| /** | ||
| * 온보딩 완료 상태를 저장 | ||
| * completed: 온보딩 완료 여부 | ||
| */ | ||
| suspend fun setOnboardingCompleted(completed: Boolean) | ||
|
|
||
| /** | ||
| * 온보딩을 완료로 표시 | ||
| */ | ||
| suspend fun markOnboardingAsCompleted() | ||
|
|
||
| /** | ||
| * 온보딩 완료 상태를 확인 | ||
| */ | ||
| suspend fun isOnboardingCompleted(): Boolean | ||
|
|
||
| /** | ||
| * 온보딩 상태를 초기화 (테스트용 또는 재온보딩용) | ||
| */ | ||
| suspend fun resetOnboardingStatus() | ||
| } |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
release와debug빌드 유형 모두에서 동일한buildConfigField가 반복적으로 선언되고 있습니다. 코드를 더 간결하게 유지하고 중복을 줄이기 위해 이 필드들을defaultConfig블록으로 옮기는 것을 고려해 보세요.NEAR_URL과 같이 빌드 유형에 따라 다른 값을 가져야 하는 경우에만 각buildType에 남겨두는 것이 좋습니다.