-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPushPreferenceHandler.kt
47 lines (41 loc) · 1.83 KB
/
PushPreferenceHandler.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package com.wafflestudio.snutt.handler
import com.wafflestudio.snutt.middleware.SnuttRestApiDefaultMiddleware
import com.wafflestudio.snutt.notification.data.PushCategory
import com.wafflestudio.snutt.notification.dto.PushPreferenceResponse
import com.wafflestudio.snutt.notification.service.PushPreferenceService
import org.springframework.stereotype.Component
import org.springframework.web.reactive.function.server.ServerRequest
@Component
class PushPreferenceHandler(
private val pushPreferenceService: PushPreferenceService,
snuttRestApiDefaultMiddleware: SnuttRestApiDefaultMiddleware,
) : ServiceHandler(
handlerMiddleware = snuttRestApiDefaultMiddleware,
) {
suspend fun getPushPreferences(req: ServerRequest) =
handle(req) {
val user = req.getContext().user!!
val pushPreferences = pushPreferenceService.getPushPreferences(user)
pushPreferences.map { PushPreferenceResponse(it) }
}
suspend fun enableLectureUpdate(req: ServerRequest) =
handle(req) {
val user = req.getContext().user!!
pushPreferenceService.enablePush(user, PushCategory.LECTURE_UPDATE)
}
suspend fun disableLectureUpdate(req: ServerRequest) =
handle(req) {
val user = req.getContext().user!!
pushPreferenceService.disablePush(user, PushCategory.LECTURE_UPDATE)
}
suspend fun enableVacancyNotification(req: ServerRequest) =
handle(req) {
val user = req.getContext().user!!
pushPreferenceService.enablePush(user, PushCategory.VACANCY_NOTIFICATION)
}
suspend fun disableVacancyNotification(req: ServerRequest) =
handle(req) {
val user = req.getContext().user!!
pushPreferenceService.disablePush(user, PushCategory.VACANCY_NOTIFICATION)
}
}