Lightcord/modules/discord_cloudsync/index.js

37 lines
978 B
JavaScript
Raw Normal View History

2020-07-08 13:57:29 +02:00
const EventEmitter = require('events');
2020-09-05 12:14:21 +02:00
const {CloudSync: CloudSyncNative} = require('./discord_cloudsync_'+process.platform+'.node');
2020-07-08 13:57:29 +02:00
function makeCallback(resolve, reject) {
return (err, result) => {
if (err != null && err !== '') {
reject(new Error(JSON.parse(err)));
} else {
resolve(result != null && result !== '' ? JSON.parse(result) : null);
}
};
}
class CloudSync extends EventEmitter {
constructor() {
super();
this._cloudSync = new CloudSyncNative(state => this.emit('state', JSON.parse(state)));
}
sync(id, config) {
return new Promise((resolve, reject) =>
this._cloudSync.command(JSON.stringify({type: 'SYNC', id, config}), makeCallback(resolve, reject))
);
}
}
2020-09-05 12:14:21 +02:00
function cloudSyncConstructor() {
const instance = new CloudSync();
return {
on: instance.on.bind(instance),
sync: instance.sync.bind(instance),
};
}
module.exports = cloudSyncConstructor;