import json
import subprocess

from django.conf import settings


BASE_CMD = ['signal-cli', '-a', settings.SIGNAL_ACCOUNT, '--output=json']


def send(msg, to=None, group=None):
    cmd = BASE_CMD + [
        'send', '--message-from-stdin'
    ]
    if group:
        cmd += ['-g', group]
    else:
        cmd += [to]
    r = subprocess.check_output(cmd, input=msg, encoding='utf-8')
    response = []
    if r:
        for row in r.strip().split('\n'):
            response.append(json.loads(row))
    return response


def send_reaction(target_address, target_ts, emoji, to=None, group=None, remove=False):
    cmd = BASE_CMD + [
        'sendReaction', '-t', str(target_ts), '-e', emoji,
        '-a', target_address
    ]
    if remove:
        cmd += ['-r']
    if group:
        cmd += ['-g', group]
    else:
        cmd += [to]
    r = subprocess.check_output(cmd, encoding='utf-8')
    response = []
    if r:
        for row in r.strip().split('\n'):
            response.append(json.loads(row))
    return response


def receive(timeout=1):
    cmd = BASE_CMD + [
        'receive', '--timeout', str(timeout), '--send-read-receipts'
    ]
    r = subprocess.check_output(cmd, encoding='utf-8')
    response = []
    if r:
        for row in r.strip().split('\n'):
            response.append(json.loads(row))
    return response