reldens
Version:
Reldens - MMORPG Platform
78 lines (68 loc) • 2.71 kB
JavaScript
/**
*
* Reldens - AudioHotPlugCallbacks
*
*/
const { AdminDistHelper } = require('../../admin/server/admin-dist-helper');
const { sc } = require('@reldens/utils');
class AudioHotPlugCallbacks
{
static beforeDeleteCallback(projectConfig, bucket, distFolder)
{
if(false === projectConfig.isHotPlugEnabled){
return false;
}
return async (model, id, resource) => {
await this.removeAudio(distFolder, bucket, model, projectConfig, id, resource, true);
};
}
static beforeUpdateCallback(projectConfig, bucket, distFolder)
{
if(false === projectConfig.isHotPlugEnabled){
return false;
}
return async (model, id, preparedParams, params) => {
let isEnabled = Boolean(sc.get(params, 'enabled', true));
if(isEnabled && preparedParams.files_name !== model.files_name){
await AdminDistHelper.copyBucketFilesToDist(bucket, params.files_name, distFolder);
}
};
}
static afterUpdateCallback(projectConfig, bucket, distFolder)
{
if(false === projectConfig.isHotPlugEnabled){
return false;
}
return async (model, id, preparedParams, params, originalParams, resource) => {
if(1 < Object.keys(params).length && params === preparedParams){
return false;
}
false === Boolean(model.enabled)
? await this.removeAudio(distFolder, bucket, model, projectConfig, id, resource)
: await this.updateAudio(params, bucket, model, distFolder, projectConfig, preparedParams, resource);
};
}
static async updateAudio(params, bucket, model, distFolder, projectConfig, preparedParams, resource)
{
let dataServer = projectConfig.serverManager.dataServer;
let fullAudioData = await dataServer.getEntity('audio').loadByIdWithRelations(model.id);
projectConfig.serverManager.audioManager.hotPlugAudio({
newAudioModel: fullAudioData,
preparedParams,
params,
resource
});
}
static async removeAudio(distFolder, bucket, model, projectConfig, id, resource, removeFiles = false)
{
if(true === removeFiles){
await AdminDistHelper.removeBucketAndDistFiles(distFolder, bucket, model.files_name);
}
projectConfig.serverManager.audioManager.hotUnplugAudio({
newAudioModel: model,
id: Number(id),
resource
});
}
}
module.exports.AudioHotPlugCallbacks = AudioHotPlugCallbacks;