Skip to content

Модели (useModel)

Модели — это публичное API данных лаунчера, доступное расширениям через useModel. Каждая модель предоставляет реактивные ссылки (ref / computed) и методы для работы с определённой доменной областью: пользователи, сборки, серверы, приглашения и т.д.

Механизм

Хост (лаунчер) регистрирует модели через registerModel(key, instance) (из @rynt/sdk/host). Расширение получает доступ через useModel(key) из @rynt/sdk/extension.

ts
import { useModel } from '@rynt/sdk/extension';

const userModel = useModel('user');
const buildsModel = useModel('builds');

Ключи моделей

Константа RYNT_LAUNCHER_MODEL_KEYS содержит все доступные ключи:

ts
import { RYNT_LAUNCHER_MODEL_KEYS } from '@rynt/sdk/extension';
// ['builds', 'user', 'friends', 'auth', 'accounts', 'settings',
//  'updater', 'servers', 'invites', 'events', 'posts', 'library',
//  'local_builds', 'launcher', 'server_members']

Тип ключа — RyntLauncherModelKey.

Список моделей

builds — опубликованные сборки

Тип: BuildsModelApi

ПолеТипОписание
myPublishedBuildsRef<Build[]>Мои опубликованные сборки
popularBuildsRef<Build[]>Популярные сборки
searchBuildsRef<Build[]>Результаты поиска
userBuildsRef<Build[]>Сборки пользователя
loadMyPublishedBuildsметодЗагрузить мои сборки
loadPopularBuildsметодЗагрузить популярные
searchPublicBuildsметодПоиск публичных сборок
createBuildметодСоздать сборку
updateBuildметодОбновить сборку
createVersionметодСоздать версию

user — текущий пользователь

Тип: UserModelApi

Сущность: EntityUser

ПолеТипОписание
userComputedRef<EntityUser | null>Текущий пользователь
isAuthenticatedComputedRef<boolean>Авторизован ли
loginметодВход
logoutметодВыход
refreshUserметодОбновить данные
updateProfileметодОбновить профиль

friends — друзья

Тип: FriendsModelApi

Сущность: EntityUser

ПолеТипОписание
friendsComputedRef<EntityUser[]>Список друзей
onlineFriendsComputedRef<EntityUser[]>Онлайн-друзья
searchUsersметодПоиск пользователей
removeFriendметодУдалить из друзей

servers — серверы

Тип: ServersModelApi

Сущность: EntityServer

ПолеТипОписание
userServersComputedRef<EntityServer[]>Серверы пользователя
selectedServerComputedRef<EntityServer | null>Выбранный сервер
loadServerметодЗагрузить сервер
createServerметодСоздать сервер
launchServerметодЗапустить сервер

invites — приглашения

Тип: InvitesModelApi

Сущность: EntityInvite

ПолеТипОписание
incomingInvitesComputedRef<EntityInvite[]>Входящие
outgoingInvitesComputedRef<EntityInvite[]>Исходящие
createInviteметодСоздать приглашение
acceptInviteметодПринять
rejectInviteметодОтклонить

events — события

Тип: EventsModelApi

Сущность: EntityEvent

ПолеТипОписание
selectedEventComputedRef<EntityEvent | undefined>Выбранное событие
loadServerEventsметодЗагрузить события сервера
createEventметодСоздать событие
updateEventметодОбновить

posts — публикации

Тип: PostsModelApi

Сущность: EntityPost

ПолеТипОписание
selectedPostComputedRef<EntityPost | undefined>Выбранный пост
loadServerPostsметодЗагрузить посты сервера
createPostметодСоздать пост
updatePostметодОбновить

server_members — участники серверов

Тип: ServerMembersModelApi

Сущность: EntityServerMember

ПолеТипОписание
getServerMembersComputedRef<(id) => EntityServerMember[]>Участники сервера
joinServerметодПрисоединиться
inviteMemberметодПригласить
updateMemberRoleметодСменить роль

local_builds — локальные сборки

Тип: LocalBuildsModelApi

ПолеТипОписание
getBuildsListComputedRef<LocalBuildListRow[]>Список локальных сборок
runningBuildsComputedRef<RunningBuild[]>Запущенные сборки
launchBuildметодЗапустить сборку
stopBuildметодОстановить
downloadBuildметодСкачать сборку

Остальные модели

КлючТипНазначение
authAuthModelApiАутентификация (логин/регистрация)
accountsAccountsModelApiMinecraft-аккаунты
settingsSettingsModelApiНастройки лаунчера
updaterUpdaterModelApiОбновления лаунчера
libraryLibraryModelApiБиблиотека (статистика, поиск серверов)
launcherLauncherRuntimeModelApiРантайм лаунчера (версии, запуск)

Связь с entity-типами

Модели возвращают данные через реактивные ссылки. Типы значений соответствуют entity-типам из @rynt/sdk:

МодельТип сущностиEntity-компонент
user, friendsEntityUserEntityUserItem, EntityUserAvatar
serversEntityServerEntityServerCard
server_membersEntityServerMemberEntityServerMemberItem
eventsEntityEventEntityEventCard
postsEntityPostEntityPostCard
invitesEntityInviteInviteCard

Пример — получение списка серверов и отображение через entity-компонент:

ts
import { computed } from 'vue';
import { useModel } from '@rynt/sdk/extension';
import { EntityServerCard } from '@rynt/sdk/extension';

const serversModel = useModel('servers');
const myServers = computed(() => serversModel.userServers.value);