Files
sta/src/composables/useRelay.ts
T

39 lines
956 B
TypeScript

import { ref } from 'vue';
import { apiClient } from '../api/client';
import { relayDtoToDomain } from '../types/mappers/relayDtoMapper';
import type { Relay, RelayDto } from '../types/relay';
export function useRelay() {
const isLoading = ref(false);
const error = ref<string | null>(null);
const response = ref<Relay | null>(null);
const toggleRelay = async (id: number) => {
isLoading.value = true;
try {
const { data } = await apiClient.POST('/api/relays/{id}/toggle', {
params: {
path: {
id,
},
},
});
error.value = null;
response.value = relayDtoToDomain(data as RelayDto);
} catch (err: any) {
console.error(`Failed to toggle relay ${id}:`, err);
error.value = err.message || `Failed to toggle relay ${id}`;
} finally {
isLoading.value = false;
}
};
return {
toggleRelay,
isLoading,
error,
response,
};
}