Connected custom notification feature with api

This commit is contained in:
Mustafa Buyukcelebi 2019-03-14 23:28:59 +03:00
parent 330757d371
commit 8ecb66c708

View File

@ -162,15 +162,37 @@ class SettingsContainer extends Component {
}; };
_handleNotification = async (action, actionType) => { _handleNotification = async (action, actionType) => {
const { dispatch } = this.props; const { dispatch, notificationDetails } = this.props;
const notifyTypesConst = {
vote: 1,
mention: 2,
follow: 3,
comment: 4,
reblog: 5,
transfers: 6,
};
const notifyTypes = [];
dispatch(changeNotificationSettings({ action, type: actionType })); dispatch(changeNotificationSettings({ action, type: actionType }));
setNotificationSettings({ action, type: actionType }); setNotificationSettings({ action, type: actionType });
const isPushEnabled = await Push.isEnabled(); if (actionType === 'notification') {
await Push.setEnabled(action);
this._setPushToken(action ? [1, 2, 3, 4, 5, 6] : notifyTypes);
} else {
Object.keys(notificationDetails).map((item) => {
const notificationType = item.replace('Notification', '');
await Push.setEnabled(!isPushEnabled); if (notificationType === actionType.replace('notification.', '')) {
this._setPushToken(); if (action) {
notifyTypes.push(notifyTypesConst[notificationType]);
}
} else if (notificationDetails[item]) {
notifyTypes.push(notifyTypesConst[notificationType]);
}
});
this._setPushToken(notifyTypes);
}
}; };
_handleButtonPress = (action, actionType) => { _handleButtonPress = (action, actionType) => {
@ -204,8 +226,9 @@ class SettingsContainer extends Component {
} }
}; };
_setPushToken = async () => { _setPushToken = async (notifyTypes) => {
const { isNotificationSettingsOpen, isLoggedIn, username } = this.props; const { isNotificationSettingsOpen, isLoggedIn, username } = this.props;
if (isLoggedIn) { if (isLoggedIn) {
const token = await AppCenter.getInstallId(); const token = await AppCenter.getInstallId();
@ -216,6 +239,7 @@ class SettingsContainer extends Component {
token, token,
system: Platform.OS, system: Platform.OS,
allows_notify: Number(isNotificationSettingsOpen), allows_notify: Number(isNotificationSettingsOpen),
notify_types: notifyTypes,
}; };
setPushToken(data); setPushToken(data);
} }
@ -246,6 +270,7 @@ const mapStateToProps = state => ({
isLoggedIn: state.application.isLoggedIn, isLoggedIn: state.application.isLoggedIn,
username: state.account.currentAccount && state.account.currentAccount.name, username: state.account.currentAccount && state.account.currentAccount.name,
nsfw: state.application.nsfw, nsfw: state.application.nsfw,
notificationDetails: state.application.notificationDetails,
commentNotification: state.application.notificationDetails.commentNotification, commentNotification: state.application.notificationDetails.commentNotification,
followNotification: state.application.notificationDetails.followNotification, followNotification: state.application.notificationDetails.followNotification,
mentionNotification: state.application.notificationDetails.mentionNotification, mentionNotification: state.application.notificationDetails.mentionNotification,