Feature: Boton para reiniciar conexion de instancia
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 51s

This commit is contained in:
2025-12-02 19:36:06 -06:00
parent 9ebbacf03b
commit 3817e3c4ae
3 changed files with 62 additions and 1 deletions

View File

@@ -99,6 +99,17 @@ export const useInstances = () => {
return await $fetch(`/api/instances/${id}/status`) return await $fetch(`/api/instances/${id}/status`)
} }
const resetInstance = async (id: string) => {
await $fetch(`/api/instances/${id}/reset`, { method: 'POST' })
// Update local state
const idx = instances.value.findIndex(i => i.id === id)
if (idx !== -1) {
instances.value[idx].status = 'disconnected'
instances.value[idx].qrCode = null
}
}
// Computed helpers // Computed helpers
const connectedCount = computed(() => const connectedCount = computed(() =>
instances.value.filter(i => i.status === 'connected').length instances.value.filter(i => i.status === 'connected').length
@@ -115,6 +126,7 @@ export const useInstances = () => {
deleteInstance, deleteInstance,
connectInstance, connectInstance,
disconnectInstance, disconnectInstance,
resetInstance,
getQRCode, getQRCode,
requestPairingCode, requestPairingCode,
getInstanceStatus, getInstanceStatus,

View File

@@ -128,6 +128,16 @@
> >
Ver QR Ver QR
</UButton> </UButton>
<UButton
v-if="instance.status !== 'disconnected'"
size="sm"
color="neutral"
variant="soft"
@click="resetInstanceHandler(instance.id)"
>
Reiniciar
</UButton>
</div> </div>
</div> </div>
</div> </div>
@@ -179,7 +189,7 @@ definePageMeta({
title: 'Dashboard', title: 'Dashboard',
}) })
const { instances, loading, fetchInstances, createInstance: apiCreateInstance, connectInstance: apiConnect } = useInstances() const { instances, loading, fetchInstances, createInstance: apiCreateInstance, connectInstance: apiConnect, resetInstance: apiReset } = useInstances()
const showCreateModal = ref(false) const showCreateModal = ref(false)
const showQRModal = ref(false) const showQRModal = ref(false)
@@ -216,6 +226,12 @@ const createInstance = async () => {
const connectInstance = async (id: string) => { const connectInstance = async (id: string) => {
await apiConnect(id) await apiConnect(id)
// Refresh to get updated status/QR
await fetchInstances()
}
const resetInstanceHandler = async (id: string) => {
await apiReset(id)
} }
const showQR = (instance: any) => { const showQR = (instance: any) => {

View File

@@ -0,0 +1,33 @@
/**
* POST /api/instances/[id]/reset
* Reset instance connection (disconnect and clear QR)
*/
import { query } from '../../../utils/database'
import { baileysManager } from '../../../services/baileys/manager'
export default defineEventHandler(async (event) => {
const username = getHeader(event, 'x-authentik-username')
if (!username) {
throw createError({ statusCode: 401, message: 'Unauthorized' })
}
const id = getRouterParam(event, 'id')
if (!id) {
throw createError({ statusCode: 400, message: 'Instance ID required' })
}
// Disconnect if connected
try {
await baileysManager.disconnect(id)
} catch (e) {
// Ignore if not connected
}
// Reset in database
await query(
`UPDATE instances SET status = 'disconnected', qr_code = NULL, pairing_code = NULL WHERE id = $1`,
[id]
)
return { success: true, message: 'Instance reset successfully' }
})