feat: very silly error handling

This commit is contained in:
2025-03-03 15:50:53 +01:00
parent 6410ca2721
commit 898caf1430
6 changed files with 36 additions and 7 deletions

View File

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import Button from 'primevue/button'; import Button from 'primevue/button';
import { invoke } from '@tauri-apps/api/core'; import { invoke } from '../invoke';
import { Package } from '../types'; import { Package } from '../types';
import { pkgKey } from '../util'; import { pkgKey } from '../util';

View File

@ -5,7 +5,7 @@ import InputNumber from 'primevue/inputnumber';
import InputText from 'primevue/inputtext'; import InputText from 'primevue/inputtext';
import RadioButton from 'primevue/radiobutton'; import RadioButton from 'primevue/radiobutton';
import Toggle from 'primevue/toggleswitch'; import Toggle from 'primevue/toggleswitch';
import { invoke } from '@tauri-apps/api/core'; import { invoke } from '../invoke';
import { usePrfStore } from '../stores'; import { usePrfStore } from '../stores';
const prf = usePrfStore(); const prf = usePrfStore();

View File

@ -1,15 +1,19 @@
<script setup lang="ts"> <script setup lang="ts">
import { Ref, ref } from 'vue'; import { Ref, ref } from 'vue';
import Button from 'primevue/button'; import Button from 'primevue/button';
import { invoke } from '@tauri-apps/api/core';
import { listen } from '@tauri-apps/api/event'; import { listen } from '@tauri-apps/api/event';
import { invoke } from '../invoke';
type StartStatus = 'ready' | 'preparing' | 'running'; type StartStatus = 'ready' | 'preparing' | 'running';
const startStatus: Ref<StartStatus> = ref('ready'); const startStatus: Ref<StartStatus> = ref('ready');
const startline = async () => { const startline = async () => {
startStatus.value = 'preparing'; startStatus.value = 'preparing';
await invoke('startline'); try {
await invoke('startline');
} catch (e) {
startStatus.value = 'ready';
}
}; };
const kill = async () => { const kill = async () => {

View File

@ -1,6 +1,6 @@
<script setup lang="ts"> <script setup lang="ts">
import Button from 'primevue/button'; import Button from 'primevue/button';
import { invoke } from '@tauri-apps/api/core'; import { invoke } from '../invoke';
import { Package } from '../types'; import { Package } from '../types';
import { needsUpdate, pkgKey } from '../util'; import { needsUpdate, pkgKey } from '../util';
@ -16,7 +16,6 @@ const install = async () => {
try { try {
await invoke('install_package', { key: pkgKey(props.pkg) }); await invoke('install_package', { key: pkgKey(props.pkg) });
} catch (err) { } catch (err) {
console.error(err);
if (props.pkg !== undefined) { if (props.pkg !== undefined) {
props.pkg.js.busy = false; props.pkg.js.busy = false;
} }

26
src/invoke.ts Normal file
View File

@ -0,0 +1,26 @@
import {
InvokeArgs,
InvokeOptions,
invoke as real_invoke,
} from '@tauri-apps/api/core';
import { message } from '@tauri-apps/plugin-dialog';
export const invoke = async <T>(
cmd: string,
args?: InvokeArgs,
options?: InvokeOptions
): Promise<T> => {
try {
return await real_invoke(cmd, args, options);
} catch (e: unknown) {
if (typeof e === 'string') {
await message(`${cmd}: ${e}`, {
title: `Error`,
kind: 'error',
});
} else {
console.error(`Unresolved error: ${e}`);
}
throw e;
}
};

View File

@ -1,7 +1,7 @@
import { defineStore } from 'pinia'; import { defineStore } from 'pinia';
import { invoke } from '@tauri-apps/api/core';
import { listen } from '@tauri-apps/api/event'; import { listen } from '@tauri-apps/api/event';
import { open } from '@tauri-apps/plugin-dialog'; import { open } from '@tauri-apps/plugin-dialog';
import { invoke } from './invoke';
import { Game, Package, Profile, ProfileMeta } from './types'; import { Game, Package, Profile, ProfileMeta } from './types';
import { changePrimaryColor, pkgKey } from './util'; import { changePrimaryColor, pkgKey } from './util';