diff --git a/apps/meteor/app/assets/server/assets.ts b/apps/meteor/app/assets/server/assets.ts index ef307f00b30..8bb2e8277a9 100644 --- a/apps/meteor/app/assets/server/assets.ts +++ b/apps/meteor/app/assets/server/assets.ts @@ -374,14 +374,12 @@ export async function addAssetToSetting(asset: string, value: IRocketChatAsset, defaultUrl: value.defaultUrl, }, { - ...{ - type: 'asset', - group: 'Assets', - fileConstraints: value.constraints, - i18nLabel: value.label, - asset, - public: true, - }, + type: 'asset', + group: 'Assets', + fileConstraints: value.constraints, + i18nLabel: value.label, + asset, + public: true, ...options, }, ); diff --git a/apps/meteor/client/NavBarV2/NavBarSettingsToolbar/UserMenu/UserMenuButton.tsx b/apps/meteor/client/NavBarV2/NavBarSettingsToolbar/UserMenu/UserMenuButton.tsx index 9120678c758..4ff16cf37be 100644 --- a/apps/meteor/client/NavBarV2/NavBarSettingsToolbar/UserMenu/UserMenuButton.tsx +++ b/apps/meteor/client/NavBarV2/NavBarSettingsToolbar/UserMenu/UserMenuButton.tsx @@ -20,7 +20,7 @@ const UserMenuButton = forwardRef(function UserMenuButton(props: UserMenuButtonP const user = useUser(); const { status = !user ? 'online' : 'offline', username, avatarETag } = user || anon; - const presenceDisabled = useSetting('Presence_broadcast_disabled'); + const presenceDisabled = useSetting('Presence_broadcast_disabled', false); return ( { const { t } = useTranslation(); - const presenceDisabled = useSetting('Presence_broadcast_disabled'); + const presenceDisabled = useSetting('Presence_broadcast_disabled', false); const displayName = useUserDisplayName(user); return ( diff --git a/apps/meteor/client/components/GazzodownText.tsx b/apps/meteor/client/components/GazzodownText.tsx index 73d55495630..abee977b9ba 100644 --- a/apps/meteor/client/components/GazzodownText.tsx +++ b/apps/meteor/client/components/GazzodownText.tsx @@ -54,7 +54,7 @@ const GazzodownText = ({ mentions, channels, searchText, children }: GazzodownTe const convertAsciiToEmoji = useUserPreference('convertAsciiEmoji', true); const useEmoji = Boolean(useUserPreference('useEmojis')); - const useRealName = Boolean(useSetting('UI_Use_Real_Name')); + const useRealName = useSetting('UI_Use_Real_Name', false); const ownUserId = useUserId(); const showMentionSymbol = Boolean(useUserPreference('mentionsWithSymbol')); diff --git a/apps/meteor/client/components/GenericUpsellModal/hooks/useUpsellActions.ts b/apps/meteor/client/components/GenericUpsellModal/hooks/useUpsellActions.ts index 2a51a53b09b..818d553e74d 100644 --- a/apps/meteor/client/components/GenericUpsellModal/hooks/useUpsellActions.ts +++ b/apps/meteor/client/components/GenericUpsellModal/hooks/useUpsellActions.ts @@ -10,7 +10,7 @@ const TALK_TO_SALES_URL = 'https://go.rocket.chat/i/contact-sales'; export const useUpsellActions = (hasLicenseModule = false) => { const setModal = useSetModal(); const handleOpenLink = useExternalLink(); - const cloudWorkspaceHadTrial = useSetting('Cloud_Workspace_Had_Trial'); + const cloudWorkspaceHadTrial = useSetting('Cloud_Workspace_Had_Trial', false); const { data } = useIsEnterprise(); const shouldShowUpsell = !data?.isEnterprise || !hasLicenseModule; diff --git a/apps/meteor/client/components/Omnichannel/OmnichannelSortingDisclaimer.tsx b/apps/meteor/client/components/Omnichannel/OmnichannelSortingDisclaimer.tsx index 49bca66b841..1d4827aedd7 100644 --- a/apps/meteor/client/components/Omnichannel/OmnichannelSortingDisclaimer.tsx +++ b/apps/meteor/client/components/Omnichannel/OmnichannelSortingDisclaimer.tsx @@ -8,7 +8,7 @@ import { useOmnichannelEnterpriseEnabled } from '../../hooks/omnichannel/useOmni export const useOmnichannelSortingDisclaimer = () => { const isOmnichannelEnabled = useOmnichannelEnterpriseEnabled(); - const sortingMechanism = useSetting('Omnichannel_sorting_mechanism') || OmniSortingType.Timestamp; + const sortingMechanism = useSetting('Omnichannel_sorting_mechanism', OmniSortingType.Timestamp); const [{ [sortingMechanism]: type }] = useState({ [OmniSortingType.Priority]: 'Priorities', diff --git a/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx b/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx index 489eb4a0460..887ad9355f4 100644 --- a/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx +++ b/apps/meteor/client/components/Omnichannel/modals/CloseChatModal.tsx @@ -51,9 +51,9 @@ const CloseChatModal = ({ watch, } = useForm(); - const commentRequired = useSetting('Livechat_request_comment_when_closing_conversation') as boolean; - const alwaysSendTranscript = useSetting('Livechat_transcript_send_always'); - const customSubject = useSetting('Livechat_transcript_email_subject'); + const commentRequired = useSetting('Livechat_request_comment_when_closing_conversation', true); + const alwaysSendTranscript = useSetting('Livechat_transcript_send_always', false); + const customSubject = useSetting('Livechat_transcript_email_subject', ''); const [tagRequired, setTagRequired] = useState(false); const tags = watch('tags'); diff --git a/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.tsx b/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.tsx index f55be50ec1e..7dbb288b169 100644 --- a/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.tsx +++ b/apps/meteor/client/components/Omnichannel/modals/ForwardChatModal.tsx @@ -36,7 +36,7 @@ const ForwardChatModal = ({ }): ReactElement => { const { t } = useTranslation(); const getUserData = useEndpoint('GET', '/v1/users.info'); - const idleAgentsAllowedForForwarding = useSetting('Livechat_enabled_when_agent_idle') as boolean; + const idleAgentsAllowedForForwarding = useSetting('Livechat_enabled_when_agent_idle', true); const { getValues, diff --git a/apps/meteor/client/components/UserStatusMenu.tsx b/apps/meteor/client/components/UserStatusMenu.tsx index 6626debf009..f1c9afaa9b8 100644 --- a/apps/meteor/client/components/UserStatusMenu.tsx +++ b/apps/meteor/client/components/UserStatusMenu.tsx @@ -24,7 +24,7 @@ const UserStatusMenu = ({ }: UserStatusMenuProps): ReactElement => { const { t } = useTranslation(); const [status, setStatus] = useState(initialStatus); - const allowInvisibleStatus = useSetting('Accounts_AllowInvisibleStatusOption') as boolean; + const allowInvisibleStatus = useSetting('Accounts_AllowInvisibleStatusOption', true); const options = useMemo(() => { const renderOption = (status: UserStatusType, label: string): ReactElement => ( diff --git a/apps/meteor/client/components/message/content/location/MapView.tsx b/apps/meteor/client/components/message/content/location/MapView.tsx index 77e404dac1a..3d5a520f8fb 100644 --- a/apps/meteor/client/components/message/content/location/MapView.tsx +++ b/apps/meteor/client/components/message/content/location/MapView.tsx @@ -11,7 +11,7 @@ type MapViewProps = { }; const MapView = ({ latitude, longitude }: MapViewProps) => { - const googleMapsApiKey = useSetting('MapView_GMapsAPIKey'); + const googleMapsApiKey = useSetting('MapView_GMapsAPIKey', ''); const linkUrl = `https://maps.google.com/maps?daddr=${latitude},${longitude}`; diff --git a/apps/meteor/client/components/message/hooks/useNormalizedMessage.ts b/apps/meteor/client/components/message/hooks/useNormalizedMessage.ts index 715a84a2359..a2693d704d4 100644 --- a/apps/meteor/client/components/message/hooks/useNormalizedMessage.ts +++ b/apps/meteor/client/components/message/hooks/useNormalizedMessage.ts @@ -65,7 +65,7 @@ export const useNormalizedMessage = (message: TMessag const customDomains = useAutoLinkDomains(); const subscription = useSubscriptionFromMessageQuery(message).data ?? undefined; const autoTranslateOptions = useAutoTranslate(subscription); - const showColors = useSetting('HexColorPreview_Enabled'); + const showColors = useSetting('HexColorPreview_Enabled', true); return useMemo(() => { const parseOptions: Options = { diff --git a/apps/meteor/client/components/message/hooks/useOembedLayout.ts b/apps/meteor/client/components/message/hooks/useOembedLayout.ts index 819bed285e4..2a2a623da65 100644 --- a/apps/meteor/client/components/message/hooks/useOembedLayout.ts +++ b/apps/meteor/client/components/message/hooks/useOembedLayout.ts @@ -15,7 +15,7 @@ export const useOembedLayout = (): OembedLayout => { very often, so this hook is not going to be re-evaluated very often either; this is why we don't need to memoize the result or store it in a context */ - const enabled = useSetting('API_Embed', false); + const enabled = useSetting('API_Embed', false); const { isMobile } = useLayout(); const maxWidth = isMobile ? ('100%' as const) : 368; diff --git a/apps/meteor/client/components/message/toolbar/useWebDAVMessageAction.tsx b/apps/meteor/client/components/message/toolbar/useWebDAVMessageAction.tsx index 06f84aeee1f..166872acaa4 100644 --- a/apps/meteor/client/components/message/toolbar/useWebDAVMessageAction.tsx +++ b/apps/meteor/client/components/message/toolbar/useWebDAVMessageAction.tsx @@ -7,7 +7,7 @@ import { useWebDAVAccountIntegrationsQuery } from '../../../hooks/webdav/useWebD import SaveToWebdavModal from '../../../views/room/webdav/SaveToWebdavModal'; export const useWebDAVMessageAction = () => { - const enabled = useSetting('Webdav_Integration_Enabled', false); + const enabled = useSetting('Webdav_Integration_Enabled', false); const { data } = useWebDAVAccountIntegrationsQuery({ enabled }); diff --git a/apps/meteor/client/hooks/roomActions/useWebRTCVideoRoomAction.ts b/apps/meteor/client/hooks/roomActions/useWebRTCVideoRoomAction.ts index 38a8488b261..41b07842949 100644 --- a/apps/meteor/client/hooks/roomActions/useWebRTCVideoRoomAction.ts +++ b/apps/meteor/client/hooks/roomActions/useWebRTCVideoRoomAction.ts @@ -11,7 +11,7 @@ export const useWebRTCVideoRoomAction = () => { const enabled = useSetting('WebRTC_Enabled', false); const room = useRoom(); const federated = isRoomFederated(room); - const callProvider = useSetting('Omnichannel_call_provider', 'default-provider'); + const callProvider = useSetting('Omnichannel_call_provider', 'default-provider'); const allowed = enabled && callProvider === 'WebRTC' && room.servedBy; diff --git a/apps/meteor/client/hooks/useFormatDateAndTime.ts b/apps/meteor/client/hooks/useFormatDateAndTime.ts index 2fd8ad81e6a..f35096274e9 100644 --- a/apps/meteor/client/hooks/useFormatDateAndTime.ts +++ b/apps/meteor/client/hooks/useFormatDateAndTime.ts @@ -9,7 +9,7 @@ type UseFormatDateAndTimeParams = { export const useFormatDateAndTime = ({ withSeconds }: UseFormatDateAndTimeParams = {}): ((input: MomentInput) => string) => { const clockMode = useUserPreference('clockMode'); - const format = useSetting('Message_TimeAndDateFormat') as string; + const format = useSetting('Message_TimeAndDateFormat', 'LLL'); return useCallback( (time) => { diff --git a/apps/meteor/client/hooks/useFormatTime.ts b/apps/meteor/client/hooks/useFormatTime.ts index b1f7e2288ab..430a73ee1c6 100644 --- a/apps/meteor/client/hooks/useFormatTime.ts +++ b/apps/meteor/client/hooks/useFormatTime.ts @@ -6,7 +6,7 @@ const dayFormat = ['h:mm A', 'H:mm'] as const; export const useFormatTime = (): ((input: moment.MomentInput) => string) => { const clockMode = useUserPreference<1 | 2>('clockMode'); - const format = useSetting('Message_TimeFormat') as string; + const format = useSetting('Message_TimeFormat', 'LT'); const sameDay = clockMode !== undefined ? dayFormat[clockMode - 1] : format; return useCallback( diff --git a/apps/meteor/client/hooks/usePruneWarningMessage.ts b/apps/meteor/client/hooks/usePruneWarningMessage.ts index bb1eec5a598..8794115b26b 100644 --- a/apps/meteor/client/hooks/usePruneWarningMessage.ts +++ b/apps/meteor/client/hooks/usePruneWarningMessage.ts @@ -84,12 +84,12 @@ export const usePruneWarningMessage = (room: IRoom) => { const { maxAge, filesOnly, excludePinned } = retention; - const cronPrecision = String(useSetting('RetentionPolicy_Precision')) as CronPrecisionSetting; + const cronPrecision = useSetting('RetentionPolicy_Precision', '0'); const t = useTranslation(); - const enableAdvancedCronTimer = Boolean(useSetting('RetentionPolicy_Advanced_Precision')); - const advancedCronTimer = String(useSetting('RetentionPolicy_Advanced_Precision_Cron')); + const enableAdvancedCronTimer = useSetting('RetentionPolicy_Advanced_Precision', false); + const advancedCronTimer = useSetting('RetentionPolicy_Advanced_Precision_Cron', '*/30 * * * *'); const message = getMessage({ filesOnly, excludePinned }); diff --git a/apps/meteor/client/hooks/useTimeAgo.ts b/apps/meteor/client/hooks/useTimeAgo.ts index 724f61d8c7c..ee32e611053 100644 --- a/apps/meteor/client/hooks/useTimeAgo.ts +++ b/apps/meteor/client/hooks/useTimeAgo.ts @@ -8,7 +8,7 @@ const dayFormat = ['h:mm A', 'H:mm'] as const; export const useTimeAgo = (): ((time: Date | number | string) => string) => { const clockMode = useUserPreference<1 | 2>('clockMode'); - const timeFormat = useSetting('Message_TimeFormat', 'LT'); + const timeFormat = useSetting('Message_TimeFormat', 'LT'); const format = clockMode !== undefined ? dayFormat[clockMode - 1] : timeFormat; return useCallback( (time) => { @@ -25,7 +25,7 @@ export const useTimeAgo = (): ((time: Date | number | string) => string) => { export const useShortTimeAgo = (): ((time: Date | string | number) => string) => { const clockMode = useUserPreference<1 | 2>('clockMode'); - const timeFormat = useSetting('Message_TimeFormat') as string; + const timeFormat = useSetting('Message_TimeFormat', 'LT'); const format = clockMode !== undefined ? dayFormat[clockMode - 1] : timeFormat; return useCallback( (time) => diff --git a/apps/meteor/client/hooks/useVoipClient.ts b/apps/meteor/client/hooks/useVoipClient.ts index a9a941b1a0e..eb1884576d2 100644 --- a/apps/meteor/client/hooks/useVoipClient.ts +++ b/apps/meteor/client/hooks/useVoipClient.ts @@ -23,7 +23,7 @@ const isSignedResponse = (data: any): data is { result: string } => typeof data? // Currently we only support the websocket connection and the SIP proxy connection being from the same host, // we need to add a new setting for SIP proxy if we want to support different hosts for them. export const useVoipClient = (): UseVoipClientResult => { - const settingVoipEnabled = Boolean(useSetting('VoIP_Enabled')); + const settingVoipEnabled = useSetting('VoIP_Enabled', false); const [voipConnectorEnabled, setVoipConnectorEnabled] = useSafely(useState(true)); diff --git a/apps/meteor/client/providers/AuthenticationProvider/AuthenticationProvider.tsx b/apps/meteor/client/providers/AuthenticationProvider/AuthenticationProvider.tsx index c76f06bcd3b..bb135c4f22d 100644 --- a/apps/meteor/client/providers/AuthenticationProvider/AuthenticationProvider.tsx +++ b/apps/meteor/client/providers/AuthenticationProvider/AuthenticationProvider.tsx @@ -15,8 +15,8 @@ type AuthenticationProviderProps = { }; const AuthenticationProvider = ({ children }: AuthenticationProviderProps): ReactElement => { - const isLdapEnabled = useSetting('LDAP_Enable'); - const isCrowdEnabled = useSetting('CROWD_Enable'); + const isLdapEnabled = useSetting('LDAP_Enable', false); + const isCrowdEnabled = useSetting('CROWD_Enable', false); const loginMethod: LoginMethods = (isLdapEnabled && 'loginWithLDAP') || (isCrowdEnabled && 'loginWithCrowd') || 'loginWithPassword'; diff --git a/apps/meteor/client/providers/AuthenticationProvider/hooks/useLDAPAndCrowdCollisionWarning.tsx b/apps/meteor/client/providers/AuthenticationProvider/hooks/useLDAPAndCrowdCollisionWarning.tsx index afb0eea54fd..6f1928e0ba2 100644 --- a/apps/meteor/client/providers/AuthenticationProvider/hooks/useLDAPAndCrowdCollisionWarning.tsx +++ b/apps/meteor/client/providers/AuthenticationProvider/hooks/useLDAPAndCrowdCollisionWarning.tsx @@ -5,8 +5,8 @@ import { useEffect } from 'react'; import type { LoginMethods } from '../AuthenticationProvider'; export function useLDAPAndCrowdCollisionWarning() { - const isLdapEnabled = useSetting('LDAP_Enable'); - const isCrowdEnabled = useSetting('CROWD_Enable'); + const isLdapEnabled = useSetting('LDAP_Enable', false); + const isCrowdEnabled = useSetting('CROWD_Enable', false); const loginMethod: LoginMethods = (isLdapEnabled && 'loginWithLDAP') || (isCrowdEnabled && 'loginWithCrowd') || 'loginWithPassword'; diff --git a/apps/meteor/client/providers/LayoutProvider.tsx b/apps/meteor/client/providers/LayoutProvider.tsx index 04b72a59367..e2da2f8231b 100644 --- a/apps/meteor/client/providers/LayoutProvider.tsx +++ b/apps/meteor/client/providers/LayoutProvider.tsx @@ -15,7 +15,7 @@ type LayoutProviderProps = { }; const LayoutProvider = ({ children }: LayoutProviderProps) => { - const showTopNavbarEmbeddedLayout = Boolean(useSetting('UI_Show_top_navbar_embedded_layout')); + const showTopNavbarEmbeddedLayout = useSetting('UI_Show_top_navbar_embedded_layout', false); const [isCollapsed, setIsCollapsed] = useState(false); const breakpoints = useBreakpoints(); // ["xs", "sm", "md", "lg", "xl", xxl"] const [hiddenActions, setHiddenActions] = useState(hiddenActionsDefaultValue); diff --git a/apps/meteor/client/providers/OmnichannelProvider.tsx b/apps/meteor/client/providers/OmnichannelProvider.tsx index 0e10bb2fc95..9ed860c5abf 100644 --- a/apps/meteor/client/providers/OmnichannelProvider.tsx +++ b/apps/meteor/client/providers/OmnichannelProvider.tsx @@ -1,7 +1,7 @@ import { type IOmnichannelAgent, type OmichannelRoutingConfig, - type OmnichannelSortingMechanismSettingType, + OmnichannelSortingMechanismSettingType, type ILivechatInquiryRecord, LivechatInquiryStatus, } from '@rocket.chat/core-typings'; @@ -42,11 +42,14 @@ type OmnichannelProviderProps = { }; const OmnichannelProvider = ({ children }: OmnichannelProviderProps) => { - const omniChannelEnabled = useSetting('Livechat_enabled') as boolean; - const omnichannelRouting = useSetting('Livechat_Routing_Method'); - const showOmnichannelQueueLink = useSetting('Livechat_show_queue_list_link') as boolean; - const omnichannelPoolMaxIncoming = useSetting('Livechat_guest_pool_max_number_incoming_livechats_displayed') ?? 0; - const omnichannelSortingMechanism = useSetting('Omnichannel_sorting_mechanism') as OmnichannelSortingMechanismSettingType; + const omniChannelEnabled = useSetting('Livechat_enabled', true); + const omnichannelRouting = useSetting('Livechat_Routing_Method', 'Auto_Selection'); + const showOmnichannelQueueLink = useSetting('Livechat_show_queue_list_link', false); + const omnichannelPoolMaxIncoming = useSetting('Livechat_guest_pool_max_number_incoming_livechats_displayed', 0); + const omnichannelSortingMechanism = useSetting( + 'Omnichannel_sorting_mechanism', + OmnichannelSortingMechanismSettingType.Timestamp, + ); const loggerRef = useRef(new ClientLogger('OmnichannelProvider')); const hasAccess = usePermission('view-l-room'); diff --git a/apps/meteor/client/providers/TranslationProvider.tsx b/apps/meteor/client/providers/TranslationProvider.tsx index a4594fef938..771e1d72620 100644 --- a/apps/meteor/client/providers/TranslationProvider.tsx +++ b/apps/meteor/client/providers/TranslationProvider.tsx @@ -121,7 +121,7 @@ const useI18next = (lng: string): typeof i18next => { }; const useAutoLanguage = () => { - const serverLanguage = useSetting('Language'); + const serverLanguage = useSetting('Language', ''); const browserLanguage = normalizeLanguage(window.navigator.userLanguage ?? window.navigator.language); const defaultUserLanguage = browserLanguage || serverLanguage || 'en'; diff --git a/apps/meteor/client/providers/UserPresenceProvider.tsx b/apps/meteor/client/providers/UserPresenceProvider.tsx index 2032b5adaa5..19ee54330de 100644 --- a/apps/meteor/client/providers/UserPresenceProvider.tsx +++ b/apps/meteor/client/providers/UserPresenceProvider.tsx @@ -10,7 +10,7 @@ type UserPresenceProviderProps = { }; const UserPresenceProvider = ({ children }: UserPresenceProviderProps): ReactElement => { - const usePresenceDisabled = useSetting('Presence_broadcast_disabled'); + const usePresenceDisabled = useSetting('Presence_broadcast_disabled', false); useEffect(() => { Presence.setStatus(usePresenceDisabled ? 'disabled' : 'enabled'); diff --git a/apps/meteor/client/providers/UserProvider/hooks/useEmailVerificationWarning.tsx b/apps/meteor/client/providers/UserProvider/hooks/useEmailVerificationWarning.tsx index 44ea343fb44..b81f0435b54 100644 --- a/apps/meteor/client/providers/UserProvider/hooks/useEmailVerificationWarning.tsx +++ b/apps/meteor/client/providers/UserProvider/hooks/useEmailVerificationWarning.tsx @@ -4,7 +4,7 @@ import { useRef, useEffect } from 'react'; import { useTranslation } from 'react-i18next'; export function useEmailVerificationWarning(user: IUser | undefined) { - const emailVerificationEnabled = useSetting('Accounts_EmailVerification') === true; + const emailVerificationEnabled = useSetting('Accounts_EmailVerification', false); const dispatchToastMessage = useToastMessageDispatch(); const { t } = useTranslation(); diff --git a/apps/meteor/client/sidebar/footer/SidebarFooterDefault.tsx b/apps/meteor/client/sidebar/footer/SidebarFooterDefault.tsx index 3d1c17dcebb..c40e3617342 100644 --- a/apps/meteor/client/sidebar/footer/SidebarFooterDefault.tsx +++ b/apps/meteor/client/sidebar/footer/SidebarFooterDefault.tsx @@ -9,7 +9,7 @@ import { SidebarFooterWatermark } from './SidebarFooterWatermark'; const SidebarFooterDefault = (): ReactElement => { const [, , theme] = useThemeMode(); - const logo = String(useSetting(theme === 'dark' ? 'Layout_Sidenav_Footer_Dark' : 'Layout_Sidenav_Footer')).trim(); + const logo = useSetting(theme === 'dark' ? 'Layout_Sidenav_Footer_Dark' : 'Layout_Sidenav_Footer', '').trim(); const sidebarFooterStyle = css` & img { diff --git a/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx b/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx index 50b3c85ea63..995c3646888 100644 --- a/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx +++ b/apps/meteor/client/sidebar/header/CreateChannel/CreateChannelModal.tsx @@ -69,7 +69,7 @@ const CreateChannelModal = ({ teamId = '', mainRoom, onClose, reload }: CreateCh const e2eEnabled = useSetting('E2E_Enable'); const namesValidation = useSetting('UTF8_Channel_Names_Validation'); const allowSpecialNames = useSetting('UI_Allow_room_names_with_special_chars'); - const federationEnabled = useSetting('Federation_Matrix_enabled') || false; + const federationEnabled = useSetting('Federation_Matrix_enabled', false); const e2eEnabledForPrivateByDefault = useSetting('E2E_Enabled_Default_PrivateRooms') && e2eEnabled; const canCreateChannel = usePermission('create-c'); diff --git a/apps/meteor/client/sidebar/header/CreateDirectMessage.tsx b/apps/meteor/client/sidebar/header/CreateDirectMessage.tsx index 7c34f7ac01a..29f8590692f 100644 --- a/apps/meteor/client/sidebar/header/CreateDirectMessage.tsx +++ b/apps/meteor/client/sidebar/header/CreateDirectMessage.tsx @@ -11,7 +11,7 @@ import { goToRoomById } from '../../lib/utils/goToRoomById'; const CreateDirectMessage = ({ onClose }: { onClose: () => void }) => { const t = useTranslation(); - const directMaxUsers = useSetting('DirectMesssage_maxUsers') || 1; + const directMaxUsers = useSetting('DirectMesssage_maxUsers', 1); const membersFieldId = useUniqueId(); const dispatchToastMessage = useToastMessageDispatch(); diff --git a/apps/meteor/client/sidebar/header/UserAvatarWithStatus.tsx b/apps/meteor/client/sidebar/header/UserAvatarWithStatus.tsx index ce487851578..324b569cce6 100644 --- a/apps/meteor/client/sidebar/header/UserAvatarWithStatus.tsx +++ b/apps/meteor/client/sidebar/header/UserAvatarWithStatus.tsx @@ -21,7 +21,7 @@ const anon = { const UserAvatarWithStatus = () => { const user = useUser(); - const presenceDisabled = useSetting('Presence_broadcast_disabled'); + const presenceDisabled = useSetting('Presence_broadcast_disabled', false); const { status = !user ? 'online' : 'offline', username, avatarETag } = user || anon; diff --git a/apps/meteor/client/sidebar/header/UserMenuHeader.tsx b/apps/meteor/client/sidebar/header/UserMenuHeader.tsx index 196a6ced780..75ba42925e1 100644 --- a/apps/meteor/client/sidebar/header/UserMenuHeader.tsx +++ b/apps/meteor/client/sidebar/header/UserMenuHeader.tsx @@ -11,7 +11,7 @@ import { useUserDisplayName } from '../../hooks/useUserDisplayName'; const UserMenuHeader = ({ user }: { user: IUser }) => { const { t } = useTranslation(); - const presenceDisabled = useSetting('Presence_broadcast_disabled'); + const presenceDisabled = useSetting('Presence_broadcast_disabled', false); const displayName = useUserDisplayName(user); return ( diff --git a/apps/meteor/client/sidebar/sections/BannerSection.tsx b/apps/meteor/client/sidebar/sections/BannerSection.tsx index f6ce2ac835c..73c1fdd9d5e 100644 --- a/apps/meteor/client/sidebar/sections/BannerSection.tsx +++ b/apps/meteor/client/sidebar/sections/BannerSection.tsx @@ -11,7 +11,7 @@ const BannerSection = () => { const isAdmin = useRole('admin'); const [bannerDismissed, setBannerDismissed] = useSessionStorage('presence_cap_notifier', false); - const presenceDisabled = useSetting('Presence_broadcast_disabled'); + const presenceDisabled = useSetting('Presence_broadcast_disabled', false); if ((isWarning || isRestricted) && isAdmin) { return ; diff --git a/apps/meteor/client/sidebarv2/footer/SidebarFooterDefault.tsx b/apps/meteor/client/sidebarv2/footer/SidebarFooterDefault.tsx index 3d1c17dcebb..c40e3617342 100644 --- a/apps/meteor/client/sidebarv2/footer/SidebarFooterDefault.tsx +++ b/apps/meteor/client/sidebarv2/footer/SidebarFooterDefault.tsx @@ -9,7 +9,7 @@ import { SidebarFooterWatermark } from './SidebarFooterWatermark'; const SidebarFooterDefault = (): ReactElement => { const [, , theme] = useThemeMode(); - const logo = String(useSetting(theme === 'dark' ? 'Layout_Sidenav_Footer_Dark' : 'Layout_Sidenav_Footer')).trim(); + const logo = useSetting(theme === 'dark' ? 'Layout_Sidenav_Footer_Dark' : 'Layout_Sidenav_Footer', '').trim(); const sidebarFooterStyle = css` & img { diff --git a/apps/meteor/client/sidebarv2/header/CreateChannelModal.tsx b/apps/meteor/client/sidebarv2/header/CreateChannelModal.tsx index 2ff468f4f72..d374d05977b 100644 --- a/apps/meteor/client/sidebarv2/header/CreateChannelModal.tsx +++ b/apps/meteor/client/sidebarv2/header/CreateChannelModal.tsx @@ -67,7 +67,7 @@ const CreateChannelModal = ({ teamId = '', onClose, reload }: CreateChannelModal const e2eEnabled = useSetting('E2E_Enable'); const namesValidation = useSetting('UTF8_Channel_Names_Validation'); const allowSpecialNames = useSetting('UI_Allow_room_names_with_special_chars'); - const federationEnabled = useSetting('Federation_Matrix_enabled') || false; + const federationEnabled = useSetting('Federation_Matrix_enabled', false); const e2eEnabledForPrivateByDefault = useSetting('E2E_Enabled_Default_PrivateRooms') && e2eEnabled; const canCreateChannel = usePermission('create-c'); diff --git a/apps/meteor/client/sidebarv2/header/CreateDirectMessage.tsx b/apps/meteor/client/sidebarv2/header/CreateDirectMessage.tsx index 070c363a027..8597541e485 100644 --- a/apps/meteor/client/sidebarv2/header/CreateDirectMessage.tsx +++ b/apps/meteor/client/sidebarv2/header/CreateDirectMessage.tsx @@ -13,7 +13,7 @@ type CreateDirectMessageProps = { onClose: () => void }; const CreateDirectMessage = ({ onClose }: CreateDirectMessageProps) => { const t = useTranslation(); - const directMaxUsers = useSetting('DirectMesssage_maxUsers') || 1; + const directMaxUsers = useSetting('DirectMesssage_maxUsers', 1); const membersFieldId = useUniqueId(); const dispatchToastMessage = useToastMessageDispatch(); diff --git a/apps/meteor/client/sidebarv2/sections/BannerSection.tsx b/apps/meteor/client/sidebarv2/sections/BannerSection.tsx index f6ce2ac835c..73c1fdd9d5e 100644 --- a/apps/meteor/client/sidebarv2/sections/BannerSection.tsx +++ b/apps/meteor/client/sidebarv2/sections/BannerSection.tsx @@ -11,7 +11,7 @@ const BannerSection = () => { const isAdmin = useRole('admin'); const [bannerDismissed, setBannerDismissed] = useSessionStorage('presence_cap_notifier', false); - const presenceDisabled = useSetting('Presence_broadcast_disabled'); + const presenceDisabled = useSetting('Presence_broadcast_disabled', false); if ((isWarning || isRestricted) && isAdmin) { return ; diff --git a/apps/meteor/client/views/account/integrations/AccountIntegrationsRoute.tsx b/apps/meteor/client/views/account/integrations/AccountIntegrationsRoute.tsx index 00121c68834..b81a64ede84 100644 --- a/apps/meteor/client/views/account/integrations/AccountIntegrationsRoute.tsx +++ b/apps/meteor/client/views/account/integrations/AccountIntegrationsRoute.tsx @@ -6,7 +6,7 @@ import NotAuthorizedPage from '../../notAuthorized/NotAuthorizedPage'; import AccountIntegrationsPage from './AccountIntegrationsPage'; const AccountIntegrationsRoute = (): ReactElement => { - const webdavEnabled = useSetting('Webdav_Integration_Enabled', false); + const webdavEnabled = useSetting('Webdav_Integration_Enabled', false); if (!webdavEnabled) { return ; diff --git a/apps/meteor/client/views/account/omnichannel/OmnichannelPreferencesPage.tsx b/apps/meteor/client/views/account/omnichannel/OmnichannelPreferencesPage.tsx index 8489b3cb4b8..a2b3f3b920c 100644 --- a/apps/meteor/client/views/account/omnichannel/OmnichannelPreferencesPage.tsx +++ b/apps/meteor/client/views/account/omnichannel/OmnichannelPreferencesPage.tsx @@ -17,7 +17,7 @@ const OmnichannelPreferencesPage = (): ReactElement => { const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); - const alwaysSendEmailTranscript = useSetting('Livechat_transcript_send_always'); + const alwaysSendEmailTranscript = useSetting('Livechat_transcript_send_always', false); const omnichannelTranscriptPDF = useUserPreference('omnichannelTranscriptPDF') ?? false; const omnichannelTranscriptEmail = useUserPreference('omnichannelTranscriptEmail') ?? false; const omnichannelHideConversationAfterClosing = useUserPreference('omnichannelHideConversationAfterClosing') ?? true; diff --git a/apps/meteor/client/views/account/profile/useAccountProfileSettings.ts b/apps/meteor/client/views/account/profile/useAccountProfileSettings.ts index 272559d3546..18449ec2b82 100644 --- a/apps/meteor/client/views/account/profile/useAccountProfileSettings.ts +++ b/apps/meteor/client/views/account/profile/useAccountProfileSettings.ts @@ -2,14 +2,14 @@ import { useSetting } from '@rocket.chat/ui-contexts'; import { useMemo } from 'react'; export const useAccountProfileSettings = () => { - const allowRealNameChange = useSetting('Accounts_AllowRealNameChange'); - const allowUserStatusMessageChange = useSetting('Accounts_AllowUserStatusMessageChange'); - const canChangeUsername = useSetting('Accounts_AllowUsernameChange'); - const allowEmailChange = useSetting('Accounts_AllowEmailChange'); + const allowRealNameChange = useSetting('Accounts_AllowRealNameChange', true); + const allowUserStatusMessageChange = useSetting('Accounts_AllowUserStatusMessageChange', true); + const canChangeUsername = useSetting('Accounts_AllowUsernameChange', true); + const allowEmailChange = useSetting('Accounts_AllowEmailChange', true); - const allowUserAvatarChange = useSetting('Accounts_AllowUserAvatarChange'); - const requireName = useSetting('Accounts_RequireNameForSignUp'); - const namesRegexSetting = useSetting('UTF8_User_Names_Validation'); + const allowUserAvatarChange = useSetting('Accounts_AllowUserAvatarChange', true); + const requireName = useSetting('Accounts_RequireNameForSignUp', true); + const namesRegexSetting = useSetting('UTF8_User_Names_Validation', '[0-9a-zA-Z-_.]+'); const namesRegex = useMemo(() => new RegExp(`^${namesRegexSetting}$`), [namesRegexSetting]); diff --git a/apps/meteor/client/views/admin/EditableSettingsContext.ts b/apps/meteor/client/views/admin/EditableSettingsContext.ts index 8e98adf83a8..24c09cde2f3 100644 --- a/apps/meteor/client/views/admin/EditableSettingsContext.ts +++ b/apps/meteor/client/views/admin/EditableSettingsContext.ts @@ -1,4 +1,4 @@ -import type { ISettingBase, SectionName, SettingId, GroupId, TabId, ISettingColor } from '@rocket.chat/core-typings'; +import type { ISettingBase, ISettingColor, ISetting } from '@rocket.chat/core-typings'; import type { SettingsContextQuery } from '@rocket.chat/ui-contexts'; import { createContext, useContext, useMemo } from 'react'; import { useSyncExternalStore } from 'use-sync-external-store/shim'; @@ -15,16 +15,18 @@ type EditableSettingsContextQuery = SettingsContextQuery & { export type EditableSettingsContextValue = { readonly queryEditableSetting: ( - _id: SettingId, + _id: ISetting['_id'], ) => [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => EditableSetting | undefined]; readonly queryEditableSettings: ( query: EditableSettingsContextQuery, ) => [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => EditableSetting[]]; readonly queryGroupSections: ( - _id: GroupId, - tab?: TabId, - ) => [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => SectionName[]]; - readonly queryGroupTabs: (_id: GroupId) => [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => TabId[]]; + _id: ISetting['_id'], + tab?: ISetting['_id'], + ) => [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => string[]]; + readonly queryGroupTabs: ( + _id: ISetting['_id'], + ) => [subscribe: (onStoreChange: () => void) => () => void, getSnapshot: () => ISetting['_id'][]]; readonly dispatch: (changes: Partial[]) => void; readonly isEnterprise: boolean; }; @@ -32,15 +34,15 @@ export type EditableSettingsContextValue = { export const EditableSettingsContext = createContext({ queryEditableSetting: () => [(): (() => void) => (): void => undefined, (): undefined => undefined], queryEditableSettings: () => [(): (() => void) => (): void => undefined, (): EditableSetting[] => []], - queryGroupSections: () => [(): (() => void) => (): void => undefined, (): SectionName[] => []], - queryGroupTabs: () => [(): (() => void) => (): void => undefined, (): TabId[] => []], + queryGroupSections: () => [(): (() => void) => (): void => undefined, (): string[] => []], + queryGroupTabs: () => [(): (() => void) => (): void => undefined, (): ISetting['_id'][] => []], dispatch: () => undefined, isEnterprise: false, }); export const useIsEnterprise = (): boolean => useContext(EditableSettingsContext).isEnterprise; -export const useEditableSetting = (_id: SettingId): EditableSetting | undefined => { +export const useEditableSetting = (_id: ISetting['_id']): EditableSetting | undefined => { const { queryEditableSetting } = useContext(EditableSettingsContext); const [subscribe, getSnapshot] = useMemo(() => queryEditableSetting(_id), [queryEditableSetting, _id]); @@ -53,14 +55,14 @@ export const useEditableSettings = (query?: EditableSettingsContextQuery): Edita return useSyncExternalStore(subscribe, getSnapshot); }; -export const useEditableSettingsGroupSections = (_id: SettingId, tab?: TabId): SectionName[] => { +export const useEditableSettingsGroupSections = (_id: ISetting['_id'], tab?: ISetting['_id']): string[] => { const { queryGroupSections } = useContext(EditableSettingsContext); const [subscribe, getSnapshot] = useMemo(() => queryGroupSections(_id, tab), [queryGroupSections, _id, tab]); return useSyncExternalStore(subscribe, getSnapshot); }; -export const useEditableSettingsGroupTabs = (_id: SettingId): TabId[] => { +export const useEditableSettingsGroupTabs = (_id: ISetting['_id']): ISetting['_id'][] => { const { queryGroupTabs } = useContext(EditableSettingsContext); const [subscribe, getSnapshot] = useMemo(() => queryGroupTabs(_id), [queryGroupTabs, _id]); diff --git a/apps/meteor/client/views/admin/customUserStatus/CustomUserStatusRoute.tsx b/apps/meteor/client/views/admin/customUserStatus/CustomUserStatusRoute.tsx index f3c9d7be4b2..0734c054f86 100644 --- a/apps/meteor/client/views/admin/customUserStatus/CustomUserStatusRoute.tsx +++ b/apps/meteor/client/views/admin/customUserStatus/CustomUserStatusRoute.tsx @@ -25,7 +25,7 @@ const CustomUserStatusRoute = (): ReactElement => { const id = useRouteParameter('id'); const canManageUserStatus = usePermission('manage-user-status'); const { data: license } = useIsEnterprise(); - const presenceDisabled = useSetting('Presence_broadcast_disabled'); + const presenceDisabled = useSetting('Presence_broadcast_disabled', false); useEffect(() => { presenceDisabled && route.push({ context: 'presence-service' }); diff --git a/apps/meteor/client/views/admin/customUserStatus/CustomUserStatusService.tsx b/apps/meteor/client/views/admin/customUserStatus/CustomUserStatusService.tsx index 626529e3010..90bbd7b9dc7 100644 --- a/apps/meteor/client/views/admin/customUserStatus/CustomUserStatusService.tsx +++ b/apps/meteor/client/views/admin/customUserStatus/CustomUserStatusService.tsx @@ -23,7 +23,7 @@ import { useActiveConnections } from '../../hooks/useActiveConnections'; const CustomUserStatusService = () => { const { t } = useTranslation(); const result = useActiveConnections(); - const presenceDisabled = useSetting('Presence_broadcast_disabled'); + const presenceDisabled = useSetting('Presence_broadcast_disabled', false); const togglePresenceServiceEndpoint = useEndpoint('POST', '/v1/presence.enableBroadcast'); const disablePresenceService = useMutation(() => togglePresenceServiceEndpoint()); const { data: license, isLoading: licenseIsLoading } = useIsEnterprise(); diff --git a/apps/meteor/client/views/admin/import/NewImportPage.tsx b/apps/meteor/client/views/admin/import/NewImportPage.tsx index e73c52cf575..32350ee20a4 100644 --- a/apps/meteor/client/views/admin/import/NewImportPage.tsx +++ b/apps/meteor/client/views/admin/import/NewImportPage.tsx @@ -30,7 +30,7 @@ function NewImportPage() { const importerKey = useRouteParameter('importerKey'); const importer = useMemo(() => (importers || []).find(({ key }) => key === importerKey), [importerKey, importers]); - const maxFileSize = useSetting('FileUpload_MaxFileSize') ?? 0; + const maxFileSize = useSetting('FileUpload_MaxFileSize', 0); const router = useRouter(); diff --git a/apps/meteor/client/views/admin/moderation/MessageReportInfo.tsx b/apps/meteor/client/views/admin/moderation/MessageReportInfo.tsx index fc78b9d236e..d5b621e3c4a 100644 --- a/apps/meteor/client/views/admin/moderation/MessageReportInfo.tsx +++ b/apps/meteor/client/views/admin/moderation/MessageReportInfo.tsx @@ -11,7 +11,7 @@ const MessageReportInfo = ({ msgId }: { msgId: string }): JSX.Element => { const dispatchToastMessage = useToastMessageDispatch(); const getReportsByMessage = useEndpoint('GET', `/v1/moderation.reports`); - const useRealName = Boolean(useSetting('UI_Use_Real_Name')); + const useRealName = useSetting('UI_Use_Real_Name', false); const { data: reportsByMessage, diff --git a/apps/meteor/client/views/admin/moderation/helpers/ContextMessage.tsx b/apps/meteor/client/views/admin/moderation/helpers/ContextMessage.tsx index 1c1ba56ed41..7e8d35a325d 100644 --- a/apps/meteor/client/views/admin/moderation/helpers/ContextMessage.tsx +++ b/apps/meteor/client/views/admin/moderation/helpers/ContextMessage.tsx @@ -41,7 +41,7 @@ const ContextMessage = ({ const formatDateAndTime = useFormatDateAndTime(); const formatTime = useFormatTime(); const formatDate = useFormatDate(); - const useRealName = Boolean(useSetting('UI_Use_Real_Name')); + const useRealName = useSetting('UI_Use_Real_Name', false); const name = message.u.name || ''; const username = message.u.username || ''; diff --git a/apps/meteor/client/views/admin/settings/EditableSettingsProvider.tsx b/apps/meteor/client/views/admin/settings/EditableSettingsProvider.tsx index 5de179b319e..be33c4617bf 100644 --- a/apps/meteor/client/views/admin/settings/EditableSettingsProvider.tsx +++ b/apps/meteor/client/views/admin/settings/EditableSettingsProvider.tsx @@ -1,4 +1,4 @@ -import type { SettingId, GroupId, ISetting, TabId } from '@rocket.chat/core-typings'; +import type { ISetting } from '@rocket.chat/core-typings'; import { useMutableCallback } from '@rocket.chat/fuselage-hooks'; import type { SettingsContextQuery } from '@rocket.chat/ui-contexts'; import { useSettings } from '@rocket.chat/ui-contexts'; @@ -62,7 +62,7 @@ const EditableSettingsProvider = ({ children, query = defaultQuery, omit = defau return queries.every((query) => settingsCollection.find(query).count() > 0); }; - return createReactiveSubscriptionFactory((_id: SettingId): EditableSetting | undefined => { + return createReactiveSubscriptionFactory((_id: ISetting['_id']): EditableSetting | undefined => { const settingsCollection = getSettingsCollection(); const editableSetting = settingsCollection.findOne(_id); @@ -121,7 +121,7 @@ const EditableSettingsProvider = ({ children, query = defaultQuery, omit = defau const queryGroupSections = useMemo( () => - createReactiveSubscriptionFactory((_id: GroupId, tab?: TabId) => + createReactiveSubscriptionFactory((_id: ISetting['_id'], tab?: ISetting['_id']) => Array.from( new Set( getSettingsCollection() @@ -155,7 +155,7 @@ const EditableSettingsProvider = ({ children, query = defaultQuery, omit = defau const queryGroupTabs = useMemo( () => - createReactiveSubscriptionFactory((_id: GroupId) => + createReactiveSubscriptionFactory((_id: ISetting['_id']) => Array.from( new Set( getSettingsCollection() diff --git a/apps/meteor/client/views/admin/settings/SettingsGroupSelector/SettingsGroupSelector.tsx b/apps/meteor/client/views/admin/settings/SettingsGroupSelector/SettingsGroupSelector.tsx index 5cce1e961bf..316ddf01a6c 100644 --- a/apps/meteor/client/views/admin/settings/SettingsGroupSelector/SettingsGroupSelector.tsx +++ b/apps/meteor/client/views/admin/settings/SettingsGroupSelector/SettingsGroupSelector.tsx @@ -1,4 +1,4 @@ -import type { GroupId } from '@rocket.chat/core-typings'; +import type { ISetting } from '@rocket.chat/core-typings'; import { useSettingStructure } from '@rocket.chat/ui-contexts'; import React from 'react'; @@ -9,7 +9,7 @@ import OAuthGroupPage from '../groups/OAuthGroupPage'; import VoipGroupPage from '../groups/VoipGroupPage'; type SettingsGroupSelectorProps = { - groupId: GroupId; + groupId: ISetting['_id']; onClickBack?: () => void; }; diff --git a/apps/meteor/client/views/admin/users/AdminUserForm.tsx b/apps/meteor/client/views/admin/users/AdminUserForm.tsx index a0ee877af55..b5be16d2f93 100644 --- a/apps/meteor/client/views/admin/users/AdminUserForm.tsx +++ b/apps/meteor/client/views/admin/users/AdminUserForm.tsx @@ -94,7 +94,7 @@ const AdminUserForm = ({ userData, onReload, context, refetchUserFormData, roleD const queryClient = useQueryClient(); const customFieldsMetadata = useAccountsCustomFields(); - const defaultRoles = useSetting('Accounts_Registration_Users_Default_Roles') || ''; + const defaultRoles = useSetting('Accounts_Registration_Users_Default_Roles', ''); const isVerificationNeeded = useSetting('Accounts_EmailVerification'); const defaultUserRoles = parseCSV(defaultRoles); diff --git a/apps/meteor/client/views/admin/users/AdminUserSetRandomPasswordContent.tsx b/apps/meteor/client/views/admin/users/AdminUserSetRandomPasswordContent.tsx index 1e7de0ab989..de2757f4f8c 100644 --- a/apps/meteor/client/views/admin/users/AdminUserSetRandomPasswordContent.tsx +++ b/apps/meteor/client/views/admin/users/AdminUserSetRandomPasswordContent.tsx @@ -32,9 +32,9 @@ const AdminUserSetRandomPasswordContent = ({ const requirePasswordChangeId = useUniqueId(); const passwordVerifierId = useUniqueId(); - const requiresPasswordConfirmation = useSetting('Accounts_RequirePasswordConfirmation'); - const passwordPlaceholder = String(useSetting('Accounts_PasswordPlaceholder')); - const passwordConfirmationPlaceholder = String(useSetting('Accounts_ConfirmPasswordPlaceholder')); + const requiresPasswordConfirmation = useSetting('Accounts_RequirePasswordConfirmation', true); + const passwordPlaceholder = useSetting('Accounts_PasswordPlaceholder', ''); + const passwordConfirmationPlaceholder = useSetting('Accounts_ConfirmPasswordPlaceholder', ''); const passwordIsValid = useValidatePassword(password); diff --git a/apps/meteor/client/views/admin/users/voip/hooks/useVoipExtensionPermission.tsx b/apps/meteor/client/views/admin/users/voip/hooks/useVoipExtensionPermission.tsx index 70e9e2ce91a..f29e8f04585 100644 --- a/apps/meteor/client/views/admin/users/voip/hooks/useVoipExtensionPermission.tsx +++ b/apps/meteor/client/views/admin/users/voip/hooks/useVoipExtensionPermission.tsx @@ -1,7 +1,7 @@ import { useSetting, usePermission } from '@rocket.chat/ui-contexts'; export const useVoipExtensionPermission = () => { - const isVoipSettingEnabled = useSetting('VoIP_TeamCollab_Enabled', false); + const isVoipSettingEnabled = useSetting('VoIP_TeamCollab_Enabled', false); const canManageVoipExtensions = usePermission('manage-voip-extensions'); return isVoipSettingEnabled && canManageVoipExtensions; diff --git a/apps/meteor/client/views/directory/DirectoryPage.tsx b/apps/meteor/client/views/directory/DirectoryPage.tsx index 778b61d9599..e025b1046eb 100644 --- a/apps/meteor/client/views/directory/DirectoryPage.tsx +++ b/apps/meteor/client/views/directory/DirectoryPage.tsx @@ -14,7 +14,7 @@ type TabName = 'users' | 'channels' | 'teams' | 'external'; const DirectoryPage = (): ReactElement => { const { t } = useTranslation(); - const defaultTab = useSetting('Accounts_Directory_DefaultView') ?? 'users'; + const defaultTab = useSetting('Accounts_Directory_DefaultView', 'users'); const federationEnabled = useSetting('FEDERATION_Enabled'); const tab = useRouteParameter('tab') as TabName | undefined; const router = useRouter(); diff --git a/apps/meteor/client/views/home/CustomHomePageContent.tsx b/apps/meteor/client/views/home/CustomHomePageContent.tsx index d149618d396..8a8b96f2b5a 100644 --- a/apps/meteor/client/views/home/CustomHomePageContent.tsx +++ b/apps/meteor/client/views/home/CustomHomePageContent.tsx @@ -4,7 +4,7 @@ import type { ComponentProps, ReactElement } from 'react'; import React from 'react'; const CustomHomePageContent = (props: ComponentProps): ReactElement => { - const body = String(useSetting('Layout_Home_Body')); + const body = useSetting('Layout_Home_Body', ''); return ; }; diff --git a/apps/meteor/client/views/home/DefaultHomePage.tsx b/apps/meteor/client/views/home/DefaultHomePage.tsx index 85fd1ace2db..19fb03c2917 100644 --- a/apps/meteor/client/views/home/DefaultHomePage.tsx +++ b/apps/meteor/client/views/home/DefaultHomePage.tsx @@ -22,8 +22,8 @@ const DefaultHomePage = (): ReactElement => { const isAdmin = useRole('admin'); const canCreateChannel = useAtLeastOnePermission(CREATE_CHANNEL_PERMISSIONS); const workspaceName = useSetting('Site_Name'); - const isCustomContentBodyEmpty = useSetting('Layout_Home_Body') === ''; - const isCustomContentVisible = Boolean(useSetting('Layout_Home_Custom_Block_Visible')); + const isCustomContentBodyEmpty = useSetting('Layout_Home_Body', '') === ''; + const isCustomContentVisible = useSetting('Layout_Home_Custom_Block_Visible', false); return ( diff --git a/apps/meteor/client/views/home/HomePageHeader.tsx b/apps/meteor/client/views/home/HomePageHeader.tsx index f32eff1881b..02ad56cffc4 100644 --- a/apps/meteor/client/views/home/HomePageHeader.tsx +++ b/apps/meteor/client/views/home/HomePageHeader.tsx @@ -9,7 +9,7 @@ const EDIT_LAYOUT_PERMISSIONS = ['view-privileged-setting', 'edit-privileged-set const HomepageHeader = (): ReactElement => { const t = useTranslation(); - const title = useSetting('Layout_Home_Title') as string; + const title = useSetting('Layout_Home_Title', 'Home'); const canEditLayout = useAllPermissions(EDIT_LAYOUT_PERMISSIONS); const settingsRoute = useRoute('admin-settings'); diff --git a/apps/meteor/client/views/home/cards/CustomContentCard.tsx b/apps/meteor/client/views/home/cards/CustomContentCard.tsx index af1bf899dd8..a6248133a1e 100644 --- a/apps/meteor/client/views/home/cards/CustomContentCard.tsx +++ b/apps/meteor/client/views/home/cards/CustomContentCard.tsx @@ -13,10 +13,10 @@ const CustomContentCard = (props: Omit, 'type'>): Re const { data } = useIsEnterprise(); const isAdmin = useRole('admin'); - const customContentBody = useSetting('Layout_Home_Body'); + const customContentBody = useSetting('Layout_Home_Body', ''); const isCustomContentBodyEmpty = customContentBody === ''; - const isCustomContentVisible = useSetting('Layout_Home_Custom_Block_Visible'); - const isCustomContentOnly = useSetting('Layout_Custom_Body_Only'); + const isCustomContentVisible = useSetting('Layout_Home_Custom_Block_Visible', false); + const isCustomContentOnly = useSetting('Layout_Custom_Body_Only', false); const setCustomContentVisible = useSettingSetValue('Layout_Home_Custom_Block_Visible'); const setCustomContentOnly = useSettingSetValue('Layout_Custom_Body_Only'); diff --git a/apps/meteor/client/views/marketplace/components/BannerEnterpriseTrialEnded.tsx b/apps/meteor/client/views/marketplace/components/BannerEnterpriseTrialEnded.tsx index e0eb9bb09e1..fb534767832 100644 --- a/apps/meteor/client/views/marketplace/components/BannerEnterpriseTrialEnded.tsx +++ b/apps/meteor/client/views/marketplace/components/BannerEnterpriseTrialEnded.tsx @@ -15,7 +15,7 @@ const BannerEnterpriseTrialEnded = (): ReactElement => { linkTarget: '_blank', }; - const cloudWorkspaceHadTrial = useSetting('Cloud_Workspace_Had_Trial') as boolean; + const cloudWorkspaceHadTrial = useSetting('Cloud_Workspace_Had_Trial', false); const [showTrialBanner, setShowTrialBanner] = useLocalStorage('showAppsTrialEndBanner', cloudWorkspaceHadTrial); diff --git a/apps/meteor/client/views/oauth/components/CurrentUserDisplay.tsx b/apps/meteor/client/views/oauth/components/CurrentUserDisplay.tsx index 6e52570418d..59e1584d5ae 100644 --- a/apps/meteor/client/views/oauth/components/CurrentUserDisplay.tsx +++ b/apps/meteor/client/views/oauth/components/CurrentUserDisplay.tsx @@ -22,7 +22,7 @@ type CurrentUserDisplayProps = { }; const CurrentUserDisplay = ({ user }: CurrentUserDisplayProps) => { - const showRealNames = useSetting('UI_Use_Real_Name'); + const showRealNames = useSetting('UI_Use_Real_Name', false); const getRoles = useRolesDescription(); const { t } = useTranslation(); diff --git a/apps/meteor/client/views/oauth/components/Layout.tsx b/apps/meteor/client/views/oauth/components/Layout.tsx index 5f7857aed67..dce1a583b41 100644 --- a/apps/meteor/client/views/oauth/components/Layout.tsx +++ b/apps/meteor/client/views/oauth/components/Layout.tsx @@ -9,7 +9,7 @@ type LayoutProps = { }; const Layout = ({ children }: LayoutProps) => { - const hideLogo = useSetting('Layout_Login_Hide_Logo'); + const hideLogo = useSetting('Layout_Login_Hide_Logo', false); const customLogo = useAssetWithDarkModePath('logo'); const customBackground = useAssetWithDarkModePath('background'); diff --git a/apps/meteor/client/views/omnichannel/ExternalFrameContainer.tsx b/apps/meteor/client/views/omnichannel/ExternalFrameContainer.tsx index 3fe37eaced5..f1a2e3a7d32 100644 --- a/apps/meteor/client/views/omnichannel/ExternalFrameContainer.tsx +++ b/apps/meteor/client/views/omnichannel/ExternalFrameContainer.tsx @@ -10,8 +10,8 @@ function ExternalFrameContainer() { const uid = useUserId(); const room = useRoom(); const { 'X-Auth-Token': authToken } = sdk.rest.getCredentials() || {}; - const keyStr = useSetting('Omnichannel_External_Frame_Encryption_JWK'); - const frameURLSetting = useSetting('Omnichannel_External_Frame_URL'); + const keyStr = useSetting('Omnichannel_External_Frame_Encryption_JWK', ''); + const frameURLSetting = useSetting('Omnichannel_External_Frame_URL', ''); const token = useQuery(['externalFrame', keyStr, authToken], async () => { if (!keyStr || !authToken) { diff --git a/apps/meteor/client/views/omnichannel/contactHistory/MessageList/ContactHistoryMessagesList.tsx b/apps/meteor/client/views/omnichannel/contactHistory/MessageList/ContactHistoryMessagesList.tsx index 3bf6385a19a..1e0b7089f15 100644 --- a/apps/meteor/client/views/omnichannel/contactHistory/MessageList/ContactHistoryMessagesList.tsx +++ b/apps/meteor/client/views/omnichannel/contactHistory/MessageList/ContactHistoryMessagesList.tsx @@ -42,7 +42,7 @@ const ContactHistoryMessagesList = ({ }; const { phase, error, items: messages, itemCount: totalItemCount } = useRecordList(messageList); - const messageGroupingPeriod = Number(useSetting('Message_GroupingPeriod')); + const messageGroupingPeriod = useSetting('Message_GroupingPeriod', 300); return ( <> diff --git a/apps/meteor/client/views/omnichannel/installation/Installation.tsx b/apps/meteor/client/views/omnichannel/installation/Installation.tsx index 7fedaaa6564..734b3a5bb88 100644 --- a/apps/meteor/client/views/omnichannel/installation/Installation.tsx +++ b/apps/meteor/client/views/omnichannel/installation/Installation.tsx @@ -1,5 +1,5 @@ import { Box } from '@rocket.chat/fuselage'; -import { useSetting } from '@rocket.chat/ui-contexts'; +import { useAbsoluteUrl, useSetting } from '@rocket.chat/ui-contexts'; import type { ReactElement } from 'react'; import React from 'react'; import { useTranslation } from 'react-i18next'; @@ -12,8 +12,7 @@ import Wrapper from './Wrapper'; // TODO: use `CodeSnippet` Component const Installation = (): ReactElement => { const { t } = useTranslation(); - const setting = useSetting('Site_Url') as string; - const siteUrl = setting?.replace(/\/$/, ''); + const siteUrl = useSetting('Site_Url', useAbsoluteUrl()('')).replace(/\/$/, ''); const installString = `