mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-06 06:46:04 +02:00
309 lines
21 KiB
Plaintext
309 lines
21 KiB
Plaintext
mixin newInstance
|
|
el-dialog.x-dialog(
|
|
:before-close='beforeDialogClose'
|
|
@mousedown.native='dialogMouseDown'
|
|
@mouseup.native='dialogMouseUp'
|
|
ref='newInstanceDialog'
|
|
:visible.sync='newInstanceDialog.visible'
|
|
:title='$t("dialog.new_instance.header")'
|
|
width='650px')
|
|
el-tabs(type='card' v-model='newInstanceDialog.selectedTab' @tab-click='newInstanceTabClick')
|
|
el-tab-pane(:label='$t("dialog.new_instance.normal")')
|
|
el-form(v-if='newInstanceDialog.visible' :model='newInstanceDialog' label-width='150px')
|
|
el-form-item(:label='$t("dialog.new_instance.access_type")')
|
|
el-radio-group(v-model='newInstanceDialog.accessType' size='mini' @change='buildInstance')
|
|
el-radio-button(label='public') {{ $t('dialog.new_instance.access_type_public') }}
|
|
el-radio-button(label='group') {{ $t('dialog.new_instance.access_type_group') }}
|
|
el-radio-button(label='friends+') {{ $t('dialog.new_instance.access_type_friend_plus') }}
|
|
el-radio-button(label='friends') {{ $t('dialog.new_instance.access_type_friend') }}
|
|
el-radio-button(label='invite+') {{ $t('dialog.new_instance.access_type_invite_plus') }}
|
|
el-radio-button(label='invite') {{ $t('dialog.new_instance.access_type_invite') }}
|
|
el-form-item(
|
|
:label='$t("dialog.new_instance.group_access_type")'
|
|
v-if='newInstanceDialog.accessType === "group"')
|
|
el-radio-group(v-model='newInstanceDialog.groupAccessType' size='mini' @change='buildInstance')
|
|
el-radio-button(
|
|
label='members'
|
|
:disabled='!hasGroupPermission(newInstanceDialog.groupRef, "group-instance-open-create")') {{ $t('dialog.new_instance.group_access_type_members') }}
|
|
el-radio-button(
|
|
label='plus'
|
|
:disabled='!hasGroupPermission(newInstanceDialog.groupRef, "group-instance-plus-create")') {{ $t('dialog.new_instance.group_access_type_plus') }}
|
|
el-radio-button(
|
|
label='public'
|
|
:disabled='!hasGroupPermission(newInstanceDialog.groupRef, "group-instance-public-create") || newInstanceDialog.groupRef.privacy === "private"') {{ $t('dialog.new_instance.group_access_type_public') }}
|
|
el-form-item(:label='$t("dialog.new_instance.region")')
|
|
el-radio-group(v-model='newInstanceDialog.region' size='mini' @change='buildInstance')
|
|
el-radio-button(label='US West') {{ $t('dialog.new_instance.region_usw') }}
|
|
el-radio-button(label='US East') {{ $t('dialog.new_instance.region_use') }}
|
|
el-radio-button(label='Europe') {{ $t('dialog.new_instance.region_eu') }}
|
|
el-radio-button(label='Japan') {{ $t('dialog.new_instance.region_jp') }}
|
|
el-form-item(:label='$t("dialog.new_instance.content_settings")')
|
|
el-select(
|
|
v-model='newInstanceDialog.selectedContentSettings'
|
|
multiple
|
|
:placeholder='$t("dialog.new_instance.content_placeholder")'
|
|
style='width: 100%'
|
|
@change='buildInstance')
|
|
el-option-group(:label='$t("dialog.new_instance.content_placeholder")')
|
|
el-option.x-friend-item(value='emoji' :label='$t("dialog.new_instance.content_emoji")')
|
|
el-option.x-friend-item(
|
|
value='stickers'
|
|
:label='$t("dialog.new_instance.content_stickers")')
|
|
el-option.x-friend-item(
|
|
value='pedestals'
|
|
:label='$t("dialog.new_instance.content_pedestals")')
|
|
el-option.x-friend-item(
|
|
value='prints'
|
|
:label='$t("dialog.new_instance.content_prints")')
|
|
el-option.x-friend-item(
|
|
value='drones'
|
|
:label='$t("dialog.new_instance.content_drones")')
|
|
el-form-item(
|
|
:label='$t("dialog.new_instance.queueEnabled")'
|
|
v-if='newInstanceDialog.accessType === "group"')
|
|
el-checkbox(v-model='newInstanceDialog.queueEnabled' @change='buildInstance')
|
|
el-form-item(
|
|
:label='$t("dialog.new_instance.ageGate")'
|
|
v-if='newInstanceDialog.accessType === "group"')
|
|
el-checkbox(
|
|
v-model='newInstanceDialog.ageGate'
|
|
@change='buildInstance'
|
|
:disabled='!hasGroupPermission(newInstanceDialog.groupRef, "group-instance-age-gated-create")')
|
|
el-form-item(:label='$t("dialog.new_instance.world_id")')
|
|
el-input(
|
|
v-model='newInstanceDialog.worldId'
|
|
size='mini'
|
|
@click.native='$event.target.tagName === "INPUT" && $event.target.select()'
|
|
@change='buildInstance')
|
|
el-form-item(
|
|
:label='$t("dialog.new_instance.group_id")'
|
|
v-if='newInstanceDialog.accessType === "group"')
|
|
el-select(
|
|
v-model='newInstanceDialog.groupId'
|
|
clearable
|
|
:placeholder='$t("dialog.new_instance.group_placeholder")'
|
|
filterable
|
|
style='width: 100%'
|
|
@change='buildInstance')
|
|
el-option-group(:label='$t("dialog.new_instance.group_placeholder")')
|
|
el-option.x-friend-item(
|
|
v-if='group && (hasGroupPermission(group, "group-instance-public-create") || hasGroupPermission(group, "group-instance-plus-create") || hasGroupPermission(group, "group-instance-open-create"))'
|
|
v-for='group in API.currentUserGroups.values()'
|
|
:key='group.id'
|
|
:label='group.name'
|
|
:value='group.id'
|
|
style='height: auto; width: 478px')
|
|
.avatar
|
|
img(v-lazy='group.iconUrl')
|
|
.detail
|
|
span.name(v-text='group.name')
|
|
el-form-item(
|
|
:label='$t("dialog.new_instance.roles")'
|
|
v-if='newInstanceDialog.accessType === "group" && newInstanceDialog.groupAccessType === "members"')
|
|
el-select(
|
|
v-model='newInstanceDialog.roleIds'
|
|
multiple
|
|
clearable
|
|
:placeholder='$t("dialog.new_instance.role_placeholder")'
|
|
style='width: 100%'
|
|
@change='buildInstance')
|
|
el-option-group(:label='$t("dialog.new_instance.role_placeholder")')
|
|
el-option.x-friend-item(
|
|
v-for='role in newInstanceDialog.selectedGroupRoles'
|
|
:key='role.id'
|
|
:label='role.name'
|
|
:value='role.id'
|
|
style='height: auto; width: 478px')
|
|
.detail
|
|
span.name(v-text='role.name')
|
|
template(v-if='newInstanceDialog.instanceCreated')
|
|
el-form-item(:label='$t("dialog.new_instance.location")')
|
|
el-input(
|
|
v-model='newInstanceDialog.location'
|
|
size='mini'
|
|
readonly
|
|
@click.native='$event.target.tagName === "INPUT" && $event.target.select()')
|
|
el-form-item(:label='$t("dialog.new_instance.url")')
|
|
el-input(v-model='newInstanceDialog.url' size='mini' readonly)
|
|
el-tab-pane(:label='$t("dialog.new_instance.legacy")')
|
|
el-form(v-if='newInstanceDialog.visible' :model='newInstanceDialog' label-width='150px')
|
|
el-form-item(:label='$t("dialog.new_instance.access_type")')
|
|
el-radio-group(
|
|
v-model='newInstanceDialog.accessType'
|
|
size='mini'
|
|
@change='buildLegacyInstance')
|
|
el-radio-button(label='public') {{ $t('dialog.new_instance.access_type_public') }}
|
|
el-radio-button(label='group') {{ $t('dialog.new_instance.access_type_group') }}
|
|
el-radio-button(label='friends+') {{ $t('dialog.new_instance.access_type_friend_plus') }}
|
|
el-radio-button(label='friends') {{ $t('dialog.new_instance.access_type_friend') }}
|
|
el-radio-button(label='invite+') {{ $t('dialog.new_instance.access_type_invite_plus') }}
|
|
el-radio-button(label='invite') {{ $t('dialog.new_instance.access_type_invite') }}
|
|
el-form-item(
|
|
:label='$t("dialog.new_instance.group_access_type")'
|
|
v-if='newInstanceDialog.accessType === "group"')
|
|
el-radio-group(
|
|
v-model='newInstanceDialog.groupAccessType'
|
|
size='mini'
|
|
@change='buildLegacyInstance')
|
|
el-radio-button(label='members') {{ $t('dialog.new_instance.group_access_type_members') }}
|
|
el-radio-button(label='plus') {{ $t('dialog.new_instance.group_access_type_plus') }}
|
|
el-radio-button(label='public') {{ $t('dialog.new_instance.group_access_type_public') }}
|
|
//- el-form-item(label="Strict" v-if="newInstanceDialog.accessType === 'friends' || newInstanceDialog.accessType === 'invite'")
|
|
//- el-checkbox(v-model="newInstanceDialog.strict") Prevent non friends joining via URL/Instance ID
|
|
el-form-item(:label='$t("dialog.new_instance.region")')
|
|
el-radio-group(v-model='newInstanceDialog.region' size='mini' @change='buildLegacyInstance')
|
|
el-radio-button(label='US West') {{ $t('dialog.new_instance.region_usw') }}
|
|
el-radio-button(label='US East') {{ $t('dialog.new_instance.region_use') }}
|
|
el-radio-button(label='Europe') {{ $t('dialog.new_instance.region_eu') }}
|
|
el-radio-button(label='Japan') {{ $t('dialog.new_instance.region_jp') }}
|
|
el-form-item(
|
|
:label='$t("dialog.new_instance.ageGate")'
|
|
v-if='newInstanceDialog.accessType === "group"')
|
|
el-checkbox(v-model='newInstanceDialog.ageGate' @change='buildInstance')
|
|
el-form-item(:label='$t("dialog.new_instance.world_id")')
|
|
el-input(
|
|
v-model='newInstanceDialog.worldId'
|
|
size='mini'
|
|
@click.native='$event.target.tagName === "INPUT" && $event.target.select()'
|
|
@change='buildLegacyInstance')
|
|
el-form-item(:label='$t("dialog.new_instance.instance_id")')
|
|
el-input(
|
|
v-model='newInstanceDialog.instanceName'
|
|
:placeholder='$t("dialog.new_instance.instance_id_placeholder")'
|
|
size='mini'
|
|
@change='buildLegacyInstance')
|
|
el-form-item(
|
|
:label='$t("dialog.new_instance.instance_creator")'
|
|
v-if='newInstanceDialog.accessType !== "public" && newInstanceDialog.accessType !== "group"')
|
|
el-select(
|
|
v-model='newInstanceDialog.userId'
|
|
clearable
|
|
:placeholder='$t("dialog.new_instance.instance_creator_placeholder")'
|
|
filterable
|
|
style='width: 100%'
|
|
@change='buildLegacyInstance')
|
|
el-option-group(v-if='API.currentUser' :label='$t("side_panel.me")')
|
|
el-option.x-friend-item(
|
|
:label='API.currentUser.displayName'
|
|
:value='API.currentUser.id'
|
|
style='height: auto')
|
|
.avatar(:class='userStatusClass(API.currentUser)')
|
|
img(v-lazy='userImage(API.currentUser)')
|
|
.detail
|
|
span.name(v-text='API.currentUser.displayName')
|
|
el-option-group(v-if='vipFriends.length' :label='$t("side_panel.favorite")')
|
|
el-option.x-friend-item(
|
|
v-for='friend in vipFriends'
|
|
:key='friend.id'
|
|
:label='friend.name'
|
|
:value='friend.id'
|
|
style='height: auto')
|
|
template(v-if='friend.ref')
|
|
.avatar(:class='userStatusClass(friend.ref)')
|
|
img(v-lazy='userImage(friend.ref)')
|
|
.detail
|
|
span.name(
|
|
v-text='friend.ref.displayName'
|
|
:style='{ color: friend.ref.$userColour }')
|
|
span(v-else v-text='friend.id')
|
|
el-option-group(v-if='onlineFriends.length' :label='$t("side_panel.online")')
|
|
el-option.x-friend-item(
|
|
v-for='friend in onlineFriends'
|
|
:key='friend.id'
|
|
:label='friend.name'
|
|
:value='friend.id'
|
|
style='height: auto')
|
|
template(v-if='friend.ref')
|
|
.avatar(:class='userStatusClass(friend.ref)')
|
|
img(v-lazy='userImage(friend.ref)')
|
|
.detail
|
|
span.name(
|
|
v-text='friend.ref.displayName'
|
|
:style='{ color: friend.ref.$userColour }')
|
|
span(v-else v-text='friend.id')
|
|
el-option-group(v-if='activeFriends.length' :label='$t("side_panel.active")')
|
|
el-option.x-friend-item(
|
|
v-for='friend in activeFriends'
|
|
:key='friend.id'
|
|
:label='friend.name'
|
|
:value='friend.id'
|
|
style='height: auto')
|
|
template(v-if='friend.ref')
|
|
.avatar
|
|
img(v-lazy='userImage(friend.ref)')
|
|
.detail
|
|
span.name(
|
|
v-text='friend.ref.displayName'
|
|
:style='{ color: friend.ref.$userColour }')
|
|
span(v-else v-text='friend.id')
|
|
el-option-group(v-if='offlineFriends.length' :label='$t("side_panel.offline")')
|
|
el-option.x-friend-item(
|
|
v-for='friend in offlineFriends'
|
|
:key='friend.id'
|
|
:label='friend.name'
|
|
:value='friend.id'
|
|
style='height: auto')
|
|
template(v-if='friend.ref')
|
|
.avatar
|
|
img(v-lazy='userImage(friend.ref)')
|
|
.detail
|
|
span.name(
|
|
v-text='friend.ref.displayName'
|
|
:style='{ color: friend.ref.$userColour }')
|
|
span(v-else v-text='friend.id')
|
|
el-form-item(
|
|
:label='$t("dialog.new_instance.group_id")'
|
|
v-if='newInstanceDialog.accessType === "group"')
|
|
el-select(
|
|
v-model='newInstanceDialog.groupId'
|
|
clearable
|
|
:placeholder='$t("dialog.new_instance.group_placeholder")'
|
|
filterable
|
|
style='width: 100%'
|
|
@change='buildLegacyInstance')
|
|
el-option-group(:label='$t("dialog.new_instance.group_placeholder")')
|
|
el-option.x-friend-item(
|
|
v-if='group'
|
|
v-for='group in API.currentUserGroups.values()'
|
|
:key='group.id'
|
|
:label='group.name'
|
|
:value='group.id'
|
|
style='height: auto; width: 478px')
|
|
.avatar
|
|
img(v-lazy='group.iconUrl')
|
|
.detail
|
|
span.name(v-text='group.name')
|
|
el-form-item(:label='$t("dialog.new_instance.location")')
|
|
el-input(
|
|
v-model='newInstanceDialog.location'
|
|
size='mini'
|
|
readonly
|
|
@click.native='$event.target.tagName === "INPUT" && $event.target.select()')
|
|
el-form-item(:label='$t("dialog.new_instance.url")')
|
|
el-input(v-model='newInstanceDialog.url' size='mini' readonly)
|
|
template(#footer v-if='newInstanceDialog.selectedTab === "0"')
|
|
template(v-if='newInstanceDialog.instanceCreated')
|
|
el-button(size='small' @click='copyInstanceUrl(newInstanceDialog.location)') {{ $t('dialog.new_instance.copy_url') }}
|
|
el-button(size='small' @click='selfInvite(newInstanceDialog.location)') {{ $t('dialog.new_instance.self_invite') }}
|
|
el-button(
|
|
size='small'
|
|
@click='showInviteDialog(newInstanceDialog.location)'
|
|
:disabled='(newInstanceDialog.accessType === "friends" || newInstanceDialog.accessType === "invite") && newInstanceDialog.userId !== API.currentUser.id') {{ $t('dialog.new_instance.invite') }}
|
|
el-button(
|
|
type='primary'
|
|
size='small'
|
|
@click='showLaunchDialog(newInstanceDialog.location, newInstanceDialog.shortName)') {{ $t('dialog.new_instance.launch') }}
|
|
template(v-else)
|
|
el-button(type='primary' size='small' @click='createNewInstance()') {{ $t('dialog.new_instance.create_instance') }}
|
|
template(#footer v-else-if='newInstanceDialog.selectedTab === "1"')
|
|
el-button(size='small' @click='copyInstanceUrl(newInstanceDialog.location)') {{ $t('dialog.new_instance.copy_url') }}
|
|
el-button(size='small' @click='selfInvite(newInstanceDialog.location)') {{ $t('dialog.new_instance.self_invite') }}
|
|
el-button(
|
|
size='small'
|
|
@click='showInviteDialog(newInstanceDialog.location)'
|
|
:disabled='(newInstanceDialog.accessType === "friends" || newInstanceDialog.accessType === "invite") && newInstanceDialog.userId !== API.currentUser.id') {{ $t('dialog.new_instance.invite') }}
|
|
el-button(
|
|
type='primary'
|
|
size='small'
|
|
@click='showLaunchDialog(newInstanceDialog.location, newInstanceDialog.shortName)') {{ $t('dialog.new_instance.launch') }}
|