Feature: Agregar botón para crear webhook de debug automáticamente
All checks were successful
build-and-deploy / build-and-deploy (push) Successful in 1m4s

- Agregar botón "Crear Webhook de Debug" en WebhookReceiverSection
- Detectar si ya existe un webhook apuntando al receptor de debug
- Permitir eliminar el webhook de debug
- Incluir todos los eventos disponibles al crear el webhook
- También incluye mejoras previas de manejo de media y mensajes
This commit is contained in:
2025-12-02 21:21:33 -06:00
parent 71593b25e9
commit 80d0042c7e
21 changed files with 3722 additions and 112 deletions

View File

@@ -0,0 +1,85 @@
-- =====================================================
-- Migration 002: Enhanced Messages Support
-- =====================================================
-- Adds fields for:
-- - Group participant tracking (participant_jid, push_name)
-- - Media caching (media_cached, media_local_path, media_size_bytes)
-- - Message reactions
-- - Presence caching
-- =====================================================
-- Add participant tracking fields to messages
ALTER TABLE messages ADD COLUMN IF NOT EXISTS participant_jid VARCHAR(100);
ALTER TABLE messages ADD COLUMN IF NOT EXISTS push_name VARCHAR(255);
-- Add media caching fields
ALTER TABLE messages ADD COLUMN IF NOT EXISTS media_cached BOOLEAN DEFAULT FALSE;
ALTER TABLE messages ADD COLUMN IF NOT EXISTS media_local_path TEXT;
ALTER TABLE messages ADD COLUMN IF NOT EXISTS media_size_bytes BIGINT;
-- Create table for message reactions
CREATE TABLE IF NOT EXISTS message_reactions (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
message_id UUID NOT NULL REFERENCES messages(id) ON DELETE CASCADE,
instance_id UUID NOT NULL REFERENCES instances(id) ON DELETE CASCADE,
reactor_jid VARCHAR(100) NOT NULL,
reactor_name VARCHAR(255),
emoji VARCHAR(20) NOT NULL,
timestamp TIMESTAMPTZ DEFAULT NOW(),
CONSTRAINT unique_reaction UNIQUE (message_id, reactor_jid)
);
CREATE INDEX IF NOT EXISTS idx_reactions_message ON message_reactions(message_id);
CREATE INDEX IF NOT EXISTS idx_reactions_instance ON message_reactions(instance_id);
-- Create table for presence caching (optional, for "last seen" persistence)
CREATE TABLE IF NOT EXISTS presence_cache (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
instance_id UUID NOT NULL REFERENCES instances(id) ON DELETE CASCADE,
jid VARCHAR(100) NOT NULL,
presence VARCHAR(20) CHECK (presence IN ('available', 'unavailable', 'composing', 'recording', 'paused')),
last_seen TIMESTAMPTZ,
updated_at TIMESTAMPTZ DEFAULT NOW(),
CONSTRAINT unique_presence UNIQUE (instance_id, jid)
);
CREATE INDEX IF NOT EXISTS idx_presence_instance ON presence_cache(instance_id);
-- Create table for group metadata caching
CREATE TABLE IF NOT EXISTS group_metadata (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
instance_id UUID NOT NULL REFERENCES instances(id) ON DELETE CASCADE,
jid VARCHAR(100) NOT NULL,
subject VARCHAR(255),
description TEXT,
owner_jid VARCHAR(100),
participants JSONB DEFAULT '[]',
announce_only BOOLEAN DEFAULT FALSE,
restrict_edit BOOLEAN DEFAULT FALSE,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW(),
CONSTRAINT unique_group UNIQUE (instance_id, jid)
);
CREATE INDEX IF NOT EXISTS idx_group_metadata_instance ON group_metadata(instance_id);
-- Add trigger for presence_cache updated_at
CREATE TRIGGER update_presence_cache_updated_at
BEFORE UPDATE ON presence_cache
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
-- Add trigger for group_metadata updated_at
CREATE TRIGGER update_group_metadata_updated_at
BEFORE UPDATE ON group_metadata
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
-- Add index for media caching lookups
CREATE INDEX IF NOT EXISTS idx_messages_media_cached ON messages(media_cached) WHERE media_cached = TRUE;
-- Add last_message_type to chats for preview icons
ALTER TABLE chats ADD COLUMN IF NOT EXISTS last_message_type VARCHAR(50);