mirror of
https://github.com/zhigang1992/react-native-firebase.git
synced 2026-04-08 17:46:45 +08:00
87 lines
2.5 KiB
JavaScript
87 lines
2.5 KiB
JavaScript
/*
|
|
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this library except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*
|
|
*/
|
|
|
|
import {
|
|
generateFirestoreId,
|
|
hasOwnProperty,
|
|
isNumber,
|
|
isObject,
|
|
isString,
|
|
isInteger,
|
|
isUndefined,
|
|
} from '@react-native-firebase/common';
|
|
|
|
export default function remoteMessageOptions(messagingSenderId, remoteMessage) {
|
|
const out = {};
|
|
|
|
if (isUndefined(remoteMessage) || !isObject(remoteMessage)) {
|
|
throw new Error("'remoteMessage' expected an object value");
|
|
}
|
|
|
|
if (!remoteMessage.to) {
|
|
out.to = `${messagingSenderId}@fcm.googleapis.com`;
|
|
} else if (!isString(remoteMessage.to)) {
|
|
throw new Error("'remoteMessage.to' expected a string value");
|
|
} else {
|
|
out.to = remoteMessage.to;
|
|
}
|
|
|
|
if (!remoteMessage.messageId) {
|
|
out.messageId = generateFirestoreId();
|
|
} else if (!isString(remoteMessage.messageId)) {
|
|
throw new Error("'remoteMessage.messageId' expected a string value");
|
|
} else {
|
|
out.messageId = remoteMessage.messageId;
|
|
}
|
|
|
|
if (!hasOwnProperty(remoteMessage, 'ttl')) {
|
|
out.ttl = 3600;
|
|
} else {
|
|
if (!isNumber(remoteMessage.ttl)) {
|
|
throw new Error("'remoteMessage.ttl' expected a number value");
|
|
}
|
|
if (remoteMessage.ttl < 0 || !isInteger(remoteMessage.ttl)) {
|
|
throw new Error("'remoteMessage.ttl' expected a positive integer value");
|
|
}
|
|
out.ttl = remoteMessage.ttl;
|
|
}
|
|
|
|
if (!remoteMessage.data) {
|
|
out.data = {};
|
|
} else if (!isObject(remoteMessage.data)) {
|
|
throw new Error("'remoteMessage.data' expected an object value");
|
|
} else {
|
|
out.data = remoteMessage.data;
|
|
}
|
|
|
|
if (remoteMessage.collapseKey) {
|
|
if (!isString(remoteMessage.collapseKey)) {
|
|
throw new Error("'remoteMessage.collapseKey' expected a string value");
|
|
}
|
|
out.collapseKey = remoteMessage.collapseKey;
|
|
}
|
|
|
|
if (remoteMessage.messageType) {
|
|
if (!isString(remoteMessage.messageType)) {
|
|
throw new Error("'remoteMessage.messageType' expected a string value");
|
|
}
|
|
out.messageType = remoteMessage.messageType;
|
|
}
|
|
|
|
return out;
|
|
}
|