Skip to content

Commit 70011a9

Browse files
committed
관리자, 팀원 일시 출석체크 관련 UI, 토큰 갱신 작업
1 parent c3f0d4c commit 70011a9

20 files changed

+265
-147
lines changed

app/src/main/java/com/ddd/attendance/check/api/ApiService.kt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.ddd.attendance.check.api
22

33
import com.ddd.attendance.check.model.Attendance
44
import com.ddd.attendance.check.model.AttendanceCheckResponse
5+
import com.ddd.attendance.check.model.BaseResponse
56
import com.ddd.attendance.check.model.LoginResponse
67
import kotlinx.coroutines.Deferred
78
import retrofit2.Response
@@ -15,6 +16,10 @@ interface ApiService {
1516
@POST("/auth/login")
1617
fun login(@Field("account") id: String, @Field("password") password: String): Deferred<Response<LoginResponse>>
1718

19+
@FormUrlEncoded
20+
@POST("/auth/token")
21+
fun refreshToken(@Field("refreshToken") refreshToken: String): Deferred<Response<BaseResponse>>
22+
1823
@POST("/attends/start")
1924
fun attendsStart(): Deferred<Response<Attendance>>
2025

@@ -24,4 +29,5 @@ interface ApiService {
2429
@FormUrlEncoded
2530
@POST("/attends/check")
2631
fun attendsCheck(@Field("userId") userId: String, @Field("number") number: String): Deferred<Response<AttendanceCheckResponse>>
32+
2733
}

app/src/main/java/com/ddd/attendance/check/data/repository/UserRepository.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,16 +2,30 @@ package com.ddd.attendance.check.data.repository
22

33
import com.ddd.attendance.check.data.Repository
44
import com.ddd.attendance.check.data.source.user.UserLocalDataSource
5+
import com.ddd.attendance.check.data.source.user.UserRemoteDataSource
56
import com.ddd.attendance.check.db.entity.User
7+
import com.ddd.attendance.check.model.BaseResponse
8+
import retrofit2.Response
69
import javax.inject.Inject
710

8-
class UserRepository @Inject constructor(private val userLocalDataSource: UserLocalDataSource) :
11+
class UserRepository @Inject constructor(
12+
private val userLocalDataSource: UserLocalDataSource,
13+
private val userRemoteDataSource: UserRemoteDataSource
14+
) :
915
Repository {
1016
suspend fun saveUsers(user: User) {
1117
userLocalDataSource.saveUser(user)
1218
}
1319

20+
fun deleteUser(user: User) {
21+
userLocalDataSource.deleteUser(user)
22+
}
23+
1424
fun getUsers(): List<User> {
1525
return userLocalDataSource.getUsers()
1626
}
27+
28+
suspend fun refreshToken(refreshToken: String): Response<BaseResponse> {
29+
return userRemoteDataSource.refreshToken(refreshToken)
30+
}
1731
}

app/src/main/java/com/ddd/attendance/check/data/source/user/UserLocalDataSource.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,9 @@ class UserLocalDataSource @Inject constructor(private val dddDataBase: DDDDataBa
99
suspend fun saveUser(user: User) {
1010
dddDataBase.userDao().addUser(user)
1111
}
12-
12+
fun deleteUser(user: User){
13+
dddDataBase.userDao().deleteUser(user)
14+
}
1315
fun getUsers(): List<User> {
1416
return dddDataBase.userDao().getUsers()
1517
}
Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,13 @@
11
package com.ddd.attendance.check.data.source.user
22

3-
class UserRemoteDataSource {
3+
import com.ddd.attendance.check.api.ApiService
4+
import com.ddd.attendance.check.model.BaseResponse
5+
import retrofit2.Response
6+
import javax.inject.Inject
7+
8+
class UserRemoteDataSource @Inject constructor(private val apiService: ApiService) {
9+
10+
suspend fun refreshToken(refreshToken: String): Response<BaseResponse> {
11+
return apiService.refreshToken(refreshToken).await()
12+
}
413
}
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.ddd.attendance.check.db.dao
22

3-
import androidx.room.Dao
4-
import androidx.room.Insert
5-
import androidx.room.OnConflictStrategy
6-
import androidx.room.Query
3+
import androidx.room.*
74
import com.ddd.attendance.check.db.entity.User
85

96
@Dao
@@ -12,5 +9,9 @@ interface UserDao {
129
fun getUsers(): List<User>
1310

1411
@Insert(onConflict = OnConflictStrategy.REPLACE)
15-
suspend fun addUser(user: User)
12+
suspend fun addUser(vararg user: User)
13+
14+
15+
@Delete()
16+
fun deleteUser(user: User)
1617
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import com.ddd.attendance.check.DDDApplication
22
import com.ddd.attendance.check.di.module.*
3+
import com.ddd.attendance.check.di.module.SharedPreferencesModule
34
import dagger.BindsInstance
45
import dagger.Component
56
import dagger.android.support.AndroidSupportInjectionModule
@@ -14,7 +15,8 @@ import javax.inject.Singleton
1415
ActivityBindingModule::class,
1516
AppModule::class,
1617
DataSource::class,
17-
RepositoryModule::class]
18+
RepositoryModule::class,
19+
SharedPreferencesModule::class]
1820
)
1921
interface DDDComponent {
2022
@Component.Builder

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

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

3-
import com.ddd.attendance.check.data.repository.LoginRepository
43
import com.ddd.attendance.check.data.Repository
4+
import com.ddd.attendance.check.data.repository.LoginRepository
55
import com.ddd.attendance.check.data.repository.UserRepository
66
import com.ddd.attendance.check.data.source.login.LoginRemoteDataSource
77
import com.ddd.attendance.check.data.source.user.UserLocalDataSource
8+
import com.ddd.attendance.check.data.source.user.UserRemoteDataSource
89
import dagger.Module
910
import dagger.Provides
1011

@@ -16,7 +17,7 @@ class RepositoryModule {
1617
}
1718

1819
@Provides
19-
fun bindUserRepository(localDataSource: UserLocalDataSource): Repository {
20-
return UserRepository(localDataSource)
20+
fun bindUserRepository(localDataSource: UserLocalDataSource, remoteDataSource: UserRemoteDataSource): Repository {
21+
return UserRepository(localDataSource, remoteDataSource)
2122
}
2223
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
@file:Suppress("UNCHECKED_CAST")
2+
3+
package com.ddd.attendance.check.di.module
4+
5+
import android.content.Context.MODE_PRIVATE
6+
import android.content.SharedPreferences
7+
import com.ddd.attendance.check.DDDApplication
8+
import dagger.Module
9+
import dagger.Provides
10+
import javax.inject.Singleton
11+
12+
@Module
13+
class SharedPreferencesModule {
14+
15+
@Provides
16+
@Singleton
17+
fun provideSharedPreferences(context: DDDApplication): SharedPreferences {
18+
return context.getSharedPreferences(NAME_SHARED, MODE_PRIVATE)
19+
}
20+
21+
companion object {
22+
const val KEY_STATUS = "status"
23+
const val NAME_SHARED = "ddd_admin_status"
24+
const val KEY_NUMBER = "number"
25+
}
26+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.ddd.attendance.check.extension
2+
3+
import androidx.lifecycle.LifecycleOwner
4+
import androidx.lifecycle.LiveData
5+
import androidx.lifecycle.Observer
6+
7+
fun <T> LifecycleOwner.observe(liveData: LiveData<T>, action: (t: T) -> Unit) {
8+
liveData.observe(this, Observer { it?.let { t -> action(t) } })
9+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.ddd.attendance.check.extension
2+
3+
import android.content.Context
4+
import android.widget.Toast
5+
6+
fun Context.showShortToast(msg: String) {
7+
Toast.makeText(this, msg, Toast.LENGTH_SHORT).show()
8+
}

0 commit comments

Comments
 (0)