Skip to content

Commit cd36d8f

Browse files
authored
Merge pull request #99 from GleapSDK/feat/multiple-page-rules
allow multiple page rules
2 parents 997db38 + 6bad19a commit cd36d8f

File tree

4 files changed

+17
-5
lines changed

4 files changed

+17
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "gleap",
3-
"version": "15.2.6",
3+
"version": "15.2.7",
44
"main": "build/cjs/index.js",
55
"module": "build/esm/index.mjs",
66
"exports": {

src/Gleap.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import GleapAudioManager from './GleapAudioManager';
2626
import GleapTagManager from './GleapTagManager';
2727
import GleapAdminManager from './GleapAdminManager';
2828
import GleapProductTours from './GleapProductTours';
29-
import { checkPageFilter } from './GleapPageFilter';
29+
import { checkPageFilter, checkPageRules } from './GleapPageFilter';
3030
import { registerGleapChecklist } from './GleapChecklist';
3131
import ChecklistNetworkManager from './ChecklistNetworkManager';
3232

@@ -1241,8 +1241,8 @@ class Gleap {
12411241
for (let i = 0; i < actions.length; i++) {
12421242
const action = actions[i];
12431243
if (action && action.actionType) {
1244-
if (action.pageFilter && window && window.location) {
1245-
const passed = checkPageFilter(window.location.href, action.pageFilter, action.pageFilterType);
1244+
if ((action.pageRules?.length > 0 || action.pageFilter) && window && window.location) {
1245+
const passed = checkPageRules(window.location.href, action);
12461246

12471247
if (!passed) {
12481248
continue;

src/GleapPageFilter.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,11 @@ export const checkPageFilter = (currentUrl, pageFilter, pageFilterType) => {
8181

8282
return matched;
8383
};
84+
85+
export const checkPageRules = (currentUrl, action) => {
86+
const rules = action.pageRules && action.pageRules.length > 0
87+
? action.pageRules
88+
: (action.pageFilter ? [{ pageFilter: action.pageFilter, pageFilterType: action.pageFilterType }] : []);
89+
if (rules.length === 0) return true;
90+
return rules.every(r => checkPageFilter(currentUrl, r.pageFilter, r.pageFilterType));
91+
};

src/GleapTooltipManager.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { arrow, autoUpdate, computePosition, flip, offset, shift } from '@floating-ui/dom';
22
import { GleapSession } from './Gleap';
33
import { loadIcon } from './UI';
4-
import { checkPageFilter } from './GleapPageFilter';
4+
import { checkPageFilter, checkPageRules } from './GleapPageFilter';
55

66
export default class GleapTooltipManager {
77
tooltips = [];
@@ -427,6 +427,10 @@ export default class GleapTooltipManager {
427427
const currentUrl = window.location.href;
428428

429429
return this.tooltips.filter((tooltip) => {
430+
if (tooltip.pageRules && tooltip.pageRules.length > 0) {
431+
return checkPageRules(currentUrl, { pageRules: tooltip.pageRules });
432+
}
433+
430434
if (!tooltip.page || tooltip.page.length === 0) {
431435
return true;
432436
}

0 commit comments

Comments
 (0)