Advertisement
BlackZerg

Untitled

Jul 13th, 2021
1,199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 3.22 KB | None | 0 0
  1. private suspend fun fetchFilter(filterId: Int) {
  2.         counter += 1
  3.         _progress.emit(counter)
  4.  
  5.         when (val r = filtersRepository.getUserFilter(filterId)) {
  6.             is Left -> _errors.emit(r.value)
  7.             is Right -> with(r.value.data) {
  8.                 isFilterChanged = true
  9.                 _isCallEnabled.emit(canCall)
  10.                 groupIds?.let { _listGroupIds.emit(it) }
  11.                 eventIds?.let { _listEventIds.emit(it) }
  12.                 _type.emit(type)
  13.                 filterName?.let { _filterName.emit(it) }
  14.                 onSetFilterData(period)
  15.                 doUpdateFiltersTable(this)
  16.                 getFilterInfo(filterId)
  17.             }
  18.         }
  19.  
  20.         counter -= 1
  21.         _progress.emit(counter)
  22.     }
  23.  
  24.     private suspend fun onSetFilterData(filterData: FilterModelData?) {
  25.         _filterRule.emit(filterData?.let {
  26.             when {
  27.                 it.daily != null -> {
  28.                     _fromTime.emit(it.daily?.fromTime ?: "00:00")
  29.                     _toTime.emit(it.daily?.toTime ?: "23:59")
  30.                     FilterRule.DAILY
  31.                 }
  32.                 !it.table.isNullOrEmpty() && (it.table as List).size > 0 -> {
  33.                     it.table?.also { t -> _tables.emit(t) }
  34.                     FilterRule.SCHEDULE
  35.                 }
  36.                 else -> FilterRule.ALWAYS
  37.             }
  38.         } ?: FilterRule.ALWAYS)
  39.     }
  40.  
  41.     private suspend fun doUpdateFiltersTable(filter: FilterModel) {
  42.         when (val r = dbRepository.insertFilter(
  43.             Filters(
  44.                 filterId = filter.id,
  45.                 userId = filter.userId,
  46.                 type = filter.type,
  47.                 filterName = filter.filterName,
  48.                 data = filter.period,
  49.                 isCanCall = filter.canCall,
  50.                 photoUri = null,
  51.                 eventIds = filter.eventIds,
  52.                 groupIds = filter.groupIds,
  53.                 group_name = filter.groupIds?.let {
  54.                     it.first().id?.let { id -> GroupsName.value(id)?.groupName }
  55.                 } ?: NO_GROUP
  56.             )
  57.         )) {
  58.             is Left -> _errors.emit(r.value)
  59.             is Right -> Unit
  60.         }
  61.     }
  62.  
  63.     private suspend fun getFilterInfo(filterId: Int) {
  64.         when (val r = filtersRepository.getUserFilter(filterId)) {
  65.             is Left -> _errors.emit(r.value)
  66.             is Right -> doUpdateFilterDb(listOf(r.value.data))
  67.         }
  68.     }
  69.  
  70.     /**
  71.      * Update DB with filter info
  72.      */
  73.     private suspend fun doUpdateFilterDb(filters: List<FilterModel>) {
  74.         when (val r = dbRepository.updateFilters(
  75.             filters.map {
  76.                 Filters(
  77.                     filterId = it.id,
  78.                     userId = it.userId,
  79.                     type = it.type,
  80.                     filterName = it.filterName,
  81.                     data = it.period,
  82.                     isCanCall = it.canCall,
  83.                     photoUri = null,
  84.                     eventIds = it.eventIds,
  85.                     groupIds = it.groupIds,
  86.                     group_name = groupName
  87.                 )
  88.             }
  89.         )) {
  90.             is Left -> _errors.emit(r.value)
  91.             is Right -> Unit
  92.         }
  93.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement