feat: 一键安装支持自选游戏目录
Axolotl desktop CI / guardrails (push) Has been cancelled
Axolotl desktop CI / desktop (macos-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (ubuntu-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (windows-latest) (push) Has been cancelled
Axolotl desktop CI / website (push) Has been cancelled
Repository checks / typos (push) Has been cancelled
Repository checks / tombi (push) Has been cancelled
Rust checks / shear (push) Has been cancelled
Sync source to CNB / Sync Git ref (push) Has been cancelled
Axolotl desktop CI / guardrails (push) Has been cancelled
Axolotl desktop CI / desktop (macos-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (ubuntu-latest) (push) Has been cancelled
Axolotl desktop CI / desktop (windows-latest) (push) Has been cancelled
Axolotl desktop CI / website (push) Has been cancelled
Repository checks / typos (push) Has been cancelled
Repository checks / tombi (push) Has been cancelled
Rust checks / shear (push) Has been cancelled
Sync source to CNB / Sync Git ref (push) Has been cancelled
StarLight 实例一键安装此前固定落到启动器默认目录,无法选择游戏数据位置。 现复用创建流程的外部游戏目录能力:点击一键安装后弹出目录选择框, 只允许修改游戏目录,其余参数仍由服务器整合包决定。 - hosted::create 接受 game_dir_root,拼为 <root>/<包名> 作为 game_dir_override (刻意避开 versions/ 布局,该结构被外部直链实例检测占用) - 新增顶层命令 get_launcher_root_dir,作为弹窗默认值(可执行文件所在目录) - 新增 HostedGameDirModal 弹窗:只读路径框 + 浏览 + 默认位置 + 安装预览 - 补齐 en-US / zh-CN / zh-TW 三语文案 hosted_create 增加 game_dir_root 参数,前端 hostedCreate/install 同步透传。
This commit is contained in:
1 parent
51fb0c30f7
commit
5006f432dc
10 files changed
+252
-8
No files matched your search
@@ -4,6 +4,7 @@ import { BigOptionButton, Button, defineMessages, useVIntl } from '@modrinth/ui'
|
||||
import { inject, ref, watch } from 'vue'
|
||||
import { useRouter } from 'vue-router'
|
||||
import InstanceModeOptions from '@/components/instance/InstanceModeOptions.vue'
|
||||
import HostedGameDirModal from '@/components/instance/HostedGameDirModal.vue'
|
||||
import HostedPackProgress from '@/components/instance/HostedPackProgress.vue'
|
||||
import type { InstanceMode } from '@/helpers/hosted-packs'
|
||||
import { useHostedCreation } from '@/composables/useHostedCreation'
|
||||
@@ -15,6 +16,18 @@ const { installing, installError, createdInstance, completed, acknowledge, insta
|
||||
const instanceMode = ref<InstanceMode>(
|
||||
installing.value || createdInstance.value ? 'starlight' : 'local',
|
||||
)
|
||||
|
||||
const hostedGameDirModal = ref<InstanceType<typeof HostedGameDirModal>>()
|
||||
|
||||
// One-click StarLight installs reuse the same external game-directory choice
|
||||
// as the custom creation flow: the pack gets its own folder under `<root>`.
|
||||
function promptHostedGameDir() {
|
||||
hostedGameDirModal.value?.show()
|
||||
}
|
||||
|
||||
async function installHostedWithGameDir(gameDirRoot: string) {
|
||||
await install(gameDirRoot)
|
||||
}
|
||||
async function openCompleted(instanceId: string) {
|
||||
try {
|
||||
const failure = await router.push(`/instance/${encodeURIComponent(instanceId)}/`)
|
||||
@@ -103,7 +116,12 @@ async function handleStartFresh() {
|
||||
await openCompleted(createdInstance.value)
|
||||
return
|
||||
}
|
||||
await install()
|
||||
if (createdInstance.value) {
|
||||
// A previous attempt already created the instance; retry in place.
|
||||
await install()
|
||||
return
|
||||
}
|
||||
promptHostedGameDir()
|
||||
return
|
||||
}
|
||||
showModal?.({
|
||||
@@ -179,6 +197,10 @@ function handleImportExisting() {
|
||||
/>
|
||||
</div>
|
||||
|
||||
<HostedGameDirModal
|
||||
ref="hostedGameDirModal"
|
||||
@confirm="installHostedWithGameDir"
|
||||
/>
|
||||
<HostedPackProgress :instance-id="createdInstance" :active="installing" />
|
||||
<p v-if="installError" class="m-0 text-red" role="alert">{{ installError }}</p>
|
||||
<p v-if="instanceMode === 'local'" class="m-0 text-sm text-secondary">
|
||||
|
||||
Reference in new issue
Block a user