UNSAFE_componentWillReceiveProps()

in frontend/src/js/components/workspace/WorkspacesSidebar.tsx [33:64]


    UNSAFE_componentWillReceiveProps(props: Props) {
        if (props.workspacesMetadata !== this.props.workspacesMetadata) {
            const workspacesMetadata = props.workspacesMetadata || [];
            const currentUser = props.currentUser;

            if (!currentUser) {
                return;
            }

            const selectedWorkspaceId = localStorage.getItem('selectedWorkspaceId');
            const selectedWorkspaceExists = props.workspacesMetadata && !!props.workspacesMetadata.find(workspace => workspace.id === selectedWorkspaceId);
            const urlHasWorkspaceId = !!this.props.match.params.id;
            // We want to redirect to workspace stored in localStorage if the workspace stored in there exists
            // and if the url we accessing does not already contain a workspace id
            if (selectedWorkspaceId && selectedWorkspaceExists && !urlHasWorkspaceId) {
                this.props.history.push(`/workspaces/${selectedWorkspaceId}`)
            }
            if (selectedWorkspaceId && !selectedWorkspaceExists) {
                localStorage.removeItem('selectedWorkspaceId');
            }

            this.setState({
                myWorkspaces: sortBy(workspacesMetadata.filter(w =>
                    !w.isPublic && w.owner.username === currentUser.username
                ), w => w.name.toLowerCase()),
                sharedWorkspaces: sortBy(workspacesMetadata.filter(w =>
                    !w.isPublic && w.owner.username !== currentUser.username
                ), w => w.name.toLowerCase()),
                publicWorkspaces: sortBy(workspacesMetadata.filter(w => w.isPublic), w => w.name.toLowerCase()),
            });
        }
    }