From d5e4411767450a067ea107dbf2b907cf5bc443b2 Mon Sep 17 00:00:00 2001 From: Niktia Date: Thu, 20 Feb 2025 11:20:28 +0300 Subject: [PATCH] block un block usecase --- .../work/data/user/UserNetworkDataSource.kt | 26 +++++++++++++++++++ .../myitschool/work/data/user/UserRepoImpl.kt | 7 +++++ .../work/domain/user/BlockUseCase.kt | 15 +++++++++++ .../work/domain/user/UnBlockUseCase.kt | 15 +++++++++++ .../myitschool/work/domain/user/UserRepo.kt | 2 ++ 5 files changed, 65 insertions(+) create mode 100644 app/src/main/java/ru/myitschool/work/domain/user/BlockUseCase.kt create mode 100644 app/src/main/java/ru/myitschool/work/domain/user/UnBlockUseCase.kt diff --git a/app/src/main/java/ru/myitschool/work/data/user/UserNetworkDataSource.kt b/app/src/main/java/ru/myitschool/work/data/user/UserNetworkDataSource.kt index 406e669..bbb0414 100644 --- a/app/src/main/java/ru/myitschool/work/data/user/UserNetworkDataSource.kt +++ b/app/src/main/java/ru/myitschool/work/data/user/UserNetworkDataSource.kt @@ -60,4 +60,30 @@ class UserNetworkDataSource { result.body() } } + + suspend fun block(login : String) : Result = withContext(Dispatchers.IO) { + runCatching { + val result = client.patch("$SERVER_ADDRESS/api/{login}/block") { + header(HttpHeaders.Authorization, token) + } + Log.d("result", "${result.status}") + if (result.status != HttpStatusCode.OK) { + error("Status ${result.status}") + } + result.body() + } + } + + suspend fun unBlock(login : String) : Result = withContext(Dispatchers.IO) { + runCatching { + val result = client.patch("$SERVER_ADDRESS/api/{login}/unblock") { + header(HttpHeaders.Authorization, token) + } + Log.d("result", "${result.status}") + if (result.status != HttpStatusCode.OK) { + error("Status ${result.status}") + } + result.body() + } + } } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt b/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt index 62e1e08..8643d6e 100644 --- a/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt +++ b/app/src/main/java/ru/myitschool/work/data/user/UserRepoImpl.kt @@ -2,6 +2,7 @@ package ru.myitschool.work.data.user import ru.myitschool.work.domain.user.EntranceEntity import ru.myitschool.work.domain.user.UserEntity import ru.myitschool.work.domain.user.UserRepo +import kotlin.contracts.Returns import kotlin.math.log @@ -44,5 +45,11 @@ class UserRepoImpl ( ) } + override suspend fun block(login: String): Result { + return userNetworkDataSource.block(login); + } + override suspend fun unblock(login: String): Result { + return userNetworkDataSource.block(login); + } } \ No newline at end of file diff --git a/app/src/main/java/ru/myitschool/work/domain/user/BlockUseCase.kt b/app/src/main/java/ru/myitschool/work/domain/user/BlockUseCase.kt new file mode 100644 index 0000000..e2dd081 --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/domain/user/BlockUseCase.kt @@ -0,0 +1,15 @@ +package ru.myitschool.work.domain.user + +import ru.myitschool.work.data.auth.AuthStorageDataSource +import ru.myitschool.work.data.user.UserDto + + +public class BlockUseCase ( + private val repo: UserRepo, + private val authStorageDataSource : AuthStorageDataSource +){ + private fun getUserFromStorage() : UserDto? { + return authStorageDataSource.userInfo + } + suspend operator fun invoke(value : String) = repo.block(getUserFromStorage()?.login!!) +} diff --git a/app/src/main/java/ru/myitschool/work/domain/user/UnBlockUseCase.kt b/app/src/main/java/ru/myitschool/work/domain/user/UnBlockUseCase.kt new file mode 100644 index 0000000..b593dcb --- /dev/null +++ b/app/src/main/java/ru/myitschool/work/domain/user/UnBlockUseCase.kt @@ -0,0 +1,15 @@ +package ru.myitschool.work.domain.user + +import ru.myitschool.work.data.auth.AuthStorageDataSource +import ru.myitschool.work.data.user.UserDto + + +public class UnBlockUseCase ( + private val repo: UserRepo, + private val authStorageDataSource : AuthStorageDataSource +){ + private fun getUserFromStorage() : UserDto? { + return authStorageDataSource.userInfo + } + suspend operator fun invoke(value : String) = repo.unblock(getUserFromStorage()?.login!!) +} diff --git a/app/src/main/java/ru/myitschool/work/domain/user/UserRepo.kt b/app/src/main/java/ru/myitschool/work/domain/user/UserRepo.kt index 744a980..76371e7 100644 --- a/app/src/main/java/ru/myitschool/work/domain/user/UserRepo.kt +++ b/app/src/main/java/ru/myitschool/work/domain/user/UserRepo.kt @@ -5,4 +5,6 @@ interface UserRepo { suspend fun getUser(login: String) : Result suspend fun getEntrancesList(login : String) : Result> suspend fun enter(value : String, login : String) : Result + suspend fun block(login: String): Result + suspend fun unblock(login: String): Result } \ No newline at end of file