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