(getMe)
+ const versionMessageCanceled = useAppSelector(getVersionMessageCanceled)
+
+ if (!me || me.id === 'single-user' || versionMessageCanceled) {
+ return null
+ }
+
+ const closeDialogText = intl.formatMessage({
+ id: 'Dialog.closeDialog',
+ defaultMessage: 'Close dialog',
+ })
+
+ const onClose = async () => {
+ if (me) {
+ const patch: UserConfigPatch = {
+ updatedFields: {
+ [versionProperty]: 'true'
+ },
+ }
+ const patchedProps = await octoClient.patchUserConfig(me.id, patch)
+ if (patchedProps) {
+ dispatch(patchProps(patchedProps))
+ }
+ }
+ }
+
+ return (
+
+
+
+
+
+
+
+
+
+
}
+ title={closeDialogText}
+ size='small'
+ />
+
+ )
+})
+export default VersionMessage
diff --git a/webapp/src/pages/boardPage/boardPage.tsx b/webapp/src/pages/boardPage/boardPage.tsx
index e44dfffbd..f5753bb36 100644
--- a/webapp/src/pages/boardPage/boardPage.tsx
+++ b/webapp/src/pages/boardPage/boardPage.tsx
@@ -7,6 +7,7 @@ import {useRouteMatch} from 'react-router-dom'
import Workspace from '../../components/workspace'
import CloudMessage from '../../components/messages/cloudMessage'
+import VersionMessage from '../../components/messages/versionMessage'
import octoClient from '../../octoClient'
import {Subscription, WSClient} from '../../wsclient'
import {Utils} from '../../utils'
@@ -252,6 +253,7 @@ const BoardPage = (props: Props): JSX.Element => {
+
{!mobileWarningClosed &&
diff --git a/webapp/src/store/users.ts b/webapp/src/store/users.ts
index d3584a25d..359f5116f 100644
--- a/webapp/src/store/users.ts
+++ b/webapp/src/store/users.ts
@@ -21,6 +21,8 @@ export const fetchMe = createAsyncThunk(
async () => client.getMe(),
)
+export const versionProperty = 'focalboard_version72MessageCanceled'
+
type UsersStatus = {
me: IUser|null
boardUsers: {[key: string]: IUser}
@@ -167,6 +169,19 @@ export const getCloudMessageCanceled = createSelector(
},
)
+export const getVersionMessageCanceled = createSelector(
+ getMe,
+ (me): boolean => {
+ if (versionProperty && me){
+ if (me.id === 'single-user') {
+ return true
+ }
+ return Boolean(me.props[versionProperty])
+ }
+ return true
+ },
+)
+
export const getCardLimitSnoozeUntil = createSelector(
getMe,
(me): number => {
diff --git a/webapp/src/telemetry/telemetryClient.ts b/webapp/src/telemetry/telemetryClient.ts
index 6bec93a03..85656b727 100644
--- a/webapp/src/telemetry/telemetryClient.ts
+++ b/webapp/src/telemetry/telemetryClient.ts
@@ -49,6 +49,7 @@ export const TelemetryActions = {
LimitCardCTAPerformed: 'limit_CardLimitCTAPerformed',
LimitCardLimitReached: 'limit_cardLimitReached',
LimitCardLimitLinkOpen: 'limit_cardLimitLinkOpen',
+ VersionMoreInfo: 'version_more_info',
}
interface IEventProps {