Skip to content

Instantly share code, notes, and snippets.

@valeriansaliou
Created April 23, 2024 19:02
Show Gist options
  • Save valeriansaliou/2a7d70ee0b00d608d6a90fce32830bcd to your computer and use it in GitHub Desktop.
Save valeriansaliou/2a7d70ee0b00d608d6a90fce32830bcd to your computer and use it in GitHub Desktop.
Crisp Plugin frontend settings save
// Globals
var _message_source = null;
var _message_origin = null;
// Methods
var __receive_message = function(event) {
var _data = JSON.parse(event.data);
if (_data.type && _data.payload) {
// Store message parameters
// TODO: ensure to store those 2 variables in a global, this will be \
// re-used to send updated settings back to the parent origin
_message_source = event.source;
_message_origin = event.origin;
switch (_data.type) {
case "settings": {
__receive_message_settings(_data.payload);
break;
}
}
}
};
var __receive_message_settings = function(payload) {
if (payload.settings) {
// TODO: do something with the received settings (make sure to handle NULL \
// settings as well)
}
};
var __send_message = function(type, payload) {
// Send data to origin
if (_message_source) {
// Submit newly-frozen settings
_message_source.postMessage(
{
type : type,
payload : JSON.stringify(payload)
},
(_message_origin || [])
);
return true;
}
return false;
};
var __send_message_settings = function(type, payload) {
return __send_message("settings", payload);
};
// Listeners
window.addEventListener("message", __receive_message, false);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment