Source: objects/Message.js

  1. const Endpoints = require('./Endpoints');
  2. const GroupMember = require('./GroupMember');
  3. const Channel = require('./Channel');
  4. const User = require('./User');
  5. class Message {
  6. /**
  7. * Create a message object
  8. * @param {Client} Client Parent Client
  9. * @param {string} Data Data relating to message
  10. */
  11. constructor(Client, Data) {
  12. this._Client = Client;
  13. this.ConversationID = Data.ConversationID;
  14. this.Timestamp = Data.Timestamp;
  15. this.isDM = Data.ConversationType == 1 ? false : true;
  16. this.Channel = new Channel(Client, Data.RootConversationID, Data.ConversationID, this.isDM);
  17. this.author = new User(Client, Data.SenderID, Data.SenderName);
  18. this.member = new GroupMember(this.author, this.Channel.group);
  19. this.content = Data.Body;
  20. this.channel = this.Channel;
  21. this.id = Data.ServerID;
  22. }
  23. /**
  24. * Synchronise the channel
  25. * @param {Function} callback Callback after completion
  26. * @returns {void}
  27. */
  28. sync(callback) {
  29. this.Channel.sync(callback);
  30. }
  31. /**
  32. * Reply to the message
  33. * @param {string} data The message body
  34. * @returns {Promise<void>}
  35. */
  36. reply(data) {
  37. return new Promise((resolve, reject) => {
  38. Endpoints.Conversations.send(this._Client, this.ConversationID, '@'+this.author.id+':'+this.author.name+', '+data).then(() => {
  39. resolve();
  40. }).catch((err) => {
  41. reject(err);
  42. });
  43. });
  44. }
  45. /**
  46. * Like the message
  47. * @returns {Promise<void>}
  48. */
  49. like() {
  50. return new Promise((resolve, reject) => {
  51. Endpoints.Conversations.like(this._Client, this.ConversationID, this.id, this.Timestamp).then(() => {
  52. resolve();
  53. }).catch((err) => {
  54. reject(err);
  55. });
  56. });
  57. }
  58. /**
  59. * Unlike the message
  60. * @returns {Promise<void>}
  61. */
  62. unlike() {
  63. return new Promise((resolve, reject) => {
  64. Endpoints.Conversations.unlike(this._Client, this.ConversationID, this.id, this.Timestamp).then(() => {
  65. resolve();
  66. }).catch((err) => {
  67. reject(err);
  68. });
  69. });
  70. }
  71. /**
  72. * Edit the message
  73. * @param {string} new_content The content to replace the message with
  74. * @returns {Promise<void>}
  75. */
  76. edit(new_content) {
  77. return new Promise((resolve, reject) => {
  78. Endpoints.Conversations.edit(this._Client, this.ConversationID, this.id, this.Timestamp, new_content).then(() => {
  79. resolve();
  80. }).catch((err) => {
  81. reject(err);
  82. });
  83. });
  84. }
  85. /**
  86. * Delete the message
  87. * @returns {Promise<void>}
  88. */
  89. delete() {
  90. return new Promise((resolve, reject) => {
  91. Endpoints.Conversations.delete(this._Client, this.ConversationID, this.id, this.Timestamp).then(() => {
  92. resolve();
  93. }).catch((err) => {
  94. reject(err);
  95. });
  96. });
  97. }
  98. }
  99. module.exports = Message;