3.2.0 • Published 2 years ago

@icapps/chat-astrum v3.2.0

Weekly downloads
18
License
-
Repository
-
Last release
2 years ago

ESS Chat module

Module to create custom chat setup

Context

This module allows to have conversations with one or more recipients into a chat. Socket.io is being used for realtime messages.

Installation

Install via npm

npm install @icapps/chat-astrum

or via yarn

yarn add @icapps/chat-astrum

Usage

const chat = require('@icapps/chat-astrum');
import * as chat from '@icapps/chat-astrum';

Prerequisites

MongoDB

The module uses a MongoDB database combined with mongoose. In order to run everything smoothly you have to make sure a mongoDB is available.

More information on MongoDB

Available methods

db

These are related to all MongoDB operations.

openConnection(url)

Open a connection to MongoDB. This is required to do before trying to fetch any data from other methods below.

  db.openConnection('mongodb://localhost:27017/db')

socket

These are related to all socket.io operations

startSockerServer(server, options)

Start a new socket server instance. This should be called before trying to use any other socket methods. This uses a global singleton so you will always have one connection being used throughout all socket functions.

  const app = http.createServer(); // Also works with Express server
  const connection = socket.startSockerServer(app, {
    path: '/socket',
    serveClient: false,
    ...more socket options
  });

All options can be found here

More information on socket.io

addNamespace(name)

Add a new namespace onto the socket. Will always check if the namespace already exists and only add when non-existing.

  socket.addNamespace('superCoolNamespace');

conversation

findConversationById(id)

Find an existing by its id (asynchronous)

  await conversation.findConversationById('...');

findMyConversations(rights, filters)

List all available conversations for a specific department and employment. (asynchronous)

  await conversation.findMyConversations({
      departmentId: '...',
      employmentId: '...',
  },
  {
      limit: 10, // Optional
      offset: 0, // Optional
  })

startConversation(participants)

Start a new conversation (asynchronous)

  await conversation.startConversation({
      employmentIds: ['firstId', 'secondId'],
  });

leave(conversationId, employmentId)

Leave a conversation (asynchronous)

  await conversation.leave('myConvId', 'myEmplId');

deleteConversation(conversationId)

Deletes a conversation (asynchronous)

  await conversation.deleteConversation('myConvId');

markAsRead(conversationId, employmentId)

Mark a conversation as read (asynchronous)

  await conversation.markAsRead('myConvId', 'myEmplId');

addJoinedDepartmentLaterOn(employmentId, departmentIds)

Adds a meta tag indicating when an employment joined a department conversation

  await conversation.addJoinedDepartmentLaterOn('employmentId', ['departmentId']);

message

sendMessage(roomId, message)

Send a message to a specific room (conversation)

  await message.sendMessage('myRoomId', {
    message: 'This is a message',
    senderId: 'specificEmploymentId',
    firstName: 'Willem',
    lastName: 'Le carrotier',
  });

Tests

  • You can run npm run test to run all tests
  • You can run npm run test:coverage to run all tests with coverage report
3.2.0

2 years ago

3.1.0

2 years ago

3.0.0

2 years ago

2.0.0

3 years ago

1.2.15

4 years ago

1.2.14

4 years ago

1.2.13

5 years ago

1.2.12

5 years ago

1.2.11

5 years ago

1.2.10

5 years ago

1.2.9

5 years ago

1.2.8

5 years ago

1.2.7

5 years ago

1.2.6

5 years ago

1.2.5

5 years ago

1.2.4

5 years ago

1.2.3

5 years ago

1.2.2

5 years ago

1.2.1

5 years ago

1.2.0

5 years ago

1.1.14

5 years ago

1.1.13

5 years ago

1.1.12

5 years ago

1.1.11

5 years ago

1.1.10

5 years ago

1.1.9

5 years ago

1.1.8

5 years ago

1.1.7

5 years ago

1.1.6

5 years ago

1.1.5

5 years ago

1.1.4

5 years ago

1.1.3

5 years ago

1.1.2

5 years ago

1.1.1

5 years ago

1.1.0

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago