Skip to content

Commit 7caea29

Browse files
authored
[PRODUCTION] Version 1.4(33)
[PRODUCTION] Version 1.4(33)
2 parents 9c02b47 + 32270e8 commit 7caea29

216 files changed

Lines changed: 4260 additions & 4205 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
xmlns:tools="http://schemas.android.com/tools">
44

55
<uses-permission android:name="android.permission.INTERNET" />
6+
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
67
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
78
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
89
<uses-permission android:name="com.google.android.play.billingclient.version" />
@@ -86,7 +87,7 @@
8687
android:screenOrientation="portrait" />
8788

8889
<activity
89-
android:name=".presentation.onboarding.StartAppActivity"
90+
android:name=".presentation.onboarding.activity.GetAlarmActivity"
9091
android:exported="false"
9192
android:screenOrientation="portrait" />
9293
<activity
@@ -142,7 +143,7 @@
142143
android:exported="false"
143144
android:screenOrientation="portrait" />
144145
<activity
145-
android:name=".presentation.main.recommend.search.RecommendSearchActivity"
146+
android:name=".presentation.search.SearchActivity"
146147
android:exported="false"
147148
android:screenOrientation="portrait"
148149
android:windowSoftInputMode="adjustNothing" />

app/src/main/java/com/el/yello/config/YelloMessagingService.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import com.el.yello.presentation.main.MainActivity
1212
import com.example.data.model.request.auth.toDeviceToken
1313
import com.example.data.remote.service.AuthService
1414
import com.example.domain.YelloDataStore
15-
import com.google.firebase.messaging.FirebaseMessaging
1615
import com.google.firebase.messaging.FirebaseMessagingService
1716
import dagger.hilt.android.AndroidEntryPoint
1817
import kotlinx.coroutines.GlobalScope
@@ -52,7 +51,9 @@ class YelloMessagingService : FirebaseMessagingService() {
5251
responseMessage.path = intent.getStringExtra("path")
5352
responseMessage.badge = intent.getStringExtra("badge")?.toInt()
5453

55-
sendNotificationAlarm(responseMessage)
54+
if (responseMessage.title != EMPTY) {
55+
sendNotificationAlarm(responseMessage)
56+
}
5657
}
5758
}
5859

@@ -97,4 +98,8 @@ class YelloMessagingService : FirebaseMessagingService() {
9798
var path: String? = null,
9899
var badge: Int? = null
99100
)
101+
102+
companion object {
103+
const val EMPTY = "null"
104+
}
100105
}

app/src/main/java/com/el/yello/di/DataSourceModule.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import com.example.data.datasource.OnboardingDataSource
55
import com.example.data.datasource.PayDataSource
66
import com.example.data.datasource.ProfileDataSource
77
import com.example.data.datasource.RecommendDataSource
8+
import com.example.data.datasource.SearchDataSource
89
import com.example.data.datasource.VoteDataSource
910
import com.example.data.datasource.YelloDataSource
1011
import com.example.data.datasource.remote.AuthDataSourceImpl
1112
import com.example.data.datasource.remote.OnboardingDataSourceImpl
1213
import com.example.data.datasource.remote.PayDataSourceImpl
1314
import com.example.data.datasource.remote.ProfileDataSourceImpl
1415
import com.example.data.datasource.remote.RecommendDataSourceImpl
16+
import com.example.data.datasource.remote.SearchDataSourceImpl
1517
import com.example.data.datasource.remote.VoteDataSourceImpl
1618
import com.example.data.datasource.remote.YelloDataSourceImpl
1719
import dagger.Module
@@ -48,6 +50,11 @@ object DataSourceModule {
4850
fun provideRecommendDataSource(recommendDataSourceImpl: RecommendDataSourceImpl): RecommendDataSource =
4951
recommendDataSourceImpl
5052

53+
@Provides
54+
@Singleton
55+
fun provideSearchDataSource(searchDataSourceImpl: SearchDataSourceImpl): SearchDataSource =
56+
searchDataSourceImpl
57+
5158
@Provides
5259
@Singleton
5360
fun providePayDataSource(payDataSourceImpl: PayDataSourceImpl): PayDataSource =
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
package com.el.yello.di
2+
3+
import android.content.Context
4+
import android.content.SharedPreferences
5+
import androidx.security.crypto.EncryptedSharedPreferences
6+
import androidx.security.crypto.MasterKey
7+
import com.el.yello.BuildConfig
8+
import com.example.data.local.qualifier.App
9+
import com.example.data.local.qualifier.User
10+
import dagger.Module
11+
import dagger.Provides
12+
import dagger.hilt.InstallIn
13+
import dagger.hilt.android.qualifiers.ApplicationContext
14+
import dagger.hilt.components.SingletonComponent
15+
import java.security.GeneralSecurityException
16+
import java.security.KeyStore
17+
import javax.inject.Singleton
18+
19+
@Module
20+
@InstallIn(SingletonComponent::class)
21+
object DataStoreModule {
22+
private const val APP_PREFERENCES_NAME = "APP_DATA"
23+
24+
@Provides
25+
@Singleton
26+
@User
27+
fun provideUserPreferences(
28+
@ApplicationContext context: Context
29+
): SharedPreferences = if (BuildConfig.DEBUG) {
30+
context.getSharedPreferences(context.packageName, Context.MODE_PRIVATE)
31+
} else {
32+
try {
33+
createEncryptedSharedPreferences(context.packageName, context)
34+
} catch (e: GeneralSecurityException) {
35+
deleteMasterKeyEntry()
36+
deleteExistingPref(context.packageName, context)
37+
createEncryptedSharedPreferences(context.packageName, context)
38+
}
39+
}
40+
41+
@Provides
42+
@Singleton
43+
@App
44+
fun provideAppPreferences(
45+
@ApplicationContext context: Context
46+
): SharedPreferences = if (BuildConfig.DEBUG) {
47+
context.getSharedPreferences(APP_PREFERENCES_NAME, Context.MODE_PRIVATE)
48+
} else {
49+
try {
50+
createEncryptedSharedPreferences(APP_PREFERENCES_NAME, context)
51+
} catch (e: GeneralSecurityException) {
52+
deleteMasterKeyEntry()
53+
deleteExistingPref(APP_PREFERENCES_NAME, context)
54+
createEncryptedSharedPreferences(APP_PREFERENCES_NAME, context)
55+
}
56+
}
57+
58+
private fun deleteExistingPref(fileName: String, context: Context) {
59+
context.deleteSharedPreferences(fileName)
60+
}
61+
62+
private fun deleteMasterKeyEntry() {
63+
KeyStore.getInstance("AndroidKeyStore").apply {
64+
load(null)
65+
deleteEntry(MasterKey.DEFAULT_MASTER_KEY_ALIAS)
66+
}
67+
}
68+
69+
private fun createEncryptedSharedPreferences(
70+
fileName: String,
71+
context: Context
72+
): SharedPreferences {
73+
return EncryptedSharedPreferences.create(
74+
context,
75+
fileName,
76+
MasterKey.Builder(context, MasterKey.DEFAULT_MASTER_KEY_ALIAS)
77+
.setKeyScheme(MasterKey.KeyScheme.AES256_GCM)
78+
.build(),
79+
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
80+
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
81+
)
82+
}
83+
}

app/src/main/java/com/el/yello/di/RepositoryModule.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@ import com.example.data.repository.OnboardingRepositoryImpl
55
import com.example.data.repository.PayRepositoryImpl
66
import com.example.data.repository.ProfileRepositoryImpl
77
import com.example.data.repository.RecommendRepositoryImpl
8+
import com.example.data.repository.SearchRepositoryImpl
89
import com.example.data.repository.VoteRepositoryImpl
910
import com.example.data.repository.YelloRepositoryImpl
1011
import com.example.domain.repository.AuthRepository
1112
import com.example.domain.repository.OnboardingRepository
1213
import com.example.domain.repository.PayRepository
1314
import com.example.domain.repository.ProfileRepository
1415
import com.example.domain.repository.RecommendRepository
16+
import com.example.domain.repository.SearchRepository
1517
import com.example.domain.repository.VoteRepository
1618
import com.example.domain.repository.YelloRepository
1719
import dagger.Module
@@ -48,6 +50,11 @@ object RepositoryModule {
4850
fun provideRecommendRepository(recommendRepositoryImpl: RecommendRepositoryImpl): RecommendRepository =
4951
recommendRepositoryImpl
5052

53+
@Provides
54+
@Singleton
55+
fun provideSearchRepository(searchRepositoryImpl: SearchRepositoryImpl): SearchRepository =
56+
searchRepositoryImpl
57+
5158
@Provides
5259
@Singleton
5360
fun provideAuthRepository(authRepositoryImpl: AuthRepositoryImpl): AuthRepository =

app/src/main/java/com/el/yello/di/ServiceModule.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.example.data.remote.service.OnboardingService
66
import com.example.data.remote.service.PayService
77
import com.example.data.remote.service.ProfileService
88
import com.example.data.remote.service.RecommendService
9+
import com.example.data.remote.service.SearchService
910
import com.example.data.remote.service.VoteService
1011
import com.example.data.remote.service.YelloService
1112
import dagger.Module
@@ -43,6 +44,11 @@ object ServiceModule {
4344
fun provideRecommendService(retrofit: Retrofit): RecommendService =
4445
retrofit.create(RecommendService::class.java)
4546

47+
@Provides
48+
@Singleton
49+
fun provideSearchService(retrofit: Retrofit): SearchService =
50+
retrofit.create(SearchService::class.java)
51+
4652
@Provides
4753
@Singleton
4854
fun provideLookService(retrofit: Retrofit): LookService =

0 commit comments

Comments
 (0)