@thoughtspot/visual-embed-sdk 1.39.1 → 1.39.2-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/package.json +1 -1
- package/cjs/src/config.spec.js +9 -0
- package/cjs/src/config.spec.js.map +1 -1
- package/cjs/src/embed/app.d.ts +75 -15
- package/cjs/src/embed/app.d.ts.map +1 -1
- package/cjs/src/embed/app.js +69 -9
- package/cjs/src/embed/app.js.map +1 -1
- package/cjs/src/embed/app.spec.js +374 -12
- package/cjs/src/embed/app.spec.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.d.ts +19 -7
- package/cjs/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/cjs/src/embed/bodyless-conversation.js +24 -4
- package/cjs/src/embed/bodyless-conversation.js.map +1 -1
- package/cjs/src/embed/bodyless-conversation.spec.js +8 -190
- package/cjs/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/cjs/src/embed/conversation.spec.js +28 -0
- package/cjs/src/embed/conversation.spec.js.map +1 -1
- package/cjs/src/embed/embedConfig.d.ts +9 -7
- package/cjs/src/embed/embedConfig.d.ts.map +1 -1
- package/cjs/src/embed/embedConfig.js +9 -7
- package/cjs/src/embed/embedConfig.js.map +1 -1
- package/cjs/src/embed/liveboard.d.ts +56 -17
- package/cjs/src/embed/liveboard.d.ts.map +1 -1
- package/cjs/src/embed/liveboard.js +48 -4
- package/cjs/src/embed/liveboard.js.map +1 -1
- package/cjs/src/embed/liveboard.spec.js +215 -11
- package/cjs/src/embed/liveboard.spec.js.map +1 -1
- package/cjs/src/embed/ts-embed.d.ts +5 -0
- package/cjs/src/embed/ts-embed.d.ts.map +1 -1
- package/cjs/src/embed/ts-embed.js +16 -1
- package/cjs/src/embed/ts-embed.js.map +1 -1
- package/cjs/src/embed/ts-embed.spec.js +164 -0
- package/cjs/src/embed/ts-embed.spec.js.map +1 -1
- package/cjs/src/errors.d.ts +1 -0
- package/cjs/src/errors.d.ts.map +1 -1
- package/cjs/src/errors.js +1 -0
- package/cjs/src/errors.js.map +1 -1
- package/cjs/src/index.d.ts +2 -2
- package/cjs/src/index.d.ts.map +1 -1
- package/cjs/src/index.js +2 -1
- package/cjs/src/index.js.map +1 -1
- package/cjs/src/react/all-types-export.d.ts +1 -1
- package/cjs/src/react/all-types-export.d.ts.map +1 -1
- package/cjs/src/react/all-types-export.js +3 -2
- package/cjs/src/react/all-types-export.js.map +1 -1
- package/cjs/src/react/index.d.ts +71 -20
- package/cjs/src/react/index.d.ts.map +1 -1
- package/cjs/src/react/index.js +79 -42
- package/cjs/src/react/index.js.map +1 -1
- package/cjs/src/react/index.spec.js +436 -100
- package/cjs/src/react/index.spec.js.map +1 -1
- package/cjs/src/types.d.ts +80 -6
- package/cjs/src/types.d.ts.map +1 -1
- package/cjs/src/types.js +45 -1
- package/cjs/src/types.js.map +1 -1
- package/cjs/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/cjs/src/utils/graphql/nlsService/conversation-service.js +2 -0
- package/cjs/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/cjs/src/utils/processTrigger.js +2 -1
- package/cjs/src/utils/processTrigger.js.map +1 -1
- package/cjs/src/utils.d.ts +6 -0
- package/cjs/src/utils.d.ts.map +1 -1
- package/cjs/src/utils.js +23 -3
- package/cjs/src/utils.js.map +1 -1
- package/cjs/src/utils.spec.js +237 -1
- package/cjs/src/utils.spec.js.map +1 -1
- package/dist/{index-JaFaxrvQ.js → index-CmEQfuE3.js} +1 -1
- package/dist/index-DeFzsyFF.js +7371 -0
- package/dist/index-Dpf0rd6w.js +7371 -0
- package/dist/index-UuEbsISo.js +7447 -0
- package/dist/index-e3Uw3YFO.js +7371 -0
- package/dist/src/embed/app.d.ts +75 -15
- package/dist/src/embed/app.d.ts.map +1 -1
- package/dist/src/embed/bodyless-conversation.d.ts +19 -7
- package/dist/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/dist/src/embed/embedConfig.d.ts +9 -7
- package/dist/src/embed/embedConfig.d.ts.map +1 -1
- package/dist/src/embed/liveboard.d.ts +56 -17
- package/dist/src/embed/liveboard.d.ts.map +1 -1
- package/dist/src/embed/ts-embed.d.ts +5 -0
- package/dist/src/embed/ts-embed.d.ts.map +1 -1
- package/dist/src/errors.d.ts +1 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/index.d.ts +2 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/react/all-types-export.d.ts +1 -1
- package/dist/src/react/all-types-export.d.ts.map +1 -1
- package/dist/src/react/index.d.ts +71 -20
- package/dist/src/react/index.d.ts.map +1 -1
- package/dist/src/types.d.ts +80 -6
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/dist/src/utils.d.ts +6 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/tsembed-react.es.js +320 -78
- package/dist/tsembed-react.js +320 -76
- package/dist/tsembed.es.js +238 -31
- package/dist/tsembed.js +236 -29
- package/dist/visual-embed-sdk-react-full.d.ts +288 -72
- package/dist/visual-embed-sdk-react.d.ts +288 -72
- package/dist/visual-embed-sdk.d.ts +218 -53
- package/lib/package.json +1 -1
- package/lib/src/config.spec.js +9 -0
- package/lib/src/config.spec.js.map +1 -1
- package/lib/src/embed/app.d.ts +75 -15
- package/lib/src/embed/app.d.ts.map +1 -1
- package/lib/src/embed/app.js +69 -9
- package/lib/src/embed/app.js.map +1 -1
- package/lib/src/embed/app.spec.js +376 -14
- package/lib/src/embed/app.spec.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.d.ts +19 -7
- package/lib/src/embed/bodyless-conversation.d.ts.map +1 -1
- package/lib/src/embed/bodyless-conversation.js +23 -4
- package/lib/src/embed/bodyless-conversation.js.map +1 -1
- package/lib/src/embed/bodyless-conversation.spec.js +9 -191
- package/lib/src/embed/bodyless-conversation.spec.js.map +1 -1
- package/lib/src/embed/conversation.spec.js +30 -2
- package/lib/src/embed/conversation.spec.js.map +1 -1
- package/lib/src/embed/embedConfig.d.ts +9 -7
- package/lib/src/embed/embedConfig.d.ts.map +1 -1
- package/lib/src/embed/embedConfig.js +9 -7
- package/lib/src/embed/embedConfig.js.map +1 -1
- package/lib/src/embed/liveboard.d.ts +56 -17
- package/lib/src/embed/liveboard.d.ts.map +1 -1
- package/lib/src/embed/liveboard.js +49 -5
- package/lib/src/embed/liveboard.js.map +1 -1
- package/lib/src/embed/liveboard.spec.js +215 -11
- package/lib/src/embed/liveboard.spec.js.map +1 -1
- package/lib/src/embed/ts-embed.d.ts +5 -0
- package/lib/src/embed/ts-embed.d.ts.map +1 -1
- package/lib/src/embed/ts-embed.js +16 -1
- package/lib/src/embed/ts-embed.js.map +1 -1
- package/lib/src/embed/ts-embed.spec.js +164 -0
- package/lib/src/embed/ts-embed.spec.js.map +1 -1
- package/lib/src/errors.d.ts +1 -0
- package/lib/src/errors.d.ts.map +1 -1
- package/lib/src/errors.js +1 -0
- package/lib/src/errors.js.map +1 -1
- package/lib/src/index.d.ts +2 -2
- package/lib/src/index.d.ts.map +1 -1
- package/lib/src/index.js +2 -2
- package/lib/src/index.js.map +1 -1
- package/lib/src/react/all-types-export.d.ts +1 -1
- package/lib/src/react/all-types-export.d.ts.map +1 -1
- package/lib/src/react/all-types-export.js +1 -1
- package/lib/src/react/all-types-export.js.map +1 -1
- package/lib/src/react/index.d.ts +71 -20
- package/lib/src/react/index.d.ts.map +1 -1
- package/lib/src/react/index.js +79 -43
- package/lib/src/react/index.js.map +1 -1
- package/lib/src/react/index.spec.js +439 -103
- package/lib/src/react/index.spec.js.map +1 -1
- package/lib/src/types.d.ts +80 -6
- package/lib/src/types.d.ts.map +1 -1
- package/lib/src/types.js +45 -1
- package/lib/src/types.js.map +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.d.ts.map +1 -1
- package/lib/src/utils/graphql/nlsService/conversation-service.js +2 -0
- package/lib/src/utils/graphql/nlsService/conversation-service.js.map +1 -1
- package/lib/src/utils/processTrigger.js +2 -1
- package/lib/src/utils/processTrigger.js.map +1 -1
- package/lib/src/utils.d.ts +6 -0
- package/lib/src/utils.d.ts.map +1 -1
- package/lib/src/utils.js +21 -2
- package/lib/src/utils.js.map +1 -1
- package/lib/src/utils.spec.js +238 -2
- package/lib/src/utils.spec.js.map +1 -1
- package/lib/src/visual-embed-sdk.d.ts +219 -54
- package/package.json +1 -1
- package/src/config.spec.ts +11 -0
- package/src/embed/app.spec.ts +479 -26
- package/src/embed/app.ts +133 -27
- package/src/embed/bodyless-conversation.spec.ts +9 -203
- package/src/embed/bodyless-conversation.ts +24 -10
- package/src/embed/conversation.spec.ts +40 -2
- package/src/embed/embedConfig.ts +10 -8
- package/src/embed/liveboard.spec.ts +256 -5
- package/src/embed/liveboard.ts +99 -27
- package/src/embed/ts-embed.spec.ts +225 -0
- package/src/embed/ts-embed.ts +19 -0
- package/src/errors.ts +1 -0
- package/src/index.ts +2 -0
- package/src/react/all-types-export.ts +2 -1
- package/src/react/index.spec.tsx +556 -157
- package/src/react/index.tsx +117 -51
- package/src/types.ts +117 -43
- package/src/utils/graphql/nlsService/conversation-service.ts +2 -0
- package/src/utils/processTrigger.ts +1 -1
- package/src/utils.spec.ts +279 -2
- package/src/utils.ts +28 -2
|
@@ -1360,6 +1360,231 @@ describe('Unit test case for ts embed', () => {
|
|
|
1360
1360
|
});
|
|
1361
1361
|
});
|
|
1362
1362
|
|
|
1363
|
+
describe('Preauth Cache for FullAppEmbed with PrimaryNavBar', () => {
|
|
1364
|
+
beforeAll(() => {
|
|
1365
|
+
jest.clearAllMocks();
|
|
1366
|
+
init({
|
|
1367
|
+
thoughtSpotHost,
|
|
1368
|
+
authType: AuthType.None,
|
|
1369
|
+
});
|
|
1370
|
+
});
|
|
1371
|
+
afterEach(() => {
|
|
1372
|
+
jest.clearAllMocks();
|
|
1373
|
+
});
|
|
1374
|
+
|
|
1375
|
+
afterAll(() => {
|
|
1376
|
+
jest.clearAllMocks();
|
|
1377
|
+
});
|
|
1378
|
+
|
|
1379
|
+
const setupPreauthTest = async (
|
|
1380
|
+
embedType: 'AppEmbed' | 'SearchEmbed',
|
|
1381
|
+
showPrimaryNavbar?: boolean,
|
|
1382
|
+
overrideOrgId?: number,
|
|
1383
|
+
disablePreauthCache?: boolean
|
|
1384
|
+
) => {
|
|
1385
|
+
jest.spyOn(window, 'addEventListener').mockImplementationOnce(
|
|
1386
|
+
(event, handler, options) => {
|
|
1387
|
+
handler({
|
|
1388
|
+
data: { type: 'xyz' },
|
|
1389
|
+
ports: [3000],
|
|
1390
|
+
source: null,
|
|
1391
|
+
});
|
|
1392
|
+
},
|
|
1393
|
+
);
|
|
1394
|
+
mockProcessTrigger.mockResolvedValueOnce({ session: 'test' });
|
|
1395
|
+
jest.spyOn(baseInstance, 'getAuthPromise').mockResolvedValueOnce(true);
|
|
1396
|
+
|
|
1397
|
+
let mockGetPreauthInfo = null;
|
|
1398
|
+
|
|
1399
|
+
// Determine if preauth cache should be enabled
|
|
1400
|
+
const isAppEmbedWithPrimaryNavbar = embedType === 'AppEmbed' && showPrimaryNavbar === true;
|
|
1401
|
+
const shouldDisableCache = overrideOrgId || disablePreauthCache || isAppEmbedWithPrimaryNavbar;
|
|
1402
|
+
|
|
1403
|
+
if (shouldDisableCache) {
|
|
1404
|
+
mockGetPreauthInfo = jest.spyOn(sessionInfoService, 'getPreauthInfo')
|
|
1405
|
+
.mockImplementation(jest.fn());
|
|
1406
|
+
} else {
|
|
1407
|
+
mockGetPreauthInfo = jest.spyOn(sessionInfoService, 'getPreauthInfo')
|
|
1408
|
+
.mockResolvedValue({ info: { test: 'data' } });
|
|
1409
|
+
}
|
|
1410
|
+
|
|
1411
|
+
const mockPreauthInfoFetch = jest.spyOn(authService, 'fetchPreauthInfoService')
|
|
1412
|
+
.mockResolvedValueOnce({
|
|
1413
|
+
ok: true,
|
|
1414
|
+
headers: new Headers({ 'content-type': 'application/json' }),
|
|
1415
|
+
json: async () => ({
|
|
1416
|
+
info: { test: 'data' },
|
|
1417
|
+
}),
|
|
1418
|
+
} as any);
|
|
1419
|
+
|
|
1420
|
+
const viewConfig: any = {
|
|
1421
|
+
frameParams: { width: 1280, height: 720 },
|
|
1422
|
+
};
|
|
1423
|
+
|
|
1424
|
+
if (showPrimaryNavbar !== undefined) {
|
|
1425
|
+
viewConfig.showPrimaryNavbar = showPrimaryNavbar;
|
|
1426
|
+
}
|
|
1427
|
+
if (overrideOrgId !== undefined) {
|
|
1428
|
+
viewConfig.overrideOrgId = overrideOrgId;
|
|
1429
|
+
}
|
|
1430
|
+
|
|
1431
|
+
// Mock getEmbedConfig for disablePreauthCache
|
|
1432
|
+
if (disablePreauthCache !== undefined) {
|
|
1433
|
+
jest.spyOn(embedConfig, 'getEmbedConfig').mockReturnValueOnce({
|
|
1434
|
+
thoughtSpotHost,
|
|
1435
|
+
authType: AuthType.None,
|
|
1436
|
+
disablePreauthCache,
|
|
1437
|
+
});
|
|
1438
|
+
}
|
|
1439
|
+
|
|
1440
|
+
let embed;
|
|
1441
|
+
if (embedType === 'AppEmbed') {
|
|
1442
|
+
embed = new AppEmbed(getRootEl(), viewConfig);
|
|
1443
|
+
} else {
|
|
1444
|
+
embed = new SearchEmbed(getRootEl(), viewConfig);
|
|
1445
|
+
}
|
|
1446
|
+
|
|
1447
|
+
const iFrame: any = document.createElement('div');
|
|
1448
|
+
iFrame.contentWindow = {
|
|
1449
|
+
postMessage: jest.fn(),
|
|
1450
|
+
};
|
|
1451
|
+
jest.spyOn(iFrame, 'addEventListener').mockImplementationOnce(
|
|
1452
|
+
(event, handler, options) => {
|
|
1453
|
+
handler({});
|
|
1454
|
+
},
|
|
1455
|
+
);
|
|
1456
|
+
jest.spyOn(document, 'createElement').mockReturnValueOnce(iFrame);
|
|
1457
|
+
|
|
1458
|
+
await embed.render();
|
|
1459
|
+
|
|
1460
|
+
return {
|
|
1461
|
+
embed,
|
|
1462
|
+
mockGetPreauthInfo,
|
|
1463
|
+
mockPreauthInfoFetch,
|
|
1464
|
+
iFrame,
|
|
1465
|
+
};
|
|
1466
|
+
};
|
|
1467
|
+
|
|
1468
|
+
test('should disable preauth cache for FullAppEmbed with showPrimaryNavbar = true (default)', async () => {
|
|
1469
|
+
const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', true);
|
|
1470
|
+
|
|
1471
|
+
// Wait for any async operations
|
|
1472
|
+
await executeAfterWait(() => {
|
|
1473
|
+
expect(mockGetPreauthInfo).toHaveBeenCalledTimes(0);
|
|
1474
|
+
});
|
|
1475
|
+
});
|
|
1476
|
+
|
|
1477
|
+
test('should enable preauth cache for FullAppEmbed with showPrimaryNavbar = undefined (no longer defaults to true)', async () => {
|
|
1478
|
+
const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', undefined);
|
|
1479
|
+
|
|
1480
|
+
await executeAfterWait(() => {
|
|
1481
|
+
expect(mockGetPreauthInfo).toHaveBeenCalledTimes(1);
|
|
1482
|
+
expect(mockProcessTrigger).toHaveBeenCalledWith(
|
|
1483
|
+
expect.any(Object),
|
|
1484
|
+
HostEvent.InfoSuccess,
|
|
1485
|
+
'http://tshost',
|
|
1486
|
+
expect.objectContaining({ info: expect.any(Object) }),
|
|
1487
|
+
);
|
|
1488
|
+
});
|
|
1489
|
+
});
|
|
1490
|
+
|
|
1491
|
+
test('should enable preauth cache for FullAppEmbed with showPrimaryNavbar = false', async () => {
|
|
1492
|
+
const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', false);
|
|
1493
|
+
|
|
1494
|
+
await executeAfterWait(() => {
|
|
1495
|
+
expect(mockGetPreauthInfo).toHaveBeenCalledTimes(1);
|
|
1496
|
+
expect(mockProcessTrigger).toHaveBeenCalledWith(
|
|
1497
|
+
expect.any(Object),
|
|
1498
|
+
HostEvent.InfoSuccess,
|
|
1499
|
+
'http://tshost',
|
|
1500
|
+
expect.objectContaining({ info: expect.any(Object) }),
|
|
1501
|
+
);
|
|
1502
|
+
});
|
|
1503
|
+
});
|
|
1504
|
+
|
|
1505
|
+
test('should enable preauth cache for SearchEmbed regardless of showPrimaryNavbar', async () => {
|
|
1506
|
+
const { mockGetPreauthInfo } = await setupPreauthTest('SearchEmbed', true);
|
|
1507
|
+
|
|
1508
|
+
await executeAfterWait(() => {
|
|
1509
|
+
expect(mockGetPreauthInfo).toHaveBeenCalledTimes(1);
|
|
1510
|
+
expect(mockProcessTrigger).toHaveBeenCalledWith(
|
|
1511
|
+
expect.any(Object),
|
|
1512
|
+
HostEvent.InfoSuccess,
|
|
1513
|
+
'http://tshost',
|
|
1514
|
+
expect.objectContaining({ info: expect.any(Object) }),
|
|
1515
|
+
);
|
|
1516
|
+
});
|
|
1517
|
+
});
|
|
1518
|
+
|
|
1519
|
+
test('should enable preauth cache for SearchEmbed (verifies fix for embed type regression)', async () => {
|
|
1520
|
+
const { mockGetPreauthInfo } = await setupPreauthTest('SearchEmbed', false);
|
|
1521
|
+
|
|
1522
|
+
await executeAfterWait(() => {
|
|
1523
|
+
expect(mockGetPreauthInfo).toHaveBeenCalledTimes(1);
|
|
1524
|
+
expect(mockProcessTrigger).toHaveBeenCalledWith(
|
|
1525
|
+
expect.any(Object),
|
|
1526
|
+
HostEvent.InfoSuccess,
|
|
1527
|
+
'http://tshost',
|
|
1528
|
+
expect.objectContaining({ info: expect.any(Object) }),
|
|
1529
|
+
);
|
|
1530
|
+
});
|
|
1531
|
+
});
|
|
1532
|
+
|
|
1533
|
+
test('should disable preauth cache for FullAppEmbed with overrideOrgId (combined condition)', async () => {
|
|
1534
|
+
const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', false, 123);
|
|
1535
|
+
|
|
1536
|
+
await executeAfterWait(() => {
|
|
1537
|
+
expect(mockGetPreauthInfo).toHaveBeenCalledTimes(0);
|
|
1538
|
+
});
|
|
1539
|
+
});
|
|
1540
|
+
|
|
1541
|
+
test('should disable preauth cache for FullAppEmbed with disablePreauthCache = true', async () => {
|
|
1542
|
+
const { mockGetPreauthInfo } = await setupPreauthTest('AppEmbed', false, undefined, true);
|
|
1543
|
+
|
|
1544
|
+
await executeAfterWait(() => {
|
|
1545
|
+
expect(mockGetPreauthInfo).toHaveBeenCalledTimes(0);
|
|
1546
|
+
});
|
|
1547
|
+
});
|
|
1548
|
+
});
|
|
1549
|
+
|
|
1550
|
+
describe('isFullAppEmbedWithVisiblePrimaryNavbar helper method', () => {
|
|
1551
|
+
beforeAll(() => {
|
|
1552
|
+
init({
|
|
1553
|
+
thoughtSpotHost,
|
|
1554
|
+
authType: AuthType.None,
|
|
1555
|
+
});
|
|
1556
|
+
});
|
|
1557
|
+
|
|
1558
|
+
afterEach(() => {
|
|
1559
|
+
jest.clearAllMocks();
|
|
1560
|
+
});
|
|
1561
|
+
|
|
1562
|
+
test('should return true for AppEmbed with showPrimaryNavbar = true', () => {
|
|
1563
|
+
const appEmbed = new AppEmbed(getRootEl(), { showPrimaryNavbar: true });
|
|
1564
|
+
expect(appEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(true);
|
|
1565
|
+
});
|
|
1566
|
+
|
|
1567
|
+
test('should return false for AppEmbed with showPrimaryNavbar = undefined (no longer defaults to true)', () => {
|
|
1568
|
+
const appEmbed = new AppEmbed(getRootEl(), {});
|
|
1569
|
+
expect(appEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(false);
|
|
1570
|
+
});
|
|
1571
|
+
|
|
1572
|
+
test('should return false for AppEmbed with showPrimaryNavbar = false', () => {
|
|
1573
|
+
const appEmbed = new AppEmbed(getRootEl(), { showPrimaryNavbar: false });
|
|
1574
|
+
expect(appEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(false);
|
|
1575
|
+
});
|
|
1576
|
+
|
|
1577
|
+
test('should return false for SearchEmbed (not FullAppEmbed)', () => {
|
|
1578
|
+
const searchEmbed = new SearchEmbed(getRootEl(), {});
|
|
1579
|
+
expect(searchEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(false);
|
|
1580
|
+
});
|
|
1581
|
+
|
|
1582
|
+
test('should return false for LiveboardEmbed (not FullAppEmbed)', () => {
|
|
1583
|
+
const liveboardEmbed = new LiveboardEmbed(getRootEl(), { liveboardId: 'test-id' });
|
|
1584
|
+
expect(liveboardEmbed['isFullAppEmbedWithVisiblePrimaryNavbar']()).toBe(false);
|
|
1585
|
+
});
|
|
1586
|
+
});
|
|
1587
|
+
|
|
1363
1588
|
describe('when thoughtSpotHost have value and authPromise return error', () => {
|
|
1364
1589
|
beforeAll(() => {
|
|
1365
1590
|
init({
|
package/src/embed/ts-embed.ts
CHANGED
|
@@ -264,13 +264,32 @@ export class TsEmbed {
|
|
|
264
264
|
// - cached auth info would be for wrong org
|
|
265
265
|
// - info call response changes for each different overrideOrgId
|
|
266
266
|
// 2. disablePreauthCache is explicitly set to true
|
|
267
|
+
// 3. FullAppEmbed has primary navbar visible since:
|
|
268
|
+
// - primary navbar requires fresh auth state for navigation
|
|
269
|
+
// - cached auth may not reflect current user permissions
|
|
267
270
|
const isDisabled = (
|
|
268
271
|
this.viewConfig.overrideOrgId !== undefined
|
|
269
272
|
|| this.embedConfig.disablePreauthCache === true
|
|
273
|
+
|| this.isFullAppEmbedWithVisiblePrimaryNavbar()
|
|
270
274
|
);
|
|
271
275
|
return !isDisabled;
|
|
272
276
|
}
|
|
273
277
|
|
|
278
|
+
/**
|
|
279
|
+
* Checks if current embed is FullAppEmbed with visible primary navbar
|
|
280
|
+
* @returns boolean
|
|
281
|
+
*/
|
|
282
|
+
private isFullAppEmbedWithVisiblePrimaryNavbar(): boolean {
|
|
283
|
+
const appViewConfig = this.viewConfig as any;
|
|
284
|
+
|
|
285
|
+
// Check if this is a FullAppEmbed (AppEmbed)
|
|
286
|
+
// showPrimaryNavbar defaults to true if not explicitly set to false
|
|
287
|
+
return (
|
|
288
|
+
appViewConfig.embedComponentType === 'AppEmbed'
|
|
289
|
+
&& appViewConfig.showPrimaryNavbar === true
|
|
290
|
+
);
|
|
291
|
+
}
|
|
292
|
+
|
|
274
293
|
/**
|
|
275
294
|
* fix for ts7.sep.cl
|
|
276
295
|
* will be removed for ts7.oct.cl
|
package/src/errors.ts
CHANGED
|
@@ -17,4 +17,5 @@ export const ERROR_MESSAGE = {
|
|
|
17
17
|
CSP_FRAME_HOST_VIOLATION_LOG_MESSAGE: 'Please set up CSP correctly for the application to start working. For more information, see https://developers.thoughtspot.com/docs/security-settings#csp-viz-embed-hosts. \n If the issue persists, refer to https://developers.thoughtspot.com/docs/security-settings#csp-viz-embed-hosts',
|
|
18
18
|
MISSING_REPORTING_OBSERVER: 'ReportingObserver not supported',
|
|
19
19
|
RENDER_CALLED_BEFORE_INIT: 'Looks like render was called before calling init, the render won\'t start until init is called.\nFor more info check\n1. https://developers.thoughtspot.com/docs/Function_init#_init\n2.https://developers.thoughtspot.com/docs/getting-started#initSdk',
|
|
20
|
+
SPOTTER_AGENT_NOT_INITIALIZED: 'SpotterAgent not initialized',
|
|
20
21
|
};
|
package/src/index.ts
CHANGED
|
@@ -15,6 +15,7 @@ import {
|
|
|
15
15
|
HomePageSearchBarMode,
|
|
16
16
|
PrimaryNavbarVersion,
|
|
17
17
|
HomePage,
|
|
18
|
+
ListPage,
|
|
18
19
|
DataPanelCustomColumnGroupsAccordionState,
|
|
19
20
|
} from './embed/app';
|
|
20
21
|
import {
|
|
@@ -141,6 +142,7 @@ export {
|
|
|
141
142
|
HomePageSearchBarMode,
|
|
142
143
|
PrimaryNavbarVersion,
|
|
143
144
|
HomePage,
|
|
145
|
+
ListPage,
|
|
144
146
|
VizPoint,
|
|
145
147
|
CustomActionPayload,
|
|
146
148
|
UIPassthroughEvent,
|