enigma-bbs/core/mod_mixins.js

43 lines
1.5 KiB
JavaScript

/* jslint node: true */
'use strict';
const messageArea = require('../core/message_area.js');
const UserProps = require('./user_property.js');
// deps
const { get } = require('lodash');
exports.MessageAreaConfTempSwitcher = Sup =>
class extends Sup {
tempMessageConfAndAreaSwitch(messageAreaTag, recordPrevious = true) {
messageAreaTag =
messageAreaTag || get(this, 'config.messageAreaTag', this.messageAreaTag);
if (!messageAreaTag) {
return; // nothing to do!
}
if (recordPrevious) {
this.prevMessageConfAndArea = {
confTag: this.client.user.properties[UserProps.MessageConfTag],
areaTag: this.client.user.properties[UserProps.MessageAreaTag],
};
}
if (!messageArea.tempChangeMessageConfAndArea(this.client, messageAreaTag)) {
this.client.log.warn(
{ messageAreaTag: messageArea },
'Failed to perform temporary message area/conf switch'
);
}
}
tempMessageConfAndAreaRestore() {
if (this.prevMessageConfAndArea) {
this.client.user.properties[UserProps.MessageConfTag] =
this.prevMessageConfAndArea.confTag;
this.client.user.properties[UserProps.MessageAreaTag] =
this.prevMessageConfAndArea.areaTag;
}
}
};