feat: add relay composables
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
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,
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user