#!/bin/sh

. /etc/container_environment.sh
. /etc/overleaf/env.sh

SITE_MAINTENANCE_FILE_BAK="$SITE_MAINTENANCE_FILE.bak.shutdown"

mv "${SITE_MAINTENANCE_FILE}" "${SITE_MAINTENANCE_FILE_BAK}"
echo "closed" > "${SITE_MAINTENANCE_FILE}"

# status file is polled every 5 seconds
sleep 5

# giving a grace period of 5 seconds for users before disconnecting them and start shutting down
cd /overleaf/services/web && node scripts/disconnect_all_users.mjs --delay-in-seconds=5 >> /var/log/overleaf/web.log 2>&1

EXIT_CODE="$?"
if [ $EXIT_CODE -ne 0 ]
then
  echo "scripts/disconnect_all_users.mjs failed with exit code $EXIT_CODE"
  exit 1
fi

sleep 10 &
GIVE_EDITOR_10_SECONDS_TO_RELOAD=$!

# wait for disconnection
while ! sv stop real-time-overleaf; do
  sleep 1
done

wait $GIVE_EDITOR_10_SECONDS_TO_RELOAD

exit 0
