Pin Messages

In Order to show or pin some important message in chat, users can use these APIs. The APIs allow users to pin messages with real-time listeners to all the chatroom listeners.

🚧

Note

Only the Producer or creators of the chatroom are allowed to pin messages.
These are access control through backend API's so can be controlled/managed easily.

Pin Message

pinMessage API allows the producer or the creator of the chatroom to choose which message to pin. The parameters of the function are messageID, roomId and messagePayload. On successful completion, the function returns an object of type PinMessageInfo

API Definition: pinMessage

📘

What is PinMessageInfo?

PinMessageInfo is an object which contains information related to pin messages like roomId, messageId, pinById etc. For doing any operation on pinned message, you may require the pinMessageInfo id (that could be fetched using getPinMessageInfoList API)

import { pinMessage } from "@livelike/javascript"

pinMessage({
  roomId: "9e6f1bc4-9f02-4c57-92b7-7521d0f5b027",
  messageId: "aa7e03fc-01f0-4a98-a2e0-3fed689632d7",
  messagePayload: { 
    // messagePayload of type IMessagePayload
    message: "test Message"
  }
}).then(pinMessageInfo => console.log(pinMessageInfo))

Unpin Message

To Unpin a message use unpinMessage API which requires id of PinMessageInfo object and in returns it provide success or error message string.

API Definition: unpinMessage

import { unpinMessage } from "@livelike/javascript"

const pinMessageInfoId = "3f81ccb0-ec95-4e71-a0b7-462889699f75";

unpinMessage({
  pinMessageInfoId: pinMessageInfoId
}).then(res => {
  // success res is no content, err response would contain error details.
  console.log(res)
})

List Of Pin Messages

To get the list of pin messages, use getPinMessageInfoList API which requires roomId and optional orderBy that returns list of pin message info.

API Definition: getPinMessageInfoList

📘

Ordering of List of PinMessageInfo

getPinMessageInfoList accepts a parameter orderBy which lets you choose if the list should be received in ascending ( asc ) or descending ( desc ) order.

import { getPinMessageInfoList } from "@livelike/javascript"

getPinMessageInfoList({
  roomId: "37e1720a-fc7b-4962-b216-6be9ed69dc96",
  orderBy: "desc" // order by pinned time, optional prop with values "asc" | "desc"
}).then(paginatedPinMessageInfoList => console.log(paginatedPinMessageInfoList))

Add event listener for Pin Message

Use addChatRoomEventListener API with ChatRoomEvent.PIN_MESSAGE event for adding listener function that gets called whenever a message is pinned.

API Definition: addChatRoomEventListener

import { addChatRoomEventListener, ChatRoomEvent } from "@livelike/javascript"

function onReceivedPinMessageListener(pinMessageInfoEvent) {
  console.log(pinMessageInfoEvent);
}

addChatRoomEventListener(
  ChatRoomEvent.PIN_MESSAGE,
  onReceivedPinMessageListener,
  { roomId: "<Chat Room ID>" }
)

Similarly use removeChatRoomEventListener API to remove a added listener function

import { removeChatRoomEventListener, ChatRoomEvent } from "@livelike/javascript"

removeChatRoomEventListener(
  ChatRoomEvent.PIN_MESSAGE,
  onReceivedPinMessageListener,
  { roomId: "<Chat Room ID>" }
)

Add event listener for Unpin Message

Use addChatRoomEventListener API with ChatRoomEvent.UNPIN_MESSAGE event for adding listener function that gets called whenever a message is pinned.

API Definition: addChatRoomEventListener

import { addChatRoomEventListener, ChatRoomEvent } from "@livelike/javascript"

function onReceivedPinMessageListener(pinMessageInfoEvent) {
  console.log(pinMessageInfoEvent);
}

addChatRoomEventListener(
  ChatRoomEvent.UNPIN_MESSAGE,
  onReceivedPinMessageListener,
  { roomId: "<Chat Room ID>" }
)

Similarly use removeChatRoomEventListener API to remove a added listener function

import { removeChatRoomEventListener, ChatRoomEvent } from "@livelike/javascript"

removeChatRoomEventListener(
  ChatRoomEvent.UNPIN_MESSAGE,
  onReceivedPinMessageListener,
  { roomId: "<Chat Room ID>" }
)

What’s Next