mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-05 22:36:05 +02:00
Reverse fav export order
This commit is contained in:
@@ -3,7 +3,7 @@
|
|||||||
<span v-if="avatarName" class="flex items-center mr-1"
|
<span v-if="avatarName" class="flex items-center mr-1"
|
||||||
>{{ avatarName }} <Lock v-if="avatarType && avatarType === '(own)'" class="h-4 w-4 ml-1"
|
>{{ avatarName }} <Lock v-if="avatarType && avatarType === '(own)'" class="h-4 w-4 ml-1"
|
||||||
/></span>
|
/></span>
|
||||||
<span v-else class="text-muted-foreground">Unknown Avatar</span>
|
<span v-else class="flex items-center mr-1 text-muted-foreground">Unknown Avatar</span>
|
||||||
<TooltipWrapper v-if="avatarTags">
|
<TooltipWrapper v-if="avatarTags">
|
||||||
<template #content>
|
<template #content>
|
||||||
<span class="truncate">{{ avatarTags }}</span>
|
<span class="truncate">{{ avatarTags }}</span>
|
||||||
|
|||||||
@@ -63,7 +63,7 @@
|
|||||||
>{{ props.setAvatarTagsDialog.selectedAvatarIds.length }} /
|
>{{ props.setAvatarTagsDialog.selectedAvatarIds.length }} /
|
||||||
{{ setAvatarTagsDialog.ownAvatars.length }}</span
|
{{ setAvatarTagsDialog.ownAvatars.length }}</span
|
||||||
>
|
>
|
||||||
<Loader2 v-if="setAvatarTagsDialog.loading" class="is-loading" style="margin-left: 5px" />
|
<Spinner v-if="setAvatarTagsDialog.loading" class="inline-block ml-2" />
|
||||||
<br />
|
<br />
|
||||||
<div class="x-friend-list" style="margin-top: 10px; min-height: 60px; max-height: 280px">
|
<div class="x-friend-list" style="margin-top: 10px; min-height: 60px; max-height: 280px">
|
||||||
<div
|
<div
|
||||||
@@ -111,7 +111,7 @@
|
|||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { Checkbox } from '@/components/ui/checkbox';
|
import { Checkbox } from '@/components/ui/checkbox';
|
||||||
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
||||||
import { Loader2 } from 'lucide-vue-next';
|
import { Spinner } from '@/components/ui/spinner';
|
||||||
import { toast } from 'vue-sonner';
|
import { toast } from 'vue-sonner';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
import { watch } from 'vue';
|
import { watch } from 'vue';
|
||||||
|
|||||||
@@ -532,7 +532,7 @@
|
|||||||
>{{ t('dialog.group_member_moderation.unban') }}</Button
|
>{{ t('dialog.group_member_moderation.unban') }}</Button
|
||||||
>
|
>
|
||||||
<span v-if="progressCurrent" style="margin-top: 10px">
|
<span v-if="progressCurrent" style="margin-top: 10px">
|
||||||
<Loader2 class="is-loading" style="margin-left: 5px; margin-right: 5px" />
|
<Spinner class="inline-block ml-2 mr-2" />
|
||||||
{{ t('dialog.group_member_moderation.progress') }} {{ progressCurrent }}/{{ progressTotal }}
|
{{ t('dialog.group_member_moderation.progress') }} {{ progressCurrent }}/{{ progressTotal }}
|
||||||
</span>
|
</span>
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
+9
-1
@@ -1202,6 +1202,7 @@ export const useUserStore = defineStore('User', () => {
|
|||||||
|
|
||||||
async function refreshUserDialogAvatars(fileId) {
|
async function refreshUserDialogAvatars(fileId) {
|
||||||
const D = userDialog.value;
|
const D = userDialog.value;
|
||||||
|
const userId = D.id;
|
||||||
if (D.isAvatarsLoading) {
|
if (D.isAvatarsLoading) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -1237,7 +1238,9 @@ export const useUserStore = defineStore('User', () => {
|
|||||||
},
|
},
|
||||||
done: () => {
|
done: () => {
|
||||||
const array = Array.from(map.values());
|
const array = Array.from(map.values());
|
||||||
sortUserDialogAvatars(array);
|
if (userId === D.id) {
|
||||||
|
sortUserDialogAvatars(array);
|
||||||
|
}
|
||||||
D.isAvatarsLoading = false;
|
D.isAvatarsLoading = false;
|
||||||
if (fileId) {
|
if (fileId) {
|
||||||
D.loading = false;
|
D.loading = false;
|
||||||
@@ -1871,6 +1874,10 @@ export const useUserStore = defineStore('User', () => {
|
|||||||
currentAvatarThumbnailImageUrl: '',
|
currentAvatarThumbnailImageUrl: '',
|
||||||
date_joined: '',
|
date_joined: '',
|
||||||
developerType: '',
|
developerType: '',
|
||||||
|
discordDetails: {
|
||||||
|
global_name: '',
|
||||||
|
id: ''
|
||||||
|
},
|
||||||
discordId: '',
|
discordId: '',
|
||||||
displayName: '',
|
displayName: '',
|
||||||
emailVerified: false,
|
emailVerified: false,
|
||||||
@@ -1880,6 +1887,7 @@ export const useUserStore = defineStore('User', () => {
|
|||||||
friends: [],
|
friends: [],
|
||||||
googleId: '',
|
googleId: '',
|
||||||
hasBirthday: false,
|
hasBirthday: false,
|
||||||
|
hasDiscordFriendsOptOut: false,
|
||||||
hasEmail: false,
|
hasEmail: false,
|
||||||
hasLoggedInFromClient: false,
|
hasLoggedInFromClient: false,
|
||||||
hasPendingEmail: false,
|
hasPendingEmail: false,
|
||||||
|
|||||||
@@ -1599,7 +1599,6 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
gap: 6px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.group-item__count {
|
.group-item__count {
|
||||||
|
|||||||
@@ -1242,6 +1242,12 @@
|
|||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.group-item__right {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: column;
|
||||||
|
}
|
||||||
|
|
||||||
.group-item__count {
|
.group-item__count {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -249,7 +249,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
avatarExportContent.value = lines.join('\n');
|
avatarExportContent.value = lines.reverse().join('\n');
|
||||||
}
|
}
|
||||||
function selectAvatarExportGroup(group) {
|
function selectAvatarExportGroup(group) {
|
||||||
avatarExportFavoriteGroup.value = group;
|
avatarExportFavoriteGroup.value = group;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<div v-if="avatarImportDialog.progress">
|
<div v-if="avatarImportDialog.progress">
|
||||||
{{ t('dialog.avatar_import.process_progress') }} {{ avatarImportDialog.progress }} /
|
{{ t('dialog.avatar_import.process_progress') }} {{ avatarImportDialog.progress }} /
|
||||||
{{ avatarImportDialog.progressTotal }}
|
{{ avatarImportDialog.progressTotal }}
|
||||||
<Loader2 style="margin: 0 5px" />
|
<Spinner class="inline-block ml-2 mr-2" />
|
||||||
</div>
|
</div>
|
||||||
<Button v-if="avatarImportDialog.loading" size="sm" variant="secondary" @click="cancelAvatarImport">
|
<Button v-if="avatarImportDialog.loading" size="sm" variant="secondary" @click="cancelAvatarImport">
|
||||||
{{ t('dialog.avatar_import.cancel') }}
|
{{ t('dialog.avatar_import.cancel') }}
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span v-if="avatarImportDialog.importProgress" style="margin: 10px">
|
<span v-if="avatarImportDialog.importProgress" style="margin: 10px">
|
||||||
<Loader2 style="margin-right: 5px" />
|
<Spinner class="inline-block ml-2 mr-2" />
|
||||||
{{ t('dialog.avatar_import.import_progress') }}
|
{{ t('dialog.avatar_import.import_progress') }}
|
||||||
{{ avatarImportDialog.importProgress }}/{{ avatarImportDialog.importProgressTotal }}
|
{{ avatarImportDialog.importProgress }}/{{ avatarImportDialog.importProgressTotal }}
|
||||||
</span>
|
</span>
|
||||||
@@ -121,7 +121,7 @@
|
|||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { DataTableLayout } from '@/components/ui/data-table';
|
import { DataTableLayout } from '@/components/ui/data-table';
|
||||||
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
||||||
import { Loader2 } from 'lucide-vue-next';
|
import { Spinner } from '@/components/ui/spinner';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { toast } from 'vue-sonner';
|
import { toast } from 'vue-sonner';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
@@ -247,11 +247,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
D.progress++;
|
D.progress++;
|
||||||
if (D.progress === avatarIdList.size) {
|
|
||||||
D.progress = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
D.loading = false;
|
D.loading = false;
|
||||||
|
D.progress = 0;
|
||||||
|
D.progressTotal = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteItemAvatarImport(ref) {
|
function deleteItemAvatarImport(ref) {
|
||||||
|
|||||||
@@ -207,7 +207,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
friendExportContent.value = lines.join('\n');
|
friendExportContent.value = lines.reverse().join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectFriendExportGroup(group) {
|
function selectFriendExportGroup(group) {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<div v-if="friendImportDialog.progress">
|
<div v-if="friendImportDialog.progress">
|
||||||
{{ t('dialog.friend_import.process_progress') }} {{ friendImportDialog.progress }} /
|
{{ t('dialog.friend_import.process_progress') }} {{ friendImportDialog.progress }} /
|
||||||
{{ friendImportDialog.progressTotal }}
|
{{ friendImportDialog.progressTotal }}
|
||||||
<Loader2 style="margin: 0 5px" />
|
<Spinner class="inline-block ml-1 mr-1" />
|
||||||
</div>
|
</div>
|
||||||
<Button v-if="friendImportDialog.loading" size="sm" variant="secondary" @click="cancelFriendImport">
|
<Button v-if="friendImportDialog.loading" size="sm" variant="secondary" @click="cancelFriendImport">
|
||||||
{{ t('dialog.friend_import.cancel') }}
|
{{ t('dialog.friend_import.cancel') }}
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span v-if="friendImportDialog.importProgress" style="margin: 10px">
|
<span v-if="friendImportDialog.importProgress" style="margin: 10px">
|
||||||
<Loader2 style="margin-right: 5px" />
|
<Spinner class="inline-block ml-2 mr-2" />
|
||||||
{{ t('dialog.friend_import.import_progress') }} {{ friendImportDialog.importProgress }}/{{
|
{{ t('dialog.friend_import.import_progress') }} {{ friendImportDialog.importProgress }}/{{
|
||||||
friendImportDialog.importProgressTotal
|
friendImportDialog.importProgressTotal
|
||||||
}}
|
}}
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { DataTableLayout } from '@/components/ui/data-table';
|
import { DataTableLayout } from '@/components/ui/data-table';
|
||||||
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
||||||
import { Loader2 } from 'lucide-vue-next';
|
import { Spinner } from '@/components/ui/spinner';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { toast } from 'vue-sonner';
|
import { toast } from 'vue-sonner';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
@@ -340,11 +340,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
D.progress++;
|
D.progress++;
|
||||||
if (D.progress === userIdList.size) {
|
|
||||||
D.progress = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
D.loading = false;
|
D.loading = false;
|
||||||
|
D.progress = 0;
|
||||||
|
D.progressTotal = 0;
|
||||||
}
|
}
|
||||||
function resetFriendImport() {
|
function resetFriendImport() {
|
||||||
friendImportDialog.value.input = '';
|
friendImportDialog.value.input = '';
|
||||||
|
|||||||
@@ -242,7 +242,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
worldExportContent.value = lines.join('\n');
|
worldExportContent.value = lines.reverse().join('\n');
|
||||||
}
|
}
|
||||||
|
|
||||||
function selectWorldExportGroup(group) {
|
function selectWorldExportGroup(group) {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
<div v-if="worldImportDialog.progress">
|
<div v-if="worldImportDialog.progress">
|
||||||
{{ t('dialog.world_import.process_progress') }}
|
{{ t('dialog.world_import.process_progress') }}
|
||||||
{{ worldImportDialog.progress }} / {{ worldImportDialog.progressTotal }}
|
{{ worldImportDialog.progress }} / {{ worldImportDialog.progressTotal }}
|
||||||
<Loader2 style="margin: 0 5px" />
|
<Spinner class="inline-block ml-2 mr-2" />
|
||||||
</div>
|
</div>
|
||||||
<Button v-if="worldImportDialog.loading" size="sm" variant="outline" @click="cancelWorldImport">
|
<Button v-if="worldImportDialog.loading" size="sm" variant="outline" @click="cancelWorldImport">
|
||||||
{{ t('dialog.world_import.cancel') }}
|
{{ t('dialog.world_import.cancel') }}
|
||||||
@@ -93,7 +93,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<span v-if="worldImportDialog.importProgress" style="margin: 10px">
|
<span v-if="worldImportDialog.importProgress" style="margin: 10px">
|
||||||
<Loader2 style="margin-right: 5px" />
|
<Spinner class="inline-block ml-2 mr-2" />
|
||||||
{{ t('dialog.world_import.import_progress') }}
|
{{ t('dialog.world_import.import_progress') }}
|
||||||
{{ worldImportDialog.importProgress }}/{{ worldImportDialog.importProgressTotal }}
|
{{ worldImportDialog.importProgress }}/{{ worldImportDialog.importProgressTotal }}
|
||||||
</span>
|
</span>
|
||||||
@@ -125,7 +125,7 @@
|
|||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { DataTableLayout } from '@/components/ui/data-table';
|
import { DataTableLayout } from '@/components/ui/data-table';
|
||||||
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
import { InputGroupTextareaField } from '@/components/ui/input-group';
|
||||||
import { Loader2 } from 'lucide-vue-next';
|
import { Spinner } from '@/components/ui/spinner';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { toast } from 'vue-sonner';
|
import { toast } from 'vue-sonner';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
@@ -257,11 +257,10 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
D.progress++;
|
D.progress++;
|
||||||
if (D.progress === worldIdList.size) {
|
|
||||||
D.progress = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
D.loading = false;
|
D.loading = false;
|
||||||
|
D.progress = 0;
|
||||||
|
D.progressTotal = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteItemWorldImport(ref) {
|
function deleteItemWorldImport(ref) {
|
||||||
|
|||||||
@@ -37,7 +37,7 @@
|
|||||||
{{ t('dialog.note_export.cancel') }}
|
{{ t('dialog.note_export.cancel') }}
|
||||||
</Button>
|
</Button>
|
||||||
<span v-if="loading" style="margin: 10px">
|
<span v-if="loading" style="margin: 10px">
|
||||||
<Loader2 style="margin-right: 5px" />
|
<Spinner class="inline-block ml-2 mr-2" />
|
||||||
{{ t('dialog.note_export.progress') }} {{ progress }}/{{ progressTotal }}
|
{{ t('dialog.note_export.progress') }} {{ progress }}/{{ progressTotal }}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
@@ -67,7 +67,7 @@
|
|||||||
import { computed, ref, watch } from 'vue';
|
import { computed, ref, watch } from 'vue';
|
||||||
import { Button } from '@/components/ui/button';
|
import { Button } from '@/components/ui/button';
|
||||||
import { DataTableLayout } from '@/components/ui/data-table';
|
import { DataTableLayout } from '@/components/ui/data-table';
|
||||||
import { Loader2 } from 'lucide-vue-next';
|
import { Spinner } from '@/components/ui/spinner';
|
||||||
import { storeToRefs } from 'pinia';
|
import { storeToRefs } from 'pinia';
|
||||||
import { useI18n } from 'vue-i18n';
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user