Работа с данными

Загрузка данных

Chat - серверно-ориентированный компонент и ожидает загрузку данных через URL:

 view: "chat", url: "remote/data"

Сервисы Jet

Chat работает со следующими сервисами:

  • Local - работает с данными клиента;
  • Operations - синхронизирует серверные и клиентские данные;
  • Upload - загружает аватары на сервер;
  • Helpers - методы для темплейтов, формат дат и пр.;
  • Backend - посылает запросы к бэкенду.

Если у вас нет бэкенд сервера или вам нужна другая логика, вы можете переопределить сервис Backend.

Операции с данными

С помощью сервиса Local вы можете получить доступ к любой коллекции данных или сообщениям из желаемого чата. Если вы хотите получить данные как только они будут доступны, воспользуйтесь обработчиком .ready через сервис Backend

const chat = $$("ch");
chat.getService("backend").ready().then(() => {
// доступ к коллекции
});

Как получить доступ к чатам

Чтобы получить доступ ко всем чатам, вызовите метод .chats() у сервиса Local:

const chat = $$("ch");
chat.getService("backend").ready().then(() => {
  const chats = chat.getService("local")
  .chats() // доступ к коллекции
  .serialize(); // сериализация данных, для получения самих элементов
});

Метод возвращает промис с коллекцией данных чатов.

Каждый объект чата содержит следующие поля:

  • avatar (string) - URL для загрузки аватара;
  • date (object) - объект даты;
  • direct_id (number) - ID пользователя из активного приватного чата;
  • id (number) - ID чата;
  • message ("string") - последнее сообщение в чате;
  • name (string) - имя чата;
  • unread_count (number) - количество непрочитанных сообщений (от лица текущего пользователя);
  • users (array) - массив участников чата.

Объект чата

{
  avatar: "remote/avatars/members.jpg",
  chat_id: 0,
  date: new Date(),
  direct_id: 0,
  id: 19,
  message: "Hi there"
  name: "Today's meeting",
  unread_count: 2,
  user_id: 2,
  users: [3, 4, 1]
}

Как получить доступ к пользователям

Чтобы получить коллекцию пользователей (users), вызовите метод users() у сервиса Local:

const chat = $$("ch");
chat.getService("backend").ready().then(() => {
  const users = chat.getService("local")
  .users() // доступ к коллекции
  .serialize(); // сериализация данных, для получения самих элементов
});

Метод возвращает промис с коллекцией пользователей. Каждый объект пользователя содержит следующие поля:

  • avatar (string) - URL для загрузки аватара;
  • email (string) - email пользователя;
  • id (number) - ID пользователя;
  • name (string) - имя пользователя;
  • status (number) - статус пользователя. Принимает одно из следующих значений:
    • 1 - "none",
    • 2 - "active",
    • 3 - "busy",
    • 4 - "away"

Объект пользователя

  avatar: "remote/avatars/1.jpg"
  email: "alex@brown.com"
  id: 1
  name: "Alex Brown"
  status: 2

Как получить доступ к сообщениям

Чтобы получить доступ к сообщениям определённого чата, вызовите метод messages() у сервиса Local и передайте в него ID желаемого чата:

const chat = $$("ch");
chat.getService("backend").ready().then(() => {
  chat.getService("local")
  .messages(6) // массив сообщений из чата с "id: 6"
  .then(messages => {
    console.log(messages); // массив сообщений
  });
});

Related sample:  Chat: Data Operations

Метод возвращает промис с массивом сообщений определённого чата. Каждый объект сообщения содержит следующие поля:

Объект сообщения

{
  chat_id: 6,
  date: new Date(),
  id: 19,
  text: "Быть или не быть?",
  user_id: 2
}
  • chat_id (number) - ID чата;
  • date (object) - объект даты;
  • id (number) - ID сообщения;
  • text (string) - текст сообщения;
  • user_id (number) - ID пользователя, который оставил сообщение.
Наверх