Модели (useModel)
Модели — это публичное API данных лаунчера, доступное расширениям через useModel. Каждая модель предоставляет реактивные ссылки (ref / computed) и методы для работы с определённой доменной областью: пользователи, сборки, серверы, приглашения и т.д.
Механизм
Хост (лаунчер) регистрирует модели через registerModel(key, instance) (из @rynt/sdk/host). Расширение получает доступ через useModel(key) из @rynt/sdk/extension.
import { useModel } from '@rynt/sdk/extension';
const userModel = useModel('user');
const buildsModel = useModel('builds');Ключи моделей
Константа RYNT_LAUNCHER_MODEL_KEYS содержит все доступные ключи:
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
| Поле | Тип | Описание |
|---|---|---|
myPublishedBuilds | Ref<Build[]> | Мои опубликованные сборки |
popularBuilds | Ref<Build[]> | Популярные сборки |
searchBuilds | Ref<Build[]> | Результаты поиска |
userBuilds | Ref<Build[]> | Сборки пользователя |
loadMyPublishedBuilds | метод | Загрузить мои сборки |
loadPopularBuilds | метод | Загрузить популярные |
searchPublicBuilds | метод | Поиск публичных сборок |
createBuild | метод | Создать сборку |
updateBuild | метод | Обновить сборку |
createVersion | метод | Создать версию |
user — текущий пользователь
Тип: UserModelApi
Сущность: EntityUser
| Поле | Тип | Описание |
|---|---|---|
user | ComputedRef<EntityUser | null> | Текущий пользователь |
isAuthenticated | ComputedRef<boolean> | Авторизован ли |
login | метод | Вход |
logout | метод | Выход |
refreshUser | метод | Обновить данные |
updateProfile | метод | Обновить профиль |
friends — друзья
Тип: FriendsModelApi
Сущность: EntityUser
| Поле | Тип | Описание |
|---|---|---|
friends | ComputedRef<EntityUser[]> | Список друзей |
onlineFriends | ComputedRef<EntityUser[]> | Онлайн-друзья |
searchUsers | метод | Поиск пользователей |
removeFriend | метод | Удалить из друзей |
servers — серверы
Тип: ServersModelApi
Сущность: EntityServer
| Поле | Тип | Описание |
|---|---|---|
userServers | ComputedRef<EntityServer[]> | Серверы пользователя |
selectedServer | ComputedRef<EntityServer | null> | Выбранный сервер |
loadServer | метод | Загрузить сервер |
createServer | метод | Создать сервер |
launchServer | метод | Запустить сервер |
invites — приглашения
Тип: InvitesModelApi
Сущность: EntityInvite
| Поле | Тип | Описание |
|---|---|---|
incomingInvites | ComputedRef<EntityInvite[]> | Входящие |
outgoingInvites | ComputedRef<EntityInvite[]> | Исходящие |
createInvite | метод | Создать приглашение |
acceptInvite | метод | Принять |
rejectInvite | метод | Отклонить |
events — события
Тип: EventsModelApi
Сущность: EntityEvent
| Поле | Тип | Описание |
|---|---|---|
selectedEvent | ComputedRef<EntityEvent | undefined> | Выбранное событие |
loadServerEvents | метод | Загрузить события сервера |
createEvent | метод | Создать событие |
updateEvent | метод | Обновить |
posts — публикации
Тип: PostsModelApi
Сущность: EntityPost
| Поле | Тип | Описание |
|---|---|---|
selectedPost | ComputedRef<EntityPost | undefined> | Выбранный пост |
loadServerPosts | метод | Загрузить посты сервера |
createPost | метод | Создать пост |
updatePost | метод | Обновить |
server_members — участники серверов
Тип: ServerMembersModelApi
Сущность: EntityServerMember
| Поле | Тип | Описание |
|---|---|---|
getServerMembers | ComputedRef<(id) => EntityServerMember[]> | Участники сервера |
joinServer | метод | Присоединиться |
inviteMember | метод | Пригласить |
updateMemberRole | метод | Сменить роль |
local_builds — локальные сборки
Тип: LocalBuildsModelApi
| Поле | Тип | Описание |
|---|---|---|
getBuildsList | ComputedRef<LocalBuildListRow[]> | Список локальных сборок |
runningBuilds | ComputedRef<RunningBuild[]> | Запущенные сборки |
launchBuild | метод | Запустить сборку |
stopBuild | метод | Остановить |
downloadBuild | метод | Скачать сборку |
Остальные модели
| Ключ | Тип | Назначение |
|---|---|---|
auth | AuthModelApi | Аутентификация (логин/регистрация) |
accounts | AccountsModelApi | Minecraft-аккаунты |
settings | SettingsModelApi | Настройки лаунчера |
updater | UpdaterModelApi | Обновления лаунчера |
library | LibraryModelApi | Библиотека (статистика, поиск серверов) |
launcher | LauncherRuntimeModelApi | Рантайм лаунчера (версии, запуск) |
Связь с entity-типами
Модели возвращают данные через реактивные ссылки. Типы значений соответствуют entity-типам из @rynt/sdk:
| Модель | Тип сущности | Entity-компонент |
|---|---|---|
user, friends | EntityUser | EntityUserItem, EntityUserAvatar |
servers | EntityServer | EntityServerCard |
server_members | EntityServerMember | EntityServerMemberItem |
events | EntityEvent | EntityEventCard |
posts | EntityPost | EntityPostCard |
invites | EntityInvite | InviteCard |
Пример — получение списка серверов и отображение через entity-компонент:
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);