mirror of
https://github.com/modrinth/code.git
synced 2026-08-30 11:36:05 +00:00
* remove unused experimental-styles-within * remove unused styles * more cleanup + prepr * Refactor nearly all legacy buttons to use ButtonStyled * prepr * Update MC account selector to modern version * prepr --------- Co-authored-by: Calum H. <calum@modrinth.com>
141 lines
3.8 KiB
Vue
141 lines
3.8 KiB
Vue
<script setup>
|
|
import { BoxIcon, FolderSearchIcon, TrashIcon } from '@modrinth/assets'
|
|
import { ButtonStyled, injectNotificationManager, Slider, StyledInput } from '@modrinth/ui'
|
|
import { open } from '@tauri-apps/plugin-dialog'
|
|
import { ref, watch } from 'vue'
|
|
|
|
import ConfirmModalWrapper from '@/components/ui/modal/ConfirmModalWrapper.vue'
|
|
import { purge_cache_types } from '@/helpers/cache.js'
|
|
import { get, set } from '@/helpers/settings.ts'
|
|
|
|
const { handleError } = injectNotificationManager()
|
|
const settings = ref(await get())
|
|
|
|
watch(
|
|
settings,
|
|
async () => {
|
|
const setSettings = JSON.parse(JSON.stringify(settings.value))
|
|
|
|
if (!setSettings.custom_dir) {
|
|
setSettings.custom_dir = null
|
|
}
|
|
|
|
await set(setSettings)
|
|
},
|
|
{ deep: true },
|
|
)
|
|
|
|
async function purgeCache() {
|
|
await purge_cache_types([
|
|
'project',
|
|
'project_v3',
|
|
'version',
|
|
'user',
|
|
'team',
|
|
'organization',
|
|
'file',
|
|
'loader_manifest',
|
|
'minecraft_manifest',
|
|
'categories',
|
|
'report_types',
|
|
'loaders',
|
|
'game_versions',
|
|
'donation_platforms',
|
|
'file_hash',
|
|
'file_update',
|
|
'search_results',
|
|
'search_results_v3',
|
|
]).catch(handleError)
|
|
}
|
|
|
|
async function findLauncherDir() {
|
|
const newDir = await open({
|
|
multiple: false,
|
|
directory: true,
|
|
title: 'Select a new app directory',
|
|
})
|
|
|
|
if (newDir) {
|
|
settings.value.custom_dir = newDir
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<template>
|
|
<div class="flex flex-col gap-6">
|
|
<div class="flex flex-col gap-2.5">
|
|
<h2 class="m-0 text-lg font-semibold text-contrast">App directory</h2>
|
|
<StyledInput
|
|
id="appDir"
|
|
v-model="settings.custom_dir"
|
|
:icon="BoxIcon"
|
|
type="text"
|
|
wrapper-class="w-full"
|
|
>
|
|
<template #right>
|
|
<ButtonStyled circular>
|
|
<button class="ml-1.5" @click="findLauncherDir">
|
|
<FolderSearchIcon />
|
|
</button>
|
|
</ButtonStyled>
|
|
</template>
|
|
</StyledInput>
|
|
<p class="m-0 leading-tight text-secondary">
|
|
The directory where the launcher stores all of its files. Changes will be applied after
|
|
restarting the launcher.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="flex flex-col gap-2.5">
|
|
<ConfirmModalWrapper
|
|
ref="purgeCacheConfirmModal"
|
|
title="Are you sure you want to purge the cache?"
|
|
description="If you proceed, your entire cache will be purged. This may slow down the app temporarily."
|
|
:has-to-type="false"
|
|
proceed-label="Purge cache"
|
|
:show-ad-on-close="false"
|
|
@proceed="purgeCache"
|
|
/>
|
|
<h2 class="m-0 text-lg font-semibold text-contrast">App cache</h2>
|
|
<button id="purge-cache" class="btn min-w-max" @click="$refs.purgeCacheConfirmModal.show()">
|
|
<TrashIcon />
|
|
Purge cache
|
|
</button>
|
|
<p class="m-0 leading-tight text-secondary">
|
|
The Modrinth app stores a cache of data to speed up loading. This can be purged to force the
|
|
app to reload data. This may slow down the app temporarily.
|
|
</p>
|
|
</div>
|
|
|
|
<div class="flex flex-col gap-2.5">
|
|
<h2 class="m-0 text-lg font-semibold text-contrast mt-4">Maximum concurrent downloads</h2>
|
|
<Slider
|
|
id="max-downloads"
|
|
v-model="settings.max_concurrent_downloads"
|
|
:min="1"
|
|
:max="10"
|
|
:step="1"
|
|
/>
|
|
<p class="m-0 leading-tight text-secondary">
|
|
The maximum amount of files the launcher can download at the same time. Set this to a lower
|
|
value if you have a poor internet connection. (app restart required to take effect)
|
|
</p>
|
|
</div>
|
|
|
|
<div class="flex flex-col gap-2.5">
|
|
<h2 class="mt-0 m-0 text-lg font-semibold text-contrast">Maximum concurrent writes</h2>
|
|
<Slider
|
|
id="max-writes"
|
|
v-model="settings.max_concurrent_writes"
|
|
:min="1"
|
|
:max="50"
|
|
:step="1"
|
|
/>
|
|
<p class="m-0 leading-tight text-secondary">
|
|
The maximum amount of files the launcher can write to the disk at once. Set this to a lower
|
|
value if you are frequently getting I/O errors. (app restart required to take effect)
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</template>
|