diff --git a/App.tsx b/App.tsx index 24c65cd6..db382903 100644 --- a/App.tsx +++ b/App.tsx @@ -285,6 +285,7 @@ import PushNotificationManager, { import {initializeFirebase} from './db/initializeFirebase'; import {ChannelOpenFeeInformation} from './app/components/admin/homeComponents/receiveBitcoin'; import {GestureHandlerRootView} from 'react-native-gesture-handler'; +import GetThemeColors from './app/hooks/themeColors'; const Stack = createNativeStackNavigator(); @@ -320,7 +321,8 @@ function ResetStack(): JSX.Element | null { const [isLoggedIn, setIsLoggedIn] = useState(false); const [isloaded, setIsLoaded] = useState(false); - const {setDeepLinkContent} = useGlobalContextProvider(); + const {setDeepLinkContent, theme} = useGlobalContextProvider(); + const {backgroundColor} = GetThemeColors(); // Memoize handleDeepLink const handleDeepLink = useCallback( @@ -382,7 +384,19 @@ function ResetStack(): JSX.Element | null { return ; } return ( - + - - */} + {/* + /> */} - + /> */} - + /> */} + @@ -28,6 +28,7 @@ android:name="com.google.firebase.messaging.default_notification_icon" android:resource="@drawable/ic_stat_ic_notification" /> diff --git a/app/assets/icons/arrow-small-left-white.png b/app/assets/icons/arrow-small-left-white.png index 7a9424ac..88fad4d1 100644 Binary files a/app/assets/icons/arrow-small-left-white.png and b/app/assets/icons/arrow-small-left-white.png differ diff --git a/app/assets/icons/arrow-small-left.png b/app/assets/icons/arrow-small-left.png index fd80e198..f1705bab 100644 Binary files a/app/assets/icons/arrow-small-left.png and b/app/assets/icons/arrow-small-left.png differ diff --git a/app/components/admin/homeComponents/apps/chatGPT/chatGPTHome.js b/app/components/admin/homeComponents/apps/chatGPT/chatGPTHome.js index d0e836ac..a11fac65 100644 --- a/app/components/admin/homeComponents/apps/chatGPT/chatGPTHome.js +++ b/app/components/admin/homeComponents/apps/chatGPT/chatGPTHome.js @@ -188,17 +188,15 @@ export default function ChatGPTHome(props) { }) } style={{ - marginLeft: 'auto', - marginRight: 'auto', - flexDirection: 'row', - alignItems: 'center', + ...styles.switchModel, + backgroundColor: backgroundOffset, }}> @@ -547,14 +545,26 @@ const styles = StyleSheet.create({ flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between', + marginBottom: 15, ...CENTER, }, + switchModel: { + marginLeft: 'auto', + marginRight: 'auto', + flexDirection: 'row', + alignItems: 'center', + paddingHorizontal: 10, + paddingVertical: 5, + borderRadius: 8, + }, topBarText: { fontSize: SIZES.large, + marginRight: 5, }, topBarIcon: { - width: 30, - height: 30, + transform: [{rotate: '270deg'}], + width: 20, + height: 20, }, noChatHistoryImgContainer: { diff --git a/app/components/admin/homeComponents/apps/giftCards/giftCardsPage.js b/app/components/admin/homeComponents/apps/giftCards/giftCardsPage.js index bce0bd86..7c5a6994 100644 --- a/app/components/admin/homeComponents/apps/giftCards/giftCardsPage.js +++ b/app/components/admin/homeComponents/apps/giftCards/giftCardsPage.js @@ -184,6 +184,11 @@ export default function GiftCardPage() { {filteredGiftCards.length === 0 || errorMessage ? ( {pinnedContacts} @@ -256,6 +258,7 @@ function PinnedContactElement(props) { const contact = props.contact; const publicKey = getPublicKey(contactsPrivateKey); const navigate = useNavigation(); + const dimenions = useWindowDimensions(); return ( { @@ -276,7 +279,12 @@ function PinnedContactElement(props) { navigate, ) }> - + - + 15 - ? contact.name.slice(0, 13) + '...' - : contact.name || - contact.uniqueName.slice(0, 13) + - `${contact.uniqueName.length > 15 ? '...' : ''}` - } + content={!!contact.name.length ? contact.name : contact.uniqueName} /> {contact.unlookedTransactions != 0 && ( 15 - ? `${contact.name.slice(0, 15)}...` - : contact.name - : contact.uniqueName.length > 15 - ? `${contact.uniqueName.slice(0, 15)}...` - : contact.uniqueName + !!contact.name.length ? contact.name : contact.uniqueName } /> {contact.unlookedTransactions != 0 && ( @@ -419,7 +425,7 @@ export function ContactElement(props) { style={[ styles.hasNotification, { - marginRight: 'auto', + marginRight: 5, backgroundColor: darkModeType && theme ? COLORS.darkModeText @@ -428,7 +434,11 @@ export function ContactElement(props) { ]} /> )} - + {contactElements} @@ -166,26 +167,21 @@ export default function ChooseContactHalfModal() { /> - + 25 - ? `${contact.name.slice(0, 25)}...` - : contact.name - : contact.uniqueName.length > 25 - ? `${contact.uniqueName.slice(0, 25)}...` - : contact.uniqueName + !!contact.name.length ? contact.name : contact.uniqueName } /> diff --git a/app/components/admin/homeComponents/contacts/internalComponents/contactsTransactions.js b/app/components/admin/homeComponents/contacts/internalComponents/contactsTransactions.js index 1bcf4a00..d6331138 100644 --- a/app/components/admin/homeComponents/contacts/internalComponents/contactsTransactions.js +++ b/app/components/admin/homeComponents/contacts/internalComponents/contactsTransactions.js @@ -34,6 +34,7 @@ import { SATSPERBITCOIN, } from '../../../../../constants/math'; import {assetIDS} from '../../../../../functions/liquidWallet/assetIDS'; +import {ThemeText} from '../../../../../functions/CustomElements'; export default function ContactsTransactionItem(props) { const transaction = props.transaction; @@ -703,32 +704,33 @@ function ConfirmedOrSentTransaction({ resizeMode="contain" /> */} - - - {txParsed.isDeclined - ? 'Declined' - : txParsed.isRequest && txParsed.isRedeemed - ? 'Paid request' - : paymentDescription.length > 15 - ? paymentDescription.slice(0, 15) + '...' - : paymentDescription - ? paymentDescription - : props.transaction.wasSent - ? `${ - props.transaction.data?.isRequest ? 'Payment request' : 'Sent' - }` - : `${ - props.transaction.data?.isRequest - ? 'Received payment request' - : 'Received' - }`} - + + diff --git a/app/components/admin/homeComponents/sendBitcoin/components/feeInfo.js b/app/components/admin/homeComponents/sendBitcoin/components/feeInfo.js index e0fa8eb2..8959a111 100644 --- a/app/components/admin/homeComponents/sendBitcoin/components/feeInfo.js +++ b/app/components/admin/homeComponents/sendBitcoin/components/feeInfo.js @@ -15,8 +15,8 @@ export default function SendTransactionFeeInfo({ canSendPayment, convertedSendAmount, sendingAmount, + canUseEcash, }) { - console.log(swapFee, 'TEST'); const {masterInfoObject, nodeInformation, minMaxLiquidSwapAmounts} = useGlobalContextProvider(); //options @@ -35,13 +35,28 @@ export default function SendTransactionFeeInfo({ /> {isLightningPayment ? ( canUseLightning ? ( - ) : ( - // ) ) : canUseLiquid ? ( - <> - {canSendPayment && convertedSendAmount >= 1000 ? ( - - ) : ( - + - ) : // = 1000 - // ? `Liquid transaction fee of ${formatBalanceAmount( - // numberConverter( - // liquidTxFee, - // masterInfoObject.userBalanceDenomination, - // nodeInformation, - // masterInfoObject.userBalanceDenomination != 'fiat' ? 0 : 2, - // ), - // )} ${ - // masterInfoObject.userBalanceDenomination != 'fiat' - // ? 'sats' - // : nodeInformation.fiatStats.coin - // }` - // : '' - // } - // /> - canUseLightning ? ( + /> + ) : ( - ) : ( - // - '' )} ); diff --git a/app/components/admin/homeComponents/sendBitcoin/functions/decodeSendAdress.js b/app/components/admin/homeComponents/sendBitcoin/functions/decodeSendAdress.js index 8b945fe5..27d91019 100644 --- a/app/components/admin/homeComponents/sendBitcoin/functions/decodeSendAdress.js +++ b/app/components/admin/homeComponents/sendBitcoin/functions/decodeSendAdress.js @@ -90,19 +90,15 @@ export default async function decodeSendAddress({ input = await parseInput(btcAdress); } - if (input.type != InputTypeVariant.LN_URL_PAY) { + if (input.type === InputTypeVariant.BOLT11) { const currentTime = Math.floor(Date.now() / 1000); const expirationTime = input.invoice.timestamp + input.invoice.expiry; const isExpired = currentTime > expirationTime; - console.log(isExpired, 'IS EXPIRED'); if (isExpired) { navigate.navigate('ErrorScreen', { errorMessage: 'Invoice is expired', customNavigator: () => goBackFunction(), }); - // Alert.alert('Invoice is expired', '', [ - // {text: 'Ok', onPress: () => goBackFunction()}, - // ]); return; } } @@ -214,22 +210,15 @@ async function setupLNPage({ errorMessage: 'LNURL successfully authenticated', customNavigator: () => goBackFunction(), }); - // Alert.alert('LNURL successfully authenticated', '', [ - // {text: 'Ok', onPress: () => goBackFunction()}, - // ]); } else { navigate.navigate('ErrorScreen', { errorMessage: 'Failed to authenticate LNURL', customNavigator: () => goBackFunction(), }); - // Alert.alert('Failed to authenticate LNURL', '', [ - // {text: 'Ok', onPress: () => goBackFunction()}, - // ]); } return; } else if (input.type === InputTypeVariant.LN_URL_PAY) { const amountMsat = input.data.minSendable; - console.log(input.data); setSendingAmount( `${ @@ -346,20 +335,12 @@ async function setupLNPage({ } setSendingAmount(!input.invoice.amountMsat ? '' : input.invoice.amountMsat); setPaymentInfo(input); - - // setTimeout(() => { - // setIsLoading(false); - // }, 1000); } catch (err) { navigate.navigate('ErrorScreen', { errorMessage: 'Not a valid Address', customNavigator: () => goBackFunction(), }); - // Alert.alert( - // 'Not a valid LN Address', - // 'Please try again with a bolt 11 address', - // [{text: 'Ok', onPress: () => goBackFunction()}], - // ); + console.log(err); } } diff --git a/app/constants/index.js b/app/constants/index.js index c4cd5d2e..7f37c8e9 100644 --- a/app/constants/index.js +++ b/app/constants/index.js @@ -32,6 +32,8 @@ const ECASH_KEYSET_STORAGE = 'ECASH_KEYSET_STORAGE'; const BREEZ_WORKING_DIR_KEY = 'BREEZ_WORKING_DIR'; const QUICK_PAY_STORAGE_KEY = 'FAST_PAY_SETTINGS'; +const BLITZ_DEFAULT_PAYMENT_DESCRIPTION = 'Blitz Wallet'; + const CHATGPT_INPUT_COST = 10 / 1000000; const CHATGPT_OUTPUT_COST = 30 / 1000000; @@ -67,4 +69,5 @@ export { ECASH_KEYSET_STORAGE, BREEZ_WORKING_DIR_KEY, QUICK_PAY_STORAGE_KEY, + BLITZ_DEFAULT_PAYMENT_DESCRIPTION, }; diff --git a/app/functions/CustomElements/textTheme.js b/app/functions/CustomElements/textTheme.js index 196aaba5..4c2c76cf 100644 --- a/app/functions/CustomElements/textTheme.js +++ b/app/functions/CustomElements/textTheme.js @@ -2,10 +2,18 @@ import {Text, View} from 'react-native'; import {useGlobalContextProvider} from '../../../context-store/context'; import {COLORS, FONT, SIZES} from '../../constants'; -export default function ThemeText({content, styles, reversed}) { +export default function ThemeText({ + content, + styles, + reversed, + CustomEllipsizeMode, + CustomNumberOfLines, +}) { const {theme} = useGlobalContextProvider(); return ( - - - {props.isFailedPayment - ? t('transactionLabelText.failed') - : props.userBalanceDenomination === 'hidden' - ? '*****' - : props.isLiquidPayment - ? transaction.type === 'outgoing' - ? t('constants.sent') - : t('constants.received') - : !transaction.description - ? transaction.paymentType === 'sent' - ? t('constants.sent') - : t('constants.received') - : transaction.metadata?.includes('usedAppStore') - ? `${t('constants.store')} - ${ - transaction.metadata?.split('"')[5] - }` - : transaction.description.includes('bwrfd') - ? t('constants.faucet') - : transaction.description.length > 12 - ? transaction.description.slice(0, 12) + '...' - : transaction.description} - + + setTimeout(resolve, 5000)); + await new Promise(resolve => setTimeout(resolve, 2000)); } } catch (err) { console.error('Directory Creation Error:', err); diff --git a/app/functions/eCash/index.js b/app/functions/eCash/index.js index 425bdfa1..ae93d9ae 100644 --- a/app/functions/eCash/index.js +++ b/app/functions/eCash/index.js @@ -15,6 +15,7 @@ import { encriptMessage, } from '../messaging/encodingAndDecodingMessages'; import {sumProofsValue} from './proofs'; +import {BLITZ_DEFAULT_PAYMENT_DESCRIPTION} from '../../constants'; const wallets = {}; @@ -34,7 +35,7 @@ async function getECashInvoice({amount, mintURL, descriptoin}) { const mintQuote = await wallet.createMintQuote( amount, - descriptoin || 'No description', + descriptoin || BLITZ_DEFAULT_PAYMENT_DESCRIPTION, ); localStoredQuotes.push(mintQuote); setLocalStorageItem('ecashQuotes', JSON.stringify(localStoredQuotes)); @@ -176,13 +177,6 @@ export async function cleanEcashWalletState(currentMint) { const usableProofs = currentMint.proofs; const spentProofs = await wallet.checkProofsStates(usableProofs); - console.log(spentProofs, spentProofs.length); - - console.log( - usableProofs.filter((proof, index) => { - return spentProofs[index].state === CheckStateEnum.SPENT; - }), - ); return usableProofs.filter((proof, index) => { return spentProofs[index].state === CheckStateEnum.SPENT; diff --git a/app/functions/receiveBitcoin/addressGenerationNew.js b/app/functions/receiveBitcoin/addressGenerationNew.js index 38bd7ae2..263a230b 100644 --- a/app/functions/receiveBitcoin/addressGenerationNew.js +++ b/app/functions/receiveBitcoin/addressGenerationNew.js @@ -18,6 +18,7 @@ import { setLocalStorageItem, } from '../localStorage'; import {isMoreThan40MinOld} from '../rotateAddressDateChecker'; +import {BLITZ_DEFAULT_PAYMENT_DESCRIPTION} from '../../constants'; export async function initializeAddressProcess(wolletInfo) { const {setAddressState, selectedRecieveOption, bitcoinWSSRef} = wolletInfo; @@ -171,7 +172,7 @@ async function generateLightningAddress(wolletInfo) { ) { const invoice = await receivePayment({ amountMsat: receivingAmount * 1000, - description: description || '', + description: description || BLITZ_DEFAULT_PAYMENT_DESCRIPTION, }); if (invoice) { setAddressState(prev => { @@ -230,7 +231,7 @@ async function generateLightningAddress(wolletInfo) { } else { const invoice = await receivePayment({ amountMsat: receivingAmount * 1000, - description: description || '', + description: description || BLITZ_DEFAULT_PAYMENT_DESCRIPTION, }); setAddressState(prev => { return { diff --git a/context-store/eCash.js b/context-store/eCash.js index ef948075..4ccf568e 100644 --- a/context-store/eCash.js +++ b/context-store/eCash.js @@ -115,12 +115,11 @@ export const GlobaleCashVariables = ({children}) => { }; useEffect(() => { - if (ecashTransactions.length == 0) return; - - console.log(parsedEcashInformation, 'IN CLEAN FUNCTION '); + if (eCashBalance == 0) return; + console.log('IN CLEAN EACASH FUNCTION'); cleanWallet(); - }, [ecashTransactions]); + }, [eCashBalance]); const cleanWallet = async () => { try { @@ -129,12 +128,9 @@ export const GlobaleCashVariables = ({children}) => { const newList = await Promise.all( parsedEcashInformation.map(async mint => { const usedProofs = await cleanEcashWalletState(mint); - console.log(usedProofs, 'USED PROOFS'); const availableProofs = removeProofs(usedProofs, mint.proofs); - console.log(availableProofs, 'AVAILABLE PROOFS'); - if (usedProofs.length > 0) { doesNeedToUpdate = true; } @@ -463,7 +459,7 @@ export const GlobaleCashVariables = ({children}) => { const formattedEcashTx = formatEcashTx({ time: Date.now(), amount: eCashPaymentInformation.quote.amount, - fee: realFee, + fee: realFee < 0 ? 0 : realFee, paymentType: 'sent', preImage: payResponse.payment_preimage, }); @@ -507,6 +503,8 @@ export const GlobaleCashVariables = ({children}) => { }, 2000); } } catch (err) { + const newProofs = removeProofs(walletProofsToDelete, globalProofTracker); + globalProofTracker = newProofs; setEcashPaymentInformation({ quote: null, invoice: null, @@ -514,7 +512,7 @@ export const GlobaleCashVariables = ({children}) => { }); saveNewEcashInformation({ transactions: currentMint.transactions, - proofs: [...globalProofTracker, ...returnChangeGlobal], + proofs: [...globalProofTracker, ...returnChangeGlobal, ...proofs], }); if (eCashPaymentInformation.isAutoChannelRebalance || !eCashNavigate) return; diff --git a/context-store/notificationManager.js b/context-store/notificationManager.js index 8d8d7e49..34b1ce68 100644 --- a/context-store/notificationManager.js +++ b/context-store/notificationManager.js @@ -23,8 +23,11 @@ import {addDataToCollection} from '../db'; import * as Device from 'expo-device'; import {useGlobalContextProvider} from './context'; import * as Crypto from 'react-native-quick-crypto'; + import * as TaskManager from 'expo-task-manager'; +import messaging from '@react-native-firebase/messaging'; + const PushNotificationManager = ({children}) => { const {didGetToHomepage, masterInfoObject} = useGlobalContextProvider(); @@ -35,15 +38,19 @@ const PushNotificationManager = ({children}) => { if (!didGetToHomepage || didRunRef.current) return; didRunRef.current = true; async function initNotification() { + console.log('IN INITIALIIZATION FUNCTION'); const {status} = await Notifications.requestPermissionsAsync(); + console.log('AFTER STATUS FUNCTION', status); if (status !== 'granted') { console.log('Notification permission denied'); return; } if (Platform.OS === 'ios') Notifications.setBadgeCountAsync(0); + console.log('BEFROE REGISTER NOTIFICATION'); const deviceToken = await registerForPushNotificationsAsync(); + console.log(deviceToken, 'DEVICE TOKEN'); if (deviceToken) { await checkAndSavePushNotificationToDatabase(deviceToken); } else { @@ -52,6 +59,7 @@ const PushNotificationManager = ({children}) => { registerNotificationHandlers(); } + console.log('BEFORE INIFIALIZATION FUNCTION CALL'); initNotification(); }, [didGetToHomepage]); @@ -193,51 +201,53 @@ const PushNotificationManager = ({children}) => { }; async function registerForPushNotificationsAsync() { - let token; - - if (Platform.OS === 'android') { - await Notifications.setNotificationChannelAsync( - 'blitzWalletNotifications', - { - name: 'blitzWalletNotifications', - importance: Notifications.AndroidImportance.MAX, - vibrationPattern: [0, 250, 250, 250], - lightColor: '#FF231F7C', - }, - ); - } - - if (Device.isDevice) { - const {status: existingStatus} = await Notifications.getPermissionsAsync(); - let finalStatus = existingStatus; - if (existingStatus !== 'granted') { - const {status} = await Notifications.requestPermissionsAsync(); - finalStatus = status; - } - if (finalStatus !== 'granted') { - // Alert.alert('Failed to get push token for push notification!'); - return; + try { + if (Platform.OS === 'android') { + await Notifications.setNotificationChannelAsync( + 'blitzWalletNotifications', + { + name: 'blitzWalletNotifications', + importance: Notifications.AndroidImportance.MAX, + vibrationPattern: [0, 250, 250, 250], + lightColor: '#FF231F7C', + }, + ); } - try { - const projectId = process.env.EXPO_PROJECT_ID; - if (!projectId) { - throw new Error('Project ID not found'); + + if (Device.isDevice) { + const permissionsResult = await Notifications.getPermissionsAsync(); + + let finalStatus = permissionsResult.status; + + if (finalStatus !== 'granted') { + const requestResult = await Notifications.requestPermissionsAsync(); + + finalStatus = requestResult.status; + } + + if (finalStatus !== 'granted') { + console.log('PERMISSIONS NOT GRANTED'); + return false; + } + + let options = { + projectId: process.env.EXPO_PROJECT_ID, + }; + if (Platform.OS === 'ios') { + const token = await messaging().getAPNSToken(); + options.devicePushToken = {type: 'ios', data: token}; } - token = ( - await Notifications.getExpoPushTokenAsync({ - projectId: process.env.EXPO_PROJECT_ID, - }) - ).data; - console.log(token, 'PUSH TOKEN'); - } catch (e) { - token = false; - // Alert.alert('Not able to create push token', `${e}`); + + const pushToken = await Notifications.getExpoPushTokenAsync(options); + + return pushToken.data; + } else { + Alert.alert('Must use physical device for Push Notifications'); } - } else { - Alert.alert('Must use physical device for Push Notifications'); + } catch (err) { + console.error('UNEXPECTED ERROR IN FUNCTION', err); + return false; } - - return token; } // Define the task name diff --git a/ios/BlitzWallet.xcodeproj/project.pbxproj b/ios/BlitzWallet.xcodeproj/project.pbxproj index 1a2dbe33..830e3a12 100644 --- a/ios/BlitzWallet.xcodeproj/project.pbxproj +++ b/ios/BlitzWallet.xcodeproj/project.pbxproj @@ -439,8 +439,6 @@ Base, ); mainGroup = 83CBB9F61A601CBA00E9B192; - packageReferences = ( - ); productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */; projectDirPath = ""; projectRoot = ""; @@ -818,7 +816,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = BlitzWallet/BlitzWallet.entitlements; - CURRENT_PROJECT_VERSION = 13; + CURRENT_PROJECT_VERSION = 14; DEVELOPMENT_TEAM = 38WX44YTA6; ENABLE_BITCODE = NO; INFOPLIST_FILE = BlitzWallet/Info.plist; @@ -828,7 +826,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.0.1; + MARKETING_VERSION = 3.0.2; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", @@ -856,7 +854,7 @@ ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CLANG_ENABLE_MODULES = YES; CODE_SIGN_ENTITLEMENTS = BlitzWallet/BlitzWallet.entitlements; - CURRENT_PROJECT_VERSION = 13; + CURRENT_PROJECT_VERSION = 14; DEVELOPMENT_TEAM = 38WX44YTA6; INFOPLIST_FILE = BlitzWallet/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "Blitz Wallet"; @@ -865,7 +863,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 3.0.1; + MARKETING_VERSION = 3.0.2; OTHER_LDFLAGS = ( "$(inherited)", "-ObjC", diff --git a/ios/BlitzWallet/BlitzWallet.entitlements b/ios/BlitzWallet/BlitzWallet.entitlements index 4c129892..039f2899 100644 --- a/ios/BlitzWallet/BlitzWallet.entitlements +++ b/ios/BlitzWallet/BlitzWallet.entitlements @@ -3,7 +3,7 @@ aps-environment - development + production com.apple.developer.associated-domains applinks:blitz-wallet.com diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 399b2896..8e05d18d 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -1245,13 +1245,16 @@ PODS: - Firebase/Firestore (11.5.0): - Firebase/CoreOnly - FirebaseFirestore (~> 11.5.0) + - Firebase/Messaging (11.5.0): + - Firebase/CoreOnly + - FirebaseMessaging (~> 11.5.0) - FirebaseAppCheck (11.5.0): - AppCheckCore (~> 11.0) - FirebaseAppCheckInterop (~> 11.0) - FirebaseCore (= 11.5) - GoogleUtilities/Environment (~> 8.0) - GoogleUtilities/UserDefaults (~> 8.0) - - FirebaseAppCheckInterop (11.5.0) + - FirebaseAppCheckInterop (11.6.0) - FirebaseAuth (11.5.0): - FirebaseAppCheckInterop (~> 11.0) - FirebaseAuthInterop (~> 11.0) @@ -1261,7 +1264,7 @@ PODS: - GoogleUtilities/Environment (~> 8.0) - GTMSessionFetcher/Core (< 5.0, >= 3.4) - RecaptchaInterop (~> 100.0) - - FirebaseAuthInterop (11.5.0) + - FirebaseAuthInterop (11.6.0) - FirebaseCore (11.5.0): - FirebaseCoreInternal (= 11.5) - GoogleUtilities/Environment (~> 8.0) @@ -1290,9 +1293,26 @@ PODS: - gRPC-Core (~> 1.65.0) - leveldb-library (~> 1.22) - nanopb (~> 3.30910.0) - - FirebaseSharedSwift (11.5.0) + - FirebaseInstallations (11.5.0): + - FirebaseCore (= 11.5) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - PromisesObjC (~> 2.4) + - FirebaseMessaging (11.5.0): + - FirebaseCore (= 11.5) + - FirebaseInstallations (~> 11.0) + - GoogleDataTransport (~> 10.0) + - GoogleUtilities/AppDelegateSwizzler (~> 8.0) + - GoogleUtilities/Environment (~> 8.0) + - GoogleUtilities/Reachability (~> 8.0) + - GoogleUtilities/UserDefaults (~> 8.0) + - nanopb (~> 3.30910.0) + - FirebaseSharedSwift (11.6.0) - fmt (9.1.0) - glog (0.3.5) + - GoogleDataTransport (10.1.0): + - nanopb (~> 3.30910.0) + - PromisesObjC (~> 2.4) - GoogleUtilities/AppDelegateSwizzler (8.0.2): - GoogleUtilities/Environment - GoogleUtilities/Logger @@ -3096,6 +3116,11 @@ PODS: - Firebase/Firestore (= 11.5.0) - React-Core - RNFBApp + - RNFBMessaging (21.6.1): + - Firebase/Messaging (= 11.5.0) + - FirebaseCoreExtension + - React-Core + - RNFBApp - RNGestureHandler (2.19.0): - DoubleConversion - glog @@ -3327,6 +3352,7 @@ DEPENDENCIES: - "RNFBAppCheck (from `../node_modules/@react-native-firebase/app-check`)" - "RNFBAuth (from `../node_modules/@react-native-firebase/auth`)" - "RNFBFirestore (from `../node_modules/@react-native-firebase/firestore`)" + - "RNFBMessaging (from `../node_modules/@react-native-firebase/messaging`)" - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) - RNReanimated (from `../node_modules/react-native-reanimated`) - RNScreens (from `../node_modules/react-native-screens`) @@ -3352,7 +3378,10 @@ SPEC REPOS: - FirebaseCoreInternal - FirebaseFirestore - FirebaseFirestoreInternal + - FirebaseInstallations + - FirebaseMessaging - FirebaseSharedSwift + - GoogleDataTransport - GoogleUtilities - "gRPC-C++" - gRPC-Core @@ -3573,6 +3602,8 @@ EXTERNAL SOURCES: :path: "../node_modules/@react-native-firebase/auth" RNFBFirestore: :path: "../node_modules/@react-native-firebase/firestore" + RNFBMessaging: + :path: "../node_modules/@react-native-firebase/messaging" RNGestureHandler: :path: "../node_modules/react-native-gesture-handler" RNReanimated: @@ -3621,17 +3652,20 @@ SPEC CHECKSUMS: FBLazyVector: 38bb611218305c3bc61803e287b8a81c6f63b619 Firebase: 7a56fe4f56b5ab81b86a6822f5b8f909ae6fc7e2 FirebaseAppCheck: 1c4adb8028cc5ec6a8d3d10f18b60293cddc45a4 - FirebaseAppCheckInterop: d265d9f4484e7ec1c591086408840fdd383d1213 + FirebaseAppCheckInterop: 347aa09a805219a31249b58fc956888e9fcb314b FirebaseAuth: d8ad770642af39d1be932094be5f5230efb0ea74 - FirebaseAuthInterop: 1219bee9b23e6ebe84c256a0d95adab53d11c331 + FirebaseAuthInterop: a919d415797d23b7bfe195a04f322b86c65020ef FirebaseCore: 93abc05437f8064cd2bc0a53b768fb0bc5a1d006 FirebaseCoreExtension: ddb2eb987f736b714d30f6386795b52c4670439e FirebaseCoreInternal: f47dd28ae7782e6a4738aad3106071a8fe0af604 FirebaseFirestore: 3f59cb7b6f62b362886743d4c92e83a66b5e0a5d FirebaseFirestoreInternal: d8d71a7f27834573404834172886183f1cd48c3d - FirebaseSharedSwift: 302ac5967857ad7e7388b15382d705b8c8d892aa + FirebaseInstallations: d8063d302a426d114ac531cd82b1e335a0565745 + FirebaseMessaging: 9f4e42053241bd45ce8565c881bfdd9c1df2f7da + FirebaseSharedSwift: a4e5dfca3e210633bb3a3dfb94176c019211948b fmt: 4c2741a687cc09f0634a2e2c72a838b99f1ff120 glog: 69ef571f3de08433d766d614c73a9838a06bf7eb + GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 GoogleUtilities: 26a3abef001b6533cf678d3eb38fd3f614b7872d "gRPC-C++": 2fa52b3141e7789a28a737f251e0c45b4cb20a87 gRPC-Core: a27c294d6149e1c39a7d173527119cfbc3375ce4 @@ -3719,6 +3753,7 @@ SPEC CHECKSUMS: RNFBAppCheck: 4786f8d5c8eb7bf00588248c59d08d99ad8aadb8 RNFBAuth: 15a007eecd6ba7b9e52b45e2b41cdf6fe9f13968 RNFBFirestore: 6db2eb460dd774c0a28210fcee2c80a4afbd54dc + RNFBMessaging: dd213f66f36b249f9ab035efe24dc2a3ede8f8c5 RNGestureHandler: f81137aeaf7a060c491d0a43af0f5ef6a8867250 RNReanimated: 588d6037ed5b6aed59f0a1d08f163efce125d0cb RNScreens: de55b9d7de8a017d1588dcb70415492d0b0597c2 diff --git a/package.json b/package.json index f4979926..8249ecdc 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "@react-native-firebase/app-check": "^21.6.1", "@react-native-firebase/auth": "^21.6.1", "@react-native-firebase/firestore": "^21.6.1", + "@react-native-firebase/messaging": "^21.6.1", "@react-native-voice/voice": "^3.2.4", "@react-navigation/bottom-tabs": "^6.6.1", "@react-navigation/drawer": "^6.7.2", diff --git a/yarn.lock b/yarn.lock index 0a6e1baf..021019ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3832,6 +3832,19 @@ __metadata: languageName: node linkType: hard +"@react-native-firebase/messaging@npm:^21.6.1": + version: 21.6.1 + resolution: "@react-native-firebase/messaging@npm:21.6.1" + peerDependencies: + "@react-native-firebase/app": 21.6.1 + expo: ">=47.0.0" + peerDependenciesMeta: + expo: + optional: true + checksum: a187acb8573807790eef9ae47281a5c241b7234075d14030969f62923fd536dacc43c194cd05d9e6fb2b09400f8fc86f50baf8bdfc6cae5da60322f0ce4a2f2a + languageName: node + linkType: hard + "@react-native-voice/voice@npm:^3.2.4": version: 3.2.4 resolution: "@react-native-voice/voice@npm:3.2.4" @@ -5011,6 +5024,7 @@ __metadata: "@react-native-firebase/app-check": ^21.6.1 "@react-native-firebase/auth": ^21.6.1 "@react-native-firebase/firestore": ^21.6.1 + "@react-native-firebase/messaging": ^21.6.1 "@react-native-voice/voice": ^3.2.4 "@react-native/babel-preset": 0.75.2 "@react-native/eslint-config": 0.75.2