Skip to content
Snippets Groups Projects
Unverified Commit d93f9424 authored by Tasso Evangelista's avatar Tasso Evangelista Committed by GitHub
Browse files

refactor(client): Refine `IUser[settings]` (#28403)

parent 2cf41d01
No related branches found
No related tags found
No related merge requests found
......@@ -21,7 +21,7 @@ const fields = {
export const createMessageContext = ({
uid = Meteor.userId(),
user = (uid ? Users.findOne({ _id: uid }, { fields }) : {}) || {},
user = uid ? Users.findOne({ _id: uid }, { fields }) : undefined,
rid = (Template.instance() as CommonRoomTemplateInstance).data.rid,
room = Tracker.nonreactive(() =>
Rooms.findOne(
......@@ -72,7 +72,7 @@ export const createMessageContext = ({
Message_GroupingPeriod = settings.get('Message_GroupingPeriod') * 1000,
}: {
uid?: IUser['_id'] | null;
user?: Partial<IUser>;
user?: Pick<IUser, '_id' | 'settings'>;
rid?: IRoom['_id'];
room?: Omit<IRoom, '_updatedAt' | 'lastMessage'>;
subscription?: Pick<ISubscription, 'name' | 'autoTranslate' | 'rid' | 'tunread' | 'tunreadUser' | 'tunreadGroup'>;
......
export { t } from '../lib/tapi18n';
export { Info } from '../rocketchat.info';
export { getUserPreference } from '../lib/getUserPreference';
export { getUserPreference } from './lib/getUserPreference';
export { fileUploadIsValidContentType } from '../lib/fileUploadRestrictions';
export { getUserAvatarURL } from '../lib/getUserAvatarURL';
export { slashCommands } from '../lib/slashCommand';
......
import type { IUser } from '@rocket.chat/core-typings';
import { Users } from '../../../models/client';
import { settings } from '../../../settings/client';
/**
* Get a user preference
* @param user The user ID
* @param key The preference name
* @returns The preference value
*/
export function getUserPreference<TValue>(user: IUser['_id'] | null | undefined, key: string): TValue | undefined;
/**
* Get a user preference
* @param user The user
* @param key The preference name
* @returns The preference value
*/
export function getUserPreference<TValue>(user: Pick<IUser, '_id' | 'settings'> | null | undefined, key: string): TValue | undefined;
/**
* Get a user preference
* @param user The user ID
* @param key The preference name
* @param defaultValue The default value
* @returns The preference value or the default value
*/
export function getUserPreference<TValue>(user: IUser['_id'] | null | undefined, key: string, defaultValue: TValue): TValue;
/**
* Get a user preference
* @param user The user
* @param key The preference name
* @param defaultValue The default value
* @returns The preference value or the default value
*/
export function getUserPreference<TValue>(
user: Pick<IUser, '_id' | 'settings'> | null | undefined,
key: string,
defaultValue: TValue,
): TValue;
export function getUserPreference<TValue>(
userIdOrUser: IUser['_id'] | Pick<IUser, '_id' | 'settings'> | null | undefined,
key: string,
defaultValue?: TValue,
): TValue {
const user =
typeof userIdOrUser === 'string' ? Users.findOne(userIdOrUser, { fields: { [`settings.preferences.${key}`]: 1 } }) : userIdOrUser;
return user?.settings?.preferences?.[key] ?? defaultValue ?? settings.get(`Accounts_Default_User_Preferences_${key}`);
}
......@@ -95,7 +95,7 @@ export interface IUserEmail {
export interface IUserSettings {
profile: any;
preferences: {
preferences?: {
[key: string]: any;
};
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment