--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mod_invites_page/static/invite.js Thu Nov 16 16:16:55 2023 +0100
@@ -0,0 +1,70 @@
+(function () {
+ // If QR lib loaded ok, show QR button on desktop devices
+ if(window.QRCode) {
+ new QRCode(document.getElementById("qr-invite-page"), document.location.href);
+ document.getElementById('qr-button-container').classList.remove("d-none");
+ }
+
+ // Detect current platform and show/hide appropriate clients
+ if(window.platform) {
+ var platform_friendly = null;
+ var platform_classname = null;
+
+ switch(platform.os.family) {
+ case "Ubuntu":
+ case "Linux":
+ case "Fedora":
+ case "Red Hat":
+ case "SuSE":
+ platform_friendly = platform.os.family + " (Linux)";
+ platform_classname = "linux";
+ break;
+ case "Windows Phone":
+ platform_friendly = "Windows Phone";
+ platform_classname = "windows-phone";
+ break;
+ default:
+ if(platform.os.family.startsWith("Windows")) {
+ platform_friendly = "Windows";
+ platform_classname = "windows";
+ } else {
+ platform_friendly = platform.os.family;
+ platform_classname = platform_friendly.toLowerCase();
+ }
+ }
+
+ if(platform_friendly && platform_classname) {
+ if(document.querySelectorAll('.client-card .client-platform-badge-'+platform_classname).length == 0) {
+ // No clients recognised for this platform, do nothing
+ return;
+ }
+ // Hide clients not for this platform
+ const client_cards = document.getElementsByClassName('client-card');
+ for (let card of client_cards) {
+ if (card.classList.contains('app-platform-'+platform_classname))
+ card.classList.add('supported-platform');
+ else if (!card.classList.contains('app-platform-web'))
+ card.hidden = true;
+ const badges = card.querySelectorAll('.client-platform-badge');
+ for (let badge of badges) {
+ if (badge.classList.contains('client-platform-badge-'+platform_classname)) {
+ badge.classList.add("badge-success");
+ badge.classList.remove("badge-info");
+ } else {
+ badge.classList.add("badge-secondary");
+ badge.classList.remove("badge-info");
+ }
+ }
+ }
+ const show_all_clients_button_container = document.getElementById('show-all-clients-button-container');
+ show_all_clients_button_container.querySelector('.platform-name').innerHTML = platform_friendly;
+ show_all_clients_button_container.classList.remove("d-none");
+ document.getElementById('show-all-clients-button').addEventListener('click', function (e) {
+ for (let card of client_cards)
+ card.hidden = false;
+ show_all_clients_button_container.hidden = true;
+ e.preventDefaults();
+ });
+ }
+ }
+})();