|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module.exports = function ({ api, Threads }) { |
|
|
const logger = require("../../utils/log.js"); |
|
|
return async function ({ event }) { |
|
|
const { threadID, logMessageType, logMessageData } = event; |
|
|
const { setData, getData, delData } = Threads; |
|
|
try { |
|
|
let dataThread = (await getData(threadID)).threadInfo; |
|
|
switch (logMessageType) { |
|
|
case "log:thread-admins": { |
|
|
if (logMessageData.ADMIN_EVENT == "add_admin") { |
|
|
dataThread.adminIDs.push({ |
|
|
id: logMessageData.TARGET_ID |
|
|
}) |
|
|
} else if (logMessageData.ADMIN_EVENT == "remove_admin") { |
|
|
dataThread.adminIDs = dataThread.adminIDs.filter(item => item.id != logMessageData.TARGET_ID); |
|
|
} |
|
|
logger.log('Refresh the list of admins in the group ' + threadID, 'UPDATE DATA') |
|
|
await setData(threadID, { threadInfo: dataThread }); |
|
|
break; |
|
|
} |
|
|
case "log:thread-name": { |
|
|
logger.log('Update name in group ' + threadID, 'UPDATE DATA') |
|
|
dataThread.threadName = event.logMessageData.name |
|
|
await setData(threadID, { threadInfo: dataThread }); |
|
|
break; |
|
|
} |
|
|
case "log:subscribe": { |
|
|
if (event.logMessageData.addedParticipants.some(i => i.userFbId == api.getCurrentUserID())) return |
|
|
for(let i of event.logMessageData.addedParticipants) { |
|
|
dataThread.participantIDs.push(i.userFbId) |
|
|
} |
|
|
var data = await Threads.setData(event.threadID, {threadInfo: dataThread}) |
|
|
logger.log('Perform more group data ' + threadID, 'ADD DATA') |
|
|
break; |
|
|
} |
|
|
case 'log:unsubscribe': { |
|
|
if (logMessageData.leftParticipantFbId == api.getCurrentUserID()) { |
|
|
logger.log('Perform group data deletion ' + threadID, 'DELETE DATA') |
|
|
const index = global.data.allThreadID.findIndex(item => item == threadID); |
|
|
global.data.allThreadID.splice(index, 1); |
|
|
await delData(threadID); |
|
|
return |
|
|
} else { |
|
|
const index = dataThread.participantIDs.findIndex(item => item == logMessageData.leftParticipantFbId); |
|
|
dataThread.participantIDs.splice(index, 1); |
|
|
if (dataThread.adminIDs.find(i => i.id == logMessageData.leftParticipantFbId)) { |
|
|
dataThread.adminIDs = dataThread.adminIDs.filter(item => item.id != logMessageData.leftParticipantFbId); |
|
|
} |
|
|
logger.log('Perform user deletion ' + logMessageData.leftParticipantFbId, 'DELETE DATA') |
|
|
await setData(threadID, { threadInfo: dataThread }); |
|
|
} |
|
|
break; |
|
|
} |
|
|
} |
|
|
} catch (e) { |
|
|
console.log('There was an error updating data: ' + e) |
|
|
} |
|
|
return; |
|
|
}; |
|
|
} |