Skip to content

Commit f7784af

Browse files
committed
login api 호출 연결, DataSource Module 추가정의
1 parent 2086ec7 commit f7784af

File tree

19 files changed

+196
-50
lines changed

19 files changed

+196
-50
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<application
88
android:name=".DDDApplication"
9-
android:allowBackup="true"
9+
android:allowBackup="false"
1010
android:icon="@mipmap/ic_launcher"
1111
android:label="@string/app_name"
1212
android:roundIcon="@mipmap/ic_launcher_round"
@@ -16,14 +16,14 @@
1616
<activity android:name=".ui.LoginActivity"
1717
android:screenOrientation="portrait"
1818
android:windowSoftInputMode="adjustResize|stateHidden">
19-
</activity>
20-
<activity android:name=".ui.MainActivity">
2119
<intent-filter>
2220
<action android:name="android.intent.action.MAIN" />
2321

2422
<category android:name="android.intent.category.LAUNCHER" />
2523
</intent-filter>
2624
</activity>
25+
<activity android:name=".ui.MainActivity">
26+
</activity>
2727
<activity android:name=".ui.SplashActivity"/>
2828
</application>
2929

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.ddd.attendance.check.common
2+
3+
object NetworkHelper {
4+
const val ERROR_MSG="네트워크 연결을 확인해주시기 바랍니다."
5+
const val FAILED="failed"
6+
const val SUCCESS="success"
7+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.ddd.attendance.check.data.login
2+
3+
import com.ddd.attendance.check.data.Repository
4+
import com.ddd.attendance.check.data.login.source.LoginLocalDataSource
5+
import com.ddd.attendance.check.data.login.source.LoginRemoteDataSource
6+
import com.ddd.attendance.check.model.LoginResponse
7+
import retrofit2.Response
8+
import javax.inject.Inject
9+
10+
class LoginRepository @Inject constructor(private val loginLocalDataSource: LoginLocalDataSource,
11+
private val remoteDataSource: LoginRemoteDataSource) : Repository {
12+
fun saveToken(token: String) {
13+
loginLocalDataSource.saveToken(token)
14+
}
15+
16+
suspend fun login(id: String, password: String): Response<LoginResponse> {
17+
return remoteDataSource.login(id, password)
18+
}
19+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.ddd.attendance.check.data.login.source
2+
3+
import android.app.Application
4+
import android.content.Context
5+
import com.ddd.attendance.check.extension.SharedPreferHelper
6+
import com.ddd.attendance.check.extension.put
7+
import javax.inject.Inject
8+
9+
class LoginLocalDataSource @Inject constructor(val application: Application) {
10+
11+
fun saveToken(token: String) {
12+
application.getSharedPreferences(SharedPreferHelper.DATA_PREFER, Context.MODE_PRIVATE).put(SharedPreferHelper.TOKEN_KEY, token)
13+
}
14+
}

app/src/main/java/com/ddd/attendance/check/data/LoginRepository.kt renamed to app/src/main/java/com/ddd/attendance/check/data/login/source/LoginRemoteDataSource.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
package com.ddd.attendance.check.data
1+
package com.ddd.attendance.check.data.login.source
22

33
import com.ddd.attendance.check.api.ApiService
44
import com.ddd.attendance.check.model.LoginResponse
55
import retrofit2.Response
66

7-
class LoginRepository(private val apiService: ApiService) {
7+
class LoginRemoteDataSource(private val apiService: ApiService) {
88
suspend fun login(id: String, password: String): Response<LoginResponse> {
99
return apiService.login(id, password).await()
1010
}

app/src/main/java/com/ddd/attendance/check/di/DDDComponent.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import javax.inject.Singleton
1313
ViewModelModule::class,
1414
ActivityBindingModule::class,
1515
AppModule::class,
16+
DataSource::class,
1617
RepositoryModule::class]
1718
)
1819
interface DDDComponent {
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package com.ddd.attendance.check.di.module
2+
3+
import com.ddd.attendance.check.DDDApplication
4+
import com.ddd.attendance.check.api.ApiService
5+
import com.ddd.attendance.check.data.login.source.LoginLocalDataSource
6+
import com.ddd.attendance.check.data.login.source.LoginRemoteDataSource
7+
import dagger.Module
8+
import dagger.Provides
9+
import javax.inject.Singleton
10+
11+
@Module
12+
class DataSource {
13+
14+
@Provides
15+
@Singleton
16+
fun loginLocalDataSource(application: DDDApplication): LoginLocalDataSource {
17+
return LoginLocalDataSource(application)
18+
}
19+
20+
@Provides
21+
@Singleton
22+
fun loginRemoteDataSource(apiService: ApiService): LoginRemoteDataSource {
23+
return LoginRemoteDataSource(apiService)
24+
}
25+
}
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package com.ddd.attendance.check.di.module
22

3-
import com.ddd.attendance.check.api.ApiService
4-
import com.ddd.attendance.check.data.LoginRepository
3+
import com.ddd.attendance.check.data.Repository
4+
import com.ddd.attendance.check.data.login.LoginRepository
5+
import com.ddd.attendance.check.data.login.source.LoginLocalDataSource
6+
import com.ddd.attendance.check.data.login.source.LoginRemoteDataSource
57
import dagger.Module
68
import dagger.Provides
79

810
@Module
911
class RepositoryModule {
1012
@Provides
11-
fun bindLoginRepository(apiService: ApiService): LoginRepository {
12-
return LoginRepository(apiService)
13+
fun bindLoginRepository(localDataSource: LoginLocalDataSource, remoteDataSource: LoginRemoteDataSource): Repository {
14+
return LoginRepository(localDataSource, remoteDataSource)
1315
}
1416
}

app/src/main/java/com/ddd/attendance/check/model/LoginReponse.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package com.ddd.attendance.check.model
22

33
data class LoginResponse(
4-
val accessToken: String,
5-
val refreshToken: String,
6-
val status: String,
7-
val user: User
4+
val accessToken: String,
5+
val refreshToken: String,
6+
val status: String,
7+
val user: User,
8+
val message: String? = null
89
)
910

1011
data class User(

app/src/main/java/com/ddd/attendance/check/ui/LoginActivity.kt

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.ddd.attendance.check.ui
22

3+
import android.content.Intent
34
import android.os.Bundle
5+
import android.widget.Toast
6+
import androidx.lifecycle.Observer
47
import androidx.lifecycle.ViewModelProvider
58
import androidx.lifecycle.ViewModelProviders
69
import com.ddd.attendance.check.R
@@ -22,6 +25,14 @@ class LoginActivity : DDDActivity<ActivityLoginBinding, LoginViewModel>() {
2225
override fun onCreate(savedInstanceState: Bundle?) {
2326
super.onCreate(savedInstanceState)
2427
setBinding()
28+
29+
viewModel.error.observe(this, Observer { msg ->
30+
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
31+
})
32+
viewModel.startMainActivity.observe(this, Observer {
33+
startActivity(Intent(this, it))
34+
finish()
35+
})
2536
}
2637

2738
private fun setBinding() {

0 commit comments

Comments
 (0)