55package app.tauri.notification
66
77import android.annotation.SuppressLint
8- import android.content.ClipData.Item
98import android.text.format.DateUtils
109import com.fasterxml.jackson.annotation.JsonFormat
10+ import com.fasterxml.jackson.annotation.JsonProperty
1111import com.fasterxml.jackson.core.JsonGenerator
1212import com.fasterxml.jackson.core.JsonParser
1313import com.fasterxml.jackson.core.JsonProcessingException
@@ -17,18 +17,33 @@ import com.fasterxml.jackson.databind.JsonNode
1717import com.fasterxml.jackson.databind.SerializerProvider
1818import com.fasterxml.jackson.databind.annotation.JsonDeserialize
1919import com.fasterxml.jackson.databind.annotation.JsonSerialize
20+ import com.fasterxml.jackson.databind.deser.std.StdDeserializer
2021import com.fasterxml.jackson.databind.ser.std.StdSerializer
2122import java.io.IOException
2223import java.text.SimpleDateFormat
2324import java.util.Calendar
2425import java.util.Date
2526import java.util.TimeZone
2627
27-
2828const val JS_DATE_FORMAT = " yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
2929
3030enum class NotificationInterval {
31- Year , Month , TwoWeeks , Week , Day , Hour , Minute , Second
31+ @JsonProperty(" year" )
32+ Year ,
33+ @JsonProperty(" month" )
34+ Month ,
35+ @JsonProperty(" twoWeeks" )
36+ TwoWeeks ,
37+ @JsonProperty(" week" )
38+ Week ,
39+ @JsonProperty(" day" )
40+ Day ,
41+ @JsonProperty(" hour" )
42+ Hour ,
43+ @JsonProperty(" minute" )
44+ Minute ,
45+ @JsonProperty(" second" )
46+ Second
3247}
3348
3449fun getIntervalTime (interval : NotificationInterval , count : Int ): Long {
@@ -50,9 +65,24 @@ fun getIntervalTime(interval: NotificationInterval, count: Int): Long {
5065@JsonSerialize(using = NotificationScheduleSerializer ::class )
5166sealed class NotificationSchedule {
5267 // At specific moment of time (with repeating option)
53- class At (@JsonFormat(shape = JsonFormat .Shape .STRING , pattern = JS_DATE_FORMAT ) var date : Date , val repeating : Boolean = false , val allowWhileIdle : Boolean = false ): NotificationSchedule()
54- class Interval (val interval : DateMatch , val allowWhileIdle : Boolean = false ): NotificationSchedule()
55- class Every (val interval : NotificationInterval , val count : Int = 0 , val allowWhileIdle : Boolean = false ): NotificationSchedule()
68+ @JsonDeserialize
69+ class At : NotificationSchedule () {
70+ @JsonFormat(shape = JsonFormat .Shape .STRING , pattern = JS_DATE_FORMAT )
71+ lateinit var date: Date
72+ var repeating: Boolean = false
73+ var allowWhileIdle: Boolean = false
74+ }
75+ @JsonDeserialize
76+ class Interval : NotificationSchedule () {
77+ lateinit var interval: DateMatch
78+ var allowWhileIdle: Boolean = false
79+ }
80+ @JsonDeserialize
81+ class Every : NotificationSchedule () {
82+ lateinit var interval: NotificationInterval
83+ var count: Int = 0
84+ var allowWhileIdle: Boolean = false
85+ }
5686
5787 fun isRemovable (): Boolean {
5888 return when (this ) {
0 commit comments