Revert "Make Screens an enum"

This reverts commit f6492918

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This commit is contained in:
Michael Telatynski 2020-04-27 23:59:07 +01:00
parent 531de19fa4
commit 2792988ad1

View file

@ -103,22 +103,6 @@ export enum Views {
SOFT_LOGOUT = 9, SOFT_LOGOUT = 9,
} }
export enum Screens {
REGISTER = "register",
LOGIN = "login",
FORGOT_PASSWORD = "forgot_password",
SOFT_LOGOUT = "soft_logout",
NEW = "new", // new room
SETTINGS = "settings",
WELCOME = "welcome",
HOME = "home",
START = "start",
DIRECTORY = "directory",
GROUPS = "groups",
COMPLETE_SECURITY = "complete_security",
POST_REGISTRATION = "post_registration",
}
// Actions that are redirected through the onboarding process prior to being // Actions that are redirected through the onboarding process prior to being
// re-dispatched. NOTE: some actions are non-trivial and would require // re-dispatched. NOTE: some actions are non-trivial and would require
// re-factoring to be included in this list in future. // re-factoring to be included in this list in future.
@ -130,7 +114,7 @@ const ONBOARDING_FLOW_STARTERS = [
]; ];
interface IScreen { interface IScreen {
screen: Screens | string; screen: string;
params?: object; params?: object;
} }
@ -339,9 +323,9 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
// the old creds, but rather go straight to the relevant page // the old creds, but rather go straight to the relevant page
const firstScreen = this.screenAfterLogin ? this.screenAfterLogin.screen : null; const firstScreen = this.screenAfterLogin ? this.screenAfterLogin.screen : null;
if (firstScreen === Screens.LOGIN || if (firstScreen === 'login' ||
firstScreen === Screens.REGISTER || firstScreen === 'register' ||
firstScreen === Screens.FORGOT_PASSWORD) { firstScreen === 'forgot_password') {
this.showScreenAfterLogin(); this.showScreenAfterLogin();
return; return;
} }
@ -555,7 +539,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
this.setStateForNewView({ this.setStateForNewView({
view: Views.LOGIN, view: Views.LOGIN,
}); });
this.notifyNewScreen(Screens.LOGIN); this.notifyNewScreen('login');
ThemeController.isLogin = true; ThemeController.isLogin = true;
this.themeWatcher.recheck(); this.themeWatcher.recheck();
break; break;
@ -568,7 +552,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
this.setStateForNewView({ this.setStateForNewView({
view: Views.FORGOT_PASSWORD, view: Views.FORGOT_PASSWORD,
}); });
this.notifyNewScreen(Screens.FORGOT_PASSWORD); this.notifyNewScreen('forgot_password');
break; break;
case 'start_chat': case 'start_chat':
createRoom({ createRoom({
@ -819,7 +803,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
this.setStateForNewView(newState); this.setStateForNewView(newState);
ThemeController.isLogin = true; ThemeController.isLogin = true;
this.themeWatcher.recheck(); this.themeWatcher.recheck();
this.notifyNewScreen(Screens.REGISTER); this.notifyNewScreen('register');
} }
// TODO: Move to RoomViewStore // TODO: Move to RoomViewStore
@ -1298,7 +1282,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
* Called when the session is logged out * Called when the session is logged out
*/ */
private onLoggedOut() { private onLoggedOut() {
this.notifyNewScreen(Screens.LOGIN); this.notifyNewScreen('login');
this.setStateForNewView({ this.setStateForNewView({
view: Views.LOGIN, view: Views.LOGIN,
ready: false, ready: false,
@ -1315,7 +1299,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
* Called when the session is softly logged out * Called when the session is softly logged out
*/ */
private onSoftLogout() { private onSoftLogout() {
this.notifyNewScreen(Screens.SOFT_LOGOUT); this.notifyNewScreen('soft_logout');
this.setStateForNewView({ this.setStateForNewView({
view: Views.SOFT_LOGOUT, view: Views.SOFT_LOGOUT,
ready: false, ready: false,
@ -1604,168 +1588,152 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
} }
} }
showScreen(screen: Screens | string, params?: {[key: string]: any}) { showScreen(screen: string, params?: {[key: string]: any}) {
switch (screen) { if (screen === 'register') {
case Screens.REGISTER: dis.dispatch({
dis.dispatch({ action: 'start_registration',
action: 'start_registration', params: params,
params: params, });
}); } else if (screen === 'login') {
break; dis.dispatch({
case Screens.LOGIN: action: 'start_login',
params: params,
});
} else if (screen === 'forgot_password') {
dis.dispatch({
action: 'start_password_recovery',
params: params,
});
} else if (screen === 'soft_logout') {
if (MatrixClientPeg.get() && MatrixClientPeg.get().getUserId() && !Lifecycle.isSoftLogout()) {
// Logged in - visit a room
this.viewLastRoom();
} else {
// Ultimately triggers soft_logout if needed
dis.dispatch({ dis.dispatch({
action: 'start_login', action: 'start_login',
params: params, params: params,
}); });
break; }
case Screens.FORGOT_PASSWORD: } else if (screen === 'new') {
dis.dispatch({ dis.dispatch({
action: 'start_password_recovery', action: 'view_create_room',
params: params, });
}); } else if (screen === 'settings') {
break; dis.dispatch({
case Screens.SOFT_LOGOUT: action: 'view_user_settings',
if (MatrixClientPeg.get() && MatrixClientPeg.get().getUserId() && !Lifecycle.isSoftLogout()) { });
// Logged in - visit a room } else if (screen === 'welcome') {
this.viewLastRoom(); dis.dispatch({
} else { action: 'view_welcome_page',
// Ultimately triggers soft_logout if needed });
dis.dispatch({ } else if (screen === 'home') {
action: 'start_login', dis.dispatch({
params: params, action: 'view_home_page',
}); });
} } else if (screen === 'start') {
break; this.showScreen('home');
case Screens.NEW: dis.dispatch({
dis.dispatch({ action: 'require_registration',
action: 'view_create_room', });
}); } else if (screen === 'directory') {
break; dis.dispatch({
case Screens.SETTINGS: action: 'view_room_directory',
dis.dispatch({ });
action: 'view_user_settings', } else if (screen === 'groups') {
}); dis.dispatch({
break; action: 'view_my_groups',
case Screens.WELCOME: });
dis.dispatch({ } else if (screen === 'complete_security') {
action: 'view_welcome_page', dis.dispatch({
}); action: 'start_complete_security',
break; });
case Screens.HOME: } else if (screen === 'post_registration') {
dis.dispatch({ dis.dispatch({
action: 'view_home_page', action: 'start_post_registration',
}); });
break; } else if (screen.indexOf('room/') === 0) {
case Screens.START: // Rooms can have the following formats:
this.showScreen(Screens.HOME); // #room_alias:domain or !opaque_id:domain
dis.dispatch({ const room = screen.substring(5);
action: 'require_registration', const domainOffset = room.indexOf(':') + 1; // 0 in case room does not contain a :
}); let eventOffset = room.length;
break; // room aliases can contain slashes only look for slash after domain
case Screens.DIRECTORY: if (room.substring(domainOffset).indexOf('/') > -1) {
dis.dispatch({ eventOffset = domainOffset + room.substring(domainOffset).indexOf('/');
action: 'view_room_directory', }
}); const roomString = room.substring(0, eventOffset);
break; let eventId = room.substring(eventOffset + 1); // empty string if no event id given
case Screens.GROUPS:
dis.dispatch({
action: 'view_my_groups',
});
break;
case Screens.COMPLETE_SECURITY:
dis.dispatch({
action: 'start_complete_security',
});
break;
case Screens.POST_REGISTRATION:
dis.dispatch({
action: 'start_post_registration',
});
break;
default:
if (screen.startsWith('room/')) {
// Rooms can have the following formats:
// #room_alias:domain or !opaque_id:domain
const room = screen.substring(5);
const domainOffset = room.indexOf(':') + 1; // 0 in case room does not contain a :
let eventOffset = room.length;
// room aliases can contain slashes only look for slash after domain
if (room.substring(domainOffset).indexOf('/') > -1) {
eventOffset = domainOffset + room.substring(domainOffset).indexOf('/');
}
const roomString = room.substring(0, eventOffset);
let eventId = room.substring(eventOffset + 1); // empty string if no event id given
// Previously we pulled the eventID from the segments in such a way // Previously we pulled the eventID from the segments in such a way
// where if there was no eventId then we'd get undefined. However, we // where if there was no eventId then we'd get undefined. However, we
// now do a splice and join to handle v3 event IDs which results in // now do a splice and join to handle v3 event IDs which results in
// an empty string. To maintain our potential contract with the rest // an empty string. To maintain our potential contract with the rest
// of the app, we coerce the eventId to be undefined where applicable. // of the app, we coerce the eventId to be undefined where applicable.
if (!eventId) eventId = undefined; if (!eventId) eventId = undefined;
// TODO: Handle encoded room/event IDs: https://github.com/vector-im/riot-web/issues/9149 // TODO: Handle encoded room/event IDs: https://github.com/vector-im/riot-web/issues/9149
// FIXME: sort_out caseConsistency // FIXME: sort_out caseConsistency
const thirdPartyInvite = { const thirdPartyInvite = {
inviteSignUrl: params.signurl, inviteSignUrl: params.signurl,
invitedEmail: params.email, invitedEmail: params.email,
}; };
const oobData = { const oobData = {
name: params.room_name, name: params.room_name,
avatarUrl: params.room_avatar_url, avatarUrl: params.room_avatar_url,
inviterName: params.inviter_name, inviterName: params.inviter_name,
}; };
// on our URLs there might be a ?via=matrix.org or similar to help // on our URLs there might be a ?via=matrix.org or similar to help
// joins to the room succeed. We'll pass these through as an array // joins to the room succeed. We'll pass these through as an array
// to other levels. If there's just one ?via= then params.via is a // to other levels. If there's just one ?via= then params.via is a
// single string. If someone does something like ?via=one.com&via=two.com // single string. If someone does something like ?via=one.com&via=two.com
// then params.via is an array of strings. // then params.via is an array of strings.
let via = []; let via = [];
if (params.via) { if (params.via) {
if (typeof(params.via) === 'string') via = [params.via]; if (typeof(params.via) === 'string') via = [params.via];
else via = params.via; else via = params.via;
} }
const payload = { const payload = {
action: 'view_room', action: 'view_room',
event_id: eventId, event_id: eventId,
via_servers: via, via_servers: via,
// If an event ID is given in the URL hash, notify RoomViewStore to mark // If an event ID is given in the URL hash, notify RoomViewStore to mark
// it as highlighted, which will propagate to RoomView and highlight the // it as highlighted, which will propagate to RoomView and highlight the
// associated EventTile. // associated EventTile.
highlighted: Boolean(eventId), highlighted: Boolean(eventId),
third_party_invite: thirdPartyInvite, third_party_invite: thirdPartyInvite,
oob_data: oobData, oob_data: oobData,
room_alias: undefined, room_alias: undefined,
room_id: undefined, room_id: undefined,
}; };
if (roomString[0] === '#') { if (roomString[0] === '#') {
payload.room_alias = roomString; payload.room_alias = roomString;
} else { } else {
payload.room_id = roomString; payload.room_id = roomString;
} }
dis.dispatch(payload); dis.dispatch(payload);
} else if (screen.startsWith('user/')) { } else if (screen.indexOf('user/') === 0) {
const userId = screen.substring(5); const userId = screen.substring(5);
dis.dispatch({ dis.dispatch({
action: 'view_user_info', action: 'view_user_info',
userId: userId, userId: userId,
subAction: params.action, subAction: params.action,
}); });
} else if (screen.startsWith('group/')) { } else if (screen.indexOf('group/') === 0) {
const groupId = screen.substring(6); const groupId = screen.substring(6);
// TODO: Check valid group ID // TODO: Check valid group ID
dis.dispatch({ dis.dispatch({
action: 'view_group', action: 'view_group',
group_id: groupId, group_id: groupId,
}); });
} else { } else {
console.info("Ignoring showScreen for '%s'", screen); console.info("Ignoring showScreen for '%s'", screen);
}
} }
} }
@ -1832,15 +1800,15 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
} }
onRegisterClick = () => { onRegisterClick = () => {
this.showScreen(Screens.REGISTER); this.showScreen("register");
}; };
onLoginClick = () => { onLoginClick = () => {
this.showScreen(Screens.LOGIN); this.showScreen("login");
}; };
onForgotPasswordClick = () => { onForgotPasswordClick = () => {
this.showScreen(Screens.FORGOT_PASSWORD); this.showScreen("forgot_password");
}; };
onRegisterFlowComplete = (credentials: object, password: string) => { onRegisterFlowComplete = (credentials: object, password: string) => {
@ -1857,7 +1825,7 @@ export default class MatrixChat extends React.PureComponent<IProps, IState> {
this.setState({ this.setState({
view: Views.LOGGED_IN, view: Views.LOGGED_IN,
}); });
this.showScreen(Screens.SETTINGS); this.showScreen("settings");
}; };
onVersion(current: string, latest: string, releaseNotes?: string) { onVersion(current: string, latest: string, releaseNotes?: string) {