Skip to content
Merged
Show file tree
Hide file tree
Changes from 37 commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
01849f0
[design] #80 로그인 관련 리소스 추가
Ojongseok Feb 7, 2026
71e90ac
[chore] #80 불필요한 파일 제거
Ojongseok Feb 7, 2026
4d2e936
[feat] #80 로그인 화면 UI 구성
Ojongseok Feb 7, 2026
670da70
[design] #80 약관 관련 리소스 추가
Ojongseok Feb 7, 2026
b8d4320
Merge branch 'develop' of https://github.com/YAPP-Github/27th-App-Tea…
Ojongseok Feb 7, 2026
307b523
Merge branch 'develop' of https://github.com/YAPP-Github/27th-App-Tea…
Ojongseok Feb 7, 2026
765f121
[feat] #80 AuthNavKey 정의 및 RootNavkey 네이밍 Login->Auth로 변경
Ojongseok Feb 7, 2026
5e216e2
[feat] #80 Auth 관련 NavigationState, Navigator 모듈 작성
Ojongseok Feb 7, 2026
f94b703
[feat] #80 AuthNavKey 하위 스크린 생성
Ojongseok Feb 7, 2026
a216be2
[design] #80 28.sp 폰트 시스템 추가
Ojongseok Feb 7, 2026
367b11c
[design] #80 온보딩 및 로그인 UI 컴포넌트 분리
Ojongseok Feb 7, 2026
12420c8
[design] #80 스플래시 UI 컴포넌트 분리
Ojongseok Feb 7, 2026
b9543ed
[chore] #80 불필요한 import 및 파일 제거
Ojongseok Feb 7, 2026
6b2c7c7
[chore] #80 온보딩 관련 상수 경로 이동
Ojongseok Feb 7, 2026
c8e074a
[feat] #80 온보딩 HorizontalPager 오버스크롤 가능하게 수정
Ojongseok Feb 7, 2026
609a3d9
[design] #80 온보딩 스크린 UI 영역 비율 수정
Ojongseok Feb 7, 2026
86cc639
[design] #80 온보딩 관련 리소스 추가
Ojongseok Feb 7, 2026
6687332
[feat] #80 이용약관 화면 NavKey 추가
Ojongseok Feb 7, 2026
7f70c98
[feat] #80 이용약관 관련 컴포넌트 정의 및 UI 구성
Ojongseok Feb 7, 2026
4dccd87
[feat] #80 소셜 로그인 후 이용약관으로 이동하도록 변경
Ojongseok Feb 7, 2026
bc79992
[feat] #80 feature:auth:impl의 공통 Contact 및 ViewModel Auth로 네이밍 변경
Ojongseok Feb 7, 2026
0e46751
[chore] #80 Screen 및 Preview 접근제어자 변경
Ojongseok Feb 7, 2026
fd9a1b4
[feat] #80 이용약관 선택동의 및 전체동의 기능 구현
Ojongseok Feb 7, 2026
f295034
[feat] #80 스플래시 및 온보딩에서 화면 전환 시 백스택 클리어 후 전환하도록 변경
Ojongseok Feb 8, 2026
f95ac0e
[feat] #80 온보딩 노출 여부 확인 로직 추가
Ojongseok Feb 8, 2026
9394b8c
[feat] #80 스플래시 관련 로직 별도 ViewModel로 분리
Ojongseok Feb 8, 2026
57fbb32
[chore] #80 공백 문자 수정
Ojongseok Feb 8, 2026
6f2d35a
[feat] #80 이용약관 화면 이탈 시 약관 동의 상태 초기화 로직 작성
Ojongseok Feb 8, 2026
decdcbe
[fix] #80 소셜 로그인 후 실제 로그인 처리 시점 변경
Ojongseok Feb 8, 2026
48d25b4
[chore] #80 스플래시 / 로그인 ViewModel 공유하는 로직 제거
Ojongseok Feb 8, 2026
e602136
[chore] #80 Auth 관련 클래스명 Login로 변경
Ojongseok Feb 8, 2026
73338ef
[chore] #80 불필요한 코드 제거 및 접근제어자 수정
Ojongseok Feb 8, 2026
2f1845a
[build] #80 detekt 룰 적용
Ojongseok Feb 8, 2026
b7705c6
[feat] #80 이용약관 동의 후 로딩 효과 추가
Ojongseok Feb 8, 2026
19acf32
[feat] #80 회원탈퇴 시 온보딩 노출 여부 false로 변경
Ojongseok Feb 8, 2026
8c80120
[build] #80 불필요한 import 제거
Ojongseok Feb 8, 2026
90f7f1b
[feat] #91 카카오 로그인 실패 시 토스트메시지 노출 로직 추가
Ojongseok Feb 8, 2026
762c7a3
[fix] #91 KakaoAuthHelper.kt object로 변경
Ojongseok Feb 8, 2026
96bded3
[fix] #91 LoginScreen의 uiState 관찰 구문 제거
Ojongseok Feb 8, 2026
7ea2cd7
[fix] #91 온보딩 여부에 대한 키 및 함수명 수정
Ojongseok Feb 8, 2026
a872aa7
[fix] #91 불필요한 리소스 사용 제거
Ojongseok Feb 8, 2026
7a84fc3
[fix] #91 앱 로고 공통 컴포넌트로 분리
Ojongseok Feb 8, 2026
a0afa5f
[fix] #91 JWT토큰 저장 여부를 조회하는 함수명 변경
Ojongseok Feb 8, 2026
a026b95
[fix] #91 이용약관 동의 항목 터치 영역 수정
Ojongseok Feb 8, 2026
98a8c8e
[fix] #91 필수 이용약관 필터 로직 companion object로 이동
Ojongseok Feb 8, 2026
343f37f
[chore] #91 누락된 코드 추가
Ojongseok Feb 8, 2026
ee1c21e
[chore] #91 불필요한 import 제거
Ojongseok Feb 8, 2026
e4feb77
[fix] #91 Root 화면 전환 시 이전 Root 스택의 ViewModel 제거 로직 추가
Ojongseok Feb 8, 2026
ca5c575
[build] #91 detekt 룰 적용
Ojongseok Feb 8, 2026
19acb03
[feat] #91 토스트 메시지 NekiToast로 수정
Ojongseok Feb 8, 2026
e177740
[chore] #91 sharedViewModelStoreNavEntryDecorator 변수명 변경
Ojongseok Feb 8, 2026
5c8d6c9
[build] #91 불필요한 import 제거
Ojongseok Feb 8, 2026
6f1fdbf
[chore] #91 DataStoreKey.kt 제거 및 기존 AccessToken, RefreshToken 키 경로 이동
Ojongseok Feb 8, 2026
19ff2f2
[chore] #91 DataStoreRepository 제거
Ojongseok Feb 8, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions app/src/main/java/com/neki/android/app/AuthScreen.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.neki.android.app

import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.navigationBarsPadding
import androidx.compose.foundation.layout.padding
import androidx.compose.material3.Scaffold
import androidx.compose.runtime.Composable
import androidx.compose.runtime.snapshots.SnapshotStateList
import androidx.compose.ui.Modifier
import androidx.navigation3.runtime.NavEntry
import androidx.navigation3.runtime.NavKey
import androidx.navigation3.ui.NavDisplay

@Composable
fun AuthScreen(
entries: SnapshotStateList<NavEntry<NavKey>>,
onBack: () -> Unit,
) {
Scaffold(
modifier = Modifier
.fillMaxSize()
.navigationBarsPadding(),
) { innerPadding ->
NavDisplay(
modifier = Modifier.padding(innerPadding),
entries = entries,
onBack = onBack,
)
}
}
22 changes: 16 additions & 6 deletions app/src/main/java/com/neki/android/app/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ import com.neki.android.core.navigation.result.ResultEventBus
import com.neki.android.core.navigation.root.RootNavKey
import com.neki.android.core.navigation.root.RootNavigationState
import com.neki.android.core.navigation.toEntries
import com.neki.android.feature.auth.impl.LoginRoute
import com.neki.android.core.navigation.auth.AuthNavigatorImpl
import com.neki.android.core.navigation.auth.toEntries
import com.neki.android.feature.auth.impl.navigation.authEntryProvider
import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import javax.inject.Inject
Expand All @@ -31,6 +33,9 @@ class MainActivity : ComponentActivity() {
@Inject
lateinit var rootNavigationState: RootNavigationState

@Inject
lateinit var authNavigator: AuthNavigatorImpl
Comment thread
Ojongseok marked this conversation as resolved.

@Inject
lateinit var navigator: NavigatorImpl

Expand All @@ -52,9 +57,14 @@ class MainActivity : ComponentActivity() {
NekiTheme {
CompositionLocalProvider(LocalResultEventBus provides resultBus) {
when (rootNavigationState.currentRootKey) {
RootNavKey.Login -> {
LoginRoute(
navigateToMain = { navigator.navigateRoot(RootNavKey.Main) },
RootNavKey.Auth -> {
AuthScreen(
entries = authNavigator.state.toEntries(
entryProvider = entryProvider {
authEntryProvider(authNavigator).invoke(this)
},
),
onBack = { authNavigator.goBack() },
)
}

Expand All @@ -70,7 +80,7 @@ class MainActivity : ComponentActivity() {
),
onTabSelected = { navigator.navigate(it) },
onBack = { navigator.goBack() },
navigateToLogin = { navigator.navigateRoot(RootNavKey.Login) },
navigateToLogin = { navigator.navigateRoot(RootNavKey.Auth) },
)
}
}
Expand All @@ -92,7 +102,7 @@ class MainActivity : ComponentActivity() {
Toast.LENGTH_SHORT,
).show()

navigator.navigateRoot(RootNavKey.Login)
navigator.navigateRoot(RootNavKey.Auth)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.neki.android.app.navigation.di

import com.neki.android.app.navigation.keys.START_AUTH_NAV_KEY
import com.neki.android.app.navigation.keys.START_NAV_KEY
import com.neki.android.app.navigation.keys.START_ROOT_NAV_KEY
import com.neki.android.app.navigation.keys.TOP_LEVEL_NAV_KEYS
import com.neki.android.core.navigation.NavigationState
import com.neki.android.core.navigation.auth.AuthNavigationState
import com.neki.android.core.navigation.root.RootNavigationState
import dagger.Module
import dagger.Provides
Expand All @@ -17,18 +19,26 @@ internal object NavigationModule {

@Provides
@ActivityRetainedScoped
fun providesNavigationState(): NavigationState {
return NavigationState(
startKey = START_NAV_KEY,
topLevelKeys = TOP_LEVEL_NAV_KEYS.toSet(),
fun providesRootNavigationState(): RootNavigationState {
return RootNavigationState(
startKey = START_ROOT_NAV_KEY,
)
}

@Provides
@ActivityRetainedScoped
fun providesRootNavigationState(): RootNavigationState {
return RootNavigationState(
startKey = START_ROOT_NAV_KEY,
fun providesAuthNavigationState(): AuthNavigationState {
return AuthNavigationState(
startKey = START_AUTH_NAV_KEY,
)
}

@Provides
@ActivityRetainedScoped
fun providesNavigationState(): NavigationState {
return NavigationState(
startKey = START_NAV_KEY,
topLevelKeys = TOP_LEVEL_NAV_KEYS.toSet(),
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package com.neki.android.app.navigation.keys
import com.neki.android.app.navigation.TopLevelNavItem
import com.neki.android.core.navigation.root.RootNavKey
import com.neki.android.feature.archive.api.ArchiveNavKey
import com.neki.android.feature.auth.api.AuthNavKey

internal val START_ROOT_NAV_KEY = RootNavKey.Login
internal val START_ROOT_NAV_KEY = RootNavKey.Auth
internal val START_AUTH_NAV_KEY = AuthNavKey.Splash
internal val START_NAV_KEY = ArchiveNavKey.Archive
internal val TOP_LEVEL_NAV_KEYS = TopLevelNavItem.entries.map { it.navKey }
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package com.neki.android.core.dataapi.repository

import com.neki.android.core.model.Auth
import kotlinx.coroutines.flow.Flow

interface AuthRepository {
suspend fun loginWithKakao(idToken: String): Result<Auth>
suspend fun updateAccessToken(refreshToken: String): Result<Auth>
suspend fun withdrawAccount(): Result<Unit>

fun isReadOnboarding(): Flow<Boolean>
suspend fun setReadOnboarding(value: Boolean)
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
package com.neki.android.core.data.repository.impl

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.neki.android.core.data.local.di.AuthDataStore
import com.neki.android.core.data.remote.api.AuthService
import com.neki.android.core.data.remote.model.request.KakaoLoginRequest
import com.neki.android.core.data.remote.model.request.RefreshTokenRequest
import com.neki.android.core.data.util.runSuspendCatching
import com.neki.android.core.dataapi.repository.AuthRepository
import com.neki.android.core.model.Auth
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import javax.inject.Inject

class AuthRepositoryImpl @Inject constructor(
@AuthDataStore private val dataStore: DataStore<Preferences>,
private val authService: AuthService,
) : AuthRepository {
override suspend fun loginWithKakao(idToken: String): Result<Auth> = runSuspendCatching {
Expand All @@ -30,4 +38,20 @@ class AuthRepositoryImpl @Inject constructor(
override suspend fun withdrawAccount(): Result<Unit> = runSuspendCatching {
authService.withdrawAccount()
}

override fun isReadOnboarding(): Flow<Boolean> {
return dataStore.data.map { preferences ->
preferences[IS_READ_ONBOARDING] ?: false
}
}
Comment thread
ikseong00 marked this conversation as resolved.
Outdated

override suspend fun setReadOnboarding(value: Boolean) {
dataStore.edit { preferences ->
preferences[IS_READ_ONBOARDING] = value
}
}

companion object {
private val IS_READ_ONBOARDING = booleanPreferencesKey("is_read_onboarding")
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,19 @@ private val pretendardStyle = TextStyle(
)

internal val defaultNekiTypography = NekiTypography(
// Title 28
title28Bold = pretendardStyle.copy(
fontWeight = FontWeight.Bold,
fontSize = 28.sp,
lineHeight = 40.sp,
letterSpacing = (-0.02).em,
),
title28SemiBold = pretendardStyle.copy(
fontWeight = FontWeight.SemiBold,
fontSize = 28.sp,
lineHeight = 40.sp,
letterSpacing = (-0.02).em,
),
// Title 24
title24Bold = pretendardStyle.copy(
fontWeight = FontWeight.Bold,
Expand Down Expand Up @@ -162,6 +175,9 @@ internal val defaultNekiTypography = NekiTypography(

@Immutable
data class NekiTypography(
// Title 28
val title28Bold: TextStyle,
val title28SemiBold: TextStyle,
// Title 24
val title24Bold: TextStyle,
val title24SemiBold: TextStyle,
Expand Down
81 changes: 81 additions & 0 deletions core/designsystem/src/main/res/drawable/icon_agreement.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="64dp"
android:height="64dp"
android:viewportWidth="64"
android:viewportHeight="64">
<path
android:pathData="M8.571,11L38.287,11A4.571,4.571 0,0 1,42.858 15.571L42.858,54.429A4.571,4.571 0,0 1,38.287 59L8.571,59A4.571,4.571 0,0 1,4 54.429L4,15.571A4.571,4.571 0,0 1,8.571 11z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="23.429"
android:startY="11"
android:endX="23.429"
android:endY="59"
android:type="linear">
<item android:offset="0" android:color="#FFFFDAD6"/>
<item android:offset="1" android:color="#FFFFA299"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M15.571,5L45.429,5A4.571,4.571 0,0 1,50 9.571L50,48.429A4.571,4.571 0,0 1,45.429 53L15.571,53A4.571,4.571 0,0 1,11 48.429L11,9.571A4.571,4.571 0,0 1,15.571 5z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="30.5"
android:startY="5"
android:endX="30.5"
android:endY="53"
android:type="linear">
<item android:offset="0" android:color="#FFFFA299"/>
<item android:offset="1" android:color="#FFFF5647"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M17,16C17,14.895 17.895,14 19,14H42C43.105,14 44,14.895 44,16C44,17.105 43.105,18 42,18H19C17.895,18 17,17.105 17,16Z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="17"
android:startY="16"
android:endX="44"
android:endY="16"
android:type="linear">
<item android:offset="0" android:color="#FFFFFFFF"/>
<item android:offset="1" android:color="#FFFFDAD6"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M17,25C17,23.895 17.895,23 19,23H42C43.105,23 44,23.895 44,25C44,26.105 43.105,27 42,27H19C17.895,27 17,26.105 17,25Z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="17"
android:startY="25"
android:endX="44"
android:endY="25"
android:type="linear">
<item android:offset="0" android:color="#FFFFFFFF"/>
<item android:offset="1" android:color="#FFFFDAD6"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M17,34C17,32.895 17.895,32 19,32H34C35.105,32 36,32.895 36,34C36,35.105 35.105,36 34,36H19C17.895,36 17,35.105 17,34Z">
<aapt:attr name="android:fillColor">
<gradient
android:startX="17"
android:startY="34"
android:endX="36"
android:endY="34"
android:type="linear">
<item android:offset="0" android:color="#FFFFFFFF"/>
<item android:offset="1" android:color="#FFFFDAD6"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M52.999,18.153C54.231,16.396 56.655,15.969 58.412,17.201C60.17,18.433 60.596,20.857 59.364,22.614L45.272,42.717C44.653,43.601 43.808,44.302 42.826,44.749L39.109,46.439C38.323,46.797 37.443,46.18 37.511,45.319L37.832,41.248C37.917,40.172 38.288,39.139 38.908,38.256L52.999,18.153Z"
android:fillColor="#FFC7C2"
android:fillAlpha="0.4"/>
</vector>
9 changes: 9 additions & 0 deletions core/designsystem/src/main/res/drawable/icon_kakao_talk.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:pathData="M12,0C5.38,0 0,4.615 0,10.301C0.115,13.962 2.2,17.276 5.453,18.934L4.327,24L9.738,20.423C10.488,20.549 11.239,20.612 12,20.612C18.62,20.612 24,15.997 24,10.311C24,4.626 18.631,0.01 12,0.01"
android:fillColor="#181A1D"/>
</vector>
10 changes: 10 additions & 0 deletions core/designsystem/src/main/res/drawable/icon_neki_logo_white.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="74dp"
android:height="81dp"
android:viewportWidth="74"
android:viewportHeight="81">
<path
android:pathData="M0,6.531C0,2.309 3.948,-0.803 8.053,0.184L48.79,9.969L67.698,1.142C70.583,-0.205 73.89,1.902 73.89,5.086V73.88C73.89,78.102 69.943,81.213 65.839,80.227L18.759,68.916L6.861,77.316C3.979,79.351 0.001,77.289 0,73.761V6.531ZM38.298,26.892C38.023,25.793 36.463,25.793 36.188,26.892L33.463,37.786L22.556,40.515C21.457,40.789 21.457,42.352 22.556,42.627L33.463,45.353L36.188,56.25C36.462,57.349 38.023,57.349 38.298,56.25L41.022,45.349L51.916,42.627C53.014,42.352 53.014,40.79 51.916,40.515L41.024,37.791L38.298,26.892Z"
android:fillColor="#ffffff"
android:fillType="evenOdd"/>
</vector>
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="94dp"
android:height="37dp"
android:viewportWidth="94"
android:viewportHeight="37">
<path
android:pathData="M0,3.907C0,3.363 0.441,2.922 0.985,2.922H7.632C7.947,2.922 8.242,3.072 8.428,3.326L21.517,21.227C21.535,21.251 21.568,21.258 21.595,21.243C21.613,21.233 21.625,21.213 21.625,21.191V3.907C21.625,3.363 22.066,2.922 22.61,2.922H28.444C28.989,2.922 29.43,3.363 29.43,3.907V32.685C29.43,33.229 28.989,33.67 28.444,33.67H22.082C21.767,33.67 21.471,33.519 21.286,33.265L7.913,14.916C7.895,14.891 7.861,14.884 7.835,14.899C7.816,14.91 7.805,14.93 7.805,14.951V32.696C7.805,33.24 7.364,33.681 6.82,33.681H0.985C0.441,33.681 0,33.24 0,32.696V3.907Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M46.865,33.744C40.306,35.501 35.044,32.817 33.312,26.353C31.579,19.888 34.933,14.521 41.492,12.764C47.78,11.078 53.226,13.926 55.311,20.98C55.462,21.493 55.148,22.021 54.632,22.159L41.03,25.804C42.106,28.09 43.656,28.854 45.891,28.255C47.001,27.958 47.878,27.256 48.23,26.259C48.366,25.876 48.637,25.535 49.029,25.43L54.484,23.968C55.097,23.804 55.707,24.257 55.654,24.891C55.295,29.182 52.316,32.272 46.862,33.733L46.865,33.744ZM46.935,19.413C46.219,17.541 44.689,17.021 42.886,17.504C41.083,17.987 40.112,19.257 40.018,21.267L46.924,19.416L46.935,19.413Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M65.001,0C65.545,0 65.987,0.441 65.987,0.985V20.802H66.063L72.35,13.363C72.537,13.141 72.813,13.013 73.103,13.013H79.643C80.498,13.013 80.948,14.028 80.372,14.661L73.685,22.023C73.348,22.394 73.343,22.96 73.675,23.336L81.488,32.212C82.048,32.848 81.596,33.848 80.748,33.848H73.875C73.586,33.848 73.313,33.722 73.125,33.502L66.106,25.282L65.987,25.326V32.863C65.987,33.407 65.545,33.848 65.001,33.848H59.331C58.786,33.848 58.345,33.407 58.345,32.863V0.985C58.345,0.441 58.786,0 59.331,0H65.001Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M85.549,5.456C85.549,3.09 87.295,1.414 89.697,1.414C92.099,1.414 93.845,3.09 93.845,5.456C93.845,7.986 92.218,9.575 89.697,9.575C87.175,9.575 85.549,7.986 85.549,5.456ZM92.532,12.839C93.076,12.839 93.518,13.28 93.518,13.824V32.699C93.518,33.244 93.076,33.685 92.532,33.685H86.862C86.317,33.685 85.876,33.244 85.876,32.699V13.824C85.876,13.28 86.317,12.839 86.862,12.839H92.532Z"
android:fillColor="#ffffff"/>
</vector>
Loading
Loading