#!/bin/bash
ADD_DIR=".../snoopyDisplay/add"
NEW_DIR=".../snoopyDisplay/new"
OLD_DIR=".../snoopyDisplay/old"
DEST_DIR=".../snoopyDisplay"
DEST_FILE="epd_image_0.pgm"

log() {
    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1"
}

# Wait for Mosquitto to be available
until nc -z localhost 1883; do
    log "Waiting for MQTT broker..."
    sleep 5
done

log "MQTT broker is up!"

mosquitto_sub -t "snoopyDisplay/stat" | while read -r message; do
    if [ "$message" = "ePaperScreenUpdated" ]; then
        log "MQTT message received: $message"

        # Ensure NEW_DIR is not empty
        if [ ! "$(ls -A "$NEW_DIR" 2>/dev/null)" ]; then
            log "New directory is empty. Moving files from old to new."
            mv "$OLD_DIR"/* "$NEW_DIR"/
        fi
        # Select the newest file from ADD_DIR if available
        FILE=$(find "$ADD_DIR" -type f -printf "%T@ %p\n" 2>/dev/null | sort -nr | head -n 1 | cut -d' ' -f2-)

        # If ADD_DIR is empty, select a random file from NEW_DIR
        if [ -z "$FILE" ]; then
            FILE=$(find "$NEW_DIR" -type f -print0 | shuf -z -n 1)
        fi
        if [ -n "$FILE" ]; then
            log "Selected file: $FILE"

            # Copy to destination with new name
            cp "$FILE" "$DEST_DIR/$DEST_FILE"
            log "Copied to $DEST_DIR/$DEST_FILE"

            # Move the original to old directory
            mv "$FILE" "$OLD_DIR/"
            log "Moved $FILE to $OLD_DIR"
        fi
    fi
done
