![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /opt/mattermost/client/ |
Upload File : |
{"version":3,"file":"2731.a317a310f6c774cd0d7f.js","mappings":"wVA4BA,MAGMA,EAAYC,IAAAA,IAAUC,WAAA,CAAAC,YAAA,aAAVF,CAAU,iDAmI5B,EA7HA,WAAiC,IAAAG,EAC7B,MAAOC,EAAMC,IAAWC,EAAAA,EAAAA,WAAS,IAC3B,cAACC,EAAa,aAAEC,IAAgBC,EAAAA,EAAAA,WAChCC,GAAWC,EAAAA,EAAAA,eAEXC,GAAQC,EAAAA,EAAAA,MACPC,IAAeC,EAAAA,EAAAA,KAChBC,GAAmBC,EAAAA,EAAAA,KAEnBC,GAAOC,EAAAA,EAAAA,aAAYC,EAAAA,IACnBC,GAAUF,EAAAA,EAAAA,aAAYG,EAAAA,IACtBC,GAAUJ,EAAAA,EAAAA,aAAYK,EAAAA,IACtBC,GAAUN,EAAAA,EAAAA,aAAYO,EAAAA,IACtBC,GAAYF,aAAO,EAAPA,EAASG,OAAQC,EAAAA,GAAcC,QAE3CC,GAAsBZ,EAAAA,EAAAA,cAAaa,IAAuBC,EAAAA,EAAAA,IAAiBD,EAAOE,EAAAA,GAAYC,0BAA2B,8BAE/H,IAAIC,GAAkB,EACtB,GAA4B,KAAxBL,EAA4B,CAC5B,MAAMM,EAAaC,KAAKC,MAAMR,GAE9BK,EADiBI,KAAKC,MAAQJ,EAAWK,qBA5BjBC,KA8B5B,CAEA,IAAKvC,EACD,OAAO,KAGX,IAAKgC,EACD,OAAO,KAGX,IAAKb,IAAYI,EACb,OAAO,KAGX,MAAMiB,EAAmB9B,SAAkB,QAAPX,EAAXW,EAAa+B,aAAK,IAAA1C,OAAP,EAAXA,EAAoB2C,cACvCC,EAA0BnC,EAAMiC,MAAMG,aAC5C,QAA0BC,IAArBL,KAAqCG,EAA0BH,GAChE,OAAO,KAGX,MAiBMM,EACFC,IAAAA,cAACC,EAAAA,iBAAgB,CACbC,GAAI,oDACJC,eAAgB,qDAChBC,OAAQ,CACJC,WAAWC,EAAAA,EAAAA,IAAWb,EAAkBpC,MAK9CkD,EAEEP,IAAAA,cAACC,EAAAA,iBAAgB,CACbC,GAAI,qDACJC,eAAgB,uIAChBC,OAAQ,CACJI,EAAIC,GAEIT,IAAAA,cAAA,KACIU,QACKC,IACGA,EAAEC,iBACF/C,EAAiB,CAACgD,iBAAkB,4BAA4B,GAG1EJ,MAOpBK,EAEEd,IAAAA,cAACC,EAAAA,iBAAgB,CACbC,GAAI,yDACJC,eAAgB,8HAChBC,OAAQ,CACJI,EAAIC,GACAT,IAAAA,cAACe,EAAAA,EAAc,CACXC,QAASP,EACTQ,kBAAmB,CACfC,cAAeC,EAAAA,GAAYC,aAC3BC,iBAAkBC,EAAAA,GAAmBC,uBACrCC,oBAAoB,GAExBC,WAAW,gCAMnC,OACIzB,IAAAA,cAACpD,EAAS,CAACsD,GAAG,2BACVF,IAAAA,cAAC0B,EAAAA,EAAW,CACRC,KAAM,UACNC,QAAS,MACTC,UA1ESC,KACjB,MAAMC,EAAuD,CACzDxC,oBAAqBF,KAAKC,OAG9B/B,GAASyE,EAAAA,EAAAA,IAAgBjE,EAAKmC,GAAI,CAC9B,CACI+B,SAAUlD,EAAAA,GAAYC,0BACtBkD,KAAM,2BACNC,QAASpE,EAAKmC,GACdkC,MAAOjD,KAAKkD,UAAUN,OAI9B7E,GAAQ,EAAM,EA6DNoF,gBAAiBlF,EAAc,CAAC8C,GAAI,sDAAuDC,eAAgB,gCAAiC,CAACoC,WA9HnI,KA+HVxC,MAAOA,EACPyC,QAAStE,EAAUqC,EAAeO,IAIlD,C","sources":["webpack://mattermost-webapp/./src/components/file_limit_sticky_banner/index.tsx"],"sourcesContent":["// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.\n// See LICENSE.txt for license information.\n\nimport React, {useState} from 'react';\nimport {FormattedMessage, useIntl} from 'react-intl';\nimport {useDispatch, useSelector} from 'react-redux';\nimport styled from 'styled-components';\n\nimport {savePreferences} from 'mattermost-redux/actions/preferences';\nimport {isCurrentLicenseCloud, getSubscriptionProduct as selectSubscriptionProduct} from 'mattermost-redux/selectors/entities/cloud';\nimport {get as selectPreference} from 'mattermost-redux/selectors/entities/preferences';\nimport {getCurrentUser, isCurrentUserSystemAdmin} from 'mattermost-redux/selectors/entities/users';\n\nimport AlertBanner from 'components/alert_banner';\nimport useGetLimits from 'components/common/hooks/useGetLimits';\nimport useGetUsage from 'components/common/hooks/useGetUsage';\nimport useOpenPricingModal from 'components/common/hooks/useOpenPricingModal';\nimport NotifyAdminCTA from 'components/notify_admin_cta/notify_admin_cta';\n\nimport {CloudProducts, LicenseSkus, MattermostFeatures, Preferences} from 'utils/constants';\nimport {asGBString} from 'utils/limits';\n\nimport type {GlobalState} from 'types/store';\n\ninterface FileLimitSnoozePreference {\n lastSnoozeTimestamp: number;\n}\n\nconst snoozeCoolOffDays = 10;\nconst snoozeCoolOffDaysMillis = snoozeCoolOffDays * 24 * 60 * 60 * 1000;\n\nconst StyledDiv = styled.div`\nwidth: 100%;\npadding: 0 24px;\nmargin: 12px auto;\n`;\n\nfunction FileLimitStickyBanner() {\n const [show, setShow] = useState(true);\n const {formatMessage, formatNumber} = useIntl();\n const dispatch = useDispatch();\n\n const usage = useGetUsage();\n const [cloudLimits] = useGetLimits();\n const openPricingModal = useOpenPricingModal();\n\n const user = useSelector(getCurrentUser);\n const isAdmin = useSelector(isCurrentUserSystemAdmin);\n const isCloud = useSelector(isCurrentLicenseCloud);\n const product = useSelector(selectSubscriptionProduct);\n const isStarter = product?.sku === CloudProducts.STARTER;\n\n const snoozePreferenceVal = useSelector((state: GlobalState) => selectPreference(state, Preferences.CLOUD_USER_EPHEMERAL_INFO, 'file_limit_banner_snooze'));\n\n let shouldShowAgain = true;\n if (snoozePreferenceVal !== '') {\n const snoozeInfo = JSON.parse(snoozePreferenceVal) as FileLimitSnoozePreference;\n const timeDiff = Date.now() - snoozeInfo.lastSnoozeTimestamp;\n shouldShowAgain = timeDiff >= snoozeCoolOffDaysMillis;\n }\n\n if (!show) {\n return null;\n }\n\n if (!shouldShowAgain) {\n return null;\n }\n\n if (!isCloud || !isStarter) {\n return null;\n }\n\n const fileStorageLimit = cloudLimits?.files?.total_storage;\n const currentFileStorageUsage = usage.files.totalStorage;\n if ((fileStorageLimit === undefined) || !(currentFileStorageUsage > fileStorageLimit)) {\n return null;\n }\n\n const snoozeBanner = () => {\n const fileLimitBannerSnoozeInfo: FileLimitSnoozePreference = {\n lastSnoozeTimestamp: Date.now(),\n };\n\n dispatch(savePreferences(user.id, [\n {\n category: Preferences.CLOUD_USER_EPHEMERAL_INFO,\n name: 'file_limit_banner_snooze',\n user_id: user.id,\n value: JSON.stringify(fileLimitBannerSnoozeInfo),\n },\n ]));\n\n setShow(false);\n };\n\n const title = (\n <FormattedMessage\n id={'create_post.file_limit_sticky_banner.messageTitle'}\n defaultMessage={'Your free plan is limited to {storageGB} of files.'}\n values={{\n storageGB: asGBString(fileStorageLimit, formatNumber),\n }}\n />\n );\n\n const adminMessage =\n (\n <FormattedMessage\n id={'create_post.file_limit_sticky_banner.admin_message'}\n defaultMessage={'New uploads will automatically archive older files. To view them again, you can delete older files or <a>upgrade to a paid plan.</a>'}\n values={{\n a: (chunks: React.ReactNode) => {\n return (\n <a\n onClick={\n (e) => {\n e.preventDefault();\n openPricingModal({trackingLocation: 'file_limit_sticky_banner'});\n }\n }\n >{chunks}</a>\n );\n },\n }}\n />\n );\n\n const nonAdminMessage =\n (\n <FormattedMessage\n id={'create_post.file_limit_sticky_banner.non_admin_message'}\n defaultMessage={'New uploads will automatically archive older files. To view them again, <a>notify your admin to upgrade to a paid plan.</a>'}\n values={{\n a: (chunks: React.ReactNode) => (\n <NotifyAdminCTA\n ctaText={chunks}\n notifyRequestData={{\n required_plan: LicenseSkus.Professional,\n required_feature: MattermostFeatures.UNLIMITED_FILE_STORAGE,\n trial_notification: false,\n }}\n callerInfo='file_limit_sticky_banner'\n />),\n }}\n />\n );\n\n return (\n <StyledDiv id='cloud_file_limit_banner'>\n <AlertBanner\n mode={'warning'}\n variant={'app'}\n onDismiss={snoozeBanner}\n closeBtnTooltip={formatMessage({id: 'create_post.file_limit_sticky_banner.snooze_tooltip', defaultMessage: 'Snooze for {snoozeDays} days'}, {snoozeDays: snoozeCoolOffDays})}\n title={title}\n message={isAdmin ? adminMessage : nonAdminMessage}\n />\n </StyledDiv>\n );\n}\n\nexport default FileLimitStickyBanner;\n"],"names":["StyledDiv","styled","withConfig","displayName","_cloudLimits$files","show","setShow","useState","formatMessage","formatNumber","useIntl","dispatch","useDispatch","usage","useGetUsage","cloudLimits","useGetLimits","openPricingModal","useOpenPricingModal","user","useSelector","getCurrentUser","isAdmin","isCurrentUserSystemAdmin","isCloud","isCurrentLicenseCloud","product","selectSubscriptionProduct","isStarter","sku","CloudProducts","STARTER","snoozePreferenceVal","state","selectPreference","Preferences","CLOUD_USER_EPHEMERAL_INFO","shouldShowAgain","snoozeInfo","JSON","parse","Date","now","lastSnoozeTimestamp","snoozeCoolOffDays","fileStorageLimit","files","total_storage","currentFileStorageUsage","totalStorage","undefined","title","React","FormattedMessage","id","defaultMessage","values","storageGB","asGBString","adminMessage","a","chunks","onClick","e","preventDefault","trackingLocation","nonAdminMessage","NotifyAdminCTA","ctaText","notifyRequestData","required_plan","LicenseSkus","Professional","required_feature","MattermostFeatures","UNLIMITED_FILE_STORAGE","trial_notification","callerInfo","AlertBanner","mode","variant","onDismiss","snoozeBanner","fileLimitBannerSnoozeInfo","savePreferences","category","name","user_id","value","stringify","closeBtnTooltip","snoozeDays","message"],"sourceRoot":""}