112 lines
4.3 KiB
Kotlin
112 lines
4.3 KiB
Kotlin
//package space.luminic.finance.services
|
|
//
|
|
//
|
|
//import com.interaso.webpush.VapidKeys
|
|
//import com.interaso.webpush.WebPushService
|
|
//import kotlinx.coroutines.Dispatchers
|
|
//import kotlinx.coroutines.coroutineScope
|
|
//import kotlinx.coroutines.launch
|
|
//import kotlinx.coroutines.reactive.awaitSingle
|
|
//import kotlinx.serialization.encodeToString
|
|
//import kotlinx.serialization.json.Json
|
|
//import org.slf4j.LoggerFactory
|
|
//import org.springframework.dao.DuplicateKeyException
|
|
//import org.springframework.stereotype.Service
|
|
//import space.luminic.finance.models.PushMessage
|
|
//import space.luminic.finance.models.Subscription
|
|
//import space.luminic.finance.models.User
|
|
//import space.luminic.finance.repos.SubscriptionRepo
|
|
//import space.luminic.finance.services.VapidConstants.VAPID_PRIVATE_KEY
|
|
//import space.luminic.finance.services.VapidConstants.VAPID_PUBLIC_KEY
|
|
//import space.luminic.finance.services.VapidConstants.VAPID_SUBJECT
|
|
//import kotlin.collections.forEach
|
|
//import kotlin.jvm.javaClass
|
|
//import kotlin.text.orEmpty
|
|
//
|
|
//object VapidConstants {
|
|
// const val VAPID_PUBLIC_KEY =
|
|
// "BKmMyBUhpkcmzYWcYsjH_spqcy0zf_8eVtZo60f7949TgLztCmv3YD0E_vtV2dTfECQ4sdLdPK3ICDcyOkCqr84"
|
|
// const val VAPID_PRIVATE_KEY = "YeJH_0LhnVYN6RdxMidgR6WMYlpGXTJS3HjT9V3NSGI"
|
|
// const val VAPID_SUBJECT = "mailto:voroninvyu@gmail.com"
|
|
//}
|
|
//
|
|
//@Service
|
|
//class SubscriptionService(private val subscriptionRepo: SubscriptionRepo) {
|
|
//
|
|
// private val logger = LoggerFactory.getLogger(javaClass)
|
|
// private val pushService =
|
|
// WebPushService(
|
|
// subject = VAPID_SUBJECT,
|
|
// vapidKeys = VapidKeys.fromUncompressedBytes(VAPID_PUBLIC_KEY, VAPID_PRIVATE_KEY)
|
|
// )
|
|
//
|
|
//
|
|
// suspend fun sendToSpaceOwner(ownerId: String, message: PushMessage) = coroutineScope {
|
|
// val ownerTokens = subscriptionRepo.findByUserIdAndIsActive(ObjectId(ownerId)).collectList().awaitSingle()
|
|
//
|
|
// ownerTokens.forEach { token ->
|
|
// launch(Dispatchers.IO) { // Теперь мы точно в корутин скоупе
|
|
// try {
|
|
// sendNotification(token.endpoint, token.p256dh, token.auth, message)
|
|
// } catch (e: Exception) {
|
|
// logger.error("Ошибка при отправке уведомления: ${e.message}", e)
|
|
// }
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
//
|
|
// suspend fun sendNotification(endpoint: String, p256dh: String, auth: String, payload: PushMessage) {
|
|
// try {
|
|
// pushService.send(
|
|
// payload = Json.encodeToString(payload),
|
|
// endpoint = endpoint,
|
|
// p256dh = p256dh,
|
|
// auth = auth
|
|
// )
|
|
// logger.info("Уведомление успешно отправлено на endpoint: $endpoint")
|
|
//
|
|
// } catch (e: Exception) {
|
|
// logger.error("Ошибка при отправке уведомления на endpoint $endpoint: ${e.message}")
|
|
// throw e
|
|
// }
|
|
// }
|
|
//
|
|
//
|
|
// suspend fun sendToAll(payload: PushMessage) {
|
|
//
|
|
// subscriptionRepo.findAll().collectList().awaitSingle().forEach { sub ->
|
|
//
|
|
// try {
|
|
// sendNotification(sub.endpoint, sub.p256dh, sub.auth, payload)
|
|
// } catch (e: Exception) {
|
|
// sub.isActive = false
|
|
// subscriptionRepo.save(sub).awaitSingle()
|
|
// }
|
|
// }
|
|
// }
|
|
//
|
|
//
|
|
// suspend fun subscribe(subscriptionDTO: SubscriptionDTO, user: User): String {
|
|
// val subscription = Subscription(
|
|
// id = null,
|
|
// user = user,
|
|
// endpoint = subscriptionDTO.endpoint,
|
|
// auth = subscriptionDTO.keys["auth"].orEmpty(),
|
|
// p256dh = subscriptionDTO.keys["p256dh"].orEmpty(),
|
|
// isActive = true
|
|
// )
|
|
//
|
|
// return try {
|
|
// val savedSubscription = subscriptionRepo.save(subscription).awaitSingle()
|
|
// "Subscription created with ID: ${savedSubscription.id}"
|
|
// } catch (e: DuplicateKeyException) {
|
|
// logger.info("Subscription already exists. Skipping.")
|
|
// "Subscription already exists. Skipping."
|
|
// } catch (e: Exception) {
|
|
// logger.error("Error while saving subscription: ${e.message}")
|
|
// throw kotlin.RuntimeException("Error while saving subscription")
|
|
// }
|
|
// }
|
|
//}
|