Skip to content

Instantly share code, notes, and snippets.

@rvbsanjose
Last active January 20, 2016 05:33
Show Gist options
  • Save rvbsanjose/2dafcbcd6665f4c8e6fa to your computer and use it in GitHub Desktop.
Save rvbsanjose/2dafcbcd6665f4c8e6fa to your computer and use it in GitHub Desktop.
// actions - streams
function makeStreamSettingsPayload(opts) {
return {
id: 'UPDATE_CONFIG',
payload: {
action: 'updateviewconfig',
userviewconfig: opts.streamSettings
}
};
}
function persistStreamSettings(dispatch, streamSettings) {
return dispatch({
type: actions.STREAMSETTINGS_UPDATE,
streamSettings: streamSettings
});
}
function failStreamSettingsUpdate(dispatch, streamSettings) {
return dispatch({
type: actions.STREAMSETTINGS_FAILED,
streamSettings: streamSettings
});
}
function streamSettingsUpdate(opts) {
if (!opts.streamId || !opts.streamSettings) {
throw new Error('streamId and streamSettings are required.');
}
return function(dispatch) {
return send(makeStreamSettingsPayload(opts.streamSettings.toJS()))
.then(persistStreamSettings.bind(null, dispatch, opts.streamSettings))
.catch(failStreamSettingsUpdate.bind(null, dispatch, opts.streamSettings))
.done();
};
}
// reducer - streams
function streamSettingsUpdate(state, action) {
var streamId = action.streamId;
return state.setIn([ streamId, 'streamSettings' ], new streamSettings(action.streamSettings));
}
// views/tabs/notifications
save: function() {
var $inputs = this.$el.find('input'),
$notificationType = this.$el.find('.notifications-dropdown'),
setter = {};
for (var i = 0; i < $inputs.length; i++) {
var input = $inputs[ i ];
if (input.dataset.attribute) {
if (input.classList.contains('notification-color')) {
setter[ input.dataset.attribute ] = this._getSpectrumColor($(input));
} else {
setter[ input.dataset.attribute ] = input.type === 'checkbox' ? input.checked : input.value;
}
}
}
setter.showStreamAlerts = $notificationType.val() === 'blinking row';
store.dispatch(streamSettingsUpdate({
streamId: this.model.get('viewId'),
streamSettings: {
showBadge: this.model.get('showNotification'),
blinkBadge: setter.showStreamAlerts,
showToast: false,
blinkToast: this.model.get('blink'),
persistToast: this.model.get('persist'),
playSound: this.model.get('playSound')
}
}));
// return this.model.set(setter).save();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment