Mercurial > prosody-modules
comparison mod_conversejs/mod_conversejs.lua @ 5871:1c8197075d04
mod_conversejs: Allow installation as PWA
| author | BetaRays <BetaRays@proton.me> |
|---|---|
| date | Sun, 17 Mar 2024 15:05:29 +0100 |
| parents | 079ca766193b |
| children | fe8222112cf4 |
comparison
equal
deleted
inserted
replaced
| 5870:1ac4a59ac575 | 5871:1c8197075d04 |
|---|---|
| 116 return converse_options; | 116 return converse_options; |
| 117 end | 117 end |
| 118 | 118 |
| 119 local add_tags = module:get_option_array("conversejs_tags", {}); | 119 local add_tags = module:get_option_array("conversejs_tags", {}); |
| 120 | 120 |
| 121 local service_name = module:get_option_string("name", "Prosody IM and Converse.js"); | |
| 122 local service_short_name = module:get_option_string("short_name", "Converse"); | |
| 123 local service_description = module:get_option_string("description", "Messaging Freedom") | |
| 124 local pwa_color = module:get_option_string("pwa_color", "#397491") | |
| 125 | |
| 121 module:provides("http", { | 126 module:provides("http", { |
| 122 title = "Converse.js"; | 127 title = "Converse.js"; |
| 123 route = { | 128 route = { |
| 124 GET = function (event) | 129 GET = function (event) |
| 125 local converse_options = get_converse_options(); | 130 local converse_options = get_converse_options(); |
| 126 | 131 |
| 127 event.response.headers.content_type = "text/html"; | 132 event.response.headers.content_type = "text/html"; |
| 128 return render(html_template, { | 133 return render(html_template, { |
| 129 service_name = module:get_option_string("name"); | 134 service_name = service_name; |
| 135 -- note that using a relative path won’t work as this URL doesn’t end in a / | |
| 136 manifest_url = module:http_url().."/manifest.json", | |
| 130 header_scripts = { js_url }; | 137 header_scripts = { js_url }; |
| 131 header_style = { css_url }; | 138 header_style = { css_url }; |
| 132 header_tags = add_tags; | 139 header_tags = add_tags; |
| 133 conversejs = { | 140 conversejs = { |
| 134 options = converse_options; | 141 options = converse_options; |
| 140 ["GET /prosody-converse.js"] = function (event) | 147 ["GET /prosody-converse.js"] = function (event) |
| 141 local converse_options = get_converse_options(); | 148 local converse_options = get_converse_options(); |
| 142 | 149 |
| 143 event.response.headers.content_type = "application/javascript"; | 150 event.response.headers.content_type = "application/javascript"; |
| 144 return js_template:format(json_encode(converse_options)); | 151 return js_template:format(json_encode(converse_options)); |
| 152 end; | |
| 153 ["GET /manifest.json"] = function (event) | |
| 154 -- See manifest.json in the root of Converse.js’s git repository | |
| 155 local data = { | |
| 156 short_name = service_short_name, | |
| 157 name = service_name, | |
| 158 description = service_description, | |
| 159 categories = {"social"}, | |
| 160 icons = module:get_option_array("manifest_icons", { | |
| 161 { | |
| 162 src = cdn_url..version.."/dist/images/logo/conversejs-filled-512.png", | |
| 163 sizes = "512x512", | |
| 164 }, | |
| 165 { | |
| 166 src = cdn_url..version.."/dist/images/logo/conversejs-filled-192.png", | |
| 167 sizes = "192x192", | |
| 168 }, | |
| 169 { | |
| 170 src = cdn_url..version.."/dist/images/logo/conversejs-filled-192.svg", | |
| 171 sizes = "192x192", | |
| 172 }, | |
| 173 { | |
| 174 src = cdn_url..version.."/dist/images/logo/conversejs-filled-512.svg", | |
| 175 sizes = "512x512", | |
| 176 }, | |
| 177 }), | |
| 178 start_url = module:http_url(), | |
| 179 background_color = pwa_color, | |
| 180 display = "standalone", | |
| 181 scope = module:http_url().."/", | |
| 182 theme_color = pwa_color, | |
| 183 } | |
| 184 return { | |
| 185 headers = { content_type = "application/schema+json" }, | |
| 186 body = json_encode(data), | |
| 187 } | |
| 145 end; | 188 end; |
| 146 ["GET /dist/*"] = serve_dist; | 189 ["GET /dist/*"] = serve_dist; |
| 147 } | 190 } |
| 148 }); | 191 }); |
| 149 | 192 |
