diff --git a/ee/LICENSE.md b/ee/LICENSE.md index d0ab5e345..d99b63d76 100644 --- a/ee/LICENSE.md +++ b/ee/LICENSE.md @@ -14,8 +14,8 @@ modify this Software and publish patches to the Software. You agree that OpenRep and/or its licensors (as applicable) retain all right, title and interest in and to all such modifications and/or patches, and all such modifications and/or patches may only be used, copied, modified, displayed, distributed, or otherwise -exploited with a valid OpenReplay Enterprise license for the correct -number of user seats. Notwithstanding the foregoing, you may copy and modify +exploited with a valid OpenReplay Enterprise license for the correct +number of user seats and profiles. Notwithstanding the foregoing, you may copy and modify the Software for development and testing purposes, without requiring a subscription. You agree that OpenReplay and/or its licensors (as applicable) retain all right, title and interest in and to all such modifications. You are not diff --git a/frontend/app/components/Client/ManageUsers/ManageUsers.js b/frontend/app/components/Client/ManageUsers/ManageUsers.js index b0dfd32e9..6d291ed1d 100644 --- a/frontend/app/components/Client/ManageUsers/ManageUsers.js +++ b/frontend/app/components/Client/ManageUsers/ManageUsers.js @@ -103,7 +103,7 @@ class ManageUsers extends React.PureComponent { { !account.smtp &&
- SMTP is not configured. Please follow these steps to set it up. + SMTP is not configured. Please follow (see here how to set it up). You can still add new users, but you’d have to manually copy then send them the invitation link.
}
diff --git a/frontend/app/components/ForgotPassword/ForgotPassword.js b/frontend/app/components/ForgotPassword/ForgotPassword.js index 6c4b0d476..d117afd6a 100644 --- a/frontend/app/components/ForgotPassword/ForgotPassword.js +++ b/frontend/app/components/ForgotPassword/ForgotPassword.js @@ -22,7 +22,7 @@ const checkDontMatch = (newPassword, newPasswordRepeat) => (state, props) => ({ errors: state.getIn([ 'user', 'requestResetPassowrd', 'errors' ]), resetErrors: state.getIn([ 'user', 'resetPassword', 'errors' ]), - loading: state.getIn([ 'user', 'requestResetPassowrd', 'loading' ]), + loading: state.getIn([ 'user', 'requestResetPassowrd', 'loading' ]) || state.getIn([ 'user', 'resetPassword', 'loading' ]), params: new URLSearchParams(props.location.search) }), { requestResetPassword, resetPassword }, @@ -111,7 +111,7 @@ export default class ForgotPassword extends React.PureComponent {
-

Reset Password

+

{`${resetting ? 'Create' : 'Reset'} Password`}

@@ -168,7 +168,7 @@ export default class ForgotPassword extends React.PureComponent { - { 'Reset' } + { resetting ? 'Create' : 'Reset' }
diff --git a/frontend/app/components/Session_/PageInsightsPanel/PageInsightsPanel.tsx b/frontend/app/components/Session_/PageInsightsPanel/PageInsightsPanel.tsx index ed213d472..81251b38c 100644 --- a/frontend/app/components/Session_/PageInsightsPanel/PageInsightsPanel.tsx +++ b/frontend/app/components/Session_/PageInsightsPanel/PageInsightsPanel.tsx @@ -37,7 +37,7 @@ function PageInsightsPanel({ }, [insights]) useEffect(() => { - const url = insightsFilters.url ? insightsFilters.url : host + '/' + urlOptions[0].value; + const url = insightsFilters.url ? insightsFilters.url : host + urlOptions[0].value; Player.pause(); fetchInsights({ ...insightsFilters, url }) }, [insightsFilters]) @@ -45,7 +45,7 @@ function PageInsightsPanel({ const onPageSelect = (e, { name, value }) => { const event = events.find(item => item.url === value) Player.jump(event.time + JUMP_OFFSET) - setInsightsFilters({ ...insightsFilters, url: host + '/' + value }) + setInsightsFilters({ ...insightsFilters, url: host + value }) markTargets([]) }; diff --git a/frontend/app/components/Session_/PageInsightsPanel/components/SelectorCard/SelectorCard.tsx b/frontend/app/components/Session_/PageInsightsPanel/components/SelectorCard/SelectorCard.tsx index 4e39b08e6..0899a8c79 100644 --- a/frontend/app/components/Session_/PageInsightsPanel/components/SelectorCard/SelectorCard.tsx +++ b/frontend/app/components/Session_/PageInsightsPanel/components/SelectorCard/SelectorCard.tsx @@ -12,8 +12,8 @@ interface Props { export default function SelectorCard({ index = 1, target, showContent } : Props) { return ( -
-
activeTarget(index)}> +
activeTarget(index)}> +
{index + 1}
{target.selector}
diff --git a/frontend/app/components/Session_/Player/Controls/Timeline.js b/frontend/app/components/Session_/Player/Controls/Timeline.js index d3af75d4f..c25101d69 100644 --- a/frontend/app/components/Session_/Player/Controls/Timeline.js +++ b/frontend/app/components/Session_/Player/Controls/Timeline.js @@ -54,7 +54,7 @@ const getPointerIcon = (type) => { events: state.eventList, skip: state.skip, skipToIssue: state.skipToIssue, - disabled: state.cssLoading || state.messagesLoading, + disabled: state.cssLoading || state.messagesLoading || state.markedTargets, endTime: state.endTime, live: state.live, logList: state.logList, diff --git a/frontend/app/components/Session_/Player/Overlay/ElementsMarker.tsx b/frontend/app/components/Session_/Player/Overlay/ElementsMarker.tsx index 0acb7716b..99499cac6 100644 --- a/frontend/app/components/Session_/Player/Overlay/ElementsMarker.tsx +++ b/frontend/app/components/Session_/Player/Overlay/ElementsMarker.tsx @@ -2,7 +2,7 @@ import React from 'react'; import Marker from './ElementsMarker/Marker'; export default function ElementsMarker({ targets, activeIndex }) { - return targets && targets.map(t => ) + return targets && targets.map(t => ) } diff --git a/frontend/app/components/Session_/Player/Overlay/ElementsMarker/Marker.tsx b/frontend/app/components/Session_/Player/Overlay/ElementsMarker/Marker.tsx index 66ed9f2e7..92568ff49 100644 --- a/frontend/app/components/Session_/Player/Overlay/ElementsMarker/Marker.tsx +++ b/frontend/app/components/Session_/Player/Overlay/ElementsMarker/Marker.tsx @@ -18,8 +18,8 @@ export default function Marker({ target, active }: Props) { height: `${ target.boundingRect.height }px`, } return ( -
activeTarget(target.index - 1)}> -
{target.index}
+
activeTarget(target.index)}> +
{target.index + 1}
{ const reducer = (state = initialState, action = {}) => { switch (action.type) { + case RESET_PASSWORD.SUCCESS: case UPDATE_PASSWORD.SUCCESS: case LOGIN.SUCCESS: return setClient( diff --git a/frontend/app/player/MessageDistributor/StatedScreen/StatedScreen.ts b/frontend/app/player/MessageDistributor/StatedScreen/StatedScreen.ts index e5b3c400c..26e2051c5 100644 --- a/frontend/app/player/MessageDistributor/StatedScreen/StatedScreen.ts +++ b/frontend/app/player/MessageDistributor/StatedScreen/StatedScreen.ts @@ -101,21 +101,23 @@ export default class StatedScreen extends Screen { setMarkedTargets(selections: { selector: string, count: number }[] | null) { if (selections) { const targets: MarkedTarget[] = []; - const totalCount = selections.reduce((a, b) => { - return a + b.count - }, 0); - selections.forEach((s, index) => { + let index = 0; + selections.forEach((s) => { const el = this.getElementBySelector(s.selector); if (!el) return; targets.push({ ...s, el, - index, - percent: Math.round((s.count * totalCount) / 100), + index: index++, + percent: 0, boundingRect: this.calculateRelativeBoundingRect(el), }) }); - update({ markedTargets: targets }); + + const totalCount = targets.reduce((a, b) => { + return a + b.count + }, 0); + update({ markedTargets: targets.map(i => ({...i, percent: Math.round((i.count * 100) / totalCount) })) }); } else { update({ markedTargets: null }); }