From bb6faac54c906ad701552e7646bcc98dfe13569b Mon Sep 17 00:00:00 2001 From: Natsumi Date: Wed, 27 Aug 2025 20:09:32 +1200 Subject: [PATCH] Open new instance in-game --- .../dialogs/WorldDialog/WorldDialog.vue | 6 +++++- src/localization/en/en.json | 2 +- src/stores/invite.js | 10 +++++++++ .../components/FavoritesWorldItem.vue | 21 ++++++++++++++----- 4 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/components/dialogs/WorldDialog/WorldDialog.vue b/src/components/dialogs/WorldDialog/WorldDialog.vue index 14304445..c3af29e2 100644 --- a/src/components/dialogs/WorldDialog/WorldDialog.vue +++ b/src/components/dialogs/WorldDialog/WorldDialog.vue @@ -232,7 +232,11 @@ {{ t('dialog.world.actions.new_instance') }} - {{ t('dialog.world.actions.new_instance_and_self_invite') }} + {{ + isGameRunning + ? t('dialog.world.actions.new_instance_and_open_in_vrchat') + : t('dialog.world.actions.new_instance_and_self_invite') + }} { const instanceStore = useInstanceStore(); + const gameStore = useGameStore(); + const launchStore = useLaunchStore(); const state = reactive({ editInviteMessageDialog: { visible: false, @@ -160,6 +164,12 @@ export const useInviteStore = defineStore('Invite', () => { if (!L.isRealInstance) { return; } + if (gameStore.isGameRunning && !LINUX) { + const secureOrShortName = + args.json.shortName || args.json.secureName; + launchStore.tryOpenInstanceInVrc(location, secureOrShortName); + return; + } instanceRequest .selfInvite({ instanceId: L.instanceId, diff --git a/src/views/Favorites/components/FavoritesWorldItem.vue b/src/views/Favorites/components/FavoritesWorldItem.vue index 1e3f6646..b057641a 100644 --- a/src/views/Favorites/components/FavoritesWorldItem.vue +++ b/src/views/Favorites/components/FavoritesWorldItem.vue @@ -51,10 +51,14 @@ :content="$t('view.favorite.private')"> - + + props.favorite.$selected,