Reverse fav export order

This commit is contained in:
Natsumi
2026-02-22 16:11:33 +11:00
parent 612ea945b4
commit bd8551461b
13 changed files with 39 additions and 29 deletions

View File

@@ -3,7 +3,7 @@
<span v-if="avatarName" class="flex items-center mr-1"
>{{ avatarName }} <Lock v-if="avatarType && avatarType === '(own)'" class="h-4 w-4 ml-1"
/></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">
<template #content>
<span class="truncate">{{ avatarTags }}</span>

View File

@@ -63,7 +63,7 @@
>{{ props.setAvatarTagsDialog.selectedAvatarIds.length }} /
{{ 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 />
<div class="x-friend-list" style="margin-top: 10px; min-height: 60px; max-height: 280px">
<div
@@ -111,7 +111,7 @@
import { Button } from '@/components/ui/button';
import { Checkbox } from '@/components/ui/checkbox';
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 { useI18n } from 'vue-i18n';
import { watch } from 'vue';

View File

@@ -532,7 +532,7 @@
>{{ t('dialog.group_member_moderation.unban') }}</Button
>
<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 }}
</span>
<Button

View File

@@ -1202,6 +1202,7 @@ export const useUserStore = defineStore('User', () => {
async function refreshUserDialogAvatars(fileId) {
const D = userDialog.value;
const userId = D.id;
if (D.isAvatarsLoading) {
return;
}
@@ -1237,7 +1238,9 @@ export const useUserStore = defineStore('User', () => {
},
done: () => {
const array = Array.from(map.values());
sortUserDialogAvatars(array);
if (userId === D.id) {
sortUserDialogAvatars(array);
}
D.isAvatarsLoading = false;
if (fileId) {
D.loading = false;
@@ -1871,6 +1874,10 @@ export const useUserStore = defineStore('User', () => {
currentAvatarThumbnailImageUrl: '',
date_joined: '',
developerType: '',
discordDetails: {
global_name: '',
id: ''
},
discordId: '',
displayName: '',
emailVerified: false,
@@ -1880,6 +1887,7 @@ export const useUserStore = defineStore('User', () => {
friends: [],
googleId: '',
hasBirthday: false,
hasDiscordFriendsOptOut: false,
hasEmail: false,
hasLoggedInFromClient: false,
hasPendingEmail: false,

View File

@@ -1599,7 +1599,6 @@
display: flex;
align-items: center;
flex-direction: column;
gap: 6px;
}
.group-item__count {

View File

@@ -1242,6 +1242,12 @@
font-weight: 600;
}
.group-item__right {
display: flex;
align-items: center;
flex-direction: column;
}
.group-item__count {
font-size: 12px;
}

View File

@@ -249,7 +249,7 @@
}
}
}
avatarExportContent.value = lines.join('\n');
avatarExportContent.value = lines.reverse().join('\n');
}
function selectAvatarExportGroup(group) {
avatarExportFavoriteGroup.value = group;

View File

@@ -10,7 +10,7 @@
<div v-if="avatarImportDialog.progress">
{{ t('dialog.avatar_import.process_progress') }} {{ avatarImportDialog.progress }} /
{{ avatarImportDialog.progressTotal }}
<Loader2 style="margin: 0 5px" />
<Spinner class="inline-block ml-2 mr-2" />
</div>
<Button v-if="avatarImportDialog.loading" size="sm" variant="secondary" @click="cancelAvatarImport">
{{ t('dialog.avatar_import.cancel') }}
@@ -89,7 +89,7 @@
</div>
</div>
<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') }}
{{ avatarImportDialog.importProgress }}/{{ avatarImportDialog.importProgressTotal }}
</span>
@@ -121,7 +121,7 @@
import { Button } from '@/components/ui/button';
import { DataTableLayout } from '@/components/ui/data-table';
import { InputGroupTextareaField } from '@/components/ui/input-group';
import { Loader2 } from 'lucide-vue-next';
import { Spinner } from '@/components/ui/spinner';
import { storeToRefs } from 'pinia';
import { toast } from 'vue-sonner';
import { useI18n } from 'vue-i18n';
@@ -247,11 +247,10 @@
}
}
D.progress++;
if (D.progress === avatarIdList.size) {
D.progress = 0;
}
}
D.loading = false;
D.progress = 0;
D.progressTotal = 0;
}
function deleteItemAvatarImport(ref) {

View File

@@ -207,7 +207,7 @@
}
}
}
friendExportContent.value = lines.join('\n');
friendExportContent.value = lines.reverse().join('\n');
}
function selectFriendExportGroup(group) {

View File

@@ -10,7 +10,7 @@
<div v-if="friendImportDialog.progress">
{{ t('dialog.friend_import.process_progress') }} {{ friendImportDialog.progress }} /
{{ friendImportDialog.progressTotal }}
<Loader2 style="margin: 0 5px" />
<Spinner class="inline-block ml-1 mr-1" />
</div>
<Button v-if="friendImportDialog.loading" size="sm" variant="secondary" @click="cancelFriendImport">
{{ t('dialog.friend_import.cancel') }}
@@ -93,7 +93,7 @@
</div>
</div>
<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 }}/{{
friendImportDialog.importProgressTotal
}}
@@ -124,7 +124,7 @@
import { Button } from '@/components/ui/button';
import { DataTableLayout } from '@/components/ui/data-table';
import { InputGroupTextareaField } from '@/components/ui/input-group';
import { Loader2 } from 'lucide-vue-next';
import { Spinner } from '@/components/ui/spinner';
import { storeToRefs } from 'pinia';
import { toast } from 'vue-sonner';
import { useI18n } from 'vue-i18n';
@@ -340,11 +340,10 @@
}
}
D.progress++;
if (D.progress === userIdList.size) {
D.progress = 0;
}
}
D.loading = false;
D.progress = 0;
D.progressTotal = 0;
}
function resetFriendImport() {
friendImportDialog.value.input = '';

View File

@@ -242,7 +242,7 @@
}
}
}
worldExportContent.value = lines.join('\n');
worldExportContent.value = lines.reverse().join('\n');
}
function selectWorldExportGroup(group) {

View File

@@ -10,7 +10,7 @@
<div v-if="worldImportDialog.progress">
{{ t('dialog.world_import.process_progress') }}
{{ worldImportDialog.progress }} / {{ worldImportDialog.progressTotal }}
<Loader2 style="margin: 0 5px" />
<Spinner class="inline-block ml-2 mr-2" />
</div>
<Button v-if="worldImportDialog.loading" size="sm" variant="outline" @click="cancelWorldImport">
{{ t('dialog.world_import.cancel') }}
@@ -93,7 +93,7 @@
</div>
</div>
<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') }}
{{ worldImportDialog.importProgress }}/{{ worldImportDialog.importProgressTotal }}
</span>
@@ -125,7 +125,7 @@
import { Button } from '@/components/ui/button';
import { DataTableLayout } from '@/components/ui/data-table';
import { InputGroupTextareaField } from '@/components/ui/input-group';
import { Loader2 } from 'lucide-vue-next';
import { Spinner } from '@/components/ui/spinner';
import { storeToRefs } from 'pinia';
import { toast } from 'vue-sonner';
import { useI18n } from 'vue-i18n';
@@ -257,11 +257,10 @@
}
}
D.progress++;
if (D.progress === worldIdList.size) {
D.progress = 0;
}
}
D.loading = false;
D.progress = 0;
D.progressTotal = 0;
}
function deleteItemWorldImport(ref) {

View File

@@ -37,7 +37,7 @@
{{ t('dialog.note_export.cancel') }}
</Button>
<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 }}
</span>
@@ -67,7 +67,7 @@
import { computed, ref, watch } from 'vue';
import { Button } from '@/components/ui/button';
import { DataTableLayout } from '@/components/ui/data-table';
import { Loader2 } from 'lucide-vue-next';
import { Spinner } from '@/components/ui/spinner';
import { storeToRefs } from 'pinia';
import { useI18n } from 'vue-i18n';