fix: bugs in nightly

* fix: GalleryDialog cannot display in profile tab
This commit is contained in:
pa
2025-06-26 16:23:35 +09:00
committed by GitHub
parent c7fef6e00a
commit 028dffe38c
4 changed files with 165 additions and 268 deletions

View File

@@ -10,164 +10,168 @@ import '@fontsource/noto-sans-jp';
import '@fontsource/noto-sans-sc'; import '@fontsource/noto-sans-sc';
import '@fontsource/noto-sans-tc'; import '@fontsource/noto-sans-tc';
import '@infolektuell/noto-color-emoji'; import '@infolektuell/noto-color-emoji';
import Noty from 'noty';
import Vue from 'vue';
import VueLazyload from 'vue-lazyload';
import VueI18n from 'vue-i18n';
import { createI18n } from 'vue-i18n-bridge';
import { DataTables } from 'vue-data-tables';
import ElementUI from 'element-ui';
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import duration from 'dayjs/plugin/duration'; import duration from 'dayjs/plugin/duration';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
import isSameOrAfter from 'dayjs/plugin/isSameOrAfter'; import isSameOrAfter from 'dayjs/plugin/isSameOrAfter';
import timezone from 'dayjs/plugin/timezone';
import utc from 'dayjs/plugin/utc';
import ElementUI from 'element-ui';
import Noty from 'noty';
import Vue from 'vue';
import { DataTables } from 'vue-data-tables';
import VueI18n from 'vue-i18n';
import { createI18n } from 'vue-i18n-bridge';
import VueLazyload from 'vue-lazyload';
import * as workerTimers from 'worker-timers'; import * as workerTimers from 'worker-timers';
import 'default-passive-events'; import 'default-passive-events';
// util classes
import configRepository from './service/config.js';
import webApiService from './service/webapi.js';
import security from './service/security.js';
import database from './service/database.js';
import * as localizedStrings from './localization/localizedStrings.js';
import removeConfusables, { removeWhitespace } from './service/confusables.js';
import $utils from './classes/utils.js';
import _apiInit from './classes/apiInit.js';
import _apiRequestHandler from './classes/apiRequestHandler.js';
import _vrcxJsonStorage from './classes/vrcxJsonStorage.js';
import { import {
userRequest,
worldRequest,
instanceRequest,
friendRequest,
avatarRequest,
notificationRequest,
playerModerationRequest,
avatarModerationRequest, avatarModerationRequest,
avatarRequest,
favoriteRequest, favoriteRequest,
vrcPlusIconRequest, friendRequest,
groupRequest,
imageRequest,
instanceRequest,
inviteMessagesRequest, inviteMessagesRequest,
miscRequest, miscRequest,
imageRequest, notificationRequest,
playerModerationRequest,
userRequest,
vrcPlusIconRequest,
vrcPlusImageRequest, vrcPlusImageRequest,
groupRequest worldRequest
} from './api'; } from './api';
import { userDialogGroupSortingOptions } from './composables/user/constants/userDialogGroupSortingOptions';
import { import pugTemplate from './app.pug';
getPrintFileName,
getPrintLocalDate, // API classes
languageClass import _config from './classes/API/config.js';
} from './composables/user/utils'; import _apiInit from './classes/apiInit.js';
import _apiLogin from './classes/apiLogin.js';
import _apiRequestHandler from './classes/apiRequestHandler.js';
import _currentUser from './classes/currentUser.js';
import _discordRpc from './classes/discordRpc.js';
import _feed from './classes/feed.js';
import _gameLog from './classes/gameLog.js';
import _gameRealtimeLogging from './classes/gameRealtimeLogging.js';
import _groups from './classes/groups.js';
import _inventory from './classes/inventory.js';
import _languages from './classes/languages.js';
import _memos from './classes/memos.js';
import _prompts from './classes/prompts.js';
import _restoreFriendOrder from './classes/restoreFriendOrder.js';
// main app classes
import _sharedFeed from './classes/sharedFeed.js';
import _uiComponents from './classes/uiComponents.js';
import _updateLoop from './classes/updateLoop.js';
import { userNotes } from './classes/userNotes.js';
import $utils from './classes/utils.js';
import _vrcRegistry from './classes/vrcRegistry.js';
import _vrcxJsonStorage from './classes/vrcxJsonStorage.js';
import _vrcxNotifications from './classes/vrcxNotifications.js';
import _vrcxUpdater from './classes/vrcxUpdater.js';
import _websocket from './classes/websocket.js';
import AvatarDialog from './components/dialogs/AvatarDialog/AvatarDialog.vue';
import ChooseFavoriteGroupDialog from './components/dialogs/ChooseFavoriteGroupDialog.vue';
import FullscreenImageDialog from './components/dialogs/FullscreenImageDialog.vue';
import GalleryDialog from './components/dialogs/GalleryDialog.vue';
import GroupDialog from './components/dialogs/GroupDialog/GroupDialog.vue';
import InviteGroupDialog from './components/dialogs/InviteGroupDialog.vue';
import LaunchDialog from './components/dialogs/LaunchDialog.vue';
import PreviousInstancesInfoDialog from './components/dialogs/PreviousInstancesDialog/PreviousInstancesInfoDialog.vue';
import SafeDialog from './components/dialogs/SafeDialog.vue';
import UserDialog from './components/dialogs/UserDialog/UserDialog.vue';
import VRCXUpdateDialog from './components/dialogs/VRCXUpdateDialog.vue';
// dialogs
import WorldDialog from './components/dialogs/WorldDialog/WorldDialog.vue';
import Location from './components/Location.vue';
import NavMenu from './components/NavMenu.vue';
// components
import SimpleSwitch from './components/SimpleSwitch.vue';
import { import {
compareUnityVersion, compareUnityVersion,
getPlatformInfo, getPlatformInfo,
storeAvatarImage storeAvatarImage
} from './composables/avatar/utils'; } from './composables/avatar/utils';
import { displayLocation } from './composables/instance/utils';
import LoginPage from './views/Login/Login.vue';
// tabs
import ModerationTab from './views/Moderation/Moderation.vue';
import ChartsTab from './views/Charts/Charts.vue';
import SideBar from './views/SideBar/SideBar.vue';
import NavMenu from './components/NavMenu.vue';
import FriendListTab from './views/FriendList/FriendList.vue';
import FavoritesTab from './views/Favorites/Favorites.vue';
import FriendLogTab from './views/FriendLog/FriendLog.vue';
import GameLogTab from './views/GameLog/GameLog.vue';
import NotificationTab from './views/Notifications/Notification.vue';
import FeedTab from './views/Feed/Feed.vue';
import SearchTab from './views/Search/Search.vue';
import ProfileTab from './views/Profile/Profile.vue';
import PlayerListTab from './views/PlayerList/PlayerList.vue';
// components
import SimpleSwitch from './components/SimpleSwitch.vue';
import Location from './components/Location.vue';
// dialogs
import WorldDialog from './components/dialogs/WorldDialog/WorldDialog.vue';
import PreviousInstancesInfoDialog from './components/dialogs/PreviousInstancesDialog/PreviousInstancesInfoDialog.vue';
import FriendImportDialog from './views/Favorites/dialogs/FriendImportDialog.vue';
import WorldImportDialog from './views/Favorites/dialogs/WorldImportDialog.vue';
import AvatarImportDialog from './views/Favorites/dialogs/AvatarImportDialog.vue';
import LaunchDialog from './components/dialogs/LaunchDialog.vue';
import ChooseFavoriteGroupDialog from './components/dialogs/ChooseFavoriteGroupDialog.vue';
import ExportFriendsListDialog from './views/Profile/dialogs/ExportFriendsListDialog.vue';
import ExportAvatarsListDialog from './views/Profile/dialogs/ExportAvatarsListDialog.vue';
import UserDialog from './components/dialogs/UserDialog/UserDialog.vue';
import GroupDialog from './components/dialogs/GroupDialog/GroupDialog.vue';
import InviteGroupDialog from './components/dialogs/InviteGroupDialog.vue';
import AvatarDialog from './components/dialogs/AvatarDialog/AvatarDialog.vue';
import FeedFiltersDialog from './views/Settings/dialogs/FeedFiltersDialog.vue';
import LaunchOptionsDialog from './views/Settings/dialogs/LaunchOptionsDialog.vue';
import OpenSourceSoftwareNoticeDialog from './views/Settings/dialogs/OpenSourceSoftwareNoticeDialog.vue';
import ChangelogDialog from './views/Settings/dialogs/ChangelogDialog.vue';
import VRCXUpdateDialog from './components/dialogs/VRCXUpdateDialog.vue';
import ScreenshotMetadataDialog from './views/Settings/dialogs/ScreenshotMetadataDialog.vue';
import DiscordNamesDialog from './views/Profile/dialogs/DiscordNamesDialog.vue';
import EditInviteMessageDialog from './views/Profile/dialogs/EditInviteMessageDialog.vue';
import NoteExportDialog from './views/Settings/dialogs/NoteExportDialog.vue';
import VRChatConfigDialog from './views/Settings/dialogs/VRChatConfigDialog.vue';
import YouTubeApiDialog from './views/Settings/dialogs/YouTubeApiDialog.vue';
import NotificationPositionDialog from './views/Settings/dialogs/NotificationPositionDialog.vue';
import AvatarProviderDialog from './views/Settings/dialogs/AvatarProviderDialog.vue';
import RegistryBackupDialog from './views/Settings/dialogs/RegistryBackupDialog.vue';
import PrimaryPasswordDialog from './views/Settings/dialogs/PrimaryPasswordDialog.vue';
import ChatboxBlacklistDialog from './views/PlayerList/dialogs/ChatboxBlacklistDialog.vue';
import FullscreenImageDialog from './components/dialogs/FullscreenImageDialog.vue';
import SafeDialog from './components/dialogs/SafeDialog.vue';
import { hasGroupPermission } from './composables/group/utils'; import { hasGroupPermission } from './composables/group/utils';
import { isRealInstance, parseLocation } from './composables/instance/utils';
import { import {
displayLocation,
isRealInstance,
parseLocation
} from './composables/instance/utils';
import {
_utils,
checkVRChatCache, checkVRChatCache,
convertFileUrlToImageUrl, convertFileUrlToImageUrl,
deleteVRChatCache, deleteVRChatCache,
extractFileId, extractFileId,
extractFileVersion, extractFileVersion,
getAvailablePlatforms, getAvailablePlatforms
_utils
} from './composables/shared/utils'; } from './composables/shared/utils';
import { userDialogGroupSortingOptions } from './composables/user/constants/userDialogGroupSortingOptions';
import {
getPrintFileName,
getPrintLocalDate,
languageClass
} from './composables/user/utils';
import InteropApi from './ipc-electron/interopApi.js';
import * as localizedStrings from './localization/localizedStrings.js';
// main app classes // util classes
import _sharedFeed from './classes/sharedFeed.js'; import configRepository from './service/config.js';
import _prompts from './classes/prompts.js'; import removeConfusables, { removeWhitespace } from './service/confusables.js';
import _vrcxNotifications from './classes/vrcxNotifications.js'; import database from './service/database.js';
import _uiComponents from './classes/uiComponents.js'; import security from './service/security.js';
import _websocket from './classes/websocket.js'; import webApiService from './service/webapi.js';
import _apiLogin from './classes/apiLogin.js'; import ChartsTab from './views/Charts/Charts.vue';
import _currentUser from './classes/currentUser.js'; import AvatarImportDialog from './views/Favorites/dialogs/AvatarImportDialog.vue';
import _updateLoop from './classes/updateLoop.js'; import FriendImportDialog from './views/Favorites/dialogs/FriendImportDialog.vue';
import _discordRpc from './classes/discordRpc.js'; import WorldImportDialog from './views/Favorites/dialogs/WorldImportDialog.vue';
import _vrcxUpdater from './classes/vrcxUpdater.js'; import FavoritesTab from './views/Favorites/Favorites.vue';
import _gameLog from './classes/gameLog.js'; import FeedTab from './views/Feed/Feed.vue';
import _gameRealtimeLogging from './classes/gameRealtimeLogging.js'; import FriendListTab from './views/FriendList/FriendList.vue';
import _feed from './classes/feed.js'; import FriendLogTab from './views/FriendLog/FriendLog.vue';
import _memos from './classes/memos.js'; import GameLogTab from './views/GameLog/GameLog.vue';
import _languages from './classes/languages.js';
import _groups from './classes/groups.js';
import _vrcRegistry from './classes/vrcRegistry.js';
import _restoreFriendOrder from './classes/restoreFriendOrder.js';
import _inventory from './classes/inventory.js';
import { userNotes } from './classes/userNotes.js'; import LoginPage from './views/Login/Login.vue';
import pugTemplate from './app.pug'; // tabs
import ModerationTab from './views/Moderation/Moderation.vue';
// API classes import NotificationTab from './views/Notifications/Notification.vue';
import _config from './classes/API/config.js'; import ChatboxBlacklistDialog from './views/PlayerList/dialogs/ChatboxBlacklistDialog.vue';
import PlayerListTab from './views/PlayerList/PlayerList.vue';
import DiscordNamesDialog from './views/Profile/dialogs/DiscordNamesDialog.vue';
import EditInviteMessageDialog from './views/Profile/dialogs/EditInviteMessageDialog.vue';
import ExportAvatarsListDialog from './views/Profile/dialogs/ExportAvatarsListDialog.vue';
import ExportFriendsListDialog from './views/Profile/dialogs/ExportFriendsListDialog.vue';
import ProfileTab from './views/Profile/Profile.vue';
import SearchTab from './views/Search/Search.vue';
import AvatarProviderDialog from './views/Settings/dialogs/AvatarProviderDialog.vue';
import ChangelogDialog from './views/Settings/dialogs/ChangelogDialog.vue';
import FeedFiltersDialog from './views/Settings/dialogs/FeedFiltersDialog.vue';
import LaunchOptionsDialog from './views/Settings/dialogs/LaunchOptionsDialog.vue';
import NoteExportDialog from './views/Settings/dialogs/NoteExportDialog.vue';
import NotificationPositionDialog from './views/Settings/dialogs/NotificationPositionDialog.vue';
import OpenSourceSoftwareNoticeDialog from './views/Settings/dialogs/OpenSourceSoftwareNoticeDialog.vue';
import PrimaryPasswordDialog from './views/Settings/dialogs/PrimaryPasswordDialog.vue';
import RegistryBackupDialog from './views/Settings/dialogs/RegistryBackupDialog.vue';
import ScreenshotMetadataDialog from './views/Settings/dialogs/ScreenshotMetadataDialog.vue';
import VRChatConfigDialog from './views/Settings/dialogs/VRChatConfigDialog.vue';
import YouTubeApiDialog from './views/Settings/dialogs/YouTubeApiDialog.vue';
import SideBar from './views/SideBar/SideBar.vue';
// #endregion // #endregion
// some workaround for failing to get voice list first run // some workaround for failing to get voice list first run
speechSynthesis.getVoices(); speechSynthesis.getVoices();
import InteropApi from './ipc-electron/interopApi.js';
console.log(`isLinux: ${LINUX}`); console.log(`isLinux: ${LINUX}`);
// #region | Hey look it's most of VRCX! // #region | Hey look it's most of VRCX!
@@ -335,7 +339,8 @@ console.log(`isLinux: ${LINUX}`);
AvatarProviderDialog, AvatarProviderDialog,
RegistryBackupDialog, RegistryBackupDialog,
PrimaryPasswordDialog, PrimaryPasswordDialog,
FullscreenImageDialog FullscreenImageDialog,
GalleryDialog
}, },
provide() { provide() {
return { return {
@@ -10833,6 +10838,10 @@ console.log(`isLinux: ${LINUX}`);
$app.galleryTable = []; $app.galleryTable = [];
}); });
$app.methods.closeGalleryDialog = function () {
this.galleryDialogVisible = false;
};
$app.methods.showGalleryDialog = function (pageNum) { $app.methods.showGalleryDialog = function (pageNum) {
this.galleryDialogVisible = true; this.galleryDialogVisible = true;
this.refreshGalleryTable(); this.refreshGalleryTable();

View File

@@ -501,11 +501,11 @@
<script setup> <script setup>
import { getCurrentInstance, inject, ref } from 'vue'; import { getCurrentInstance, inject, ref } from 'vue';
import { useI18n } from 'vue-i18n-bridge'; import { useI18n } from 'vue-i18n-bridge';
import { userRequest, vrcPlusIconRequest, vrcPlusImageRequest, miscRequest, inventoryRequest } from '../../../api'; import { inventoryRequest, miscRequest, userRequest, vrcPlusIconRequest, vrcPlusImageRequest } from '../../api';
import { extractFileId } from '../../../composables/shared/utils'; import { extractFileId } from '../../composables/shared/utils';
import { emojiAnimationStyleList, emojiAnimationStyleUrl } from '../../../composables/user/constants/emoji'; import { emojiAnimationStyleList, emojiAnimationStyleUrl } from '../../composables/user/constants/emoji';
import { getPrintFileName } from '../../../composables/user/utils'; import { getPrintFileName } from '../../composables/user/utils';
import Location from '../../Location.vue'; import Location from '../Location.vue';
const { t } = useI18n(); const { t } = useI18n();

View File

@@ -1791,29 +1791,6 @@
<LanguageDialog :language-dialog="languageDialog" /> <LanguageDialog :language-dialog="languageDialog" />
<BioDialog :bio-dialog="bioDialog" /> <BioDialog :bio-dialog="bioDialog" />
<PronounsDialog :pronouns-dialog="pronounsDialog" /> <PronounsDialog :pronouns-dialog="pronounsDialog" />
<GalleryDialog
:gallery-dialog-visible.sync="galleryDialogVisible"
:gallery-dialog-gallery-loading="galleryDialogGalleryLoading"
:gallery-dialog-icons-loading="galleryDialogIconsLoading"
:gallery-dialog-emojis-loading="galleryDialogEmojisLoading"
:gallery-dialog-stickers-loading="galleryDialogStickersLoading"
:gallery-dialog-prints-loading="galleryDialogPrintsLoading"
:gallery-dialog-inventory-loading="galleryDialogInventoryLoading"
:gallery-table="galleryTable"
:VRCPlusIconsTable="VRCPlusIconsTable"
:emoji-table="emojiTable"
:sticker-table="stickerTable"
:print-upload-note="printUploadNote"
:print-crop-border="printCropBorder"
:print-table="printTable"
:inventory-table="inventoryTable"
@refreshGalleryTable="refreshGalleryTable"
@refreshVRCPlusIconsTable="refreshVRCPlusIconsTable"
@refreshStickerTable="refreshStickerTable"
@refreshEmojiTable="refreshEmojiTable"
@refreshPrintTable="refreshPrintTable"
@getInventory="getInventory"
@closeGalleryDialog="closeGalleryDialog" />
</safe-dialog> </safe-dialog>
</template> </template>
@@ -1848,7 +1825,6 @@
import InviteGroupDialog from '../InviteGroupDialog.vue'; import InviteGroupDialog from '../InviteGroupDialog.vue';
import PreviousImagesDialog from '../PreviousImagesDialog.vue'; import PreviousImagesDialog from '../PreviousImagesDialog.vue';
import BioDialog from './BioDialog.vue'; import BioDialog from './BioDialog.vue';
import GalleryDialog from './GalleryDialog.vue';
import LanguageDialog from './LanguageDialog.vue'; import LanguageDialog from './LanguageDialog.vue';
import PreviousInstancesUserDialog from './PreviousInstancesUserDialog.vue'; import PreviousInstancesUserDialog from './PreviousInstancesUserDialog.vue';
import PronounsDialog from './PronounsDialog.vue'; import PronounsDialog from './PronounsDialog.vue';
@@ -1979,68 +1955,6 @@
activeFriends: { activeFriends: {
type: Array, type: Array,
default: () => [] default: () => []
},
// Gallery Dialog
galleryDialogVisible: {
type: Boolean,
required: true
},
galleryDialogGalleryLoading: {
type: Boolean,
required: true
},
galleryDialogIconsLoading: {
type: Boolean,
required: true
},
galleryDialogEmojisLoading: {
type: Boolean,
required: true
},
galleryDialogStickersLoading: {
type: Boolean,
required: true
},
galleryDialogPrintsLoading: {
type: Boolean,
required: true
},
galleryDialogInventoryLoading: {
type: Boolean,
required: true
},
galleryTable: {
type: Array,
required: true
},
// eslint-disable-next-line vue/prop-name-casing
VRCPlusIconsTable: {
type: Array,
required: true
},
emojiTable: {
type: Array,
required: true
},
stickerTable: {
type: Array,
required: true
},
printUploadNote: {
type: String,
required: true
},
printCropBorder: {
type: Boolean,
required: true
},
printTable: {
type: Array,
required: true
},
inventoryTable: {
type: Array,
required: true
} }
}); });
@@ -2055,14 +1969,7 @@
'saveUserMemo', 'saveUserMemo',
'setGroupVisibility', 'setGroupVisibility',
'leaveGroup', 'leaveGroup',
'leaveGroupPrompt', 'leaveGroupPrompt'
'refreshGalleryTable',
'refreshVRCPlusIconsTable',
'refreshStickerTable',
'refreshEmojiTable',
'refreshPrintTable',
'getInventory',
'closeGalleryDialog'
]); ]);
watch( watch(
@@ -2178,10 +2085,6 @@
props.userDialog.note = note.replace(/[\r\n]/g, ''); props.userDialog.note = note.replace(/[\r\n]/g, '');
} }
function closeGalleryDialog() {
emit('closeGalleryDialog');
}
function toggleLastActiveTab(userId) { function toggleLastActiveTab(userId) {
if (userDialogTabsRef.value.currentName === '0') { if (userDialogTabsRef.value.currentName === '0') {
userDialogLastActiveTab.value = t('dialog.user.info.header'); userDialogLastActiveTab.value = t('dialog.user.info.header');
@@ -3281,22 +3184,4 @@
function closeInviteDialog() { function closeInviteDialog() {
clearInviteImageUpload(); clearInviteImageUpload();
} }
function refreshGalleryTable() {
emit('refreshGalleryTable');
}
function refreshVRCPlusIconsTable() {
emit('refreshVRCPlusIconsTable');
}
function refreshStickerTable() {
emit('refreshStickerTable');
}
function refreshEmojiTable() {
emit('refreshEmojiTable');
}
function refreshPrintTable() {
emit('refreshPrintTable');
}
function getInventory() {
emit('getInventory');
}
</script> </script>

View File

@@ -82,27 +82,6 @@ mixin dialogs
:onlineFriends='onlineFriends' :onlineFriends='onlineFriends'
:offlineFriends='offlineFriends' :offlineFriends='offlineFriends'
:activeFriends='activeFriends' :activeFriends='activeFriends'
:galleryDialogVisible='galleryDialogVisible'
:galleryDialogGalleryLoading='galleryDialogGalleryLoading'
:galleryDialogIconsLoading='galleryDialogIconsLoading'
:galleryDialogEmojisLoading='galleryDialogEmojisLoading'
:galleryDialogStickersLoading='galleryDialogStickersLoading'
:galleryDialogPrintsLoading='galleryDialogPrintsLoading'
:galleryDialogInventoryLoading='galleryDialogInventoryLoading'
:galleryTable='galleryTable'
:VRCPlusIconsTable='VRCPlusIconsTable'
:emojiTable='emojiTable'
:stickerTable='stickerTable'
:printUploadNote='printUploadNote'
:printCropBorder='printCropBorder'
:printTable='printTable'
:inventoryTable='inventoryTable'
@refreshGalleryTable='refreshGalleryTable'
@refreshEmojiTable='refreshEmojiTable'
@refreshStickerTable='refreshStickerTable'
@refreshVRCPlusIconsTable='refreshVRCPlusIconsTable'
@refreshPrintTable='refreshPrintTable'
@getInventory='getInventory'
@sortUserDialogAvatars='sortUserDialogAvatars' @sortUserDialogAvatars='sortUserDialogAvatars'
@logout='logout' @logout='logout'
@showAvatarAuthorDialog='showAvatarAuthorDialog' @showAvatarAuthorDialog='showAvatarAuthorDialog'
@@ -113,8 +92,7 @@ mixin dialogs
@saveUserMemo='saveUserMemo' @saveUserMemo='saveUserMemo'
@setGroupVisibility='setGroupVisibility' @setGroupVisibility='setGroupVisibility'
@leaveGroup='leaveGroup' @leaveGroup='leaveGroup'
@leaveGroupPrompt='leaveGroupPrompt' @leaveGroupPrompt='leaveGroupPrompt')
@closeGalleryDialog='galleryDialogVisible = false')
WorldDialog( WorldDialog(
:worldDialog.sync='worldDialog' :worldDialog.sync='worldDialog'
@@ -220,3 +198,28 @@ mixin dialogs
PrimaryPasswordDialog( PrimaryPasswordDialog(
:enablePrimaryPasswordDialog.sync='enablePrimaryPasswordDialog' :enablePrimaryPasswordDialog.sync='enablePrimaryPasswordDialog'
@setPrimaryPassword='setPrimaryPassword') @setPrimaryPassword='setPrimaryPassword')
GalleryDialog(
:gallery-dialog-visible.sync="galleryDialogVisible"
:gallery-dialog-gallery-loading="galleryDialogGalleryLoading"
:gallery-dialog-icons-loading="galleryDialogIconsLoading"
:gallery-dialog-emojis-loading="galleryDialogEmojisLoading"
:gallery-dialog-stickers-loading="galleryDialogStickersLoading"
:gallery-dialog-prints-loading="galleryDialogPrintsLoading"
:gallery-dialog-inventory-loading="galleryDialogInventoryLoading"
:gallery-table="galleryTable"
:VRCPlusIconsTable="VRCPlusIconsTable"
:emoji-table="emojiTable"
:sticker-table="stickerTable"
:print-upload-note="printUploadNote"
:print-crop-border="printCropBorder"
:print-table="printTable"
:inventory-table="inventoryTable"
@refreshGalleryTable="refreshGalleryTable"
@refreshVRCPlusIconsTable="refreshVRCPlusIconsTable"
@refreshStickerTable="refreshStickerTable"
@refreshEmojiTable="refreshEmojiTable"
@refreshPrintTable="refreshPrintTable"
@getInventory="getInventory"
@closeGalleryDialog="closeGalleryDialog")