Mercurial > prosody-modules
annotate mod_invites_page/static/invite.js @ 5727:372b6c4bf409
mod_register_redirect: docs: Fix typo in example (thanks melvo)
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Wed, 22 Nov 2023 11:54:22 +0000 |
parents | ef3aa6901a93 |
children |
rev | line source |
---|---|
5719
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
1 (function () { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
2 // If QR lib loaded ok, show QR button on desktop devices |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
3 if(window.QRCode) { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
4 new QRCode(document.getElementById("qr-invite-page"), document.location.href); |
5723
5f7f6ee32a11
mod_invites_page: Stop displaying the QRCode to mobile devices
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5721
diff
changeset
|
5 document.getElementById('qr-button-container').classList.add("d-md-block"); |
5719
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
6 } |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
7 |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
8 // Detect current platform and show/hide appropriate clients |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
9 if(window.platform) { |
5725
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
10 let platform_friendly = null; |
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
11 let platform_classname = null; |
5719
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
12 |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
13 switch(platform.os.family) { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
14 case "Ubuntu": |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
15 case "Linux": |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
16 case "Fedora": |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
17 case "Red Hat": |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
18 case "SuSE": |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
19 platform_friendly = platform.os.family + " (Linux)"; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
20 platform_classname = "linux"; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
21 break; |
5725
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
22 case "Linux aarch64": |
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
23 platform_friendly = "Linux mobile"; |
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
24 platform_classname = "linux"; |
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
25 break; |
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
26 case "Haiku R1": |
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
27 platform_friendly = "Haiku"; |
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
28 platform_classname = "haiku"; |
ef3aa6901a93
mod_invites_page: Add support for Haiku and mobile Linux
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5723
diff
changeset
|
29 break; |
5719
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
30 case "Windows Phone": |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
31 platform_friendly = "Windows Phone"; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
32 platform_classname = "windows-phone"; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
33 break; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
34 default: |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
35 if(platform.os.family.startsWith("Windows")) { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
36 platform_friendly = "Windows"; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
37 platform_classname = "windows"; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
38 } else { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
39 platform_friendly = platform.os.family; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
40 platform_classname = platform_friendly.toLowerCase(); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
41 } |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
42 } |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
43 |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
44 if(platform_friendly && platform_classname) { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
45 if(document.querySelectorAll('.client-card .client-platform-badge-'+platform_classname).length == 0) { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
46 // No clients recognised for this platform, do nothing |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
47 return; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
48 } |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
49 // Hide clients not for this platform |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
50 const client_cards = document.getElementsByClassName('client-card'); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
51 for (let card of client_cards) { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
52 if (card.classList.contains('app-platform-'+platform_classname)) |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
53 card.classList.add('supported-platform'); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
54 else if (!card.classList.contains('app-platform-web')) |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
55 card.hidden = true; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
56 const badges = card.querySelectorAll('.client-platform-badge'); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
57 for (let badge of badges) { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
58 if (badge.classList.contains('client-platform-badge-'+platform_classname)) { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
59 badge.classList.add("badge-success"); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
60 badge.classList.remove("badge-info"); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
61 } else { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
62 badge.classList.add("badge-secondary"); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
63 badge.classList.remove("badge-info"); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
64 } |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
65 } |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
66 } |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
67 const show_all_clients_button_container = document.getElementById('show-all-clients-button-container'); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
68 show_all_clients_button_container.querySelector('.platform-name').innerHTML = platform_friendly; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
69 show_all_clients_button_container.classList.remove("d-none"); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
70 document.getElementById('show-all-clients-button').addEventListener('click', function (e) { |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
71 for (let card of client_cards) |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
72 card.hidden = false; |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
73 show_all_clients_button_container.hidden = true; |
5721
40558231ab7d
mod_invites_page: Typo in preventing the default event when clicking on show all
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
5719
diff
changeset
|
74 e.preventDefault(); |
5719
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
75 }); |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
76 } |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
77 } |
18bae78282a6
mod_invites_page: Move the JS script to its own file
Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
parents:
diff
changeset
|
78 })(); |