mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
(core) Revert part of the recent tweaks to AppHeader
Summary: In non-SaaS Grist, the AppHeader will no longer link to templates page. Also, the last visited site is now reset when switching accounts. Test Plan: Existing tests. Reviewers: jarek Reviewed By: jarek Differential Revision: https://phab.getgrist.com/D4048
This commit is contained in:
parent
927e92e3e8
commit
d1826987bb
@ -128,6 +128,7 @@ export interface AppModel {
|
|||||||
isOwnerOrEditor(): boolean; // If user is an owner or editor of this org
|
isOwnerOrEditor(): boolean; // If user is an owner or editor of this org
|
||||||
/** Creates an computed observable to dismiss a popup or check if it was dismissed */
|
/** Creates an computed observable to dismiss a popup or check if it was dismissed */
|
||||||
dismissedPopup(name: DismissedPopup): Observable<boolean>;
|
dismissedPopup(name: DismissedPopup): Observable<boolean>;
|
||||||
|
switchUser(user: FullUser, org?: string): Promise<void>;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class TopAppModelImpl extends Disposable implements TopAppModel {
|
export class TopAppModelImpl extends Disposable implements TopAppModel {
|
||||||
@ -402,6 +403,11 @@ export class AppModelImpl extends Disposable implements AppModel {
|
|||||||
return computed;
|
return computed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async switchUser(user: FullUser, org?: string) {
|
||||||
|
await this.api.setSessionActive(user.email, org);
|
||||||
|
this.lastVisitedOrgDomain.set(null);
|
||||||
|
}
|
||||||
|
|
||||||
private _updateLastVisitedOrgDomain({doc, org}: IGristUrlState, availableOrgs: Organization[]) {
|
private _updateLastVisitedOrgDomain({doc, org}: IGristUrlState, availableOrgs: Organization[]) {
|
||||||
if (
|
if (
|
||||||
!org ||
|
!org ||
|
||||||
|
@ -174,7 +174,7 @@ export class AccountWidget extends Disposable {
|
|||||||
|
|
||||||
// Switch BrowserSession to use the given user for the currently loaded org.
|
// Switch BrowserSession to use the given user for the currently loaded org.
|
||||||
private async _switchAccount(user: FullUser) {
|
private async _switchAccount(user: FullUser) {
|
||||||
await this._appModel.api.setSessionActive(user.email);
|
await this._appModel.switchUser(user);
|
||||||
if (urlState().state.get().doc) {
|
if (urlState().state.get().doc) {
|
||||||
// Document access level may have changed.
|
// Document access level may have changed.
|
||||||
// If it was not accessible but now is, we currently need to reload the page to get
|
// If it was not accessible but now is, we currently need to reload the page to get
|
||||||
|
@ -92,8 +92,10 @@ export class AppHeader extends Disposable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private _buildOrgLinkOrMenu() {
|
private _buildOrgLinkOrMenu() {
|
||||||
const {currentValidUser, isPersonal, isTemplatesSite} = this._appModel;
|
const {currentValidUser, isTemplatesSite} = this._appModel;
|
||||||
if (!currentValidUser && (isPersonal || isTemplatesSite)) {
|
const {deploymentType} = getGristConfig();
|
||||||
|
if (deploymentType === 'saas' && !currentValidUser && isTemplatesSite) {
|
||||||
|
// When signed out and on the templates site (in SaaS Grist), link to the templates page.
|
||||||
return cssOrgLink(
|
return cssOrgLink(
|
||||||
cssOrgName(dom.text(this._appLogoOrgName), testId('dm-orgname')),
|
cssOrgName(dom.text(this._appLogoOrgName), testId('dm-orgname')),
|
||||||
{href: commonUrls.templates},
|
{href: commonUrls.templates},
|
||||||
@ -180,11 +182,11 @@ export class AppHeader extends Disposable {
|
|||||||
}): AppLogoOrgNameAndLink {
|
}): AppLogoOrgNameAndLink {
|
||||||
const {
|
const {
|
||||||
currentValidUser,
|
currentValidUser,
|
||||||
isPersonal,
|
|
||||||
isTemplatesSite,
|
isTemplatesSite,
|
||||||
} = this._appModel;
|
} = this._appModel;
|
||||||
if (!currentValidUser && (isPersonal || isTemplatesSite)) {
|
const {deploymentType} = getGristConfig();
|
||||||
// When signed out and not on a team site, link to the templates site.
|
if (deploymentType === 'saas' && !currentValidUser && isTemplatesSite) {
|
||||||
|
// When signed out and on the templates site (in SaaS Grist), link to the templates page.
|
||||||
return {
|
return {
|
||||||
name: t('Grist Templates'),
|
name: t('Grist Templates'),
|
||||||
link: {
|
link: {
|
||||||
|
@ -63,7 +63,7 @@ async function switchToPersonalUrl(ev: MouseEvent, appModel: AppModel, org: stri
|
|||||||
if (ev.shiftKey || ev.metaKey || ev.ctrlKey || ev.altKey) { return; }
|
if (ev.shiftKey || ev.metaKey || ev.ctrlKey || ev.altKey) { return; }
|
||||||
ev.preventDefault();
|
ev.preventDefault();
|
||||||
// Set the active session for the given org, then load its home page.
|
// Set the active session for the given org, then load its home page.
|
||||||
await appModel.api.setSessionActive(user.email, org);
|
await appModel.switchUser(user, org);
|
||||||
window.location.assign(urlState().makeUrl({org}));
|
window.location.assign(urlState().makeUrl({org}));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,7 +93,7 @@ describe("Fork", function() {
|
|||||||
it(`can create an ${content} unsaved document when ${mode}`, async function() {
|
it(`can create an ${content} unsaved document when ${mode}`, async function() {
|
||||||
let visitedSites: string[];
|
let visitedSites: string[];
|
||||||
if (mode === 'anonymous') {
|
if (mode === 'anonymous') {
|
||||||
visitedSites = ['Grist Templates'];
|
visitedSites = ['@Guest'];
|
||||||
await personal.anon.login();
|
await personal.anon.login();
|
||||||
} else {
|
} else {
|
||||||
visitedSites = ['Test Grist', `@${personal.name}`];
|
visitedSites = ['Test Grist', `@${personal.name}`];
|
||||||
|
Loading…
Reference in New Issue
Block a user