mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-01 20:53:45 +02:00
replace @element-plus/icons-vue
This commit is contained in:
@@ -219,7 +219,7 @@
|
||||
variant="outline"
|
||||
:disabled="currentUser.currentAvatar === avatarDialog.id"
|
||||
@click="selectAvatarWithoutConfirmation(avatarDialog.id)">
|
||||
<CircleCheck
|
||||
<CheckCircle
|
||||
/></Button>
|
||||
</TooltipWrapper>
|
||||
<DropdownMenu>
|
||||
@@ -232,12 +232,12 @@
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent>
|
||||
<DropdownMenuItem @click="avatarDialogCommand('Refresh')">
|
||||
<Refresh class="size-4" />
|
||||
<DropdownMenuItem @click="avatarDialogCommand('RefreshCw')">
|
||||
<RefreshCw class="size-4" />
|
||||
{{ t('dialog.avatar.actions.refresh') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="avatarDialogCommand('Share')">
|
||||
<Share class="size-4" />
|
||||
<DropdownMenuItem @click="avatarDialogCommand('Share2')">
|
||||
<Share2 class="size-4" />
|
||||
{{ t('dialog.avatar.actions.share') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuSeparator />
|
||||
@@ -245,11 +245,11 @@
|
||||
v-if="avatarDialog.isBlocked"
|
||||
variant="destructive"
|
||||
@click="avatarDialogCommand('Unblock Avatar')">
|
||||
<CircleCheck class="size-4" />
|
||||
<CheckCircle class="size-4" />
|
||||
{{ t('dialog.avatar.actions.unblock') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-else @click="avatarDialogCommand('Block Avatar')">
|
||||
<CircleClose class="size-4" />
|
||||
<XCircle class="size-4" />
|
||||
{{ t('dialog.avatar.actions.block') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
@@ -271,23 +271,23 @@
|
||||
{{ t('dialog.avatar.actions.make_public') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="avatarDialogCommand('Rename')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.avatar.actions.rename') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="avatarDialogCommand('Change Description')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.avatar.actions.change_description') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="avatarDialogCommand('Change Content Tags')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.avatar.actions.change_content_tags') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="avatarDialogCommand('Change Styles and Author Tags')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.avatar.actions.change_styles_author_tags') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="avatarDialogCommand('Change Image')">
|
||||
<Picture class="size-4" />
|
||||
<Image class="size-4" />
|
||||
{{ t('dialog.avatar.actions.change_image') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
@@ -301,22 +301,22 @@
|
||||
v-if="avatarDialog.hasImposter"
|
||||
variant="destructive"
|
||||
@click="avatarDialogCommand('Regenerate Imposter')">
|
||||
<Refresh class="size-4" />
|
||||
<RefreshCw class="size-4" />
|
||||
{{ t('dialog.avatar.actions.regenerate_impostor') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
v-if="avatarDialog.hasImposter"
|
||||
variant="destructive"
|
||||
@click="avatarDialogCommand('Delete Imposter')">
|
||||
<Delete class="size-4" />
|
||||
@click="avatarDialogCommand('Trash2 Imposter')">
|
||||
<Trash2 class="size-4" />
|
||||
{{ t('dialog.avatar.actions.delete_impostor') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-else @click="avatarDialogCommand('Create Imposter')">
|
||||
<User class="size-4" />
|
||||
{{ t('dialog.avatar.actions.create_impostor') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem variant="destructive" @click="avatarDialogCommand('Delete')">
|
||||
<Delete class="size-4" />
|
||||
<DropdownMenuItem variant="destructive" @click="avatarDialogCommand('Trash2')">
|
||||
<Trash2 class="size-4" />
|
||||
{{ t('dialog.avatar.actions.delete') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
@@ -468,7 +468,7 @@
|
||||
<span class="name"
|
||||
>{{ t('dialog.avatar.info.time_spent')
|
||||
}}<TooltipWrapper side="top" :content="t('dialog.world.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon> </TooltipWrapper
|
||||
<AlertTriangle style="margin-left: 3px" /> </TooltipWrapper
|
||||
></span>
|
||||
|
||||
<span v-if="timeSpent === 0" class="extra">-</span>
|
||||
@@ -522,18 +522,22 @@
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
CircleClose,
|
||||
Delete,
|
||||
AlertTriangle,
|
||||
Check,
|
||||
CheckCircle,
|
||||
Download,
|
||||
Edit,
|
||||
Picture,
|
||||
Refresh,
|
||||
Share,
|
||||
Ellipsis,
|
||||
Image,
|
||||
Pencil,
|
||||
RefreshCcw,
|
||||
RefreshCw,
|
||||
Share2,
|
||||
Star,
|
||||
Trash2,
|
||||
Upload,
|
||||
User,
|
||||
Warning
|
||||
} from '@element-plus/icons-vue';
|
||||
import { Check, CircleCheck, Ellipsis, RefreshCcw, Star, Trash2 } from 'lucide-vue-next';
|
||||
XCircle
|
||||
} from 'lucide-vue-next';
|
||||
import { Carousel, CarouselContent, CarouselItem, CarouselNext, CarouselPrevious } from '@/components/ui/carousel';
|
||||
import { computed, defineAsyncComponent, nextTick, ref, watch } from 'vue';
|
||||
import { Button } from '@/components/ui/button';
|
||||
@@ -734,10 +738,10 @@
|
||||
function avatarDialogCommand(command) {
|
||||
const D = avatarDialog.value;
|
||||
switch (command) {
|
||||
case 'Refresh':
|
||||
case 'RefreshCw':
|
||||
showAvatarDialog(D.id);
|
||||
break;
|
||||
case 'Share':
|
||||
case 'Share2':
|
||||
copyAvatarUrl(D.id);
|
||||
break;
|
||||
case 'Rename':
|
||||
@@ -770,7 +774,7 @@
|
||||
.then(({ ok }) => {
|
||||
if (!ok) return;
|
||||
switch (command) {
|
||||
case 'Delete Favorite':
|
||||
case 'Trash2 Favorite':
|
||||
favoriteRequest.deleteFavorite({
|
||||
objectId: D.id
|
||||
});
|
||||
@@ -839,7 +843,7 @@
|
||||
return args;
|
||||
});
|
||||
break;
|
||||
case 'Delete':
|
||||
case 'Trash2':
|
||||
avatarRequest
|
||||
.deleteAvatar({
|
||||
avatarId: D.id
|
||||
@@ -863,7 +867,7 @@
|
||||
return args;
|
||||
});
|
||||
break;
|
||||
case 'Delete Imposter':
|
||||
case 'Trash2 Imposter':
|
||||
avatarRequest
|
||||
.deleteImposter({
|
||||
avatarId: D.id
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
<script setup>
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Upload } from '@element-plus/icons-vue';
|
||||
import { Upload } from 'lucide-vue-next';
|
||||
import { ref } from 'vue';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { toast } from 'vue-sonner';
|
||||
|
||||
@@ -53,9 +53,7 @@
|
||||
>{{ props.setAvatarTagsDialog.selectedAvatarIds.length }} /
|
||||
{{ setAvatarTagsDialog.ownAvatars.length }}</span
|
||||
>
|
||||
<el-icon v-if="setAvatarTagsDialog.loading" class="is-loading" style="margin-left: 5px"
|
||||
><Loading
|
||||
/></el-icon>
|
||||
<Loader2 v-if="setAvatarTagsDialog.loading" class="is-loading" style="margin-left: 5px" />
|
||||
<br />
|
||||
<div class="x-friend-list" style="margin-top: 10px; min-height: 60px; max-height: 280px">
|
||||
<div
|
||||
@@ -102,7 +100,7 @@
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Checkbox } from '@/components/ui/checkbox';
|
||||
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
||||
import { Loading } from '@element-plus/icons-vue';
|
||||
import { Loader2 } from 'lucide-vue-next';
|
||||
import { toast } from 'vue-sonner';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { watch } from 'vue';
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
@change="onFileChangeGallery" />
|
||||
<ButtonGroup>
|
||||
<Button variant="outline" size="sm" @click="selectImageGallerySelect('', '')">
|
||||
<Close />
|
||||
<X />
|
||||
{{ t('dialog.gallery_select.none') }}
|
||||
</Button>
|
||||
<Button variant="outline" size="sm" @click="refreshGalleryTable">
|
||||
<Refresh />
|
||||
<RefreshCw />
|
||||
{{ t('dialog.gallery_select.refresh') }}
|
||||
</Button>
|
||||
<Button
|
||||
@@ -55,7 +55,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { Close, Refresh, Upload } from '@element-plus/icons-vue';
|
||||
import { X, RefreshCw, Upload } from 'lucide-vue-next';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { ButtonGroup } from '@/components/ui/button-group';
|
||||
import { storeToRefs } from 'pinia';
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
size="icon-lg"
|
||||
:disabled="groupDialog.ref.privacy === 'private'"
|
||||
@click="setGroupRepresentation(groupDialog.id)">
|
||||
<StarFilled />
|
||||
<Star />
|
||||
</Button>
|
||||
</span>
|
||||
</TooltipWrapper>
|
||||
@@ -174,7 +174,7 @@
|
||||
variant="outline"
|
||||
size="icon-lg"
|
||||
@click="cancelGroupRequest(groupDialog.id)">
|
||||
<Close />
|
||||
<X />
|
||||
</Button>
|
||||
</span>
|
||||
</TooltipWrapper>
|
||||
@@ -202,7 +202,7 @@
|
||||
variant="outline"
|
||||
size="icon-lg"
|
||||
@click="joinGroup(groupDialog.id)">
|
||||
<Message />
|
||||
<MessageSquare />
|
||||
</Button>
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper
|
||||
@@ -211,7 +211,7 @@
|
||||
:content="t('dialog.group.actions.invite_required_tooltip')">
|
||||
<span>
|
||||
<Button class="rounded-full mr-2" variant="outline" size="icon-lg" disabled>
|
||||
<Message />
|
||||
<MessageSquare />
|
||||
</Button>
|
||||
</span>
|
||||
</TooltipWrapper>
|
||||
@@ -236,16 +236,16 @@
|
||||
groupDialog.ref.membershipStatus === 'userblocked' ? 'destructive' : 'outline'
|
||||
"
|
||||
size="icon-lg">
|
||||
<MoreFilled />
|
||||
<MoreHorizontal />
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent>
|
||||
<DropdownMenuItem @click="groupDialogCommand('Refresh')">
|
||||
<Refresh class="size-4" />
|
||||
<DropdownMenuItem @click="groupDialogCommand('RefreshCw')">
|
||||
<RefreshCw class="size-4" />
|
||||
{{ t('dialog.group.actions.refresh') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="groupDialogCommand('Share')">
|
||||
<Share class="size-4" />
|
||||
<DropdownMenuItem @click="groupDialogCommand('Share2')">
|
||||
<Share2 class="size-4" />
|
||||
{{ t('dialog.group.actions.share') }}
|
||||
</DropdownMenuItem>
|
||||
<template v-if="groupDialog.inGroup">
|
||||
@@ -254,7 +254,7 @@
|
||||
<DropdownMenuItem
|
||||
v-if="groupDialog.ref.myMember.isSubscribedToAnnouncements"
|
||||
@click="groupDialogCommand('Unsubscribe To Announcements')">
|
||||
<MuteNotification class="size-4" />
|
||||
<BellOff class="size-4" />
|
||||
{{ t('dialog.group.actions.unsubscribe') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
@@ -266,41 +266,41 @@
|
||||
<DropdownMenuItem
|
||||
v-if="hasGroupPermission(groupDialog.ref, 'group-invites-manage')"
|
||||
@click="groupDialogCommand('Invite To Group')">
|
||||
<Message class="size-4" />
|
||||
<MessageSquare class="size-4" />
|
||||
{{ t('dialog.group.actions.invite_to_group') }}
|
||||
</DropdownMenuItem>
|
||||
<template
|
||||
v-if="hasGroupPermission(groupDialog.ref, 'group-announcement-manage')">
|
||||
<DropdownMenuItem @click="groupDialogCommand('Create Post')">
|
||||
<Tickets class="size-4" />
|
||||
<Ticket class="size-4" />
|
||||
{{ t('dialog.group.actions.create_post') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
<DropdownMenuItem
|
||||
:disabled="!hasGroupModerationPermission(groupDialog.ref)"
|
||||
@click="groupDialogCommand('Moderation Tools')">
|
||||
<Operation class="size-4" />
|
||||
<Settings class="size-4" />
|
||||
{{ t('dialog.group.actions.moderation_tools') }}
|
||||
</DropdownMenuItem>
|
||||
<template
|
||||
v-if="groupDialog.ref.myMember && groupDialog.ref.privacy === 'default'">
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItem @click="groupDialogCommand('Visibility Everyone')">
|
||||
<View class="size-4" />
|
||||
<Eye class="size-4" />
|
||||
<Check
|
||||
v-if="groupDialog.ref.myMember.visibility === 'visible'"
|
||||
class="size-4" />
|
||||
{{ t('dialog.group.actions.visibility_everyone') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="groupDialogCommand('Visibility Friends')">
|
||||
<View class="size-4" />
|
||||
<Eye class="size-4" />
|
||||
<Check
|
||||
v-if="groupDialog.ref.myMember.visibility === 'friends'"
|
||||
class="size-4" />
|
||||
{{ t('dialog.group.actions.visibility_friends') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="groupDialogCommand('Visibility Hidden')">
|
||||
<View class="size-4" />
|
||||
<Eye class="size-4" />
|
||||
<Check
|
||||
v-if="groupDialog.ref.myMember.visibility === 'hidden'"
|
||||
class="size-4" />
|
||||
@@ -311,7 +311,7 @@
|
||||
<DropdownMenuItem
|
||||
variant="destructive"
|
||||
@click="groupDialogCommand('Leave Group')">
|
||||
<Delete class="size-4" />
|
||||
<Trash2 class="size-4" />
|
||||
{{ t('dialog.group.actions.leave') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
@@ -322,11 +322,11 @@
|
||||
v-if="groupDialog.ref.membershipStatus === 'userblocked'"
|
||||
variant="destructive"
|
||||
@click="groupDialogCommand('Unblock Group')">
|
||||
<CircleCheck class="size-4" />
|
||||
<CheckCircle class="size-4" />
|
||||
{{ t('dialog.group.actions.unblock') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-else @click="groupDialogCommand('Block Group')">
|
||||
<CircleClose class="size-4" />
|
||||
<XCircle class="size-4" />
|
||||
{{ t('dialog.group.actions.block') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
@@ -359,7 +359,7 @@
|
||||
<div style="margin: 5px 0">
|
||||
<Location :location="room.tag" style="display: inline-block" />
|
||||
<InviteYourself :location="room.tag" style="margin-left: 5px" />
|
||||
<TooltipWrapper side="top" content="Refresh player count">
|
||||
<TooltipWrapper side="top" content="RefreshCw player count">
|
||||
<Button
|
||||
class="rounded-full ml-1 w-6 h-6 text-xs text-muted-foreground hover:text-foreground"
|
||||
size="icon"
|
||||
@@ -392,7 +392,7 @@
|
||||
:style="{ color: user.$userColour }"
|
||||
v-text="user.displayName" />
|
||||
<span v-if="user.location === 'traveling'" class="extra">
|
||||
<el-icon class="is-loading" style="margin-right: 3px"><Loading /></el-icon>
|
||||
<Loader2 class="is-loading" style="margin-right: 3px" />
|
||||
<Timer :epoch="user.$travelingToTime" />
|
||||
</span>
|
||||
<span v-else class="extra">
|
||||
@@ -456,7 +456,7 @@
|
||||
</span>
|
||||
</template>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><View /></el-icon>
|
||||
<Eye style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<DisplayName
|
||||
:userid="groupDialog.announcement.authorId"
|
||||
@@ -581,7 +581,7 @@
|
||||
<span class="name">
|
||||
{{ t('dialog.group.info.last_visited') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span class="extra">{{ formatDateFilter(groupDialog.lastVisit, 'long') }}</span>
|
||||
@@ -775,7 +775,7 @@
|
||||
>
|
||||
</template>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><View /></el-icon>
|
||||
<Eye style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<DisplayName :userid="post.authorId" style="margin-right: 5px" />
|
||||
<span v-if="post.editorId" style="margin-right: 5px"
|
||||
@@ -934,7 +934,7 @@
|
||||
v-if="user.isRepresenting"
|
||||
side="top"
|
||||
:content="t('dialog.group.members.representing')">
|
||||
<el-icon style="margin-right: 5px"><CollectionTag /></el-icon>
|
||||
<Tag style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper v-if="user.visibility !== 'visible'" side="top">
|
||||
<template #content>
|
||||
@@ -943,13 +943,13 @@
|
||||
{{ user.visibility }}</span
|
||||
>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><View /></el-icon>
|
||||
<Eye style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper
|
||||
v-if="!user.isSubscribedToAnnouncements"
|
||||
side="top"
|
||||
:content="t('dialog.group.members.unsubscribed_announcements')">
|
||||
<el-icon style="margin-right: 5px"><ChatLineSquare /></el-icon>
|
||||
<MessageSquare style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper v-if="user.managerNotes" side="top">
|
||||
<template #content>
|
||||
@@ -957,7 +957,7 @@
|
||||
<br />
|
||||
<span>{{ user.managerNotes }}</span>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><Edit /></el-icon>
|
||||
<Pencil style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
</template>
|
||||
<template v-for="roleId in user.roleIds" :key="roleId">
|
||||
@@ -995,7 +995,7 @@
|
||||
v-if="user.isRepresenting"
|
||||
side="top"
|
||||
:content="t('dialog.group.members.representing')">
|
||||
<el-icon style="margin-right: 5px"><CollectionTag /></el-icon>
|
||||
<Tag style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper v-if="user.visibility !== 'visible'" side="top">
|
||||
<template #content>
|
||||
@@ -1004,13 +1004,13 @@
|
||||
{{ user.visibility }}</span
|
||||
>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><View /></el-icon>
|
||||
<Eye style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper
|
||||
v-if="!user.isSubscribedToAnnouncements"
|
||||
side="top"
|
||||
:content="t('dialog.group.members.unsubscribed_announcements')">
|
||||
<el-icon style="margin-right: 5px"><ChatLineSquare /></el-icon>
|
||||
<MessageSquare style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper v-if="user.managerNotes" side="top">
|
||||
<template #content>
|
||||
@@ -1018,7 +1018,7 @@
|
||||
<br />
|
||||
<span>{{ user.managerNotes }}</span>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><Edit /></el-icon>
|
||||
<Pencil style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
</template>
|
||||
<template v-for="roleId in user.roleIds" :key="roleId">
|
||||
@@ -1052,7 +1052,7 @@
|
||||
:disabled="isGroupGalleryLoading"
|
||||
@click="getGroupGalleries">
|
||||
<Spinner v-if="isGroupGalleryLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<TabsUnderline
|
||||
v-model="groupDialogGalleryCurrentName"
|
||||
@@ -1130,29 +1130,27 @@
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
AlertTriangle,
|
||||
Bell,
|
||||
ChatLineSquare,
|
||||
BellOff,
|
||||
Check,
|
||||
CircleCheck,
|
||||
CircleClose,
|
||||
Close,
|
||||
CollectionTag,
|
||||
Delete,
|
||||
CheckCircle,
|
||||
Download,
|
||||
Edit,
|
||||
Loading,
|
||||
Message,
|
||||
MoreFilled,
|
||||
MuteNotification,
|
||||
Operation,
|
||||
Refresh,
|
||||
Share,
|
||||
Eye,
|
||||
Loader2,
|
||||
MessageSquare,
|
||||
MoreHorizontal,
|
||||
Pencil,
|
||||
RefreshCw,
|
||||
Settings,
|
||||
Share2,
|
||||
Star,
|
||||
StarFilled,
|
||||
Tickets,
|
||||
View,
|
||||
Warning
|
||||
} from '@element-plus/icons-vue';
|
||||
Tag,
|
||||
Ticket,
|
||||
Trash2,
|
||||
X,
|
||||
XCircle
|
||||
} from 'lucide-vue-next';
|
||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
|
||||
import { computed, nextTick, reactive, ref, watch } from 'vue';
|
||||
import { Button } from '@/components/ui/button';
|
||||
@@ -1550,7 +1548,7 @@
|
||||
return;
|
||||
}
|
||||
switch (command) {
|
||||
case 'Share':
|
||||
case 'Share2':
|
||||
copyToClipboard(groupDialog.value.ref.$url);
|
||||
break;
|
||||
case 'Create Post':
|
||||
@@ -1562,7 +1560,7 @@
|
||||
case 'Invite To Group':
|
||||
showInviteGroupDialog(D.id, '');
|
||||
break;
|
||||
case 'Refresh':
|
||||
case 'RefreshCw':
|
||||
showGroupDialog(D.id);
|
||||
break;
|
||||
case 'Leave Group':
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
:disabled="isGroupMembersLoading"
|
||||
@click="loadAllGroupMembers">
|
||||
<Spinner v-if="isGroupMembersLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<span style="font-size: 14px; margin-left: 5px; margin-right: 5px">
|
||||
{{ groupMemberModerationTable.data.length }}/{{
|
||||
@@ -53,7 +53,7 @@
|
||||
@click.stop>
|
||||
<span>
|
||||
{{ t(memberSortOrder.name) }}
|
||||
<el-icon style="margin-left: 5px"><ArrowDown /></el-icon>
|
||||
<ArrowDown style="margin-left: 5px" />
|
||||
</span>
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
@@ -90,7 +90,7 @@
|
||||
@click.stop>
|
||||
<span>
|
||||
{{ t(memberFilter.name) }}
|
||||
<el-icon style="margin-left: 5px"><ArrowDown /></el-icon>
|
||||
<ArrowDown style="margin-left: 5px" />
|
||||
</span>
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
@@ -139,7 +139,7 @@
|
||||
:disabled="isGroupMembersLoading"
|
||||
@click="getAllGroupBans(groupMemberModeration.id)">
|
||||
<Spinner v-if="isGroupMembersLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<span style="font-size: 14px; margin-left: 5px; margin-right: 5px">{{
|
||||
groupBansModerationTable.data.length
|
||||
@@ -172,7 +172,7 @@
|
||||
:disabled="isGroupMembersLoading"
|
||||
@click="getAllGroupInvitesAndJoinRequests(groupMemberModeration.id)">
|
||||
<Spinner v-if="isGroupMembersLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<br />
|
||||
<TabsUnderline default-value="sent" :items="groupInvitesTabs" :unmount-on-hide="false">
|
||||
@@ -308,7 +308,7 @@
|
||||
:disabled="isGroupMembersLoading"
|
||||
@click="getAllGroupLogs(groupMemberModeration.id)">
|
||||
<Spinner v-if="isGroupMembersLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<span style="font-size: 14px; margin-left: 5px; margin-right: 5px">{{
|
||||
groupLogsModerationTable.data.length
|
||||
@@ -392,7 +392,7 @@
|
||||
<template #content>
|
||||
<span>{{ t('dialog.group_member_moderation.user_isnt_in_group') }}</span>
|
||||
</template>
|
||||
<el-icon style="margin-left: 3px; display: inline-block"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px; display: inline-block" />
|
||||
</TooltipWrapper>
|
||||
<span v-text="user.user?.displayName || user.userId" style="font-weight: bold; margin-left: 5px"></span>
|
||||
<button
|
||||
@@ -507,7 +507,7 @@
|
||||
>{{ t('dialog.group_member_moderation.unban') }}</Button
|
||||
>
|
||||
<span v-if="progressCurrent" style="margin-top: 10px">
|
||||
<el-icon class="is-loading" style="margin-left: 5px; margin-right: 5px"><Loading /></el-icon>
|
||||
<Loader2 class="is-loading" style="margin-left: 5px; margin-right: 5px" />
|
||||
{{ t('dialog.group_member_moderation.progress') }} {{ progressCurrent }}/{{ progressTotal }}
|
||||
</span>
|
||||
<Button
|
||||
@@ -526,13 +526,12 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { ArrowDown, Loading, Refresh, Warning } from '@element-plus/icons-vue';
|
||||
import { AlertTriangle, ArrowDown, Loader2, RefreshCw, Trash2 } from 'lucide-vue-next';
|
||||
import { computed, reactive, ref, watch } from 'vue';
|
||||
import { InputGroupField, InputGroupTextareaField } from '@/components/ui/input-group';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Spinner } from '@/components/ui/spinner';
|
||||
import { TabsUnderline } from '@/components/ui/tabs';
|
||||
import { Trash2 } from 'lucide-vue-next';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { toast } from 'vue-sonner';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
<span class="flex items-center gap-1">
|
||||
<span>{{ t('dialog.launch.short_url') }}</span>
|
||||
<TooltipWrapper side="top" :content="t('dialog.launch.short_url_notice')">
|
||||
<el-icon><Warning /></el-icon>
|
||||
<AlertTriangle />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
</FieldLabel>
|
||||
@@ -132,12 +132,10 @@
|
||||
DropdownMenuTrigger
|
||||
} from '@/components/ui/dropdown-menu';
|
||||
import { Field, FieldContent, FieldGroup, FieldLabel } from '@/components/ui/field';
|
||||
import { AlertTriangle, Copy, MoreHorizontal } from 'lucide-vue-next';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { ButtonGroup } from '@/components/ui/button-group';
|
||||
import { Copy } from 'lucide-vue-next';
|
||||
import { InputGroupField } from '@/components/ui/input-group';
|
||||
import { MoreHorizontal } from 'lucide-vue-next';
|
||||
import { Warning } from '@element-plus/icons-vue';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { toast } from 'vue-sonner';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
<DropdownMenuTrigger as-child>
|
||||
<div class="ml-2">
|
||||
<Button variant="outline" size="icon-lg" class="rounded-full">
|
||||
<Ellipsis />
|
||||
<MoreHorizontal />
|
||||
<span
|
||||
v-if="dotClass"
|
||||
class="absolute -right-0.5 -top-0.5 h-2.5 w-2.5 rounded-full ring-2 ring-background"
|
||||
@@ -26,43 +26,43 @@
|
||||
</div>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent>
|
||||
<DropdownMenuItem @click="onCommand('Refresh')">
|
||||
<Refresh class="size-4" />
|
||||
<DropdownMenuItem @click="onCommand('RefreshCw')">
|
||||
<RefreshCw class="size-4" />
|
||||
{{ t('dialog.user.actions.refresh') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Share')">
|
||||
<Share class="size-4" />
|
||||
<DropdownMenuItem @click="onCommand('Share2')">
|
||||
<Share2 class="size-4" />
|
||||
{{ t('dialog.user.actions.share') }}
|
||||
</DropdownMenuItem>
|
||||
<template v-if="userDialog.ref.id === currentUser.id">
|
||||
<DropdownMenuItem @click="onCommand('Show Avatar Author')">
|
||||
<UserFilled class="size-4" />
|
||||
<User class="size-4" />
|
||||
{{ t('dialog.user.actions.show_avatar_author') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Show Fallback Avatar Details')">
|
||||
<UserFilled class="size-4" />
|
||||
<User class="size-4" />
|
||||
{{ t('dialog.user.actions.show_fallback_avatar') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItem @click="onCommand('Edit Social Status')">
|
||||
<Edit class="size-4" />
|
||||
<DropdownMenuItem @click="onCommand('Pencil Social Status')">
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.user.actions.edit_status') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Edit Language')">
|
||||
<Edit class="size-4" />
|
||||
<DropdownMenuItem @click="onCommand('Pencil Language')">
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.user.actions.edit_language') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Edit Bio')">
|
||||
<Edit class="size-4" />
|
||||
<DropdownMenuItem @click="onCommand('Pencil Bio')">
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.user.actions.edit_bio') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Edit Pronouns')">
|
||||
<Edit class="size-4" />
|
||||
<DropdownMenuItem @click="onCommand('Pencil Pronouns')">
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.user.actions.edit_pronouns') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItem @click="onCommand('Logout')">
|
||||
<SwitchButton class="size-4" />
|
||||
<Power class="size-4" />
|
||||
{{ t('dialog.user.actions.logout') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
@@ -70,29 +70,29 @@
|
||||
<template v-if="userDialog.isFriend">
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItem @click="onCommand('Request Invite')">
|
||||
<Postcard class="size-4" />
|
||||
<Mail class="size-4" />
|
||||
{{ t('dialog.user.actions.request_invite') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Request Invite Message')">
|
||||
<Postcard class="size-4" />
|
||||
<DropdownMenuItem @click="onCommand('Request Invite MessageSquare')">
|
||||
<Mail class="size-4" />
|
||||
{{ t('dialog.user.actions.request_invite_with_message') }}
|
||||
</DropdownMenuItem>
|
||||
<template v-if="isGameRunning">
|
||||
<DropdownMenuItem
|
||||
:disabled="!checkCanInvite(lastLocation.location)"
|
||||
@click="onCommand('Invite')">
|
||||
<Message class="size-4" />
|
||||
<MessageSquare class="size-4" />
|
||||
{{ t('dialog.user.actions.invite') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
:disabled="!checkCanInvite(lastLocation.location)"
|
||||
@click="onCommand('Invite Message')">
|
||||
<Message class="size-4" />
|
||||
@click="onCommand('Invite MessageSquare')">
|
||||
<MessageSquare class="size-4" />
|
||||
{{ t('dialog.user.actions.invite_with_message') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
<DropdownMenuItem :disabled="!currentUser.isBoopingEnabled" @click="onCommand('Send Boop')">
|
||||
<Pointer class="size-4" />
|
||||
<MousePointer class="size-4" />
|
||||
{{ t('dialog.user.actions.send_boop') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
@@ -102,14 +102,14 @@
|
||||
{{ t('dialog.user.actions.accept_friend_request') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Decline Friend Request')">
|
||||
<Close class="size-4" />
|
||||
<X class="size-4" />
|
||||
{{ t('dialog.user.actions.decline_friend_request') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
<DropdownMenuItem
|
||||
v-else-if="userDialog.outgoingRequest"
|
||||
@click="onCommand('Cancel Friend Request')">
|
||||
<Close class="size-4" />
|
||||
<X class="size-4" />
|
||||
{{ t('dialog.user.actions.cancel_friend_request') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-else @click="onCommand('Send Friend Request')">
|
||||
@@ -117,28 +117,28 @@
|
||||
{{ t('dialog.user.actions.send_friend_request') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Invite To Group')">
|
||||
<Message class="size-4" />
|
||||
<MessageSquare class="size-4" />
|
||||
{{ t('dialog.user.actions.invite_to_group') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Group Moderation')">
|
||||
<Operation class="size-4" />
|
||||
<Settings class="size-4" />
|
||||
{{ t('dialog.user.actions.group_moderation') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Edit Note Memo')">
|
||||
<Edit class="size-4" />
|
||||
Edit Note and Memo
|
||||
<DropdownMenuItem @click="onCommand('Pencil Note Memo')">
|
||||
<Pencil class="size-4" />
|
||||
Pencil Note and Memo
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItem @click="onCommand('Show Avatar Author')">
|
||||
<UserFilled class="size-4" />
|
||||
<User class="size-4" />
|
||||
{{ t('dialog.user.actions.show_avatar_author') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Show Fallback Avatar Details')">
|
||||
<UserFilled class="size-4" />
|
||||
<User class="size-4" />
|
||||
{{ t('dialog.user.actions.show_fallback_avatar') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Previous Instances')">
|
||||
<DataLine class="size-4" />
|
||||
<LineChart class="size-4" />
|
||||
{{ t('dialog.user.actions.show_previous_instances') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuSeparator />
|
||||
@@ -146,39 +146,39 @@
|
||||
v-if="userDialog.isBlock"
|
||||
variant="destructive"
|
||||
@click="onCommand('Moderation Unblock')">
|
||||
<CircleCheck class="size-4" />
|
||||
<CheckCircle class="size-4" />
|
||||
{{ t('dialog.user.actions.moderation_unblock') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
v-else
|
||||
:disabled="userDialog.ref.$isModerator"
|
||||
@click="onCommand('Moderation Block')">
|
||||
<CircleClose class="size-4" />
|
||||
<XCircle class="size-4" />
|
||||
{{ t('dialog.user.actions.moderation_block') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
v-if="userDialog.isMute"
|
||||
variant="destructive"
|
||||
@click="onCommand('Moderation Unmute')">
|
||||
<Microphone class="size-4" />
|
||||
<Mic class="size-4" />
|
||||
{{ t('dialog.user.actions.moderation_unmute') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
v-else
|
||||
:disabled="userDialog.ref.$isModerator"
|
||||
@click="onCommand('Moderation Mute')">
|
||||
<Mute class="size-4" />
|
||||
@click="onCommand('Moderation VolumeX')">
|
||||
<VolumeX class="size-4" />
|
||||
{{ t('dialog.user.actions.moderation_mute') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
v-if="userDialog.isMuteChat"
|
||||
variant="destructive"
|
||||
@click="onCommand('Moderation Enable Chatbox')">
|
||||
<ChatLineRound class="size-4" />
|
||||
<MessageCircle class="size-4" />
|
||||
{{ t('dialog.user.actions.moderation_enable_chatbox') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-else @click="onCommand('Moderation Disable Chatbox')">
|
||||
<ChatDotRound class="size-4" />
|
||||
<MessageCircle class="size-4" />
|
||||
{{ t('dialog.user.actions.moderation_disable_chatbox') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="onCommand('Show Avatar')">
|
||||
@@ -195,11 +195,11 @@
|
||||
v-if="userDialog.isInteractOff"
|
||||
variant="destructive"
|
||||
@click="onCommand('Moderation Enable Avatar Interaction')">
|
||||
<Pointer class="size-4" />
|
||||
<MousePointer class="size-4" />
|
||||
{{ t('dialog.user.actions.moderation_enable_avatar_interaction') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-else @click="onCommand('Moderation Disable Avatar Interaction')">
|
||||
<CircleClose class="size-4" />
|
||||
<XCircle class="size-4" />
|
||||
{{ t('dialog.user.actions.moderation_disable_avatar_interaction') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem :disabled="userDialog.ref.$isModerator" @click="onCommand('Report Hacking')">
|
||||
@@ -209,7 +209,7 @@
|
||||
<template v-if="userDialog.isFriend">
|
||||
<DropdownMenuSeparator />
|
||||
<DropdownMenuItem variant="destructive" @click="onCommand('Unfriend')">
|
||||
<Delete class="size-4" />
|
||||
<Trash2 class="size-4" />
|
||||
{{ t('dialog.user.actions.unfriend') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
@@ -221,30 +221,29 @@
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
ChatDotRound,
|
||||
ChatLineRound,
|
||||
Check,
|
||||
CircleCheck,
|
||||
CircleClose,
|
||||
Close,
|
||||
DataLine,
|
||||
Delete,
|
||||
Edit,
|
||||
CheckCircle,
|
||||
Flag,
|
||||
Message,
|
||||
Microphone,
|
||||
Mute,
|
||||
Operation,
|
||||
LineChart,
|
||||
Mail,
|
||||
MessageCircle,
|
||||
MessageSquare,
|
||||
Mic,
|
||||
MoreHorizontal,
|
||||
MousePointer,
|
||||
Pencil,
|
||||
Plus,
|
||||
Pointer,
|
||||
Postcard,
|
||||
Refresh,
|
||||
Share,
|
||||
SwitchButton,
|
||||
Power,
|
||||
RefreshCw,
|
||||
Settings,
|
||||
Share2,
|
||||
Star,
|
||||
Trash2,
|
||||
User,
|
||||
UserFilled
|
||||
} from '@element-plus/icons-vue';
|
||||
import { MoreHorizontal as Ellipsis, Star } from 'lucide-vue-next';
|
||||
VolumeX,
|
||||
X,
|
||||
XCircle
|
||||
} from 'lucide-vue-next';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { computed } from 'vue';
|
||||
import { storeToRefs } from 'pinia';
|
||||
|
||||
@@ -96,7 +96,7 @@
|
||||
:style="{ color: user.$userColour }"
|
||||
v-text="user.displayName"></span>
|
||||
<span v-if="user.location === 'traveling'" class="extra">
|
||||
<el-icon class="is-loading" style="margin-right: 3px"><Loading /></el-icon>
|
||||
<Loader2 class="is-loading" style="margin-right: 3px" />
|
||||
<Timer :epoch="user.$travelingToTime" />
|
||||
</span>
|
||||
<span v-else class="extra">
|
||||
@@ -173,7 +173,7 @@
|
||||
"
|
||||
side="top"
|
||||
:content="t('dialog.user.info.vrcplus_hides_avatar')">
|
||||
<el-icon><Warning /></el-icon>
|
||||
<AlertTriangle />
|
||||
</TooltipWrapper>
|
||||
</div>
|
||||
</div>
|
||||
@@ -289,7 +289,7 @@
|
||||
<span class="name">
|
||||
{{ t('dialog.user.info.last_seen') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span class="extra">{{ formatDateFilter(userDialog.lastSeen, 'long') }}</span>
|
||||
@@ -304,14 +304,14 @@
|
||||
<div>
|
||||
{{ t('dialog.user.info.join_count') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</div>
|
||||
|
||||
<TooltipWrapper
|
||||
side="top"
|
||||
:content="t('dialog.user.info.open_previous_instance')">
|
||||
<el-icon style="margin-right: 16px"><MoreFilled /></el-icon>
|
||||
<MoreHorizontal style="margin-right: 16px" />
|
||||
</TooltipWrapper>
|
||||
</div>
|
||||
<span v-if="userDialog.joinCount === 0" class="extra">-</span>
|
||||
@@ -324,7 +324,7 @@
|
||||
<span class="name">
|
||||
{{ t('dialog.user.info.time_together') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span v-if="userDialog.timeSpent === 0" class="extra">-</span>
|
||||
@@ -342,7 +342,7 @@
|
||||
<span class="name">
|
||||
{{ t('dialog.user.info.play_time') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span v-if="userDialog.timeSpent === 0" class="extra">-</span>
|
||||
@@ -362,13 +362,13 @@
|
||||
class="name">
|
||||
{{ t('dialog.user.info.online_for') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span v-else class="name">
|
||||
{{ t('dialog.user.info.offline_for') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span class="extra">{{ userOnlineFor(userDialog.ref) }}</span>
|
||||
@@ -415,13 +415,13 @@
|
||||
<span v-if="userDialog.unFriended" class="name">
|
||||
{{ t('dialog.user.info.unfriended') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span v-else class="name">
|
||||
{{ t('dialog.user.info.friended') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span class="extra">{{ formatDateFilter(userDialog.dateFriended, 'long') }}</span>
|
||||
@@ -562,7 +562,7 @@
|
||||
:disabled="userDialog.isMutualFriendsLoading"
|
||||
@click="getUserMutualFriends(userDialog.id)">
|
||||
<Spinner v-if="userDialog.isMutualFriendsLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<span style="margin-left: 5px">{{
|
||||
t('dialog.user.groups.total_count', { count: userDialog.mutualFriends.length })
|
||||
@@ -599,7 +599,7 @@
|
||||
color: #f56c6c;
|
||||
cursor: pointer;
|
||||
">
|
||||
<el-icon style="margin-right: 5px"><Warning /></el-icon>
|
||||
<AlertTriangle style="margin-right: 5px" />
|
||||
<span>Mutual Friends unavailable due to VRChat staged rollout, click for more info</span>
|
||||
</div>
|
||||
<ul
|
||||
@@ -633,7 +633,7 @@
|
||||
:disabled="userDialog.isGroupsLoading"
|
||||
@click="getUserGroups(userDialog.id)">
|
||||
<Spinner v-if="userDialog.isGroupsLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<span style="margin-left: 5px">{{
|
||||
t('dialog.user.groups.total_count', { count: userGroups.groups.length })
|
||||
@@ -771,14 +771,14 @@
|
||||
variant="outline"
|
||||
style="display: block; padding: 7px; font-size: 9px; margin-left: 0"
|
||||
@click="moveGroupUp(group.id)">
|
||||
<Top />
|
||||
<ArrowUp />
|
||||
</Button>
|
||||
<Button
|
||||
size="icon-sm"
|
||||
variant="outline"
|
||||
style="display: block; padding: 7px; font-size: 9px; margin-left: 0"
|
||||
@click="moveGroupDown(group.id)">
|
||||
<Bottom />
|
||||
<ArrowDown />
|
||||
</Button>
|
||||
</div>
|
||||
<div class="avatar">
|
||||
@@ -791,7 +791,7 @@
|
||||
v-if="group.isRepresenting"
|
||||
side="top"
|
||||
:content="t('dialog.group.members.representing')">
|
||||
<el-icon style="margin-right: 5px"><CollectionTag /></el-icon>
|
||||
<Tag style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper v-if="group.myMember?.visibility !== 'visible'" side="top">
|
||||
<template #content>
|
||||
@@ -800,7 +800,7 @@
|
||||
{{ group.myMember.visibility }}</span
|
||||
>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><View /></el-icon>
|
||||
<Eye style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<span>({{ group.memberCount }})</span>
|
||||
</span>
|
||||
@@ -840,11 +840,11 @@
|
||||
setGroupSubscription(group.id, !group.myMember.isSubscribedToAnnouncements)
|
||||
">
|
||||
<span v-if="group.myMember.isSubscribedToAnnouncements"
|
||||
><el-icon style="margin-left: 5px"><MuteNotification /></el-icon>
|
||||
><BellOff style="margin-left: 5px" />
|
||||
{{ t('dialog.group.tags.subscribed') }}</span
|
||||
>
|
||||
<span v-else
|
||||
><el-icon style="margin-left: 5px"><Bell /></el-icon>
|
||||
><Bell style="margin-left: 5px" />
|
||||
{{ t('dialog.group.tags.unsubscribed') }}</span
|
||||
>
|
||||
</Button> -->
|
||||
@@ -899,7 +899,7 @@
|
||||
v-if="group.isRepresenting"
|
||||
side="top"
|
||||
:content="t('dialog.group.members.representing')">
|
||||
<el-icon style="margin-right: 5px"><CollectionTag /></el-icon>
|
||||
<Tag style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper v-if="group.memberVisibility !== 'visible'" side="top">
|
||||
<template #content>
|
||||
@@ -908,7 +908,7 @@
|
||||
{{ group.memberVisibility }}</span
|
||||
>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><View /></el-icon>
|
||||
<Eye style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<span>({{ group.memberCount }})</span>
|
||||
</span>
|
||||
@@ -942,7 +942,7 @@
|
||||
v-if="group.isRepresenting"
|
||||
side="top"
|
||||
:content="t('dialog.group.members.representing')">
|
||||
<el-icon style="margin-right: 5px"><CollectionTag /></el-icon>
|
||||
<Tag style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper v-if="group.memberVisibility !== 'visible'" side="top">
|
||||
<template #content>
|
||||
@@ -951,7 +951,7 @@
|
||||
{{ group.memberVisibility }}</span
|
||||
>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><View /></el-icon>
|
||||
<Eye style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<span>({{ group.memberCount }})</span>
|
||||
</span>
|
||||
@@ -993,7 +993,7 @@
|
||||
v-if="group.isRepresenting"
|
||||
side="top"
|
||||
:content="t('dialog.group.members.representing')">
|
||||
<el-icon style="margin-right: 5px"><CollectionTag /></el-icon>
|
||||
<Tag style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<TooltipWrapper v-if="group.memberVisibility !== 'visible'" side="top">
|
||||
<template #content>
|
||||
@@ -1002,7 +1002,7 @@
|
||||
{{ group.memberVisibility }}</span
|
||||
>
|
||||
</template>
|
||||
<el-icon style="margin-right: 5px"><View /></el-icon>
|
||||
<Eye style="margin-right: 5px" />
|
||||
</TooltipWrapper>
|
||||
<span>({{ group.memberCount }})</span>
|
||||
</span>
|
||||
@@ -1024,7 +1024,7 @@
|
||||
:disabled="userDialog.isWorldsLoading"
|
||||
@click="refreshUserDialogWorlds()">
|
||||
<Spinner v-if="userDialog.isWorldsLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<span style="margin-left: 5px">{{
|
||||
t('dialog.user.worlds.total_count', { count: userDialog.worlds.length })
|
||||
@@ -1094,7 +1094,7 @@
|
||||
type="default"
|
||||
:loading="userDialog.isFavoriteWorldsLoading"
|
||||
size="small"
|
||||
:icon="Refresh"
|
||||
:icon="RefreshCw"
|
||||
circle
|
||||
style="position: absolute; right: 15px; bottom: 15px; z-index: 99"
|
||||
@click="getUserFavoriteWorlds(userDialog.id)">
|
||||
@@ -1166,7 +1166,7 @@
|
||||
:disabled="userDialog.isAvatarsLoading"
|
||||
@click="refreshUserDialogAvatars()">
|
||||
<Spinner v-if="userDialog.isAvatarsLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<Button
|
||||
v-else
|
||||
@@ -1176,7 +1176,7 @@
|
||||
:disabled="userDialog.isAvatarsLoading"
|
||||
@click="setUserDialogAvatarsRemote(userDialog.id)">
|
||||
<Spinner v-if="userDialog.isAvatarsLoading" />
|
||||
<Refresh v-else />
|
||||
<RefreshCw v-else />
|
||||
</Button>
|
||||
<span style="margin-left: 5px">{{
|
||||
t('dialog.user.avatars.total_count', { count: userDialogAvatars.length })
|
||||
@@ -1299,16 +1299,18 @@
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
Bottom,
|
||||
CollectionTag,
|
||||
Download as DownloadIcon,
|
||||
Loading,
|
||||
MoreFilled,
|
||||
Refresh,
|
||||
Top,
|
||||
View,
|
||||
Warning
|
||||
} from '@element-plus/icons-vue';
|
||||
AlertTriangle,
|
||||
ArrowDown,
|
||||
ArrowUp,
|
||||
Download,
|
||||
Eye,
|
||||
Loader2,
|
||||
LogOut,
|
||||
MoreHorizontal,
|
||||
RefreshCcw,
|
||||
RefreshCw,
|
||||
Tag
|
||||
} from 'lucide-vue-next';
|
||||
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
|
||||
import { computed, defineAsyncComponent, nextTick, ref, watch } from 'vue';
|
||||
import {
|
||||
@@ -1317,7 +1319,6 @@
|
||||
DropdownMenuItem,
|
||||
DropdownMenuTrigger
|
||||
} from '@/components/ui/dropdown-menu';
|
||||
import { Download, LogOut, RefreshCcw } from 'lucide-vue-next';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Checkbox } from '@/components/ui/checkbox';
|
||||
import { Spinner } from '@/components/ui/spinner';
|
||||
@@ -1800,19 +1801,19 @@
|
||||
if (D.visible === false) {
|
||||
return;
|
||||
}
|
||||
if (command === 'Refresh') {
|
||||
if (command === 'RefreshCw') {
|
||||
showUserDialog(D.id);
|
||||
} else if (command === 'Share') {
|
||||
} else if (command === 'Share2') {
|
||||
copyUserURL(D.id);
|
||||
} else if (command === 'Add Favorite') {
|
||||
showFavoriteDialog('friend', D.id);
|
||||
} else if (command === 'Edit Social Status') {
|
||||
} else if (command === 'Pencil Social Status') {
|
||||
showSocialStatusDialog();
|
||||
} else if (command === 'Edit Language') {
|
||||
} else if (command === 'Pencil Language') {
|
||||
showLanguageDialog();
|
||||
} else if (command === 'Edit Bio') {
|
||||
} else if (command === 'Pencil Bio') {
|
||||
showBioDialog();
|
||||
} else if (command === 'Edit Pronouns') {
|
||||
} else if (command === 'Pencil Pronouns') {
|
||||
showPronounsDialog();
|
||||
} else if (command === 'Logout') {
|
||||
logout();
|
||||
@@ -1828,7 +1829,7 @@
|
||||
toast('Request invite sent');
|
||||
return args;
|
||||
});
|
||||
} else if (command === 'Invite Message') {
|
||||
} else if (command === 'Invite MessageSquare') {
|
||||
L = parseLocation(lastLocation.value.location);
|
||||
worldRequest
|
||||
.getCachedWorld({
|
||||
@@ -1844,7 +1845,7 @@
|
||||
D.id
|
||||
);
|
||||
});
|
||||
} else if (command === 'Request Invite Message') {
|
||||
} else if (command === 'Request Invite MessageSquare') {
|
||||
showSendInviteRequestDialog(
|
||||
{
|
||||
platform: 'standalonewindows'
|
||||
@@ -1909,7 +1910,7 @@
|
||||
} else {
|
||||
setPlayerModeration(D.id, 5);
|
||||
}
|
||||
} else if (command === 'Edit Note Memo') {
|
||||
} else if (command === 'Pencil Note Memo') {
|
||||
isEditNoteAndMemoDialogVisible.value = true;
|
||||
} else {
|
||||
const i18nPreFix = 'dialog.user.actions.';
|
||||
@@ -2003,7 +2004,7 @@
|
||||
let args;
|
||||
let key;
|
||||
switch (command) {
|
||||
case 'Delete Favorite':
|
||||
case 'Trash2 Favorite':
|
||||
favoriteRequest.deleteFavorite({
|
||||
objectId: userId
|
||||
});
|
||||
@@ -2070,7 +2071,7 @@
|
||||
});
|
||||
handlePlayerModerationDelete(args);
|
||||
break;
|
||||
case 'Moderation Mute': {
|
||||
case 'Moderation VolumeX': {
|
||||
args = await playerModerationRequest.sendPlayerModeration({
|
||||
moderated: userId,
|
||||
type: 'mute'
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
<el-icon><CaretBottom /></el-icon>
|
||||
<ChevronDown />
|
||||
</TooltipWrapper>
|
||||
</template>
|
||||
<span
|
||||
@@ -260,7 +260,7 @@
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { CaretBottom } from '@element-plus/icons-vue';
|
||||
import { ChevronDown } from 'lucide-vue-next';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
<script setup>
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { Upload } from '@element-plus/icons-vue';
|
||||
import { Upload } from 'lucide-vue-next';
|
||||
import { ref } from 'vue';
|
||||
import { storeToRefs } from 'pinia';
|
||||
import { toast } from 'vue-sonner';
|
||||
|
||||
@@ -21,14 +21,12 @@
|
||||
class="dialog-title"
|
||||
style="margin-right: 5px; cursor: pointer"
|
||||
@click="copyWorldName">
|
||||
<el-icon
|
||||
<Home
|
||||
v-if="
|
||||
currentUser.$homeLocation &&
|
||||
currentUser.$homeLocation.worldId === worldDialog.id
|
||||
"
|
||||
style="margin-right: 5px"
|
||||
><HomeFilled
|
||||
/></el-icon>
|
||||
style="margin-right: 5px" />
|
||||
{{ worldDialog.ref.name }}
|
||||
</span>
|
||||
</div>
|
||||
@@ -198,12 +196,12 @@
|
||||
</Button>
|
||||
</DropdownMenuTrigger>
|
||||
<DropdownMenuContent>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Refresh')">
|
||||
<Refresh class="size-4" />
|
||||
<DropdownMenuItem @click="worldDialogCommand('RefreshCw')">
|
||||
<RefreshCw class="size-4" />
|
||||
{{ t('dialog.world.actions.refresh') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Share')">
|
||||
<Share class="size-4" />
|
||||
<DropdownMenuItem @click="worldDialogCommand('Share2')">
|
||||
<Share2 class="size-4" />
|
||||
{{ t('dialog.world.actions.share') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuSeparator />
|
||||
@@ -212,7 +210,7 @@
|
||||
{{ t('dialog.world.actions.new_instance') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="worldDialogCommand('New Instance and Self Invite')">
|
||||
<Message class="size-4" />
|
||||
<MessageSquare class="size-4" />
|
||||
{{
|
||||
canOpenInstanceInGame
|
||||
? t('dialog.world.actions.new_instance_and_open_ingame')
|
||||
@@ -226,56 +224,56 @@
|
||||
currentUser.$homeLocation.worldId === worldDialog.id
|
||||
"
|
||||
@click="worldDialogCommand('Reset Home')">
|
||||
<MagicStick class="size-4" />
|
||||
<Wand2 class="size-4" />
|
||||
{{ t('dialog.world.actions.reset_home') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-else @click="worldDialogCommand('Make Home')">
|
||||
<HomeFilled class="size-4" />
|
||||
<Home class="size-4" />
|
||||
{{ t('dialog.world.actions.make_home') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Previous Instances')">
|
||||
<DataLine class="size-4" />
|
||||
<LineChart class="size-4" />
|
||||
{{ t('dialog.world.actions.show_previous_instances') }}
|
||||
</DropdownMenuItem>
|
||||
<template v-if="currentUser.id !== worldDialog.ref.authorId">
|
||||
<DropdownMenuItem
|
||||
:disabled="!worldDialog.hasPersistData"
|
||||
@click="worldDialogCommand('Delete Persistent Data')">
|
||||
@click="worldDialogCommand('Trash2 Persistent Data')">
|
||||
<Upload class="size-4" />
|
||||
{{ t('dialog.world.actions.delete_persistent_data') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
<template v-else>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Rename')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.world.actions.rename') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Change Description')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.world.actions.change_description') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Change Capacity')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.world.actions.change_capacity') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Change Recommended Capacity')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.world.actions.change_recommended_capacity') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Change YouTube Preview')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.world.actions.change_preview') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Change Tags')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.world.actions.change_warnings_settings_tags') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem @click="worldDialogCommand('Change Allowed Domains')">
|
||||
<Edit class="size-4" />
|
||||
<Pencil class="size-4" />
|
||||
{{ t('dialog.world.actions.change_allowed_video_player_domains') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-if="isWindows" @click="worldDialogCommand('Change Image')">
|
||||
<Picture class="size-4" />
|
||||
<Image class="size-4" />
|
||||
{{ t('dialog.world.actions.change_image') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
@@ -291,21 +289,21 @@
|
||||
worldDialog.ref?.tags?.includes('system_labs')
|
||||
"
|
||||
@click="worldDialogCommand('Unpublish')">
|
||||
<View class="size-4" />
|
||||
<Eye class="size-4" />
|
||||
{{ t('dialog.world.actions.unpublish') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem v-else @click="worldDialogCommand('Publish')">
|
||||
<View class="size-4" />
|
||||
<Eye class="size-4" />
|
||||
{{ t('dialog.world.actions.publish_to_labs') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem
|
||||
:disabled="!worldDialog.hasPersistData"
|
||||
@click="worldDialogCommand('Delete Persistent Data')">
|
||||
@click="worldDialogCommand('Trash2 Persistent Data')">
|
||||
<Upload class="size-4" />
|
||||
{{ t('dialog.world.actions.delete_persistent_data') }}
|
||||
</DropdownMenuItem>
|
||||
<DropdownMenuItem variant="destructive" @click="worldDialogCommand('Delete')">
|
||||
<Delete class="size-4" />
|
||||
<DropdownMenuItem variant="destructive" @click="worldDialogCommand('Trash2')">
|
||||
<Trash2 class="size-4" />
|
||||
{{ t('dialog.world.actions.delete') }}
|
||||
</DropdownMenuItem>
|
||||
</template>
|
||||
@@ -320,16 +318,16 @@
|
||||
:unmount-on-hide="false"
|
||||
@update:modelValue="worldDialogTabClick">
|
||||
<template #Instances>
|
||||
<div class="">
|
||||
<el-icon><User /></el-icon>
|
||||
<div>
|
||||
<User />
|
||||
{{ t('dialog.world.instances.public_count', { count: worldDialog.ref.publicOccupants }) }}
|
||||
<el-icon style="margin-left: 10px"><UserFilled /></el-icon>
|
||||
<User style="margin-left: 10px" />
|
||||
{{
|
||||
t('dialog.world.instances.private_count', {
|
||||
count: worldDialog.ref.privateOccupants
|
||||
})
|
||||
}}
|
||||
<el-icon style="margin-left: 10px"><Check /></el-icon>
|
||||
<Check style="margin-left: 10px" />
|
||||
{{
|
||||
t('dialog.world.instances.capacity_count', {
|
||||
count: worldDialog.ref.recommendedCapacity,
|
||||
@@ -419,9 +417,7 @@
|
||||
:style="{ color: user.$userColour }"
|
||||
v-text="user.displayName" />
|
||||
<span v-if="user.location === 'traveling'" class="extra">
|
||||
<el-icon class="is-loading" style="margin-right: 3px"
|
||||
><Loading
|
||||
/></el-icon>
|
||||
<Loader2 class="is-loading" style="margin-right: 3px" />
|
||||
<Timer :epoch="user.$travelingToTime" />
|
||||
</span>
|
||||
<span v-else class="extra">
|
||||
@@ -615,7 +611,7 @@
|
||||
{{ timeInLab }}
|
||||
</span>
|
||||
</template>
|
||||
<el-icon><ArrowDown /></el-icon>
|
||||
<ArrowDown />
|
||||
</TooltipWrapper>
|
||||
<span class="extra">
|
||||
{{ formatDateFilter(worldDialog.ref.publicationDate, 'long') }}
|
||||
@@ -664,33 +660,7 @@
|
||||
<span class="name">
|
||||
{{ t('dialog.world.info.last_visited') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.world.info.accuracy_notice')"
|
||||
><el-icon style="margin-left: 3px"><Warning /></el-icon
|
||||
></TooltipWrapper>
|
||||
</span>
|
||||
<span class="extra">{{ formatDateFilter(worldDialog.lastVisit, 'long') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<TooltipWrapper side="top" :content="t('dialog.user.info.open_previous_instance')">
|
||||
<div class="x-friend-item" @click="showPreviousInstancesWorldDialog(worldDialog.ref)">
|
||||
<div class="detail">
|
||||
<span class="name">
|
||||
{{ t('dialog.world.info.visit_count') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.world.info.accuracy_notice')"
|
||||
><el-icon style="margin-left: 3px"><Warning /></el-icon
|
||||
></TooltipWrapper>
|
||||
</span>
|
||||
<span class="extra">
|
||||
{{ worldDialog.visitCount }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</TooltipWrapper>
|
||||
<div class="x-friend-item" style="cursor: default">
|
||||
<div class="detail">
|
||||
<span class="name"
|
||||
>{{ t('dialog.world.info.time_spent') }}
|
||||
<TooltipWrapper side="top" :content="t('dialog.world.info.accuracy_notice')">
|
||||
<el-icon style="margin-left: 3px"><Warning /></el-icon>
|
||||
><AlertTriangle style="margin-left: 3px" />
|
||||
</TooltipWrapper>
|
||||
</span>
|
||||
<span class="extra">
|
||||
@@ -747,28 +717,29 @@
|
||||
|
||||
<script setup>
|
||||
import {
|
||||
AlertTriangle,
|
||||
ArrowDown,
|
||||
Check,
|
||||
DataLine,
|
||||
Delete,
|
||||
Download,
|
||||
Edit,
|
||||
Ellipsis,
|
||||
Eye,
|
||||
Flag,
|
||||
HomeFilled,
|
||||
Loading,
|
||||
MagicStick,
|
||||
Message,
|
||||
Picture,
|
||||
Refresh,
|
||||
Share,
|
||||
Home,
|
||||
Image,
|
||||
LineChart,
|
||||
Loader2,
|
||||
MessageSquare,
|
||||
Pencil,
|
||||
RefreshCcw,
|
||||
RefreshCw,
|
||||
Share2,
|
||||
Star,
|
||||
Trash2,
|
||||
Upload,
|
||||
User,
|
||||
UserFilled,
|
||||
View,
|
||||
Warning
|
||||
} from '@element-plus/icons-vue';
|
||||
Wand2
|
||||
} from 'lucide-vue-next';
|
||||
import { computed, defineAsyncComponent, nextTick, ref, watch } from 'vue';
|
||||
import { Ellipsis, RefreshCcw, Star, Trash2 } from 'lucide-vue-next';
|
||||
import { Button } from '@/components/ui/button';
|
||||
import { ElMessageBox } from 'element-plus';
|
||||
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
||||
@@ -993,13 +964,13 @@
|
||||
return;
|
||||
}
|
||||
switch (command) {
|
||||
case 'Delete Favorite':
|
||||
case 'Trash2 Favorite':
|
||||
case 'Make Home':
|
||||
case 'Reset Home':
|
||||
case 'Publish':
|
||||
case 'Unpublish':
|
||||
case 'Delete Persistent Data':
|
||||
case 'Delete':
|
||||
case 'Trash2 Persistent Data':
|
||||
case 'Trash2':
|
||||
modalStore
|
||||
.confirm({
|
||||
description: `Continue? ${command}`,
|
||||
@@ -1008,7 +979,7 @@
|
||||
.then(({ ok }) => {
|
||||
if (!ok) return;
|
||||
switch (command) {
|
||||
case 'Delete Favorite':
|
||||
case 'Trash2 Favorite':
|
||||
favoriteRequest.deleteFavorite({
|
||||
objectId: D.id
|
||||
});
|
||||
@@ -1053,7 +1024,7 @@
|
||||
return args;
|
||||
});
|
||||
break;
|
||||
case 'Delete Persistent Data':
|
||||
case 'Trash2 Persistent Data':
|
||||
miscRequest
|
||||
.deleteWorldPersistData({
|
||||
worldId: D.id
|
||||
@@ -1066,7 +1037,7 @@
|
||||
return args;
|
||||
});
|
||||
break;
|
||||
case 'Delete':
|
||||
case 'Trash2':
|
||||
worldRequest
|
||||
.deleteWorld({
|
||||
worldId: D.id
|
||||
@@ -1096,7 +1067,7 @@
|
||||
case 'Previous Instances':
|
||||
showPreviousInstancesWorldDialog(D.ref);
|
||||
break;
|
||||
case 'Share':
|
||||
case 'Share2':
|
||||
copyWorldUrl();
|
||||
break;
|
||||
case 'Change Allowed Domains':
|
||||
@@ -1111,7 +1082,7 @@
|
||||
case 'Change Image':
|
||||
showChangeWorldImageDialog();
|
||||
break;
|
||||
case 'Refresh':
|
||||
case 'RefreshCw':
|
||||
showWorldDialog(D.id);
|
||||
break;
|
||||
case 'New Instance':
|
||||
|
||||
Reference in New Issue
Block a user