Skip to content

Commit 113b348

Browse files
committed
chore: not exposing pro user flags outside the kernal trust module
1 parent 322e697 commit 113b348

File tree

3 files changed

+36
-19
lines changed

3 files changed

+36
-19
lines changed

src/LiveDevelopment/main.js

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,12 +48,15 @@ define(function main(require, exports, module) {
4848

4949

5050
const KernalModeTrust = window.KernalModeTrust;
51+
if(!KernalModeTrust){
52+
throw new Error("KernalModeTrust is not defined. Cannot boot without trust ring");
53+
}
5154
const LIVE_PREVIEW_MODE = CONSTANTS.LIVE_PREVIEW_MODE,
5255
LIVE_HIGHLIGHT_MODE = CONSTANTS.LIVE_HIGHLIGHT_MODE,
5356
LIVE_EDIT_MODE = CONSTANTS.LIVE_EDIT_MODE;
5457

5558
// this will later be assigned its correct values once entitlementsManager loads
56-
let isProUser = false;
59+
let isProEditUser = false;
5760
let isFreeTrialUser = false;
5861

5962
const PREFERENCE_LIVE_PREVIEW_MODE = CONSTANTS.PREFERENCE_LIVE_PREVIEW_MODE;
@@ -226,7 +229,7 @@ define(function main(require, exports, module) {
226229
// default mode means on first load for pro user we have edit mode
227230
// for free user we have highlight mode
228231
function _getDefaultMode() {
229-
return isProUser ? LIVE_EDIT_MODE : LIVE_HIGHLIGHT_MODE;
232+
return isProEditUser ? LIVE_EDIT_MODE : LIVE_HIGHLIGHT_MODE;
230233
}
231234

232235
// to set that mode in the preferences
@@ -238,9 +241,9 @@ define(function main(require, exports, module) {
238241

239242
const savedMode = PreferencesManager.get(PREFERENCE_LIVE_PREVIEW_MODE) || _getDefaultMode();
240243

241-
if (savedMode === LIVE_HIGHLIGHT_MODE && isProUser) {
244+
if (savedMode === LIVE_HIGHLIGHT_MODE && isProEditUser) {
242245
PreferencesManager.set(PREFERENCE_LIVE_PREVIEW_MODE, LIVE_EDIT_MODE);
243-
} else if (savedMode === LIVE_EDIT_MODE && !isProUser) {
246+
} else if (savedMode === LIVE_EDIT_MODE && !isProEditUser) {
244247
PreferencesManager.set(PREFERENCE_LIVE_PREVIEW_MODE, LIVE_HIGHLIGHT_MODE);
245248
}
246249
}
@@ -254,12 +257,9 @@ define(function main(require, exports, module) {
254257
try {
255258
const entitlement = await KernalModeTrust.EntitlementsManager.getLiveEditEntitlement();
256259

257-
isProUser = entitlement.activated;
260+
isProEditUser = entitlement.activated;
258261
isFreeTrialUser = await KernalModeTrust.EntitlementsManager.isInProTrial();
259262

260-
exports.isProUser = isProUser;
261-
exports.isFreeTrialUser = isFreeTrialUser;
262-
263263
_initializeMode(); // validates mode based on new entitlement
264264
config.mode = getCurrentMode(); // update config.mode after validation
265265

@@ -268,13 +268,13 @@ define(function main(require, exports, module) {
268268
}
269269
} catch (error) {
270270
console.error("Error updating pro user status:", error);
271-
isProUser = false;
271+
isProEditUser = false;
272272
isFreeTrialUser = false;
273273
}
274274
}
275275

276276
function setMode(mode) {
277-
if (mode === LIVE_EDIT_MODE && !exports.isProUser) {
277+
if (mode === LIVE_EDIT_MODE && !isProEditUser) {
278278
return false;
279279
}
280280
PreferencesManager.set(PREFERENCE_LIVE_PREVIEW_MODE, mode);
@@ -381,9 +381,6 @@ define(function main(require, exports, module) {
381381

382382
EventDispatcher.makeEventDispatcher(exports);
383383

384-
exports.isProUser = isProUser;
385-
exports.isFreeTrialUser = isFreeTrialUser;
386-
387384
// public events
388385
exports.EVENT_OPEN_PREVIEW_URL = MultiBrowserLiveDev.EVENT_OPEN_PREVIEW_URL;
389386
exports.EVENT_CONNECTION_CLOSE = MultiBrowserLiveDev.EVENT_CONNECTION_CLOSE;

src/extensionsIntegrated/Phoenix-live-preview/main.js

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,11 @@ define(function (require, exports, module) {
7575
ProDialogs = require("services/pro-dialogs"),
7676
utils = require('./utils');
7777

78+
const KernalModeTrust = window.KernalModeTrust;
79+
if(!KernalModeTrust){
80+
throw new Error("KernalModeTrust is not defined. Cannot boot without trust ring");
81+
}
82+
7883
const StateManager = PreferencesManager.stateManager;
7984
const STATE_CUSTOM_SERVER_BANNER_ACK = "customServerBannerDone";
8085
let customServerModalBar;
@@ -156,6 +161,25 @@ define(function (require, exports, module) {
156161
let connectingOverlayTimer = null; // this is needed as we show the connecting overlay after 3s
157162
let connectingOverlayTimeDuration = 3000;
158163

164+
let isProEditUser = false;
165+
// this is called everytime there is a change in entitlements
166+
async function _entitlementsChanged() {
167+
try {
168+
const entitlement = await KernalModeTrust.EntitlementsManager.getLiveEditEntitlement();
169+
isProEditUser = entitlement.activated;
170+
} catch (error) {
171+
console.error("Error updating pro user status:", error);
172+
isProEditUser = false;
173+
}
174+
}
175+
if(!Phoenix.isSpecRunnerWindow){
176+
_entitlementsChanged();
177+
KernalModeTrust.EntitlementsManager.on(
178+
KernalModeTrust.EntitlementsManager.EVENT_ENTITLEMENTS_CHANGED,
179+
_entitlementsChanged
180+
);
181+
}
182+
159183
StaticServer.on(EVENT_EMBEDDED_IFRAME_WHO_AM_I, function () {
160184
if($iframe && $iframe[0]) {
161185
const iframeDom = $iframe[0];
@@ -310,7 +334,7 @@ define(function (require, exports, module) {
310334
}
311335

312336
function _showModeSelectionDropdown(event) {
313-
const isEditFeaturesActive = LiveDevelopment.isProUser;
337+
const isEditFeaturesActive = isProEditUser;
314338
const items = [
315339
Strings.LIVE_PREVIEW_MODE_PREVIEW,
316340
Strings.LIVE_PREVIEW_MODE_HIGHLIGHT,
@@ -645,7 +669,7 @@ define(function (require, exports, module) {
645669
function _handlePreviewBtnClick() {
646670
if($previewBtn.hasClass('selected')) {
647671
$previewBtn.removeClass('selected');
648-
const isEditFeaturesActive = LiveDevelopment.isProUser;
672+
const isEditFeaturesActive = isProEditUser;
649673
if(modeThatWasSelected) {
650674
// If the last selected mode was preview itself, default to the best mode for user's entitlement
651675
if(modeThatWasSelected === 'preview') {

test/spec/LiveDevelopmentMultiBrowser-test.js

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,6 @@ define(function (require, exports, module) {
118118
// This ensures tests focus on basic live preview functionality without
119119
// edit mode interference (hover/click handlers)
120120
if (LiveDevMultiBrowser && LiveDevMultiBrowser.config) {
121-
LiveDevMultiBrowser.config.isProUser = false;
122121
// Also update the remote browser configuration
123122
if (LiveDevMultiBrowser.updateConfig) {
124123
LiveDevMultiBrowser.updateConfig(JSON.stringify(LiveDevMultiBrowser.config));
@@ -175,7 +174,6 @@ define(function (require, exports, module) {
175174
async function waitsForLiveDevelopmentToOpen() {
176175
// Ensure edit mode is disabled before opening live preview
177176
if (LiveDevMultiBrowser && LiveDevMultiBrowser.config) {
178-
LiveDevMultiBrowser.config.isProUser = false;
179177
// Update the remote browser configuration to sync the disabled state
180178
if (LiveDevMultiBrowser.updateConfig) {
181179
LiveDevMultiBrowser.updateConfig(JSON.stringify(LiveDevMultiBrowser.config));
@@ -1946,7 +1944,6 @@ define(function (require, exports, module) {
19461944
async function waitsForLiveDevelopmentToOpenWithEditMode(elemHighlights = 'hover') {
19471945
// Enable edit mode before opening live preview
19481946
if (LiveDevMultiBrowser && LiveDevMultiBrowser.config) {
1949-
LiveDevMultiBrowser.config.isProUser = true;
19501947
LiveDevMultiBrowser.config.elemHighlights = elemHighlights;
19511948
// Update the remote browser configuration
19521949
if (LiveDevMultiBrowser.updateConfig) {
@@ -1962,7 +1959,6 @@ define(function (require, exports, module) {
19621959
LiveDevMultiBrowser.close();
19631960
// Disable edit mode after session
19641961
if (LiveDevMultiBrowser && LiveDevMultiBrowser.config) {
1965-
LiveDevMultiBrowser.config.isProUser = false;
19661962
LiveDevMultiBrowser.config.elemHighlights = 'hover';
19671963
}
19681964
await awaitsForDone(CommandManager.execute(Commands.FILE_CLOSE_ALL, { _forceClose: true }),

0 commit comments

Comments
 (0)