Set custom widget title.

pull/21833/head
Richard Lewis 2017-12-05 21:41:44 +00:00
parent 9eb334a1d4
commit d5d5397959
2 changed files with 44 additions and 5 deletions

View File

@ -76,6 +76,36 @@ class ScalarAuthClient {
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) {
let url = SdkConfig.get().integrations_ui_url;
url += "?scalar_token=" + encodeURIComponent(this.scalarToken);

View File

@ -196,6 +196,8 @@ export default React.createClass({
widgetUrl: u.format(),
initialising: false,
});
this._updateWidgetTitle(params.url);
}, (err) => {
console.error("Failed to get scalar_token", err);
this.setState({
@ -299,12 +301,19 @@ export default React.createClass({
/**
* 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) {
if (title) {
this.setState({widgetPageTitle: null});
}
_updateWidgetTitle(url) {
this._scalarClient.getScalarPageTitle(url).then((widgetPageTitle) => {
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