1 package host.exp.exponent.notifications.model
2 
3 import expo.modules.notifications.notifications.model.NotificationRequest
4 import expo.modules.notifications.notifications.model.NotificationContent
5 import expo.modules.notifications.notifications.interfaces.NotificationTrigger
6 import android.os.Parcel
7 import host.exp.exponent.kernel.ExperienceKey
8 import android.os.Parcelable
9 
10 class ScopedNotificationRequest : NotificationRequest {
11   // We store String instead of ExperienceKey because ScopedNotificationRequest must be serializable.
12   val experienceScopeKeyString: String?
13 
14   constructor(
15     identifier: String,
16     content: NotificationContent,
17     trigger: NotificationTrigger?,
18     experienceScopeKey: String?
19   ) : super(identifier, content, trigger) {
20     experienceScopeKeyString = experienceScopeKey
21   }
22 
23   private constructor(parcel: Parcel) : super(parcel) {
24     experienceScopeKeyString = parcel.readString()
25   }
26 
checkIfBelongsToExperiencenull27   fun checkIfBelongsToExperience(experienceKey: ExperienceKey): Boolean {
28     return if (experienceScopeKeyString == null) {
29       true
30     } else experienceScopeKeyString == experienceKey.scopeKey
31   }
32 
writeToParcelnull33   override fun writeToParcel(dest: Parcel, flags: Int) {
34     super.writeToParcel(dest, flags)
35     dest.writeString(experienceScopeKeyString)
36   }
37 
38   companion object CREATOR : Parcelable.Creator<ScopedNotificationRequest> {
createFromParcelnull39     override fun createFromParcel(parcel: Parcel): ScopedNotificationRequest {
40       return ScopedNotificationRequest(parcel)
41     }
42 
newArraynull43     override fun newArray(size: Int): Array<ScopedNotificationRequest?> {
44       return arrayOfNulls(size)
45     }
46   }
47 }
48