2021-11-08 15:35:26 +00:00
#!/bin/bash
set -euo pipefail
set -x
2024-01-16 11:27:44 +00:00
# Set CONVERSE_VERSION and CONVERSE_REPO to select which repo and tag/commit/branch use.
# Defaults values:
2023-09-04 10:16:14 +00:00
CONVERSE_VERSION = "v10.1.6"
2023-08-08 07:56:00 +00:00
CONVERSE_REPO = "https://github.com/conversejs/converse.js.git"
2024-01-16 11:27:44 +00:00
# You can eventually set CONVERSE_COMMIT to a specific commit ID, if you want to apply some patches.
CONVERSE_COMMIT = ""
# 2014-01-16: we are using a custom version, to wait for some PR to be apply upstream.
# This version includes following changes:
# - #converse.js/3300: Adding the maxWait option for `debouncedPruneHistory`
# - #converse.js/3302: debounce MUC sidebar rendering
2024-01-16 17:52:18 +00:00
# - Fix: refresh the MUC sidebar when participants collection is sorted
2024-01-17 10:18:07 +00:00
# - Fix: MUC occupant list does not sort itself on nicknames or roles changes
2024-02-08 10:04:51 +00:00
# - Fix inconsistency between browsers on textarea outlines
2024-02-14 14:11:13 +00:00
# - Fix: room information not correctly refreshed when modifications are made by other users
2024-02-06 15:43:10 +00:00
# This version already includes following changes that will not be merged in ConverseJS upstream:
# - Don't load vCards for all room occupants when the right menu is closed
2024-02-07 10:38:15 +00:00
# - Changing the default avatar, for something very light (to mitigate blinking effect when vCards are loaded)
2024-02-07 11:22:40 +00:00
# - Custom settings livechat_load_all_vcards for the readonly mode
2024-02-07 13:46:21 +00:00
# - Adding "users" icon in the menu toggle button
2024-02-07 15:03:02 +00:00
# - Removing unecessary plugins: headless/pubsub, minimize, notifications, profile, omemo, push, roomlist, dragresize.
2024-02-07 15:13:40 +00:00
# - Destroy room: remove the challenge, and the new JID
2024-02-12 15:26:11 +00:00
CONVERSE_VERSION = "livechat-8.2.0"
2024-02-14 14:11:13 +00:00
CONVERSE_COMMIT = "cb6c0bd87c0078d5c62308fc3b83efd5019f993c"
2024-01-16 11:27:44 +00:00
CONVERSE_REPO = "https://github.com/JohnXLivingston/converse.js"
2023-08-08 07:56:00 +00:00
2021-11-08 15:35:26 +00:00
rootdir = " $( pwd ) "
src_dir = " $rootdir /conversejs "
2023-08-10 02:41:36 +00:00
converse_src_dir = " $rootdir /vendor/conversejs- $CONVERSE_VERSION "
2024-01-16 11:27:44 +00:00
if [ -n " $CONVERSE_COMMIT " ] ; then
converse_src_dir = " $converse_src_dir - $CONVERSE_COMMIT "
fi
2023-08-08 07:56:00 +00:00
converse_build_dir = " $rootdir /build/conversejs "
2021-11-08 15:35:26 +00:00
converse_destination_dir = " $rootdir /dist/client/conversejs "
if [ [ ! -d $src_dir ] ] ; then
2021-11-08 19:15:53 +00:00
echo " $0 must be called from the plugin livechat root dir. "
2021-11-08 15:35:26 +00:00
exit 1
fi
if [ [ ! -d " $converse_src_dir " ] ] ; then
2024-01-16 11:27:44 +00:00
if [ -n " $CONVERSE_COMMIT " ] ; then
echo " Fetching ConverseJS commit $CONVERSE_COMMIT . "
mkdir -p $converse_src_dir
cd $converse_src_dir
git init
git remote add origin $CONVERSE_REPO
git fetch --depth 1 origin $CONVERSE_COMMIT
git checkout $CONVERSE_COMMIT
2024-01-16 16:38:41 +00:00
# In order to be able to test if $converse_build_dir is up to date, we add the commit id in a file:
2024-01-16 11:27:44 +00:00
cd -
2024-01-16 16:38:41 +00:00
echo " $CONVERSE_COMMIT " > " $converse_src_dir /current "
2024-01-16 11:27:44 +00:00
else
echo "Shallow cloning ConverseJS."
git clone --depth= 1 --branch $CONVERSE_VERSION $CONVERSE_REPO $converse_src_dir
2024-01-16 16:38:41 +00:00
echo " $CONVERSE_VERSION " > " $converse_src_dir /current "
2024-01-16 11:27:44 +00:00
fi
2023-08-08 07:56:00 +00:00
rm -rf " $converse_build_dir "
2021-11-08 15:35:26 +00:00
fi
2024-01-16 16:38:41 +00:00
if cmp -s " $converse_src_dir /package.json " " $converse_build_dir /package.json " && cmp -s " $converse_src_dir /current " " $converse_build_dir /current " ; then
2021-11-08 19:15:53 +00:00
echo "ConverseJS files are already up to date in the build directory."
2021-11-08 15:35:26 +00:00
else
2021-11-08 19:15:53 +00:00
echo "ConverseJS files are not up to date in the build directory, copying them..."
2021-11-08 15:35:26 +00:00
rm -rf " $converse_build_dir "
mkdir -p " $converse_build_dir "
cp -R $converse_src_dir /* " $converse_build_dir "
fi
2021-11-08 19:15:53 +00:00
echo "Removing existing custom files..."
2021-11-08 18:06:53 +00:00
rm -rf " $converse_build_dir /custom/ "
2021-11-08 19:15:53 +00:00
echo "Adding the custom files..."
2021-11-08 18:06:53 +00:00
cp -r " $src_dir /custom/ " " $converse_build_dir /custom/ "
mv " $converse_build_dir /custom/webpack.livechat.js " " $converse_build_dir / "
if [ [ ! -d " $converse_build_dir /node_modules " ] ] ; then
2021-11-08 19:15:53 +00:00
echo "Missing node_modules directory, seems we have to call the makefile..."
2021-11-08 18:06:53 +00:00
cd " $converse_build_dir "
2023-08-22 10:04:29 +00:00
make node_modules src/*
2021-11-08 18:06:53 +00:00
cd $rootdir
fi
2021-11-08 19:15:53 +00:00
echo "Building ConverseJS..."
2021-11-08 15:35:26 +00:00
cd " $converse_build_dir "
2024-02-15 14:12:58 +00:00
# Note: following lines are from the ConverseJS Makefile (see "make dist" code), where we just replace the "npm run build" with our webpack.livechat.js.
# Ideally this should just be `npm run build`.
# The additional steps are necessary to properly generate JSON chunk files
# from the .po files. The nodeps config uses preset-env with IE11.
# Somehow this is necessary.
npm run nodeps
TMPD = $( mktemp -d)
mv dist/locales $TMPD && npx webpack --config webpack.livechat.js && mv $TMPD /locales/*-po.js dist/locales/ && rm -rf $TMPD
rm dist/converse-no-dependencies.js dist/converse-no-dependencies.js.map
2021-11-08 15:35:26 +00:00
cd $rootdir
2021-11-08 19:15:53 +00:00
echo "Copying ConverseJS dist files..."
2021-11-08 15:35:26 +00:00
mkdir -p " $converse_destination_dir " && cp -r $converse_build_dir /dist/* " $converse_destination_dir / "
2021-11-08 19:15:53 +00:00
echo "ConverseJS OK."
2021-11-08 15:35:26 +00:00
exit 0