package services

import (
	"context"
	"fmt"

	"go.mau.fi/whatsmeow"
	waProto "go.mau.fi/whatsmeow/proto/waE2E"
	"google.golang.org/protobuf/proto"
)

// Internal operator alerts have no typing delay and never enter the AI pipeline.
// The caller persists messageID before sending and reuses it on retries.
func (w *waInstance) SendInternalNotification(ctx context.Context, number, text, messageID string) error {
	w.mu.Lock()
	client := w.client
	w.mu.Unlock()
	if client == nil || !client.IsConnected() {
		return fmt.Errorf("WhatsApp belum terhubung")
	}
	if messageID == "" {
		return fmt.Errorf("ID notifikasi belum tersedia")
	}
	jid, err := recipientJID(number)
	if err != nil {
		return err
	}
	ctx, cancel := context.WithTimeout(ctx, interactiveWASendTimeout)
	defer cancel()
	_, err = client.SendMessage(ctx, jid, &waProto.Message{Conversation: proto.String(text)}, whatsmeow.SendRequestExtra{ID: messageID})
	return normalizeWASendError(err, interactiveWASendTimeout)
}
