Skip to content

Commit 3b84bf9

Browse files
Merge branch 'main' into multi-drive-fix
2 parents fba4d1f + 701fef0 commit 3b84bf9

File tree

21 files changed

+151
-201
lines changed

21 files changed

+151
-201
lines changed

apps/app-frontend/src/components/ui/ErrorModal.vue

Lines changed: 64 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11
<script setup>
2-
import { XIcon, HammerIcon, LogInIcon, UpdatedIcon } from '@modrinth/assets'
2+
import {
3+
CheckIcon,
4+
DropdownIcon,
5+
XIcon,
6+
HammerIcon,
7+
LogInIcon,
8+
UpdatedIcon,
9+
CopyIcon,
10+
} from '@modrinth/assets'
311
import { ChatIcon } from '@/assets/icons'
4-
import { ref } from 'vue'
12+
import { ButtonStyled, Collapsible } from '@modrinth/ui'
13+
import { ref, computed } from 'vue'
514
import { login as login_flow, set_default_user } from '@/helpers/auth.js'
615
import { handleError } from '@/store/notifications.js'
716
import { handleSevereError } from '@/store/error.js'
@@ -13,6 +22,7 @@ import ModalWrapper from '@/components/ui/modal/ModalWrapper.vue'
1322
const errorModal = ref()
1423
const error = ref()
1524
const closable = ref(true)
25+
const errorCollapsed = ref(false)
1626
1727
const title = ref('An error occurred')
1828
const errorType = ref('unknown')
@@ -118,6 +128,26 @@ async function repairInstance() {
118128
}
119129
loadingRepair.value = false
120130
}
131+
132+
const hasDebugInfo = computed(
133+
() =>
134+
errorType.value === 'directory_move' ||
135+
errorType.value === 'minecraft_auth' ||
136+
errorType.value === 'state_init' ||
137+
errorType.value === 'no_loader_version',
138+
)
139+
140+
const debugInfo = computed(() => error.value.message ?? error.value ?? 'No error message.')
141+
142+
const copied = ref(false)
143+
144+
async function copyToClipboard(text) {
145+
await navigator.clipboard.writeText(text)
146+
copied.value = true
147+
setTimeout(() => {
148+
copied.value = false
149+
}, 3000)
150+
}
121151
</script>
122152
123153
<template>
@@ -244,33 +274,49 @@ async function repairInstance() {
244274
</div>
245275
</template>
246276
<template v-else>
247-
{{ error.message ?? error }}
277+
{{ debugInfo }}
248278
</template>
249-
<template
250-
v-if="
251-
errorType === 'directory_move' ||
252-
errorType === 'minecraft_auth' ||
253-
errorType === 'state_init' ||
254-
errorType === 'no_loader_version'
255-
"
256-
>
279+
<template v-if="hasDebugInfo">
257280
<hr />
258281
<p>
259282
If nothing is working and you need help, visit
260283
<a :href="supportLink">our support page</a>
261284
and start a chat using the widget in the bottom right and we will be more than happy to
262285
assist! Make sure to provide the following debug information to the agent:
263286
</p>
264-
<details>
265-
<summary>Debug information</summary>
266-
{{ error.message ?? error }}
267-
</details>
268287
</template>
269288
</div>
270-
<div class="input-group push-right">
271-
<a :href="supportLink" class="btn" @click="errorModal.hide()"><ChatIcon /> Get support</a>
272-
<button v-if="closable" class="btn" @click="errorModal.hide()"><XIcon /> Close</button>
289+
<div class="flex items-center gap-2">
290+
<ButtonStyled>
291+
<a :href="supportLink" @click="errorModal.hide()"><ChatIcon /> Get support</a>
292+
</ButtonStyled>
293+
<ButtonStyled v-if="closable">
294+
<button @click="errorModal.hide()"><XIcon /> Close</button>
295+
</ButtonStyled>
296+
<ButtonStyled v-if="hasDebugInfo">
297+
<button :disabled="copied" @click="copyToClipboard(debugInfo)">
298+
<template v-if="copied"> <CheckIcon class="text-green" /> Copied! </template>
299+
<template v-else> <CopyIcon /> Copy debug info </template>
300+
</button>
301+
</ButtonStyled>
273302
</div>
303+
<template v-if="hasDebugInfo">
304+
<div class="bg-button-bg rounded-xl mt-2 overflow-clip">
305+
<button
306+
class="flex items-center justify-between w-full bg-transparent border-0 px-4 py-3 cursor-pointer"
307+
@click="errorCollapsed = !errorCollapsed"
308+
>
309+
<span class="text-contrast font-extrabold m-0">Debug information:</span>
310+
<DropdownIcon
311+
class="h-5 w-5 text-secondary transition-transform"
312+
:class="{ 'rotate-180': !errorCollapsed }"
313+
/>
314+
</button>
315+
<Collapsible :collapsed="errorCollapsed">
316+
<pre class="m-0 px-4 py-3 bg-bg rounded-none">{{ debugInfo }}</pre>
317+
</Collapsible>
318+
</div>
319+
</template>
274320
</div>
275321
</ModalWrapper>
276322
</template>

apps/app-frontend/src/components/ui/instance_settings/WindowSettings.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { handleError } from '@/store/notifications'
55
import { defineMessages, useVIntl } from '@vintl/vintl'
66
import { get } from '@/helpers/settings'
77
import { edit } from '@/helpers/profile'
8-
import type { InstanceSettingsTabProps, AppSettings } from '../../../helpers/types'
8+
import type { AppSettings, InstanceSettingsTabProps } from '../../../helpers/types'
99
1010
const { formatMessage } = useVIntl()
1111
@@ -114,7 +114,6 @@ const messages = defineMessages({
114114
<Toggle
115115
id="fullscreen"
116116
:model-value="overrideWindowSettings ? fullscreenSetting : globalSettings.force_fullscreen"
117-
:checked="fullscreenSetting"
118117
:disabled="!overrideWindowSettings"
119118
@update:model-value="
120119
(e) => {

apps/app-frontend/src/components/ui/settings/AppearanceSettings.vue

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<script setup lang="ts">
2-
import { Toggle, ThemeSelector, TeleportDropdownMenu } from '@modrinth/ui'
2+
import { TeleportDropdownMenu, ThemeSelector, Toggle } from '@modrinth/ui'
33
import { useTheming } from '@/store/state'
44
import { get, set } from '@/helpers/settings'
5-
import { watch, ref } from 'vue'
5+
import { ref, watch } from 'vue'
66
import { getOS } from '@/helpers/utils'
77
88
const themeStore = useTheming()
@@ -46,7 +46,6 @@ watch(
4646
<Toggle
4747
id="advanced-rendering"
4848
:model-value="themeStore.advancedRendering"
49-
:checked="themeStore.advancedRendering"
5049
@update:model-value="
5150
(e) => {
5251
themeStore.advancedRendering = e
@@ -61,33 +60,15 @@ watch(
6160
<h2 class="m-0 text-lg font-extrabold text-contrast">Native Decorations</h2>
6261
<p class="m-0 mt-1">Use system window frame (app restart required).</p>
6362
</div>
64-
<Toggle
65-
id="native-decorations"
66-
:model-value="settings.native_decorations"
67-
:checked="settings.native_decorations"
68-
@update:model-value="
69-
(e) => {
70-
settings.native_decorations = e
71-
}
72-
"
73-
/>
63+
<Toggle id="native-decorations" v-model="settings.native_decorations" />
7464
</div>
7565

7666
<div class="mt-4 flex items-center justify-between">
7767
<div>
7868
<h2 class="m-0 text-lg font-extrabold text-contrast">Minimize launcher</h2>
7969
<p class="m-0 mt-1">Minimize the launcher when a Minecraft process starts.</p>
8070
</div>
81-
<Toggle
82-
id="minimize-launcher"
83-
:model-value="settings.hide_on_process_start"
84-
:checked="settings.hide_on_process_start"
85-
@update:model-value="
86-
(e) => {
87-
settings.hide_on_process_start = e
88-
}
89-
"
90-
/>
71+
<Toggle id="minimize-launcher" v-model="settings.hide_on_process_start" />
9172
</div>
9273

9374
<div class="mt-4 flex items-center justify-between">
@@ -111,7 +92,6 @@ watch(
11192
<Toggle
11293
id="toggle-sidebar"
11394
:model-value="settings.toggle_sidebar"
114-
:checked="settings.toggle_sidebar"
11595
@update:model-value="
11696
(e) => {
11797
settings.toggle_sidebar = e

apps/app-frontend/src/components/ui/settings/DefaultInstanceSettings.vue

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,16 +57,7 @@ watch(
5757
</p>
5858
</div>
5959

60-
<Toggle
61-
id="fullscreen"
62-
:model-value="settings.force_fullscreen"
63-
:checked="settings.force_fullscreen"
64-
@update:model-value="
65-
(e) => {
66-
settings.force_fullscreen = e
67-
}
68-
"
69-
/>
60+
<Toggle id="fullscreen" v-model="settings.force_fullscreen" />
7061
</div>
7162

7263
<div class="flex items-center justify-between gap-4">

apps/app-frontend/src/components/ui/settings/FeatureFlagSettings.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ watch(
3737
<Toggle
3838
id="advanced-rendering"
3939
:model-value="getStoreValue(option)"
40-
:checked="getStoreValue(option)"
4140
@update:model-value="() => setStoreValue(option, !themeStore.featureFlags[option])"
4241
/>
4342
</div>

apps/app-frontend/src/components/ui/settings/PrivacySettings.vue

Lines changed: 3 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -30,16 +30,7 @@ watch(
3030
option, you opt out and ads will no longer be shown based on your interests.
3131
</p>
3232
</div>
33-
<Toggle
34-
id="personalized-ads"
35-
:model-value="settings.personalized_ads"
36-
:checked="settings.personalized_ads"
37-
@update:model-value="
38-
(e) => {
39-
settings.personalized_ads = e
40-
}
41-
"
42-
/>
33+
<Toggle id="personalized-ads" v-model="settings.personalized_ads" />
4334
</div>
4435

4536
<div class="mt-4 flex items-center justify-between gap-4">
@@ -51,16 +42,7 @@ watch(
5142
longer be collected.
5243
</p>
5344
</div>
54-
<Toggle
55-
id="opt-out-analytics"
56-
:model-value="settings.telemetry"
57-
:checked="settings.telemetry"
58-
@update:model-value="
59-
(e) => {
60-
settings.telemetry = e
61-
}
62-
"
63-
/>
45+
<Toggle id="opt-out-analytics" v-model="settings.telemetry" />
6446
</div>
6547

6648
<div class="mt-4 flex items-center justify-between gap-4">
@@ -75,10 +57,6 @@ watch(
7557
as those added by mods. (app restart required to take effect)
7658
</p>
7759
</div>
78-
<Toggle
79-
id="disable-discord-rpc"
80-
v-model="settings.discord_rpc"
81-
:checked="settings.discord_rpc"
82-
/>
60+
<Toggle id="disable-discord-rpc" v-model="settings.discord_rpc" />
8361
</div>
8462
</template>

apps/app-frontend/src/pages/instance/Mods.vue

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,6 @@
179179
<Toggle
180180
class="!mx-2"
181181
:model-value="!item.data.disabled"
182-
:checked="!item.data.disabled"
183182
@update:model-value="toggleDisableMod(item.data)"
184183
/>
185184
<ButtonStyled type="transparent" circular>

apps/frontend/src/components/ui/CollectionCreateModal.vue

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,7 @@
1919
</div>
2020
<div class="flex flex-col gap-2">
2121
<label for="additional-information" class="flex flex-col gap-1">
22-
<span class="text-lg font-semibold text-contrast">
23-
Summary
24-
<span class="text-brand-red">*</span>
25-
</span>
22+
<span class="text-lg font-semibold text-contrast"> Summary </span>
2623
<span>A sentence or two that describes your collection.</span>
2724
</label>
2825
<div class="textarea-wrapper">
@@ -52,8 +49,8 @@
5249
</NewModal>
5350
</template>
5451
<script setup>
55-
import { XIcon, PlusIcon } from "@modrinth/assets";
56-
import { NewModal, ButtonStyled } from "@modrinth/ui";
52+
import { PlusIcon, XIcon } from "@modrinth/assets";
53+
import { ButtonStyled, NewModal } from "@modrinth/ui";
5754
5855
const router = useNativeRouter();
5956
@@ -78,7 +75,7 @@ async function create() {
7875
method: "POST",
7976
body: {
8077
name: name.value.trim(),
81-
description: description.value.trim(),
78+
description: description.value.trim() || undefined,
8279
projects: props.projectIds,
8380
},
8481
apiVersion: 3,

apps/frontend/src/components/ui/ModerationChecklist.vue

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -376,9 +376,8 @@ import {
376376
ExitIcon,
377377
ScaleIcon,
378378
} from "@modrinth/assets";
379-
import { ButtonStyled, MarkdownEditor, OverflowMenu } from "@modrinth/ui";
379+
import { ButtonStyled, MarkdownEditor, OverflowMenu, Collapsible } from "@modrinth/ui";
380380
import Categories from "~/components/ui/search/Categories.vue";
381-
import Collapsible from "~/components/ui/Collapsible.vue";
382381
383382
const props = defineProps({
384383
project: {

apps/frontend/src/components/ui/report/ReportsList.vue

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<template>
2-
<Chips v-if="false" v-model="viewMode" :items="['open', 'archived']" />
32
<ReportInfo
43
v-for="report in reports.filter(
54
(x) =>
@@ -17,7 +16,6 @@
1716
<p v-if="reports.length === 0">You don't have any active reports.</p>
1817
</template>
1918
<script setup>
20-
import Chips from "~/components/ui/Chips.vue";
2119
import ReportInfo from "~/components/ui/report/ReportInfo.vue";
2220
import { addReportMessage } from "~/helpers/threads.js";
2321

0 commit comments

Comments
 (0)