quick and dirty support for custom welcome pages, with an example for geektime techfest

This commit is contained in:
Matthew Hodgson 2016-11-13 14:10:46 +00:00
parent 34df6ea242
commit a967ddd1cb
5 changed files with 32 additions and 3 deletions

BIN
.DS_Store vendored

Binary file not shown.

View file

@ -16,6 +16,7 @@ limitations under the License.
/** The types of page which can be shown by the LoggedInView */
export default {
HomePage: "home_page",
RoomView: "room_view",
UserSettings: "user_settings",
CreateRoom: "create_room",

View file

@ -136,6 +136,7 @@ export default React.createClass({
var UserSettings = sdk.getComponent('structures.UserSettings');
var CreateRoom = sdk.getComponent('structures.CreateRoom');
var RoomDirectory = sdk.getComponent('structures.RoomDirectory');
var HomePage = sdk.getComponent('structures.HomePage');
var MatrixToolbar = sdk.getComponent('globals.MatrixToolbar');
var GuestWarningBar = sdk.getComponent('globals.GuestWarningBar');
var NewVersionBar = sdk.getComponent('globals.NewVersionBar');
@ -189,6 +190,15 @@ export default React.createClass({
/>
if (!this.props.collapse_rhs) right_panel = <RightPanel opacity={this.props.sideOpacity}/>
break;
case PageTypes.HomePage:
page_element = <HomePage
collapsedRhs={this.props.collapse_rhs}
config={this.props.config}
/>
if (!this.props.collapse_rhs) right_panel = <RightPanel opacity={this.props.sideOpacity}/>
break;
case PageTypes.UserView:
page_element = null; // deliberately null for now
right_panel = <RightPanel userId={this.props.viewUserId} opacity={this.props.sideOpacity} />

View file

@ -410,6 +410,10 @@ module.exports = React.createClass({
this._setPage(PageTypes.RoomDirectory);
this.notifyNewScreen('directory');
break;
case 'view_home_page':
this._setPage(PageTypes.HomePage);
this.notifyNewScreen('home');
break;
case 'view_create_chat':
this._createChat();
break;
@ -629,8 +633,13 @@ module.exports = React.createClass({
)[0].roomId;
self.setState({ready: true, currentRoomId: firstRoom, page_type: PageTypes.RoomView});
} else {
if (self.props.config.home_page) {
self.setState({ready: true, page_type: PageTypes.HomePage});
}
else {
self.setState({ready: true, page_type: PageTypes.RoomDirectory});
}
}
} else {
self.setState({ready: true, page_type: PageTypes.RoomView});
}
@ -649,8 +658,13 @@ module.exports = React.createClass({
} else {
// There is no information on presentedId
// so point user to fallback like /directory
if (self.props.config.home_page) {
self.notifyNewScreen('home');
}
else {
self.notifyNewScreen('directory');
}
}
dis.dispatch({action: 'focus_composer'});
} else {
@ -703,6 +717,10 @@ module.exports = React.createClass({
dis.dispatch({
action: 'view_user_settings',
});
} else if (screen == 'home') {
dis.dispatch({
action: 'view_home_page',
});
} else if (screen == 'directory') {
dis.dispatch({
action: 'view_room_directory',

View file

@ -138,7 +138,7 @@ module.exports = React.createClass({
const {
name, idName, title, url, urls, width, height, resizeMethod,
defaultToInitialLetter,
defaultToInitialLetter, viewUserOnClick,
...otherProps
} = this.props;