activities.js 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. const CoreClass = require("../core.js");
  2. class ActivitiesModule extends CoreClass {
  3. constructor() {
  4. super("activities");
  5. }
  6. initialize() {
  7. return new Promise((resolve, reject) => {
  8. this.db = this.moduleManager.modules["db"];
  9. this.io = this.moduleManager.modules["io"];
  10. this.utils = this.moduleManager.modules["utils"];
  11. resolve();
  12. });
  13. }
  14. // TODO: Migrate
  15. ADD_ACTIVITY(payload) {
  16. //userId, activityType, payload
  17. return new Promise((resolve, reject) => {
  18. async.waterfall(
  19. [
  20. (next) => {
  21. this.db
  22. .runJob("GET_MODEL", { modelName: "activity" })
  23. .then((res) => {
  24. next(null, res);
  25. })
  26. .catch(next);
  27. },
  28. (activityModel, next) => {
  29. const activity = new activityModel({
  30. userId: payload.userId,
  31. activityType: payload.activityType,
  32. payload: payload.payload,
  33. });
  34. activity.save((err, activity) => {
  35. if (err) return next(err);
  36. next(null, activity);
  37. });
  38. },
  39. (activity, next) => {
  40. this.utils
  41. .runJob("SOCKETS_FROM_USER", {
  42. userId: activity.userId,
  43. })
  44. .then((sockets) =>
  45. sockets.forEach((socket) => {
  46. socket.emit(
  47. "event:activity.create",
  48. activity
  49. );
  50. })
  51. );
  52. },
  53. ],
  54. (err, activity) => {
  55. // cb(err, activity);
  56. }
  57. );
  58. });
  59. }
  60. }
  61. module.exports = new ActivitiesModule();