Код: Выделить всё
frappe.ui.form.on("Settings", {
onload: function(frm) {
frappe.call({
method: "plantmaintenance.plantmaintenance.doctype.settings.settings.get_context",
callback: function(r) {
var data = r.message;
$(frm.fields_dict["subscribe_and_unsubscribe"].wrapper).html(data);
refresh_field("subscribe_and_unsubscribe");
bindOneSignalButtons(frm);
}
});
}
});
function bindOneSignalButtons(frm) {
$('#subscribe').on('click', function(event) {
event.preventDefault();
var userId = getUserId();
if (userId) {
OneSignal.push(["registerForPushNotifications"]);
var externalUserId = frappe.session.user;
OneSignal.push(function() {
OneSignal.setExternalUserId(externalUserId);
updateButtonState(true);
})
} else {
frappe.msgprint(__('User is not logged in.'));
}
});
$('#unsubscribe').on('click', function(event) {
OneSignal.push(function() {
OneSignal.setSubscription(false).then(function() {
updateButtonState(false);
});
});
});
checkSubscriptionStatus();
}
function checkSubscriptionStatus() {
OneSignal.push(function() {
OneSignal.getSubscription().then(function(isSubscribed) {
updateButtonState(isSubscribed);
});
});
}
function updateButtonState(isSubscribed) {
if (isSubscribed) {
$('#unsubscribe').show();
$('#subscribe').hide();
} else {
$('#unsubscribe').hide();
$('#subscribe').show();
}
}
Код: Выделить всё
OneSignal Subscription
.button {
background-color: #008CBA;
border: none;
color: white;
padding: 15px 32px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
cursor: pointer;
}
Subscribe
Unsubscribe
var OneSignal = window.OneSignal || [];
OneSignal.push(["init", {
appId: "ONE_SIGNAL_APP_ID",
autoRegister: false,
notifyButton: {
enable: false
},
allowLocalhostAsSecureOrigin: false,
persistNotification: false,
}]);
function getUserId() {
return typeof frappe !== 'undefined' ? frappe.session.user : null;
}
Опять мне нужно очистить кеш, и код работает нормально.
Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-frappe