nodebb-plugin-ns-embed
Version:
Embed media and rich content in posts: youtube, vimeo, twitch etc. All embeds are based on the rules. You are encouraged to build your own rules to embed everything what is embeddable.
88 lines (75 loc) • 2.39 kB
JavaScript
import {setNewRule, setRules, setSelectedRule} from '../controller/actions';
import * as SocketMethods from '../model/socket-methods';
export class SocketService {
constructor(store, alerts) {
this.store = store;
this.alerts = alerts;
}
createNewRule(rule) {
window.socket.emit(
SocketMethods.CREATE_RULE,
rule,
(error, rule) => {
if (error) {
return this.alerts.error(error.message);
}
this.alerts.success('Rule "' + rule.displayName + '" has been created');
this.store.dispatch(setNewRule({}));
this.getAllRules();
}
);
}
deleteRule(rule) {
window.socket.emit(
SocketMethods.DELETE_RULE,
rule,
(error, rule) => {
if (error) {
return this.alerts.error(error.message);
}
this.alerts.success('Rule "' + rule.displayName + '" is deleted');
this.store.dispatch(setSelectedRule(null));
this.getAllRules();
}
);
}
getAllRules() {
window.socket.emit(
SocketMethods.GET_ALL_RULES,
{},
(error, rules) => {
if (error) {
return this.alerts.error(error.message);
}
this.store.dispatch(setRules(rules));
}
);
}
installDefaultRules() {
console.info('Installing Default rules...');
window.socket.emit(
SocketMethods.INSTALL_DEFAULT_RULES,
{},
(error, installedRules) => {
if (error) {
return this.alerts.error(error.message);
}
this.alerts.success('Installed rules: ' + installedRules.join(', '));
this.getAllRules();
}
);
}
saveRule(rule) {
window.socket.emit(
SocketMethods.SAVE_RULE,
rule,
(error, rule) => {
if (error) {
return this.alerts.error(error.message);
}
this.alerts.success('Rule "' + rule.displayName + '" is updated');
this.getAllRules();
}
);
}
}