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 |