mirror of https://github.com/vector-im/riot-web
Set custom widget title.
parent
9eb334a1d4
commit
d5d5397959
|
@ -76,6 +76,36 @@ class ScalarAuthClient {
|
||||||
return defer.promise;
|
return defer.promise;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getScalarPageTitle(url) {
|
||||||
|
const defer = Promise.defer();
|
||||||
|
|
||||||
|
let scalarPageLookupUrl = SdkConfig.get().integrations_rest_url + '/api/widgets/title_lookup';
|
||||||
|
scalarPageLookupUrl = this.getStarterLink(scalarPageLookupUrl);
|
||||||
|
scalarPageLookupUrl += '&curl=' + encodeURIComponent(url);
|
||||||
|
request({
|
||||||
|
method: 'GET',
|
||||||
|
uri: scalarPageLookupUrl,
|
||||||
|
json: true,
|
||||||
|
}, (err, response, body) => {
|
||||||
|
if (err) {
|
||||||
|
defer.reject(err);
|
||||||
|
} else if (response.statusCode / 100 !== 2) {
|
||||||
|
defer.reject({statusCode: response.statusCode});
|
||||||
|
} else if (!body) {
|
||||||
|
defer.reject(new Error("Missing scalar_token in response"));
|
||||||
|
} else {
|
||||||
|
console.warn("page title body", body);
|
||||||
|
let title = "";
|
||||||
|
if (body.page_title_cache_item && body.page_title_cache_item.cached_title) {
|
||||||
|
title = body.page_title_cache_item.cached_title;
|
||||||
|
}
|
||||||
|
defer.resolve(title);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return defer.promise;
|
||||||
|
}
|
||||||
|
|
||||||
getScalarInterfaceUrlForRoom(roomId, screen, id) {
|
getScalarInterfaceUrlForRoom(roomId, screen, id) {
|
||||||
let url = SdkConfig.get().integrations_ui_url;
|
let url = SdkConfig.get().integrations_ui_url;
|
||||||
url += "?scalar_token=" + encodeURIComponent(this.scalarToken);
|
url += "?scalar_token=" + encodeURIComponent(this.scalarToken);
|
||||||
|
|
|
@ -196,6 +196,8 @@ export default React.createClass({
|
||||||
widgetUrl: u.format(),
|
widgetUrl: u.format(),
|
||||||
initialising: false,
|
initialising: false,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
this._updateWidgetTitle(params.url);
|
||||||
}, (err) => {
|
}, (err) => {
|
||||||
console.error("Failed to get scalar_token", err);
|
console.error("Failed to get scalar_token", err);
|
||||||
this.setState({
|
this.setState({
|
||||||
|
@ -299,12 +301,19 @@ export default React.createClass({
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set remote content title on AppTile
|
* Set remote content title on AppTile
|
||||||
* @param {string} title Title string to set on the AppTile
|
* @param {string} url Url to check for title
|
||||||
*/
|
*/
|
||||||
_updateWidgetTitle(title) {
|
_updateWidgetTitle(url) {
|
||||||
if (title) {
|
this._scalarClient.getScalarPageTitle(url).then((widgetPageTitle) => {
|
||||||
this.setState({widgetPageTitle: null});
|
if (widgetPageTitle) {
|
||||||
}
|
console.log("Got page title", widgetPageTitle);
|
||||||
|
this.setState({widgetPageTitle: widgetPageTitle});
|
||||||
|
} else {
|
||||||
|
console.error("No page title");
|
||||||
|
}
|
||||||
|
}, (err) =>{
|
||||||
|
console.error("Failed to get page title", err);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
// Widget labels to render, depending upon user permissions
|
// Widget labels to render, depending upon user permissions
|
||||||
|
|
Loading…
Reference in New Issue