mirror of
				https://github.com/gristlabs/grist-core.git
				synced 2025-06-13 20:53:59 +00:00 
			
		
		
		
	(core) Removing NEW_DEAL flag
Summary: Removing NEW_DEAL flag checks and exposing all new deal features as default. Also removing Pages.ts as it was moved to grist-core. Test Plan: Existing and updated tests. Reviewers: paulfitz Reviewed By: paulfitz Differential Revision: https://phab.getgrist.com/D3572
This commit is contained in:
		
							parent
							
								
									083a0ec000
								
							
						
					
					
						commit
						ee109e9186
					
				@ -4,7 +4,7 @@ import {reportError, setErrorNotifier} from 'app/client/models/errors';
 | 
			
		||||
import {urlState} from 'app/client/models/gristUrlState';
 | 
			
		||||
import {Notifier} from 'app/client/models/NotifyModel';
 | 
			
		||||
import {getFlavor, ProductFlavor} from 'app/client/ui/CustomThemes';
 | 
			
		||||
import {buildNewSiteModal, buildUpgradeModal, NEW_DEAL} from 'app/client/ui/ProductUpgrades';
 | 
			
		||||
import {buildNewSiteModal, buildUpgradeModal} from 'app/client/ui/ProductUpgrades';
 | 
			
		||||
import {OrgUsageSummary} from 'app/common/DocUsage';
 | 
			
		||||
import {Features, isLegacyPlan, Product} from 'app/common/Features';
 | 
			
		||||
import {GristLoadConfig} from 'app/common/gristUrls';
 | 
			
		||||
@ -206,9 +206,7 @@ export class AppModelImpl extends Disposable implements AppModel {
 | 
			
		||||
 | 
			
		||||
  public readonly isPersonal = Boolean(this.currentOrg?.owner);
 | 
			
		||||
  public readonly isTeamSite = Boolean(this.currentOrg) && !this.isPersonal;
 | 
			
		||||
  // TODO: the `NEW_DEAL` observable can be removed after new deal is released.
 | 
			
		||||
  public readonly isLegacySite = Boolean(
 | 
			
		||||
    NEW_DEAL().get() && this.currentProduct && isLegacyPlan(this.currentProduct.name));
 | 
			
		||||
  public readonly isLegacySite = Boolean(this.currentProduct && isLegacyPlan(this.currentProduct.name));
 | 
			
		||||
 | 
			
		||||
  public readonly userPrefsObs = getUserPrefsObs(this);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -10,7 +10,7 @@ import {BillingPlanManagers} from 'app/client/ui/BillingPlanManagers';
 | 
			
		||||
import {createForbiddenPage} from 'app/client/ui/errorPages';
 | 
			
		||||
import {leftPanelBasic} from 'app/client/ui/LeftPanelCommon';
 | 
			
		||||
import {pagePanels} from 'app/client/ui/PagePanels';
 | 
			
		||||
import {NEW_DEAL, showTeamUpgradeConfirmation} from 'app/client/ui/ProductUpgrades';
 | 
			
		||||
import {showTeamUpgradeConfirmation} from 'app/client/ui/ProductUpgrades';
 | 
			
		||||
import {createTopBarHome} from 'app/client/ui/TopBar';
 | 
			
		||||
import {cssBreadcrumbs, cssBreadcrumbsLink, separator} from 'app/client/ui2018/breadcrumbs';
 | 
			
		||||
import {bigBasicButton, bigBasicButtonLink, bigPrimaryButton} from 'app/client/ui2018/buttons';
 | 
			
		||||
@ -272,9 +272,8 @@ export class BillingPage extends Disposable {
 | 
			
		||||
          ),
 | 
			
		||||
          !canManage ? null :
 | 
			
		||||
            makeActionLink('Manage billing', 'Settings', this._model.getCustomerPortalUrl(), testId('portal-link')),
 | 
			
		||||
          !wasTeam ? null :
 | 
			
		||||
          dom.maybe(NEW_DEAL(), () => makeActionButton('Downgrade plan', 'Settings',
 | 
			
		||||
            () => this._confirmDowngradeToTeamFree(), testId('downgrade-free-link'))),
 | 
			
		||||
          !wasTeam ? null : makeActionButton('Downgrade plan', 'Settings',
 | 
			
		||||
            () => this._confirmDowngradeToTeamFree(), testId('downgrade-free-link')),
 | 
			
		||||
          !canRenew ? null :
 | 
			
		||||
            makeActionLink('Renew subscription', 'Settings', this._model.renewPlan(), testId('renew-link')),
 | 
			
		||||
          !canUpgrade ? null :
 | 
			
		||||
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
import type {AppModel} from 'app/client/models/AppModel';
 | 
			
		||||
import {commonUrls} from 'app/common/gristUrls';
 | 
			
		||||
import {Disposable, DomArg, DomContents, IDisposableOwner, Observable, observable} from 'grainjs';
 | 
			
		||||
import {Disposable, DomArg, DomContents, IDisposableOwner} from 'grainjs';
 | 
			
		||||
 | 
			
		||||
export function buildNewSiteModal(context: Disposable, options: {
 | 
			
		||||
  planName: string,
 | 
			
		||||
@ -28,7 +28,3 @@ export function buildUpgradeButton(owner: IDisposableOwner, app: AppModel): Upgr
 | 
			
		||||
    showUpgradeButton : () => null,
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function NEW_DEAL(): Observable<boolean> {
 | 
			
		||||
  return observable(false);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -545,9 +545,6 @@ export interface GristLoadConfig {
 | 
			
		||||
 | 
			
		||||
  // String to append to the end of the HTML document.title
 | 
			
		||||
  pageTitleSuffix?: string;
 | 
			
		||||
 | 
			
		||||
  // TODO: can be removed once new deal is released.
 | 
			
		||||
  newDeal?: boolean;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const HideableUiElements = StringUnion("helpCenter", "billing", "templates", "multiSite", "multiAccounts");
 | 
			
		||||
 | 
			
		||||
@ -147,8 +147,7 @@ export const PRODUCTS: IProduct[] = [
 | 
			
		||||
export function getDefaultProductNames() {
 | 
			
		||||
  const defaultProduct = process.env.GRIST_DEFAULT_PRODUCT;
 | 
			
		||||
  // TODO: can be removed once new deal is released.
 | 
			
		||||
  const personalFreePlan = process.env.NEW_DEAL === 'true'
 | 
			
		||||
    ? PERSONAL_FREE_PLAN : PERSONAL_LEGACY_PLAN;
 | 
			
		||||
  const personalFreePlan = PERSONAL_FREE_PLAN;
 | 
			
		||||
  return {
 | 
			
		||||
    // Personal site start off on a functional plan.
 | 
			
		||||
    personal: defaultProduct || personalFreePlan,
 | 
			
		||||
 | 
			
		||||
@ -35,8 +35,7 @@ import {Group} from "app/gen-server/entity/Group";
 | 
			
		||||
import {Login} from "app/gen-server/entity/Login";
 | 
			
		||||
import {AccessOption, AccessOptionWithRole, Organization} from "app/gen-server/entity/Organization";
 | 
			
		||||
import {Pref} from "app/gen-server/entity/Pref";
 | 
			
		||||
import {getDefaultProductNames, personalFreeFeatures, personalLegacyFeatures,
 | 
			
		||||
        Product} from "app/gen-server/entity/Product";
 | 
			
		||||
import {getDefaultProductNames, personalFreeFeatures, Product} from "app/gen-server/entity/Product";
 | 
			
		||||
import {Secret} from "app/gen-server/entity/Secret";
 | 
			
		||||
import {User} from "app/gen-server/entity/User";
 | 
			
		||||
import {Workspace} from "app/gen-server/entity/Workspace";
 | 
			
		||||
@ -821,8 +820,7 @@ export class HomeDBManager extends EventEmitter {
 | 
			
		||||
          individual: true,
 | 
			
		||||
          product: {
 | 
			
		||||
            name: 'anonymous',
 | 
			
		||||
            features: process.env.NEW_DEAL === 'true'
 | 
			
		||||
              ? personalFreeFeatures : personalLegacyFeatures,
 | 
			
		||||
            features: personalFreeFeatures,
 | 
			
		||||
          },
 | 
			
		||||
          isManager: false,
 | 
			
		||||
          inGoodStanding: true,
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,6 @@ export function makeGristConfig(homeUrl: string|null, extra: Partial<GristLoadCo
 | 
			
		||||
    survey: Boolean(process.env.DOC_ID_NEW_USER_INFO),
 | 
			
		||||
    tagManagerId: process.env.GOOGLE_TAG_MANAGER_ID,
 | 
			
		||||
    activation: (mreq as RequestWithLogin|undefined)?.activation,
 | 
			
		||||
    newDeal: process.env.NEW_DEAL === 'true',
 | 
			
		||||
    ...extra,
 | 
			
		||||
  };
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user