Merge pull request #1698 from ecency/feature/firebase-push

Changed appcenter push with firebase push
This commit is contained in:
Feruz M 2020-07-15 21:02:56 +03:00 committed by GitHub
commit bbe157584e
15 changed files with 417 additions and 128 deletions

View File

@ -122,7 +122,7 @@ def jscFlavor = 'org.webkit:android-jsc:+'
def enableHermes = project.ext.react.get("enableHermes", false);
configurations.all {
resolutionStrategy {
force "com.facebook.soloader:soloader:0.8.0"
force "com.facebook.soloader:soloader:0.8.1"
}
}
android {
@ -212,6 +212,7 @@ dependencies {
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
implementation 'com.android.support:multidex:2.0.1'
implementation project(':@react-native-community_viewpager')
implementation 'com.google.firebase:firebase-analytics:17.2.3'
if (enableHermes) {
def hermesPath = "../../node_modules/hermes-engine/android/";

View File

@ -57,9 +57,9 @@
<meta-data
android:name="com.google.firebase.messaging.default_notification_icon"
android:resource="@mipmap/ic_notification" />
<meta-data
<!-- <meta-data
android:name="com.google.firebase.messaging.default_notification_color"
android:resource="@color/notification_icon" />
android:resource="@color/notification_icon" /> -->
<meta-data
android:name="com.bugsnag.android.API_KEY"
android:value="88a8a25738939a80ba49f1d5289dbc80" />

View File

@ -29,7 +29,7 @@ buildscript {
dependencies {
classpath('com.android.tools.build:gradle:3.5.2')
classpath 'com.google.gms:google-services:4.0.2'
classpath 'com.google.gms:google-services:4.3.3'
classpath 'com.bugsnag:bugsnag-android-gradle-plugin:4.+'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files

View File

@ -35,6 +35,7 @@ target 'eSteem' do
pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
pod 'rn-fetch-blob', :path => '../node_modules/rn-fetch-blob'
pod 'Firebase/Analytics'
target 'eSteemTests' do
inherit! :search_paths

View File

@ -40,6 +40,57 @@ PODS:
- React-Core (= 0.61.5)
- React-jsi (= 0.61.5)
- ReactCommon/turbomodule/core (= 0.61.5)
- Firebase/Analytics (6.25.0):
- Firebase/Core
- Firebase/Core (6.25.0):
- Firebase/CoreOnly
- FirebaseAnalytics (= 6.5.1)
- Firebase/CoreOnly (6.25.0):
- FirebaseCore (= 6.7.1)
- Firebase/Messaging (6.25.0):
- Firebase/CoreOnly
- FirebaseMessaging (~> 4.4.1)
- FirebaseAnalytics (6.5.1):
- FirebaseCore (~> 6.7)
- FirebaseInstallations (~> 1.2)
- GoogleAppMeasurement (= 6.5.1)
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
- GoogleUtilities/MethodSwizzler (~> 6.0)
- GoogleUtilities/Network (~> 6.0)
- "GoogleUtilities/NSData+zlib (~> 6.0)"
- nanopb (~> 1.30905.0)
- FirebaseAnalyticsInterop (1.5.0)
- FirebaseCore (6.7.1):
- FirebaseCoreDiagnostics (~> 1.3)
- FirebaseCoreDiagnosticsInterop (~> 1.2)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/Logger (~> 6.5)
- FirebaseCoreDiagnostics (1.3.0):
- FirebaseCoreDiagnosticsInterop (~> 1.2)
- GoogleDataTransportCCTSupport (~> 3.1)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/Logger (~> 6.5)
- nanopb (~> 1.30905.0)
- FirebaseCoreDiagnosticsInterop (1.2.0)
- FirebaseInstallations (1.2.0):
- FirebaseCore (~> 6.6)
- GoogleUtilities/Environment (~> 6.6)
- GoogleUtilities/UserDefaults (~> 6.6)
- PromisesObjC (~> 1.2)
- FirebaseInstanceID (4.3.4):
- FirebaseCore (~> 6.6)
- FirebaseInstallations (~> 1.0)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/UserDefaults (~> 6.5)
- FirebaseMessaging (4.4.1):
- FirebaseAnalyticsInterop (~> 1.5)
- FirebaseCore (~> 6.6)
- FirebaseInstanceID (~> 4.3)
- GoogleUtilities/AppDelegateSwizzler (~> 6.5)
- GoogleUtilities/Environment (~> 6.5)
- GoogleUtilities/Reachability (~> 6.5)
- GoogleUtilities/UserDefaults (~> 6.5)
- Protobuf (>= 3.9.2, ~> 3.9)
- FLAnimatedImage (1.0.12)
- Folly (2018.10.22.00):
- boost-for-react-native
@ -51,10 +102,46 @@ PODS:
- DoubleConversion
- glog
- glog (0.3.5)
- GoogleAppMeasurement (6.5.1):
- GoogleUtilities/AppDelegateSwizzler (~> 6.0)
- GoogleUtilities/MethodSwizzler (~> 6.0)
- GoogleUtilities/Network (~> 6.0)
- "GoogleUtilities/NSData+zlib (~> 6.0)"
- nanopb (~> 1.30905.0)
- GoogleDataTransport (6.1.1)
- GoogleDataTransportCCTSupport (3.1.0):
- GoogleDataTransport (~> 6.1)
- nanopb (~> 1.30905.0)
- GoogleUtilities/AppDelegateSwizzler (6.6.0):
- GoogleUtilities/Environment
- GoogleUtilities/Logger
- GoogleUtilities/Network
- GoogleUtilities/Environment (6.6.0):
- PromisesObjC (~> 1.2)
- GoogleUtilities/Logger (6.6.0):
- GoogleUtilities/Environment
- GoogleUtilities/MethodSwizzler (6.6.0):
- GoogleUtilities/Logger
- GoogleUtilities/Network (6.6.0):
- GoogleUtilities/Logger
- "GoogleUtilities/NSData+zlib"
- GoogleUtilities/Reachability
- "GoogleUtilities/NSData+zlib (6.6.0)"
- GoogleUtilities/Reachability (6.6.0):
- GoogleUtilities/Logger
- GoogleUtilities/UserDefaults (6.6.0):
- GoogleUtilities/Logger
- lottie-ios (3.1.3)
- lottie-react-native (3.3.2):
- lottie-ios (~> 3.1.3)
- React
- nanopb (1.30905.0):
- nanopb/decode (= 1.30905.0)
- nanopb/encode (= 1.30905.0)
- nanopb/decode (1.30905.0)
- nanopb/encode (1.30905.0)
- PromisesObjC (1.2.8)
- Protobuf (3.12.0)
- QBImagePickerController (3.4.0)
- RCTRequired (0.61.5)
- RCTTypeSafety (0.61.5):
@ -277,6 +364,16 @@ PODS:
- React-Core
- RNCAsyncStorage (1.7.1):
- React
- RNCPushNotificationIOS (1.2.0):
- React
- RNFBApp (7.1.0):
- Firebase/CoreOnly (~> 6.25.0)
- React
- RNFBMessaging (7.1.0):
- Firebase/Analytics (~> 6.25.0)
- Firebase/Messaging (~> 6.25.0)
- React
- RNFBApp
- RNGestureHandler (1.5.2):
- React
- RNIap (3.4.15):
@ -309,6 +406,7 @@ DEPENDENCIES:
- DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
- FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
- FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
- Firebase/Analytics
- Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
- glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
- lottie-ios (from `../node_modules/lottie-ios`)
@ -345,6 +443,9 @@ DEPENDENCIES:
- ReactNativeDarkMode (from `../node_modules/react-native-dark-mode`)
- rn-fetch-blob (from `../node_modules/rn-fetch-blob`)
- "RNCAsyncStorage (from `../node_modules/@react-native-community/async-storage`)"
- "RNCPushNotificationIOS (from `../node_modules/@react-native-community/push-notification-ios`)"
- "RNFBApp (from `../node_modules/@react-native-firebase/app`)"
- "RNFBMessaging (from `../node_modules/@react-native-firebase/messaging`)"
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
- RNIap (from `../node_modules/react-native-iap`)
- RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`)
@ -358,7 +459,23 @@ SPEC REPOS:
- AppCenter
- AppCenterReactNativeShared
- boost-for-react-native
- Firebase
- FirebaseAnalytics
- FirebaseAnalyticsInterop
- FirebaseCore
- FirebaseCoreDiagnostics
- FirebaseCoreDiagnosticsInterop
- FirebaseInstallations
- FirebaseInstanceID
- FirebaseMessaging
- FLAnimatedImage
- GoogleAppMeasurement
- GoogleDataTransport
- GoogleDataTransportCCTSupport
- GoogleUtilities
- nanopb
- PromisesObjC
- Protobuf
- QBImagePickerController
- RSKImageCropper
- SDWebImage
@ -448,6 +565,12 @@ EXTERNAL SOURCES:
:path: "../node_modules/rn-fetch-blob"
RNCAsyncStorage:
:path: "../node_modules/@react-native-community/async-storage"
RNCPushNotificationIOS:
:path: "../node_modules/@react-native-community/push-notification-ios"
RNFBApp:
:path: "../node_modules/@react-native-firebase/app"
RNFBMessaging:
:path: "../node_modules/@react-native-firebase/messaging"
RNGestureHandler:
:path: "../node_modules/react-native-gesture-handler"
RNIap:
@ -476,11 +599,27 @@ SPEC CHECKSUMS:
DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
FBLazyVector: aaeaf388755e4f29cd74acbc9e3b8da6d807c37f
FBReactNativeSpec: 118d0d177724c2d67f08a59136eb29ef5943ec75
Firebase: 5719b4f965f76643241a1bb8244483ff6117db39
FirebaseAnalytics: 93565f3f0f0f50a5d8770850bfe6a82eaba5db27
FirebaseAnalyticsInterop: 3f86269c38ae41f47afeb43ebf32a001f58fcdae
FirebaseCore: 6023faeada5afa95a349fccafb40900e32e9ac42
FirebaseCoreDiagnostics: 4a773a47bd83bbd5a9b1ccf1ce7caa8b2d535e67
FirebaseCoreDiagnosticsInterop: 296e2c5f5314500a850ad0b83e9e7c10b011a850
FirebaseInstallations: 2119fb3e46b0a88bfdbf12562f855ee3252462fa
FirebaseInstanceID: cef67c4967c7cecb56ea65d8acbb4834825c587b
FirebaseMessaging: 29543feb343b09546ab3aa04d008ee8595b43c44
FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31
Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
glog: 1f3da668190260b06b429bb211bfbee5cd790c28
GoogleAppMeasurement: 137afe68bfa406c3f4221b9395253d9e5d4654cf
GoogleDataTransport: ad884314b81cdb808fb1d23787b367ff8da4e28a
GoogleDataTransportCCTSupport: d70a561f7d236af529fee598835caad5e25f6d3d
GoogleUtilities: 39530bc0ad980530298e9c4af8549e991fd033b1
lottie-ios: 496ac5cea1bbf1a7bd1f1f472f3232eb1b8d744b
lottie-react-native: 2a1a82bb326ae51331a5520de0cf706733c6db69
nanopb: c43f40fadfe79e8b8db116583945847910cbabc9
PromisesObjC: c119f3cd559f50b7ae681fa59dc1acd19173b7e6
Protobuf: 2793fcd0622a00b546c60e7cbbcc493e043e9bb9
QBImagePickerController: d54cf93db6decf26baf6ed3472f336ef35cae022
RCTRequired: b153add4da6e7dbc44aebf93f3cf4fcae392ddf1
RCTTypeSafety: 9aa1b91d7f9310fc6eadc3cf95126ffe818af320
@ -511,6 +650,9 @@ SPEC CHECKSUMS:
ReactNativeDarkMode: 0178ffca3b10f6a7c9f49d6f9810232b328fa949
rn-fetch-blob: f065bb7ab7fb48dd002629f8bdcb0336602d3cba
RNCAsyncStorage: 44395cb9c7c1523104c2b499eb426ef7aff82bca
RNCPushNotificationIOS: 4d9ffd08f00ef6c1029ebbf4d72fc711eca3ff01
RNFBApp: 25a6476dfd7aac2bcbe984f569875bcea122895b
RNFBMessaging: ea4ce2a6466b3a6dfb46a8c28c38a7989da36a31
RNGestureHandler: 946a7691e41df61e2c4b1884deab41a4cdc3afff
RNIap: b4c77c8bc4501203f4b743126a05da23f10f40b4
RNImageCropPicker: e1d8c3381e5b05a1bdcd13ea57a4f1c020a09cef
@ -521,6 +663,6 @@ SPEC CHECKSUMS:
SDWebImage: c10d14a8883ebd89664f02a422006f66a85c0c5d
Yoga: f2a7cd4280bfe2cca5a7aed98ba0eb3d1310f18b
PODFILE CHECKSUM: d4edbb9c1c57c5484f4893520a7865260cb898d3
PODFILE CHECKSUM: 162b87bf8ea343d40707844f5dfad5d6aa5a4e99
COCOAPODS: 1.8.4

File diff suppressed because one or more lines are too long

View File

@ -13,6 +13,7 @@
#import <AppCenterReactNativeCrashes.h>
#import <AppCenterReactNativePush.h>
#import <BugsnagReactNative/BugsnagReactNative.h>
@import Firebase;
#import <React/RCTBridge.h>
#import <React/RCTBundleURLProvider.h>
@ -30,6 +31,7 @@
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[FIRApp configure];
[AppCenterReactNativePush register];
[AppCenterReactNative register];
[AppCenterReactNativeAnalytics registerWithInitiallyEnabled:true];

View File

@ -33,6 +33,9 @@
"@react-native-community/async-storage": "^1.7.1",
"@react-native-community/cameraroll": "^1.3.0",
"@react-native-community/netinfo": "^5.3.3",
"@react-native-community/push-notification-ios": "^1.2.0",
"@react-native-firebase/app": "^7.1.0",
"@react-native-firebase/messaging": "^7.1.0",
"appcenter": "^2.6.0",
"appcenter-analytics": "^2.6.0",
"appcenter-crashes": "^2.6.0",
@ -70,6 +73,7 @@
"react-native-modal-dropdown": "esteemapp/react-native-modal-dropdown",
"react-native-modal-translucent": "^5.0.0",
"react-native-navigation-bar-color": "^1.0.0",
"react-native-push-notification": "^3.5.1",
"react-native-qrcode-svg": "^6.0.3",
"react-native-reanimated": "^1.3.0",
"react-native-scrollable-tab-view": "esteemapp/react-native-scrollable-tab-view",

View File

@ -85,7 +85,9 @@ class UpvoteContainer extends PureComponent {
if (pendingPayout > 0 && pendingPayout < minimumAmountForPayout) {
warnZeroPayout = true;
}
const { base, quote, sbdPrintRate } = globalProps;
const base = get(globalProps, 'base', 0);
const quote = get(globalProps, 'quote', 0);
const sbdPrintRate = get(globalProps, 'sbdPrintRate', 0);
const SBD_PRINT_RATE_MAX = 10000;
const percent_steem_dollars = get(content, 'percent_steem_dollars') / 20000;
const pending_payout_sbd = pendingPayout * percent_steem_dollars;

View File

@ -3,6 +3,7 @@ import 'react-native-gesture-handler';
import { Provider, connect } from 'react-redux';
import { PersistGate } from 'redux-persist/integration/react';
import { IntlProvider } from 'react-intl';
import firebase from '@react-native-firebase/app';
import { flattenMessages } from './utils/flattenMessages';
import messages from './config/locales';

View File

@ -2,9 +2,7 @@ import { Component } from 'react';
import { Platform, BackHandler, Alert, Linking, AppState } from 'react-native';
import NetInfo from '@react-native-community/netinfo';
import Config from 'react-native-config';
import Push from 'appcenter-push';
import get from 'lodash/get';
import AppCenter from 'appcenter';
import changeNavigationBarColor from 'react-native-navigation-bar-color';
import { connect } from 'react-redux';
import { injectIntl } from 'react-intl';
@ -16,6 +14,8 @@ import {
initialMode as nativeThemeInitialMode,
eventEmitter as nativeThemeEventEmitter,
} from 'react-native-dark-mode';
import messaging from '@react-native-firebase/messaging';
import PushNotification from 'react-native-push-notification';
// Constants
import AUTH_TYPE from '../../../constants/authType';
@ -85,6 +85,9 @@ export const setPreviousAppState = () => {
}, 500);
};
let firebaseOnNotificationOpenedAppListener = null;
let firebaseOnMessageListener = null;
class ApplicationContainer extends Component {
constructor(props) {
super(props);
@ -155,6 +158,14 @@ class ApplicationContainer extends Component {
clearTimeout(this._pinCodeTimer);
}
if (firebaseOnMessageListener) {
firebaseOnMessageListener();
}
if (firebaseOnNotificationOpenedAppListener) {
firebaseOnNotificationOpenedAppListener();
}
this.netListener();
}
@ -277,101 +288,116 @@ class ApplicationContainer extends Component {
}
};
_createPushListener = () => {
_pushNavigate = (notification) => {
const { dispatch } = this.props;
let params = null;
let key = null;
let routeName = null;
Push.setListener({
onPushNotificationReceived(pushNotification) {
if (previousAppState !== 'active') {
const push = get(pushNotification, 'customProperties');
const type = get(push, 'type', '');
const permlink1 = get(push, 'permlink1', '');
const permlink2 = get(push, 'permlink2', '');
const permlink3 = get(push, 'permlink3', '');
//const parentPermlink1 = get(push, 'parent_permlink1', '');
//const parentPermlink2 = get(push, 'parent_permlink2', '');
//const parentPermlink3 = get(push, 'parent_permlink3', '');
if (previousAppState !== 'active' && !!notification) {
const push = get(notification, 'data');
const type = get(push, 'type', '');
const fullPermlink = get(push, 'permlink', '');
const username = get(push, 'target', '');
const activity_id = get(push, 'id', '');
//const fullParentPermlink = `${parentPermlink1}${parentPermlink2}${parentPermlink3}`;
const fullPermlink = `${permlink1}${permlink2}${permlink3}`;
switch (type) {
case 'vote':
case 'unvote':
params = {
author: get(push, 'target', ''),
permlink: fullPermlink,
};
key = fullPermlink;
routeName = ROUTES.SCREENS.POST;
break;
case 'mention':
params = {
author: get(push, 'source', ''),
permlink: fullPermlink,
};
key = fullPermlink;
routeName = ROUTES.SCREENS.POST;
break;
const username = get(push, 'target', '');
const activity_id = get(push, 'id', '');
case 'follow':
case 'unfollow':
case 'ignore':
params = {
username: get(push, 'source', ''),
};
key = get(push, 'source', '');
routeName = ROUTES.SCREENS.PROFILE;
break;
switch (type) {
case 'vote':
case 'unvote':
params = {
author: get(push, 'target', ''),
permlink: fullPermlink,
};
key = fullPermlink;
routeName = ROUTES.SCREENS.POST;
break;
case 'mention':
params = {
author: get(push, 'source', ''),
permlink: fullPermlink,
};
key = fullPermlink;
routeName = ROUTES.SCREENS.POST;
break;
case 'reblog':
params = {
author: get(push, 'target', ''),
permlink: fullPermlink,
};
key = fullPermlink;
routeName = ROUTES.SCREENS.POST;
break;
case 'follow':
case 'unfollow':
case 'ignore':
params = {
username: get(push, 'source', ''),
};
key = get(push, 'source', '');
routeName = ROUTES.SCREENS.PROFILE;
break;
case 'reply':
params = {
author: get(push, 'source', ''),
permlink: fullPermlink,
};
key = fullPermlink;
routeName = ROUTES.SCREENS.POST;
break;
case 'reblog':
params = {
author: get(push, 'target', ''),
permlink: fullPermlink,
};
key = fullPermlink;
routeName = ROUTES.SCREENS.POST;
break;
case 'transfer':
routeName = ROUTES.TABBAR.PROFILE;
params = {
activePage: 2,
};
break;
case 'reply':
params = {
author: get(push, 'source', ''),
permlink: fullPermlink,
};
key = fullPermlink;
routeName = ROUTES.SCREENS.POST;
break;
default:
break;
}
case 'transfer':
routeName = ROUTES.TABBAR.PROFILE;
params = {
activePage: 2,
};
break;
markActivityAsRead(username, activity_id).then((result) => {
dispatch(updateUnreadActivityCount(result.unread));
});
if (!some(params, isEmpty)) {
navigate({
routeName,
params,
key,
});
}
}
};
default:
break;
}
_createPushListener = () => {
(async () => await messaging().requestPermission())();
markActivityAsRead(username, activity_id).then((result) => {
dispatch(updateUnreadActivityCount(result.unread));
});
if (!some(params, isEmpty)) {
navigate({
routeName,
params,
key,
});
}
}
},
PushNotification.setApplicationIconBadgeNumber(0);
PushNotification.cancelAllLocalNotifications();
firebaseOnMessageListener = messaging().onMessage((remoteMessage) => {
console.log('remoteMessage 1 ', remoteMessage);
// this._pushNavigate(remoteMessage);
});
firebaseOnNotificationOpenedAppListener = messaging().onNotificationOpenedApp(
(remoteMessage) => {
console.log('remoteMessage 2:>> ', remoteMessage);
// this._pushNavigate(remoteMessage);
},
);
messaging()
.getInitialNotification()
.then((remoteMessage) => {
console.log('remoteMessage 3:>> ', remoteMessage);
// this._pushNavigate(remoteMessage);
});
// return unsubscribe;
};
_handleConntectionChange = (status) => {
@ -526,8 +552,6 @@ class ApplicationContainer extends Component {
}),
);
dispatch(changeAllNotificationSettings(settings));
Push.setEnabled(settings.notification);
}
if (settings.nsfw !== '') dispatch(setNsfw(settings.nsfw));
@ -596,15 +620,18 @@ class ApplicationContainer extends Component {
};
_enableNotification = async (username, isEnable) => {
const token = await AppCenter.getInstallId();
setPushToken({
username,
token,
system: Platform.OS,
allows_notify: Number(isEnable),
notify_types: [1, 2, 3, 4, 5, 6],
});
messaging()
.getToken()
.then((token) => {
console.log('token :>> ', token);
setPushToken({
username,
token,
system: Platform.OS,
allows_notify: Number(isEnable),
notify_types: [1, 2, 3, 4, 5, 6],
});
});
};
_switchAccount = async (targetAccountUsername) => {

View File

@ -2,8 +2,8 @@ import React, { PureComponent } from 'react';
import { Alert, Platform } from 'react-native';
import { connect } from 'react-redux';
import { injectIntl } from 'react-intl';
import AppCenter from 'appcenter';
import Config from 'react-native-config';
import messaging from '@react-native-firebase/messaging';
// Services and Actions
import { login } from '../../../providers/steem/auth';
@ -100,7 +100,6 @@ class LoginContainer extends PureComponent {
transfers: 6,
};
const notifyTypes = [];
const token = await AppCenter.getInstallId();
Object.keys(notificationDetails).map((item) => {
const notificationType = item.replace('Notification', '');
@ -110,16 +109,20 @@ class LoginContainer extends PureComponent {
}
});
const data = {
username,
token,
system: Platform.OS,
allows_notify: Number(notificationSettings),
notify_types: notifyTypes,
};
setPushToken(data).then(() => {
setPushTokenSaved(true);
});
messaging()
.getToken()
.then((token) => {
const data = {
username,
token,
system: Platform.OS,
allows_notify: Number(notificationSettings),
notify_types: notifyTypes,
};
setPushToken(data).then(() => {
setPushTokenSaved(true);
});
});
};
_getAccountsWithUsername = async (username) => {

View File

@ -1,12 +1,11 @@
import React, { Component } from 'react';
import { Platform } from 'react-native';
import { connect } from 'react-redux';
import AppCenter from 'appcenter';
import Push from 'appcenter-push';
import { Client } from '@esteemapp/dhive';
import VersionNumber from 'react-native-version-number';
import Config from 'react-native-config';
import { injectIntl } from 'react-intl';
import messaging from '@react-native-firebase/messaging';
// Realm
import {
@ -267,7 +266,6 @@ class SettingsContainer extends Component {
notifyTypes.sort();
if (actionType === 'notification') {
await Push.setEnabled(action);
this._setPushToken(action ? notifyTypes : []);
} else {
this._setPushToken(notifyTypes);
@ -312,21 +310,23 @@ class SettingsContainer extends Component {
const { isLoggedIn, otherAccounts = [] } = this.props;
if (isLoggedIn) {
const token = await AppCenter.getInstallId();
getExistUser().then((isExistUser) => {
if (isExistUser) {
otherAccounts.forEach((item) => {
const { isNotificationSettingsOpen } = this.props;
const data = {
username: item.username,
token,
system: Platform.OS,
allows_notify: Number(isNotificationSettingsOpen),
notify_types: notifyTypes,
};
setPushToken(data);
messaging()
.getToken()
.then((token) => {
const data = {
username: item.username,
token,
system: Platform.OS,
allows_notify: Number(isNotificationSettingsOpen),
notify_types: notifyTypes,
};
setPushToken(data);
});
});
}
});

View File

@ -1520,11 +1520,37 @@
resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-5.3.3.tgz#2e627456d83c1d75d4c43ab6cef70fe125b9691d"
integrity sha512-L4BsdIEEuG5rKkVNzjESdJ1wvusn0kflj/FrwctaW+xkLxiFs1+mdBg/mvqqfXvVFuBEphbyXJTFT4aG4Okkow==
"@react-native-community/push-notification-ios@^1.2.0":
version "1.2.0"
resolved "https://registry.yarnpkg.com/@react-native-community/push-notification-ios/-/push-notification-ios-1.2.0.tgz#3353598450a39c42d079603aad2d1c0f9c2c1729"
integrity sha512-B5qPb9P/6vvxGGQDePlK/q6NxoZPWSVFtKCQ9jlboP7gNZmf3AAyBhTzrb++s2NSXXogjkGi6vt9df1ipZiawQ==
dependencies:
invariant "^2.2.4"
"@react-native-community/viewpager@^2.0.1":
version "2.0.2"
resolved "https://registry.yarnpkg.com/@react-native-community/viewpager/-/viewpager-2.0.2.tgz#622b190294b1310c4825c98daeaee1c8443f7124"
integrity sha512-CKVhIZdX/Cmb80muog8sKpi5vM8npwFp4tx4Dj1IvTBidZweuO22+VH2rDOj7E0LzdV9IYRJ4FGBwcPBD2qUrQ==
"@react-native-firebase/app-types@6.7.2":
version "6.7.2"
resolved "https://registry.yarnpkg.com/@react-native-firebase/app-types/-/app-types-6.7.2.tgz#d2e1530af5702e00578914b41468898c10d3289c"
integrity sha512-pIwc6e0ZINw6PJqNVsAxzOVJUDg6au2TdulY+ZOYQ11SPDs5I2n9likoGrElPmJjajT4s9h87uz/6PWP2k9PxQ==
"@react-native-firebase/app@^7.1.0":
version "7.1.0"
resolved "https://registry.yarnpkg.com/@react-native-firebase/app/-/app-7.1.0.tgz#df56260b7861b700c5888a3865b217e17536dbff"
integrity sha512-C/SCrU/zzlYVUrqFar+a7zQ1qN01I39LREzD098Pl6gPi8ONhd5bda8ZX0Qq7fRwNmSZlQ1j93VLysagt41woA==
dependencies:
"@react-native-firebase/app-types" "6.7.2"
opencollective-postinstall "^2.0.1"
superstruct "^0.6.2"
"@react-native-firebase/messaging@^7.1.0":
version "7.1.0"
resolved "https://registry.yarnpkg.com/@react-native-firebase/messaging/-/messaging-7.1.0.tgz#49040d84ad021aec6b34caaee7dd790ffb2abc7a"
integrity sha512-pl/qUICfK3NoOUdajgSw1Qcl1w7UHyfkwTRjwrRawySGd05p5BEkig1X32D+YHGdB14OPDKn46JxAZuw6a6Lyw==
"@react-navigation/core@^3.5.1":
version "3.5.1"
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.1.tgz#7a2339fca3496979305fb3a8ab88c2ca8d8c214d"
@ -2679,6 +2705,16 @@ cliui@^5.0.0:
strip-ansi "^5.2.0"
wrap-ansi "^5.1.0"
clone-deep@^2.0.1:
version "2.0.2"
resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-2.0.2.tgz#00db3a1e173656730d1188c3d6aced6d7ea97713"
integrity sha512-SZegPTKjCgpQH63E+eN6mVEEPdQBOUzjyJm5Pora4lrwWRFS8I0QAxV/KD6vV/i0WuijHZWQC1fMsPEdxfdVCQ==
dependencies:
for-own "^1.0.0"
is-plain-object "^2.0.4"
kind-of "^6.0.0"
shallow-clone "^1.0.0"
clone@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e"
@ -4168,11 +4204,23 @@ follow-redirects@1.5.10:
dependencies:
debug "=3.1.0"
for-in@^1.0.2:
for-in@^0.1.3:
version "0.1.8"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1"
integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE=
for-in@^1.0.1, for-in@^1.0.2:
version "1.0.2"
resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=
for-own@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b"
integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=
dependencies:
for-in "^1.0.1"
forever-agent@~0.6.1:
version "0.6.1"
resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
@ -5639,6 +5687,11 @@ kind-of@^6.0.0, kind-of@^6.0.2:
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051"
integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==
kind-of@^6.0.1:
version "6.0.3"
resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
klaw@^1.0.0:
version "1.3.1"
resolved "https://registry.yarnpkg.com/klaw/-/klaw-1.3.1.tgz#4088433b46b3b1ba259d78785d8e96f73ba02439"
@ -6415,6 +6468,14 @@ mixin-deep@^1.2.0:
for-in "^1.0.2"
is-extendable "^1.0.1"
mixin-object@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e"
integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4=
dependencies:
for-in "^0.1.3"
is-extendable "^0.1.1"
mkdirp@0.5.1, mkdirp@^0.5.1, mkdirp@~0.5.1:
version "0.5.1"
resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
@ -6772,7 +6833,7 @@ open@^6.2.0:
dependencies:
is-wsl "^1.1.0"
opencollective-postinstall@^2.0.2:
opencollective-postinstall@^2.0.1, opencollective-postinstall@^2.0.2:
version "2.0.2"
resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.2.tgz#5657f1bede69b6e33a45939b061eb53d3c6c3a89"
integrity sha512-pVOEP16TrAO2/fjej1IdOyupJY8KDUM1CvsaScRbw6oddvpQoOfGk4ywha0HKKVAD6RkW4x6Q+tNBwhf3Bgpuw==
@ -7559,6 +7620,13 @@ react-native-navigation-bar-color@^1.0.0:
resolved "https://registry.yarnpkg.com/react-native-navigation-bar-color/-/react-native-navigation-bar-color-1.0.0.tgz#04ff752a58049af93ceea9ccf266b8d3fbc6514a"
integrity sha512-djBE0zSp+JT65VeUm4UpIpr9DA9SpE9YTLwDAcqkWfB9JI8l3djSx+SmrIYfc7dUs216Y6qo2dr0qR3+M5qbOQ==
react-native-push-notification@^3.5.1:
version "3.5.1"
resolved "https://registry.yarnpkg.com/react-native-push-notification/-/react-native-push-notification-3.5.1.tgz#438dd6b526903e01659f34b1ba5d9f293ac663a1"
integrity sha512-F2h4qlEnKzjtqFhtT3To3rUAFuzmfHrFum55yttb40dE0+gMh1Piu0EyebIseKsin6Ia3830tLK/e1Q1kQMMjA==
dependencies:
"@react-native-community/push-notification-ios" "^1.2.0"
react-native-qrcode-svg@^6.0.3:
version "6.0.3"
resolved "https://registry.yarnpkg.com/react-native-qrcode-svg/-/react-native-qrcode-svg-6.0.3.tgz#27b6a7a1df02c5bf10796fd97e8b55c0044dc0f8"
@ -8410,6 +8478,15 @@ sha.js@^2.4.0, sha.js@^2.4.8:
inherits "^2.0.1"
safe-buffer "^5.0.1"
shallow-clone@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-1.0.0.tgz#4480cd06e882ef68b2ad88a3ea54832e2c48b571"
integrity sha512-oeXreoKR/SyNJtRJMAKPDSvd28OqEwG4eR/xc856cRGBII7gX9lvAqDxusPm0846z/w/hWYjI1NpKwJ00NHzRA==
dependencies:
is-extendable "^0.1.1"
kind-of "^5.0.0"
mixin-object "^2.0.1"
shallow-equal@^1.2.1:
version "1.2.1"
resolved "https://registry.yarnpkg.com/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da"
@ -8852,6 +8929,14 @@ sudo-prompt@^9.0.0:
resolved "https://registry.yarnpkg.com/sudo-prompt/-/sudo-prompt-9.1.1.tgz#73853d729770392caec029e2470db9c221754db0"
integrity sha512-es33J1g2HjMpyAhz8lOR+ICmXXAqTuKbuXuUWLhOLew20oN9oUCgCJx615U/v7aioZg7IX5lIh9x34vwneu4pA==
superstruct@^0.6.2:
version "0.6.2"
resolved "https://registry.yarnpkg.com/superstruct/-/superstruct-0.6.2.tgz#c5eb034806a17ff98d036674169ef85e4c7f6a1c"
integrity sha512-lvA97MFAJng3rfjcafT/zGTSWm6Tbpk++DP6It4Qg7oNaeM+2tdJMuVgGje21/bIpBEs6iQql1PJH6dKTjl4Ig==
dependencies:
clone-deep "^2.0.1"
kind-of "^6.0.1"
supports-color@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"