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