import CryptoJS from 'crypto-js'

const WS_SECRET = process.env.NEXT_PUBLIC_WS_SECRET || 'gp-live-ws-key'

export function encryptWsPayload(payload: unknown): string {
    const plaintext = JSON.stringify(payload)
    return CryptoJS.AES.encrypt(plaintext, WS_SECRET).toString()
}

export function decryptWsPayload(data: string): unknown {
    try {
        const bytes = CryptoJS.AES.decrypt(data, WS_SECRET)
        const plaintext = bytes.toString(CryptoJS.enc.Utf8)
        if (!plaintext) {
            return JSON.parse(data)
        }
        return JSON.parse(plaintext)
    } catch {
        try {
            return JSON.parse(data)
        } catch {
            return null
        }
    }
}

