290 lines
11 KiB
Java
290 lines
11 KiB
Java
package com.google.firebase.messaging;
|
|
|
|
import C.w;
|
|
import android.content.res.Resources;
|
|
import android.graphics.Color;
|
|
import android.net.Uri;
|
|
import android.os.Bundle;
|
|
import android.text.TextUtils;
|
|
import android.util.Log;
|
|
import com.google.firebase.messaging.Constants;
|
|
import java.util.Arrays;
|
|
import java.util.MissingFormatArgumentException;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
|
|
/* loaded from: classes3.dex */
|
|
public class NotificationParams {
|
|
private static final int COLOR_TRANSPARENT_IN_HEX = -16777216;
|
|
private static final int EMPTY_JSON_ARRAY_LENGTH = 1;
|
|
private static final String TAG = "NotificationParams";
|
|
private static final int VISIBILITY_MAX = 1;
|
|
private static final int VISIBILITY_MIN = -1;
|
|
private final Bundle data;
|
|
|
|
public NotificationParams(Bundle bundle) {
|
|
if (bundle == null) {
|
|
throw new NullPointerException(Constants.ScionAnalytics.MessageType.DATA_MESSAGE);
|
|
}
|
|
this.data = new Bundle(bundle);
|
|
}
|
|
|
|
private static int getLightColor(String str) {
|
|
int parseColor = Color.parseColor(str);
|
|
if (parseColor != COLOR_TRANSPARENT_IN_HEX) {
|
|
return parseColor;
|
|
}
|
|
throw new IllegalArgumentException("Transparent color is invalid");
|
|
}
|
|
|
|
private static boolean isAnalyticsKey(String str) {
|
|
return str.startsWith(Constants.AnalyticsKeys.PREFIX) || str.equals(Constants.MessagePayloadKeys.FROM);
|
|
}
|
|
|
|
private static boolean isReservedKey(String str) {
|
|
return str.startsWith(Constants.MessagePayloadKeys.RESERVED_CLIENT_LIB_PREFIX) || str.startsWith(Constants.MessageNotificationKeys.NOTIFICATION_PREFIX) || str.startsWith(Constants.MessageNotificationKeys.NOTIFICATION_PREFIX_OLD);
|
|
}
|
|
|
|
private static String keyWithOldPrefix(String str) {
|
|
return !str.startsWith(Constants.MessageNotificationKeys.NOTIFICATION_PREFIX) ? str : str.replace(Constants.MessageNotificationKeys.NOTIFICATION_PREFIX, Constants.MessageNotificationKeys.NOTIFICATION_PREFIX_OLD);
|
|
}
|
|
|
|
private String normalizePrefix(String str) {
|
|
if (!this.data.containsKey(str) && str.startsWith(Constants.MessageNotificationKeys.NOTIFICATION_PREFIX)) {
|
|
String keyWithOldPrefix = keyWithOldPrefix(str);
|
|
if (this.data.containsKey(keyWithOldPrefix)) {
|
|
return keyWithOldPrefix;
|
|
}
|
|
}
|
|
return str;
|
|
}
|
|
|
|
private static String userFriendlyKey(String str) {
|
|
return str.startsWith(Constants.MessageNotificationKeys.NOTIFICATION_PREFIX) ? str.substring(6) : str;
|
|
}
|
|
|
|
public boolean getBoolean(String str) {
|
|
String string = getString(str);
|
|
return "1".equals(string) || Boolean.parseBoolean(string);
|
|
}
|
|
|
|
public Integer getInteger(String str) {
|
|
String string = getString(str);
|
|
if (TextUtils.isEmpty(string)) {
|
|
return null;
|
|
}
|
|
try {
|
|
return Integer.valueOf(Integer.parseInt(string));
|
|
} catch (NumberFormatException unused) {
|
|
Log.w(TAG, "Couldn't parse value of " + userFriendlyKey(str) + "(" + string + ") into an int");
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public JSONArray getJSONArray(String str) {
|
|
String string = getString(str);
|
|
if (TextUtils.isEmpty(string)) {
|
|
return null;
|
|
}
|
|
try {
|
|
return new JSONArray(string);
|
|
} catch (JSONException unused) {
|
|
Log.w(TAG, "Malformed JSON for key " + userFriendlyKey(str) + ": " + string + ", falling back to default");
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public int[] getLightSettings() {
|
|
JSONArray jSONArray = getJSONArray(Constants.MessageNotificationKeys.LIGHT_SETTINGS);
|
|
if (jSONArray == null) {
|
|
return null;
|
|
}
|
|
int[] iArr = new int[3];
|
|
try {
|
|
if (jSONArray.length() != 3) {
|
|
throw new JSONException("lightSettings don't have all three fields");
|
|
}
|
|
iArr[0] = getLightColor(jSONArray.optString(0));
|
|
iArr[1] = jSONArray.optInt(1);
|
|
iArr[2] = jSONArray.optInt(2);
|
|
return iArr;
|
|
} catch (IllegalArgumentException e4) {
|
|
Log.w(TAG, "LightSettings is invalid: " + jSONArray + ". " + e4.getMessage() + ". Skipping setting LightSettings");
|
|
return null;
|
|
} catch (JSONException unused) {
|
|
Log.w(TAG, "LightSettings is invalid: " + jSONArray + ". Skipping setting LightSettings");
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public Uri getLink() {
|
|
String string = getString(Constants.MessageNotificationKeys.LINK_ANDROID);
|
|
if (TextUtils.isEmpty(string)) {
|
|
string = getString(Constants.MessageNotificationKeys.LINK);
|
|
}
|
|
if (TextUtils.isEmpty(string)) {
|
|
return null;
|
|
}
|
|
return Uri.parse(string);
|
|
}
|
|
|
|
public Object[] getLocalizationArgsForKey(String str) {
|
|
JSONArray jSONArray = getJSONArray(str + Constants.MessageNotificationKeys.TEXT_ARGS_SUFFIX);
|
|
if (jSONArray == null) {
|
|
return null;
|
|
}
|
|
int length = jSONArray.length();
|
|
String[] strArr = new String[length];
|
|
for (int i = 0; i < length; i++) {
|
|
strArr[i] = jSONArray.optString(i);
|
|
}
|
|
return strArr;
|
|
}
|
|
|
|
public String getLocalizationResourceForKey(String str) {
|
|
return getString(str + Constants.MessageNotificationKeys.TEXT_RESOURCE_SUFFIX);
|
|
}
|
|
|
|
public String getLocalizedString(Resources resources, String str, String str2) {
|
|
String localizationResourceForKey = getLocalizationResourceForKey(str2);
|
|
if (TextUtils.isEmpty(localizationResourceForKey)) {
|
|
return null;
|
|
}
|
|
int identifier = resources.getIdentifier(localizationResourceForKey, "string", str);
|
|
if (identifier == 0) {
|
|
Log.w(TAG, userFriendlyKey(w.n(str2, Constants.MessageNotificationKeys.TEXT_RESOURCE_SUFFIX)) + " resource not found: " + str2 + " Default value will be used.");
|
|
return null;
|
|
}
|
|
Object[] localizationArgsForKey = getLocalizationArgsForKey(str2);
|
|
if (localizationArgsForKey == null) {
|
|
return resources.getString(identifier);
|
|
}
|
|
try {
|
|
return resources.getString(identifier, localizationArgsForKey);
|
|
} catch (MissingFormatArgumentException e4) {
|
|
Log.w(TAG, "Missing format argument for " + userFriendlyKey(str2) + ": " + Arrays.toString(localizationArgsForKey) + " Default value will be used.", e4);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public Long getLong(String str) {
|
|
String string = getString(str);
|
|
if (TextUtils.isEmpty(string)) {
|
|
return null;
|
|
}
|
|
try {
|
|
return Long.valueOf(Long.parseLong(string));
|
|
} catch (NumberFormatException unused) {
|
|
Log.w(TAG, "Couldn't parse value of " + userFriendlyKey(str) + "(" + string + ") into a long");
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public String getNotificationChannelId() {
|
|
return getString(Constants.MessageNotificationKeys.CHANNEL);
|
|
}
|
|
|
|
public Integer getNotificationCount() {
|
|
Integer integer = getInteger(Constants.MessageNotificationKeys.NOTIFICATION_COUNT);
|
|
if (integer == null) {
|
|
return null;
|
|
}
|
|
if (integer.intValue() >= 0) {
|
|
return integer;
|
|
}
|
|
Log.w(Constants.TAG, "notificationCount is invalid: " + integer + ". Skipping setting notificationCount.");
|
|
return null;
|
|
}
|
|
|
|
public Integer getNotificationPriority() {
|
|
Integer integer = getInteger(Constants.MessageNotificationKeys.NOTIFICATION_PRIORITY);
|
|
if (integer == null) {
|
|
return null;
|
|
}
|
|
if (integer.intValue() >= -2 && integer.intValue() <= 2) {
|
|
return integer;
|
|
}
|
|
Log.w(Constants.TAG, "notificationPriority is invalid " + integer + ". Skipping setting notificationPriority.");
|
|
return null;
|
|
}
|
|
|
|
public String getPossiblyLocalizedString(Resources resources, String str, String str2) {
|
|
String string = getString(str2);
|
|
return !TextUtils.isEmpty(string) ? string : getLocalizedString(resources, str, str2);
|
|
}
|
|
|
|
public String getSoundResourceName() {
|
|
String string = getString(Constants.MessageNotificationKeys.SOUND_2);
|
|
return TextUtils.isEmpty(string) ? getString(Constants.MessageNotificationKeys.SOUND) : string;
|
|
}
|
|
|
|
public String getString(String str) {
|
|
return this.data.getString(normalizePrefix(str));
|
|
}
|
|
|
|
public long[] getVibrateTimings() {
|
|
JSONArray jSONArray = getJSONArray(Constants.MessageNotificationKeys.VIBRATE_TIMINGS);
|
|
if (jSONArray == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
if (jSONArray.length() <= 1) {
|
|
throw new JSONException("vibrateTimings have invalid length");
|
|
}
|
|
int length = jSONArray.length();
|
|
long[] jArr = new long[length];
|
|
for (int i = 0; i < length; i++) {
|
|
jArr[i] = jSONArray.optLong(i);
|
|
}
|
|
return jArr;
|
|
} catch (NumberFormatException | JSONException unused) {
|
|
Log.w(TAG, "User defined vibrateTimings is invalid: " + jSONArray + ". Skipping setting vibrateTimings.");
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public Integer getVisibility() {
|
|
Integer integer = getInteger(Constants.MessageNotificationKeys.VISIBILITY);
|
|
if (integer == null) {
|
|
return null;
|
|
}
|
|
if (integer.intValue() >= -1 && integer.intValue() <= 1) {
|
|
return integer;
|
|
}
|
|
Log.w(TAG, "visibility is invalid: " + integer + ". Skipping setting visibility.");
|
|
return null;
|
|
}
|
|
|
|
public boolean hasImage() {
|
|
return !TextUtils.isEmpty(getString(Constants.MessageNotificationKeys.IMAGE_URL));
|
|
}
|
|
|
|
public boolean isNotification() {
|
|
return getBoolean(Constants.MessageNotificationKeys.ENABLE_NOTIFICATION);
|
|
}
|
|
|
|
public Bundle paramsForAnalyticsIntent() {
|
|
Bundle bundle = new Bundle(this.data);
|
|
for (String str : this.data.keySet()) {
|
|
if (!isAnalyticsKey(str)) {
|
|
bundle.remove(str);
|
|
}
|
|
}
|
|
return bundle;
|
|
}
|
|
|
|
public Bundle paramsWithReservedKeysRemoved() {
|
|
Bundle bundle = new Bundle(this.data);
|
|
for (String str : this.data.keySet()) {
|
|
if (isReservedKey(str)) {
|
|
bundle.remove(str);
|
|
}
|
|
}
|
|
return bundle;
|
|
}
|
|
|
|
public static boolean isNotification(Bundle bundle) {
|
|
return "1".equals(bundle.getString(Constants.MessageNotificationKeys.ENABLE_NOTIFICATION)) || "1".equals(bundle.getString(keyWithOldPrefix(Constants.MessageNotificationKeys.ENABLE_NOTIFICATION)));
|
|
}
|
|
}
|