1 package expo.modules.notifications.notifications.model.triggers; 2 3 import android.os.Build; 4 import android.os.Parcel; 5 6 import com.google.firebase.messaging.RemoteMessage; 7 8 import androidx.annotation.Nullable; 9 import androidx.annotation.RequiresApi; 10 import expo.modules.notifications.notifications.interfaces.NotificationTrigger; 11 12 /** 13 * A trigger representing an incoming remote Firebase notification. 14 */ 15 public class FirebaseNotificationTrigger implements NotificationTrigger { 16 private RemoteMessage mRemoteMessage; 17 FirebaseNotificationTrigger(RemoteMessage remoteMessage)18 public FirebaseNotificationTrigger(RemoteMessage remoteMessage) { 19 mRemoteMessage = remoteMessage; 20 } 21 FirebaseNotificationTrigger(Parcel in)22 private FirebaseNotificationTrigger(Parcel in) { 23 mRemoteMessage = in.readParcelable(getClass().getClassLoader()); 24 } 25 getRemoteMessage()26 public RemoteMessage getRemoteMessage() { 27 return mRemoteMessage; 28 } 29 30 @Override describeContents()31 public int describeContents() { 32 return 0; 33 } 34 35 @Override writeToParcel(Parcel dest, int flags)36 public void writeToParcel(Parcel dest, int flags) { 37 dest.writeParcelable(mRemoteMessage, 0); 38 } 39 40 public static final Creator<FirebaseNotificationTrigger> CREATOR = new Creator<FirebaseNotificationTrigger>() { 41 @Override 42 public FirebaseNotificationTrigger createFromParcel(Parcel in) { 43 return new FirebaseNotificationTrigger(in); 44 } 45 46 @Override 47 public FirebaseNotificationTrigger[] newArray(int size) { 48 return new FirebaseNotificationTrigger[size]; 49 } 50 }; 51 52 @Nullable 53 @Override 54 @RequiresApi(api = Build.VERSION_CODES.O) getNotificationChannel()55 public String getNotificationChannel() { 56 if (getRemoteMessage().getData().containsKey("channelId")) { 57 return getRemoteMessage().getData().get("channelId"); 58 } 59 return NotificationTrigger.super.getNotificationChannel(); 60 } 61 } 62