mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-17 13:53:52 +02:00
Update new instance dialog
This commit is contained in:
166
html/src/app.js
166
html/src/app.js
@@ -5096,6 +5096,10 @@ speechSynthesis.getVoices();
|
||||
if ($app.galleryDialogVisible) {
|
||||
$app.refreshEmojiTable();
|
||||
}
|
||||
} else if (contentType === 'avatar') {
|
||||
// hmm, utilizing this might be too spamy and cause UI to move around
|
||||
} else if (contentType === 'world') {
|
||||
// hmm
|
||||
} else {
|
||||
console.log('Unknown content-refresh', content);
|
||||
}
|
||||
@@ -20004,14 +20008,15 @@ speechSynthesis.getVoices();
|
||||
secureOrShortName: '',
|
||||
lastSelectedGroupId: '',
|
||||
selectedGroupRoles: [],
|
||||
roleIds: []
|
||||
roleIds: [],
|
||||
groupRef: {}
|
||||
};
|
||||
|
||||
API.$on('LOGOUT', function () {
|
||||
$app.newInstanceDialog.visible = false;
|
||||
});
|
||||
|
||||
$app.methods.buildInstance = function () {
|
||||
$app.methods.buildLegacyInstance = function () {
|
||||
var D = this.newInstanceDialog;
|
||||
D.instanceCreated = false;
|
||||
D.shortName = '';
|
||||
@@ -20062,6 +20067,7 @@ speechSynthesis.getVoices();
|
||||
D.roleIds = [];
|
||||
var ref = API.cachedGroups.get(D.groupId);
|
||||
if (typeof ref !== 'undefined') {
|
||||
D.groupRef = ref;
|
||||
D.selectedGroupRoles = ref.roles;
|
||||
API.getGroupRoles({
|
||||
groupId: D.groupId
|
||||
@@ -20075,6 +20081,7 @@ speechSynthesis.getVoices();
|
||||
if (!D.groupId) {
|
||||
D.roleIds = [];
|
||||
D.selectedGroupRoles = [];
|
||||
D.groupRef = {};
|
||||
D.lastSelectedGroupId = '';
|
||||
}
|
||||
D.instanceId = tags.join('');
|
||||
@@ -20082,12 +20089,65 @@ speechSynthesis.getVoices();
|
||||
this.saveNewInstanceDialog();
|
||||
};
|
||||
|
||||
$app.methods.createGroupInstance = function () {
|
||||
$app.methods.buildInstance = function () {
|
||||
var D = this.newInstanceDialog;
|
||||
D.instanceCreated = false;
|
||||
D.instanceId = '';
|
||||
D.shortName = '';
|
||||
D.secureOrShortName = '';
|
||||
if (!D.userId) {
|
||||
D.userId = API.currentUser.id;
|
||||
}
|
||||
if (D.groupId && D.groupId !== D.lastSelectedGroupId) {
|
||||
D.roleIds = [];
|
||||
var ref = API.cachedGroups.get(D.groupId);
|
||||
if (typeof ref !== 'undefined') {
|
||||
D.groupRef = ref;
|
||||
D.selectedGroupRoles = ref.roles;
|
||||
API.getGroupRoles({
|
||||
groupId: D.groupId
|
||||
}).then((args) => {
|
||||
D.lastSelectedGroupId = D.groupId;
|
||||
D.selectedGroupRoles = args.json;
|
||||
ref.roles = args.json;
|
||||
});
|
||||
}
|
||||
}
|
||||
if (!D.groupId) {
|
||||
D.roleIds = [];
|
||||
D.groupRef = {};
|
||||
D.selectedGroupRoles = [];
|
||||
D.lastSelectedGroupId = '';
|
||||
}
|
||||
this.saveNewInstanceDialog();
|
||||
};
|
||||
|
||||
$app.methods.createNewInstance = function () {
|
||||
var D = this.newInstanceDialog;
|
||||
if (D.loading) {
|
||||
return;
|
||||
}
|
||||
D.loading = true;
|
||||
var type = 'public';
|
||||
var canRequestInvite = false;
|
||||
switch (D.accessType) {
|
||||
case 'friends':
|
||||
type = 'friends';
|
||||
break;
|
||||
case 'friends+':
|
||||
type = 'hidden';
|
||||
break;
|
||||
case 'invite':
|
||||
type = 'private';
|
||||
break;
|
||||
case 'invite+':
|
||||
type = 'private';
|
||||
canRequestInvite = true;
|
||||
break;
|
||||
case 'group':
|
||||
type = 'group';
|
||||
break;
|
||||
}
|
||||
var region = 'us';
|
||||
if (D.region === 'US East') {
|
||||
region = 'use';
|
||||
@@ -20096,19 +20156,22 @@ speechSynthesis.getVoices();
|
||||
} else if (D.region === 'Japan') {
|
||||
region = 'jp';
|
||||
}
|
||||
var roleIds = [];
|
||||
if (D.groupAccessType === 'member') {
|
||||
roleIds = D.roleIds;
|
||||
}
|
||||
API.createInstance({
|
||||
type: 'group',
|
||||
groupAccessType: D.groupAccessType,
|
||||
var params = {
|
||||
type,
|
||||
canRequestInvite,
|
||||
worldId: D.worldId,
|
||||
ownerId: D.groupId,
|
||||
region,
|
||||
queueEnabled: D.queueEnabled,
|
||||
roleIds
|
||||
})
|
||||
ownerId: D.userId,
|
||||
region
|
||||
};
|
||||
if (type === 'group') {
|
||||
params.groupAccessType = D.groupAccessType;
|
||||
params.ownerId = D.groupId;
|
||||
params.queueEnabled = D.queueEnabled;
|
||||
if (D.groupAccessType === 'member') {
|
||||
params.roleIds = D.roleIds;
|
||||
}
|
||||
}
|
||||
API.createInstance(params)
|
||||
.then((args) => {
|
||||
D.location = args.json.location;
|
||||
D.instanceId = args.json.instanceId;
|
||||
@@ -20174,10 +20237,6 @@ speechSynthesis.getVoices();
|
||||
'instanceRegion',
|
||||
this.newInstanceDialog.region
|
||||
);
|
||||
await configRepository.setString(
|
||||
'groupInstanceRegion',
|
||||
this.newInstanceDialog.groupRegion
|
||||
);
|
||||
await configRepository.setString(
|
||||
'instanceDialogInstanceName',
|
||||
this.newInstanceDialog.instanceName
|
||||
@@ -20215,6 +20274,11 @@ speechSynthesis.getVoices();
|
||||
this.$nextTick(() => adjustDialogZ(this.$refs.newInstanceDialog.$el));
|
||||
var D = this.newInstanceDialog;
|
||||
var L = API.parseLocation(tag);
|
||||
if (D.worldId === L.worldId) {
|
||||
// reopening dialog, keep last open instance
|
||||
D.visible = true;
|
||||
return;
|
||||
}
|
||||
D.worldId = L.worldId;
|
||||
D.accessType = await configRepository.getString(
|
||||
'instanceDialogAccessType',
|
||||
@@ -20224,10 +20288,6 @@ speechSynthesis.getVoices();
|
||||
'instanceRegion',
|
||||
'US West'
|
||||
);
|
||||
D.groupRegion = await configRepository.getString(
|
||||
'groupInstanceRegion',
|
||||
'US West'
|
||||
);
|
||||
D.instanceName = await configRepository.getString(
|
||||
'instanceDialogInstanceName',
|
||||
''
|
||||
@@ -20248,11 +20308,17 @@ speechSynthesis.getVoices();
|
||||
D.instanceCreated = false;
|
||||
D.lastSelectedGroupId = '';
|
||||
D.selectedGroupRoles = [];
|
||||
D.groupRef = {};
|
||||
D.roleIds = [];
|
||||
D.strict = false;
|
||||
D.shortName = '';
|
||||
D.secureOrShortName = '';
|
||||
this.buildInstance();
|
||||
API.getGroupPermissions({ userId: API.currentUser.id });
|
||||
if (D.selectedTab === '0') {
|
||||
this.buildInstance();
|
||||
} else {
|
||||
this.buildLegacyInstance();
|
||||
}
|
||||
this.updateNewInstanceDialog();
|
||||
D.visible = true;
|
||||
};
|
||||
@@ -24526,6 +24592,7 @@ speechSynthesis.getVoices();
|
||||
var ref = API.applyGroup(group);
|
||||
API.currentUserGroups.set(group.id, ref);
|
||||
});
|
||||
await API.getGroupPermissions({ userId: API.currentUser.id });
|
||||
this.saveCurrentUserGroups();
|
||||
};
|
||||
|
||||
@@ -28372,7 +28439,34 @@ speechSynthesis.getVoices();
|
||||
}
|
||||
});
|
||||
|
||||
//**
|
||||
API.getGroupPermissions = function (params) {
|
||||
return this.call(`users/${params.userId}/groups/permissions`, {
|
||||
method: 'GET'
|
||||
}).then((json) => {
|
||||
var args = {
|
||||
json,
|
||||
params
|
||||
};
|
||||
this.$emit('GROUP:PERMISSIONS', args);
|
||||
return args;
|
||||
});
|
||||
};
|
||||
|
||||
API.$on('GROUP:PERMISSIONS', function (args) {
|
||||
if (args.params.userId !== this.currentUser.id) {
|
||||
return;
|
||||
}
|
||||
var json = args.json;
|
||||
for (var groupId in json) {
|
||||
var permissions = json[groupId];
|
||||
var group = this.cachedGroups.get(groupId);
|
||||
if (group) {
|
||||
group.myMember.permissions = permissions;
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// /**
|
||||
// * @param {{ groupId: string }} params
|
||||
// * @return { Promise<{json: any, params}> }
|
||||
// */
|
||||
@@ -28867,8 +28961,6 @@ speechSynthesis.getVoices();
|
||||
var ref = this.applyGroupMember(json);
|
||||
$app.groupBansModerationTable.data.push(ref);
|
||||
}
|
||||
// $app.groupBansModerationTable.data =
|
||||
// $app.groupBansModerationTable.data.concat(args.json);
|
||||
});
|
||||
|
||||
$app.methods.getAllGroupLogs = async function (groupId) {
|
||||
@@ -30109,6 +30201,17 @@ speechSynthesis.getVoices();
|
||||
await this.getGroupDialogGroupMembers();
|
||||
};
|
||||
|
||||
$app.methods.getCurrentUserRepresentedGroup = function () {
|
||||
return API.getRepresentedGroup({
|
||||
userId: API.currentUser.id
|
||||
}).then((args) => {
|
||||
this.userDialog.representedGroup = args.json;
|
||||
return args;
|
||||
});
|
||||
};
|
||||
|
||||
// group permissions
|
||||
|
||||
$app.methods.hasGroupPermission = function (ref, permission) {
|
||||
if (
|
||||
ref &&
|
||||
@@ -30122,15 +30225,6 @@ speechSynthesis.getVoices();
|
||||
return false;
|
||||
};
|
||||
|
||||
$app.methods.getCurrentUserRepresentedGroup = function () {
|
||||
return API.getRepresentedGroup({
|
||||
userId: API.currentUser.id
|
||||
}).then((args) => {
|
||||
this.userDialog.representedGroup = args.json;
|
||||
return args;
|
||||
});
|
||||
};
|
||||
|
||||
// group gallery
|
||||
|
||||
$app.data.isGroupGalleryLoading = false;
|
||||
|
||||
@@ -94,6 +94,10 @@
|
||||
-webkit-line-clamp: 1;
|
||||
}
|
||||
|
||||
.notification-table .el-table .cell {
|
||||
-webkit-line-clamp: 2;
|
||||
}
|
||||
|
||||
.el-table__row:hover .el-table__cell .cell {
|
||||
-webkit-line-clamp: unset;
|
||||
}
|
||||
|
||||
@@ -1193,7 +1193,7 @@ html
|
||||
span {{ groupDialog.memberFilter.name }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default="dropdown")
|
||||
el-dropdown-item(v-for="(item) in groupDialogFilterOptions" v-text="item.name" @click.native="setGroupMemberFilter(item)")
|
||||
el-dropdown-item(v-for="(item) in groupDialog.ref.roles" v-text="item.name" @click.native="setGroupMemberFilter(item)")
|
||||
el-dropdown-item(v-for="(item) in groupDialog.ref.roles" v-if="!item.defaultRole" v-text="item.name" @click.native="setGroupMemberFilter(item)")
|
||||
el-input(v-model="groupDialog.memberSearch" @input="groupMembersSearch" clearable size="mini" :placeholder="$t('dialog.group.members.search')" style="margin-top:10px;margin-bottom:10px")
|
||||
.x-friend-list(v-if="groupDialog.memberSearch.length" v-loading="isGroupMembersLoading" style="margin-top:10px;overflow:auto;max-height:250px;min-width:130px")
|
||||
.x-friend-item(v-for="user in groupDialog.memberSearchResults" :key="user.id" @click="showUserDialog(user.userId)" class="x-friend-item-border")
|
||||
@@ -1290,8 +1290,9 @@ html
|
||||
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="inviteDialog" :visible.sync="inviteDialog.visible" :title="$t('dialog.invite.header')" width="450px")
|
||||
div(v-if="inviteDialog.visible" v-loading="inviteDialog.loading")
|
||||
location(:location="inviteDialog.worldId" :link="false")
|
||||
el-button(size="mini" v-text="$t('dialog.invite.add_friends_in_instance')" @click="addFriendsInInstanceToInvite" style="margin-top:10px")
|
||||
el-button(size="mini" v-text="$t('dialog.invite.add_favorite_friends')" @click="addFavoriteFriendsToInvite" style="margin-top:10px")
|
||||
br
|
||||
el-button(size="mini" v-text="$t('dialog.invite.add_friends_in_instance')" @click="addFriendsInInstanceToInvite" :disabled="inviteDialog.friendsInInstance.length === 0" style="margin-top:10px")
|
||||
el-button(size="mini" v-text="$t('dialog.invite.add_favorite_friends')" @click="addFavoriteFriendsToInvite" :disabled="friendsGroup0.length === 0" style="margin-top:10px")
|
||||
el-select(v-model="inviteDialog.userIds" multiple clearable :placeholder="$t('dialog.invite.select_placeholder')" filterable :disabled="inviteDialog.loading" style="width:100%;margin-top:15px")
|
||||
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")
|
||||
@@ -1403,21 +1404,19 @@ html
|
||||
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") {{ $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-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.queueEnabled')" v-if="newInstanceDialog.accessType === 'group'")
|
||||
el-checkbox(v-model="newInstanceDialog.queueEnabled" @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="buildInstance")
|
||||
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="buildInstance")
|
||||
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="buildInstance")
|
||||
el-option-group(v-if="API.currentUser" :label="$t('side_panel.me')")
|
||||
@@ -1461,41 +1460,12 @@ html
|
||||
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" v-for="group in API.currentUserGroups.values()" :key="group.id" :label="group.name" :value="group.id" style="height:auto;width:478px")
|
||||
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.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.group')")
|
||||
el-form(v-if="newInstanceDialog.visible" :model="newInstanceDialog" label-width="150px")
|
||||
el-form-item(:label="$t('dialog.new_instance.group_access_type')")
|
||||
el-radio-group(v-model="newInstanceDialog.groupAccessType" size="mini" @change="buildInstance")
|
||||
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="$t('dialog.new_instance.region')")
|
||||
el-radio-group(v-model="newInstanceDialog.groupRegion" 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.queueEnabled')")
|
||||
el-checkbox(v-model="newInstanceDialog.queueEnabled" @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="buildInstance")
|
||||
el-form-item(:label="$t('dialog.new_instance.group_id')")
|
||||
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" 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.groupAccessType === 'members'")
|
||||
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")
|
||||
@@ -1506,19 +1476,98 @@ html
|
||||
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.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="friendsGroup0.length" :label="$t('side_panel.favorite')")
|
||||
el-option.x-friend-item(v-for="friend in friendsGroup0" :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="friendsGroup1.length" :label="$t('side_panel.online')")
|
||||
el-option.x-friend-item(v-for="friend in friendsGroup1" :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="friendsGroup2.length" :label="$t('side_panel.active')")
|
||||
el-option.x-friend-item(v-for="friend in friendsGroup2" :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="friendsGroup3.length" :label="$t('side_panel.offline')")
|
||||
el-option.x-friend-item(v-for="friend in friendsGroup3" :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'")
|
||||
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(#footer v-else-if="newInstanceDialog.selectedTab === '1'")
|
||||
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="createGroupInstance()" :disabled="!newInstanceDialog.groupId") {{ $t('dialog.new_instance.create_instance') }}
|
||||
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') }}
|
||||
|
||||
//- dialog: launch options
|
||||
el-dialog.x-dialog(:before-close="beforeDialogClose" @mousedown.native="dialogMouseDown" @mouseup.native="dialogMouseUp" ref="launchOptionsDialog" :visible.sync="launchOptionsDialog.visible" :title="$t('dialog.launch_options.header')" width="600px")
|
||||
@@ -2962,7 +3011,7 @@ html
|
||||
span {{ groupDialog.memberFilter.name }} #[i.el-icon-arrow-down.el-icon--right]
|
||||
el-dropdown-menu(#default="dropdown")
|
||||
el-dropdown-item(v-for="(item) in groupDialogFilterOptions" v-text="item.name" @click.native="setGroupMemberFilter(item)")
|
||||
el-dropdown-item(v-for="(item) in groupDialog.ref.roles" v-text="item.name" @click.native="setGroupMemberFilter(item)")
|
||||
el-dropdown-item(v-for="(item) in groupDialog.ref.roles" v-if="!item.defaultRole" v-text="item.name" @click.native="setGroupMemberFilter(item)")
|
||||
el-input(v-model="groupDialog.memberSearch" :disabled="!hasGroupPermission(groupDialog.ref, 'group-bans-manage')" @input="groupMembersSearch" clearable size="mini" :placeholder="$t('dialog.group.members.search')" style="margin-top:10px;margin-bottom:10px")
|
||||
br
|
||||
el-button(size="small" @click="selectAllGroupMembers") {{ $t('dialog.group_member_moderation.select_all') }}
|
||||
|
||||
@@ -960,6 +960,7 @@
|
||||
"queueEnabled": "Queue",
|
||||
"normal": "Normal",
|
||||
"group": "Group",
|
||||
"legacy": "Legacy",
|
||||
"roles": "Roles"
|
||||
},
|
||||
"launch_options": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
mixin notificationsTab()
|
||||
.x-container(v-show="$refs.menu && $refs.menu.activeIndex === 'notification'" v-if="$refs.menu && $refs.menu.activeIndex === 'notification'" v-loading="API.isNotificationsLoading")
|
||||
data-tables(v-bind="notificationTable")
|
||||
data-tables(v-bind="notificationTable" class="notification-table")
|
||||
template(#tool)
|
||||
div(style="margin:0 0 10px;display:flex;align-items:center")
|
||||
el-select(v-model="notificationTable.filters[0].value" @change="saveTableFilters" multiple clearable collapse-tags style="flex:1" :placeholder="$t('view.notification.filter_placeholder')")
|
||||
@@ -53,7 +53,7 @@ mixin notificationsTab()
|
||||
span.x-link(v-if="scope.row.type === 'invite'" @click="showWorldDialog(scope.row.details.worldId)")
|
||||
location(v-if="scope.row.details" :location="scope.row.details.worldId" :hint="scope.row.details.worldName" :grouphint="scope.row.details.groupName" :link="false")
|
||||
br
|
||||
span(v-else-if="scope.row.message && scope.row.message !== `This is a generated invite to ${scope.row.details?.worldName}`" v-text="scope.row.message")
|
||||
span(v-if="scope.row.message && scope.row.message !== `This is a generated invite to ${scope.row.details?.worldName}`" v-text="scope.row.message")
|
||||
span(v-else-if='scope.row.details && scope.row.details.inviteMessage' v-text="scope.row.details.inviteMessage")
|
||||
span(v-else-if='scope.row.details && scope.row.details.requestMessage' v-text="scope.row.details.requestMessage")
|
||||
span(v-else-if='scope.row.details && scope.row.details.responseMessage' v-text="scope.row.details.responseMessage")
|
||||
|
||||
Reference in New Issue
Block a user