Skip to content

Commit

Permalink
feat: 푸시알림 on/off 요청 시 쇼핑몰 정보 추가
Browse files Browse the repository at this point in the history
  • Loading branch information
ootr47 committed Feb 5, 2024
1 parent 848019d commit 190c616
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ class UpdateAlarmWorker @AssistedInject constructor(
) : CoroutineWorker(appContext, workerParams) {

override suspend fun doWork(): Result {
val inputData = inputData.getString(ARGUMENT_KEY) ?: return Result.failure()
val productShop = inputData.getString(PRODUCT_SHOP) ?: return Result.failure()
val productCode = inputData.getString(PRODUCT_CODE) ?: return Result.failure()

return updateAlarm(inputData)
return updateAlarm(productShop, productCode)
}

private suspend fun updateAlarm(productCode: String): Result {
private suspend fun updateAlarm(productShop: String, productCode: String): Result {
return try {
// TODO: Shop 적용하기
when (productRepository.switchAlert("", productCode)) {
when (productRepository.switchAlert(productShop, productCode)) {
is RepositoryResult.Error -> {
Result.failure()
}
Expand All @@ -46,9 +46,14 @@ class UpdateAlarmWorker @AssistedInject constructor(
}

companion object {
const val ARGUMENT_KEY = "productCode"
fun createWorkRequest(inputString: String): OneTimeWorkRequest {
val inputData = Data.Builder().putString(ARGUMENT_KEY, inputString).build()
const val PRODUCT_CODE = "productCode"
const val PRODUCT_SHOP = "productShop"

fun createWorkRequest(inputString: Pair<String, String>): OneTimeWorkRequest {
val inputData = Data.Builder()
.putString(PRODUCT_SHOP, inputString.first)
.putString(PRODUCT_CODE, inputString.second)
.build()
val constraints = Constraints.Builder().build()
return OneTimeWorkRequestBuilder<UpdateAlarmWorker>()
.setInputData(inputData)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class ProductListFragment : Fragment() {
private val binding get() = _binding!!
private val productListViewModel: ProductListViewModel by viewModels()

private var workRequestSet: MutableSet<String> = mutableSetOf()
private var workRequestSet: MutableSet<Pair<String, String>> = mutableSetOf()

override fun onCreateView(
inflater: LayoutInflater,
Expand Down Expand Up @@ -68,12 +68,11 @@ class ProductListFragment : Fragment() {
}

override fun onToggle(productShop: String, productCode: String, checked: Boolean) {
// TODO: Shop 적용하기
productListViewModel.updateProductAlarmToggle(productCode, checked)
if (workRequestSet.contains(productCode)) {
workRequestSet.remove(productCode)
productListViewModel.updateProductAlarmToggle(productShop, productCode, checked)
if (workRequestSet.contains(Pair(productShop, productCode))) {
workRequestSet.remove(Pair(productShop, productCode))
} else {
workRequestSet.add(productCode)
workRequestSet.add(Pair(productShop, productCode))
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,10 @@ class ProductListViewModel @Inject constructor(
)
}

fun updateProductAlarmToggle(productCode: String, checked: Boolean) {
fun updateProductAlarmToggle(productShop: String, productCode: String, checked: Boolean) {
_state.value = _state.value.copy(
productList = state.value.productList.mapIndexed { _, product ->
if (product.productCode == productCode) {
if (product.productCode == productCode && product.brandType == productShop) {
product.copy(isAlarmOn = checked)
} else {
product
Expand Down

0 comments on commit 190c616

Please sign in to comment.