annotate mod_register_apps/mod_register_apps.lua @ 4976:75b6e5df65f9

various: Improve error reporting if missing file server module on 0.12 If there is some error loading net.http.files then it would be swallowed by the pcall and then it would proceed to trying mod_http_files, which might cause unexpected behavior on 0.12 Ref #1765
author Kim Alvefur <zash@zash.se>
date Mon, 18 Jul 2022 22:47:54 +0200
parents 733e5513f691
children eb3f99d0e72d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4186
aba0470ed725 mod_register_apps: Ignore the long lines [luacheck]
Kim Alvefur <zash@zash.se>
parents: 4178
diff changeset
1 -- luacheck: ignore 631
4091
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
2 module:depends("http");
4975
733e5513f691 various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents: 4672
diff changeset
3 local http_files
4976
75b6e5df65f9 various: Improve error reporting if missing file server module on 0.12
Kim Alvefur <zash@zash.se>
parents: 4975
diff changeset
4 if prosody.process_type == "prosody" then
4975
733e5513f691 various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents: 4672
diff changeset
5 -- Prosody >= 0.12
733e5513f691 various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents: 4672
diff changeset
6 http_files = require "net.http.files";
4976
75b6e5df65f9 various: Improve error reporting if missing file server module on 0.12
Kim Alvefur <zash@zash.se>
parents: 4975
diff changeset
7 else
4975
733e5513f691 various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents: 4672
diff changeset
8 -- Prosody <= 0.11
733e5513f691 various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents: 4672
diff changeset
9 http_files = module:depends "http_files";
733e5513f691 various: Use 0.12+ API for serving files from the file system over HTTP
Kim Alvefur <zash@zash.se>
parents: 4672
diff changeset
10 end
4091
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
11
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
12 local app_config = module:get_option("site_apps", {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
13 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
14 name = "Conversations";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
15 text = [[Conversations is a Jabber/XMPP client for Android 4.0+ smartphones that has been optimized to provide a unique mobile experience.]];
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
16 image = "assets/logos/conversations.svg";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
17 link = "https://play.google.com/store/apps/details?id=eu.siacs.conversations";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
18 platforms = { "Android" };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
19 supports_preauth_uri = true;
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
20 magic_link_format = "{app.link!}&referrer={invite.uri}";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
21 download = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
22 buttons = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
23 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
24 image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
25 url = "https://play.google.com/store/apps/details?id=eu.siacs.conversations";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
26 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
27 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
28 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
29 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
30 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
31 name = "yaxim";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
32 text = [[A lean Jabber/XMPP client for Android. It aims at usability, low overhead and security, and works on low-end Android devices starting with Android 4.0.]];
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
33 image = "assets/logos/yaxim.svg";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
34 link = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
35 platforms = { "Android" };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
36 supports_preauth_uri = true;
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
37 magic_link_format = "{app.link!}&referrer={invite.uri}";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
38 download = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
39 buttons = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
40 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
41 image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
42 url = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
43 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
44 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
45 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
46 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
47 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
48 name = "Siskin IM";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
49 text = [[A lightweight and powerful XMPP client for iPhone and iPad. It provides an easy way to talk and share moments with your friends.]];
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
50 image = "assets/logos/siskin-im.png";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
51 link = "https://apps.apple.com/us/app/siskin-im/id1153516838";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
52 platforms = { "iOS" };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
53 supports_preauth_uri = true;
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
54 download = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
55 buttons = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
56 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
57 image = "https://linkmaker.itunes.apple.com/en-us/badge-lrg.svg?releaseDate=2017-05-31&kind=iossoftware&bubble=ios_apps";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
58 url = "https://apps.apple.com/us/app/siskin-im/id1153516838";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
59 target = "_blank";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
60 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
61 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
62 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
63 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
64 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
65 name = "Beagle IM";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
66 text = [[Beagle IM by Tigase, Inc. is a lightweight and powerful XMPP client for macOS.]];
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
67 image = "assets/logos/beagle-im.png";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
68 link = "https://apps.apple.com/us/app/beagle-im/id1445349494";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
69 platforms = { "macOS" };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
70 download = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
71 buttons = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
72 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
73 text = "Download from Mac App Store";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
74 url = "https://apps.apple.com/us/app/beagle-im/id1445349494";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
75 target = "_blank";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
76 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
77 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
78 };
4178
bbd584cee042 mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents: 4171
diff changeset
79 setup = {
bbd584cee042 mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents: 4171
diff changeset
80 text = [[Launch Beagle IM, and select 'Yes' to add a new account. Click the '+'
bbd584cee042 mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents: 4171
diff changeset
81 button under the empty account list and then enter your credentials.]];
bbd584cee042 mod_register_apps: Add setup instructions for Beagle IM
Matthew Wild <mwild1@gmail.com>
parents: 4171
diff changeset
82 };
4091
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
83 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
84 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
85 name = "Dino";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
86 text = [[A modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.]];
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
87 image = "assets/logos/dino.svg";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
88 link = "https://dino.im/";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
89 platforms = { "Linux" };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
90 download = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
91 text = "Click the button to open the Dino website where you can download and install it on your PC.";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
92 buttons = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
93 { text = "Download Dino for Linux", url = "https://dino.im/#download", target="_blank" };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
94 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
95 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
96 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
97 {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
98 name = "Gajim";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
99 text = [[A fully-featured desktop chat client for Windows and Linux.]];
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
100 image = "assets/logos/gajim.svg";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
101 link = "https://gajim.org/";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
102 platforms = { "Windows", "Linux" };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
103 download = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
104 buttons = {
4111
ae2699f1cba9 mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
105 {
4091
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
106 text = "Download Gajim";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
107 url = "https://gajim.org/download/";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
108 target = "_blank";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
109 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
110 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
111 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
112 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
113 });
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
114
4113
c85af57e82e0 mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents: 4111
diff changeset
115 local show_apps = module:get_option_set("site_apps_show");
c85af57e82e0 mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents: 4111
diff changeset
116 local hide_apps = module:get_option_set("site_apps_hide");
c85af57e82e0 mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents: 4111
diff changeset
117
4091
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
118 local base_url = module.http_url and module:http_url();
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
119 local function relurl(s)
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
120 if s:match("^%w+://") then
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
121 return s;
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
122 end
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
123 return base_url.."/"..s;
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
124 end
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
125
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
126 local site_apps = module:shared("apps");
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
127
4171
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
128 local function add_app(app_info, source)
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
129 local app_id = app_info.id or app_info.name:gsub("%W+", "-"):lower();
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
130 if (not show_apps or show_apps:contains(app_id))
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
131 and not (hide_apps and hide_apps:contains(app_id))
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
132 and not site_apps[app_id] then
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
133 app_info.id = app_id;
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
134 app_info.image = relurl(app_info.image);
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
135 site_apps[app_id] = app_info;
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
136 app_info._source = source;
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
137 table.insert(site_apps, app_info);
4111
ae2699f1cba9 mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
138 end
ae2699f1cba9 mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
139 end
ae2699f1cba9 mod_register_apps: Don't duplicate client entries on module reload
Matthew Wild <mwild1@gmail.com>
parents: 4091
diff changeset
140
4171
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
141 local function remove_app(app_info)
4091
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
142 local app_id = app_info.id or app_info.name:gsub("%W+", "-"):lower();
4187
e2db07017332 mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents: 4186
diff changeset
143 for i = #site_apps, 1, -1 do
e2db07017332 mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents: 4186
diff changeset
144 if site_apps[i].id == app_id then
e2db07017332 mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents: 4186
diff changeset
145 table.remove(site_apps, i);
e2db07017332 mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents: 4186
diff changeset
146 end
e2db07017332 mod_register_apps: Fix removal of apps from array on unload
Kim Alvefur <zash@zash.se>
parents: 4186
diff changeset
147 end
4171
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
148 site_apps[app_id] = nil;
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
149 end
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
150
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
151 local function add_config_apps()
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
152 for _, app_info in ipairs(app_config) do
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
153 add_app(app_info, module.name);
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
154 end
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
155 end
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
156
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
157 local function module_app_added(event)
4630
635907a5d2c8 mod_register_apps: Reduce yellow yelling in log message
Kim Alvefur <zash@zash.se>
parents: 4187
diff changeset
158 module:log("info", "Adding %s", event.item.name)
4171
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
159 add_app(event.item, module.name);
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
160 end
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
161
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
162 local function module_app_removed(event)
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
163 remove_app(event.item);
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
164 end
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
165
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
166 -- Remove all apps added by this module
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
167 local function remove_all_apps()
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
168 for k, v in pairs(site_apps) do
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
169 if v._source == module.name then
4672
0b084f63fed0 mod_register_apps: Fix removal on unload (thanks ibikk)
Kim Alvefur <zash@zash.se>
parents: 4630
diff changeset
170 remove_app(v);
4171
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
171 end
4113
c85af57e82e0 mod_register_apps: Add site_apps_show and site_apps_hide options (thanks meaz)
Matthew Wild <mwild1@gmail.com>
parents: 4111
diff changeset
172 end
4091
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
173 end
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
174
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
175 local mime_map = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
176 png = "image/png";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
177 svg = "image/svg+xml";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
178 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
179
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
180 module:provides("http", {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
181 route = {
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
182 ["GET /assets/*"] = http_files and http_files.serve({
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
183 path = module:get_directory().."/assets";
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
184 mime_map = mime_map;
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
185 });
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
186 };
354dc1e7977a mod_register_apps: Provides a configurable list of XMPP apps
Matthew Wild <mwild1@gmail.com>
parents:
diff changeset
187 });
4171
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
188
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
189 function module.load()
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
190 add_config_apps();
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
191 module:handle_items("site-app-provider", module_app_added, module_app_removed, true);
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
192 end
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
193
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
194 function module.unload()
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
195 remove_all_apps();
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
196 end
85fa8c9e992a mod_register_apps: Add support for module:provides("site-app", app_info)
Matthew Wild <mwild1@gmail.com>
parents: 4114
diff changeset
197