mirror of
https://github.com/RocketChat/Rocket.Chat.git
synced 2025-12-27 22:40:49 +00:00
Merge remote-tracking branch 'origin/develop' into release-candidate
This commit is contained in:
commit
5d3c2ce598
7
.github/history-manual.json
vendored
7
.github/history-manual.json
vendored
@ -203,5 +203,12 @@
|
||||
"contributors": [
|
||||
"ggazzo"
|
||||
]
|
||||
}],
|
||||
"5.3.3": [{
|
||||
"title": "[FIX] Security Hotfix (https://docs.rocket.chat/guides/security/security-updates)",
|
||||
"userLogin": "ggazzo",
|
||||
"contributors": [
|
||||
"ggazzo"
|
||||
]
|
||||
}]
|
||||
}
|
||||
|
||||
166577
.github/history.json
vendored
166577
.github/history.json
vendored
File diff suppressed because it is too large
Load Diff
6255
HISTORY.md
6255
HISTORY.md
File diff suppressed because it is too large
Load Diff
@ -114,7 +114,6 @@ export class AppSchedulerBridge extends SchedulerBridge {
|
||||
|
||||
private async scheduleOnceAfterRegister(job: IOnetimeSchedule, appId: string): Promise<void | string> {
|
||||
const scheduledJobs = await this.scheduler.jobs({ name: job.id, type: 'normal' }, {}, 1);
|
||||
|
||||
if (!scheduledJobs.length) {
|
||||
return this.scheduleOnce(job, appId);
|
||||
}
|
||||
|
||||
@ -1,2 +0,0 @@
|
||||
import './username/username.html';
|
||||
import './username/username';
|
||||
@ -1 +1 @@
|
||||
export * from './client/index';
|
||||
import './username/username.ts';
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
import { Meteor } from 'meteor/meteor';
|
||||
import { ReactiveVar } from 'meteor/reactive-var';
|
||||
import { Template } from 'meteor/templating';
|
||||
import { Tracker } from 'meteor/tracker';
|
||||
import type { Blaze } from 'meteor/blaze';
|
||||
import { escapeHTML } from '@rocket.chat/string-helpers';
|
||||
|
||||
import { settings } from '../../../settings/client';
|
||||
import { Button } from '../../../ui/client';
|
||||
import { t } from '../../../utils/client';
|
||||
import { callbacks } from '../../../../lib/callbacks';
|
||||
import { dispatchToastMessage } from '../../../../client/lib/toast';
|
||||
import { settings } from '../../settings/client';
|
||||
import { Button } from '../../ui/client';
|
||||
import { t } from '../../utils/client';
|
||||
import { callbacks } from '../../../lib/callbacks';
|
||||
import { dispatchToastMessage } from '../../../client/lib/toast';
|
||||
import './username.html';
|
||||
|
||||
type UsernameTemplateInstance = Blaze.TemplateInstance<Record<string, never>> & {
|
||||
customFields: ReactiveVar<Record<
|
||||
@ -32,7 +32,6 @@ type UsernameTemplateInstance = Blaze.TemplateInstance<Record<string, never>> &
|
||||
}>;
|
||||
validate: () => unknown;
|
||||
};
|
||||
|
||||
Template.username.onCreated(function (this: UsernameTemplateInstance) {
|
||||
this.customFields = new ReactiveVar(null);
|
||||
this.username = new ReactiveVar({
|
||||
@ -40,7 +39,7 @@ Template.username.onCreated(function (this: UsernameTemplateInstance) {
|
||||
username: '',
|
||||
});
|
||||
|
||||
Tracker.autorun(() => {
|
||||
this.autorun(() => {
|
||||
const accountsCustomFields = settings.get('Accounts_CustomFields');
|
||||
if (typeof accountsCustomFields === 'string' && accountsCustomFields.trim() !== '') {
|
||||
try {
|
||||
@ -1,4 +1,5 @@
|
||||
import { Template } from 'meteor/templating';
|
||||
import type { TranslationKey } from '@rocket.chat/ui-contexts';
|
||||
|
||||
import { UserAction } from '../../../ui/client';
|
||||
import { t } from '../../../utils/client';
|
||||
@ -17,43 +18,57 @@ Template.userActionIndicator.helpers({
|
||||
|
||||
const activities = Object.entries(roomAction);
|
||||
const userActions = activities
|
||||
.map(([key, _users]) => {
|
||||
const users = Object.keys(_users);
|
||||
if (users.length === 0) {
|
||||
.map(
|
||||
([key, _users]):
|
||||
| {
|
||||
action?: TranslationKey;
|
||||
users?: string;
|
||||
end: false | true;
|
||||
}
|
||||
| undefined => {
|
||||
const users = Object.keys(_users);
|
||||
if (users.length === 0) {
|
||||
return {
|
||||
end: false,
|
||||
};
|
||||
}
|
||||
|
||||
const action = key.split('-')[1];
|
||||
|
||||
if (action !== 'typing' && action !== 'recording' && action !== 'uploading') {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if (users.length === 1) {
|
||||
return {
|
||||
action: `is_${action}`,
|
||||
users: users[0],
|
||||
end: false,
|
||||
};
|
||||
}
|
||||
|
||||
let last = users.pop();
|
||||
if (users.length >= maxUsernames) {
|
||||
last = t('others');
|
||||
}
|
||||
|
||||
const usernames = [users.slice(0, maxUsernames - 1).join(', '), last];
|
||||
return {
|
||||
action: `are_${action}`,
|
||||
users: usernames.join(` ${t('and')} `),
|
||||
end: false,
|
||||
};
|
||||
}
|
||||
|
||||
const action = key.split('-')[1];
|
||||
if (users.length === 1) {
|
||||
return {
|
||||
action: `is_${action}`,
|
||||
users: users[0],
|
||||
end: false,
|
||||
};
|
||||
}
|
||||
|
||||
let last = users.pop();
|
||||
if (users.length >= maxUsernames) {
|
||||
last = t('others');
|
||||
}
|
||||
|
||||
const usernames = [users.slice(0, maxUsernames - 1).join(', '), last];
|
||||
return {
|
||||
action: `are_${action}`,
|
||||
users: usernames.join(` ${t('and')} `),
|
||||
end: false,
|
||||
};
|
||||
})
|
||||
.filter((i) => i.action);
|
||||
},
|
||||
)
|
||||
.filter((i) => i && 'action' in i);
|
||||
|
||||
if (!Object.keys(userActions).length) {
|
||||
return [];
|
||||
}
|
||||
|
||||
// insert end=true for the last item.
|
||||
userActions[userActions.length - 1].end = true;
|
||||
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
||||
userActions[userActions.length - 1]!.end = true;
|
||||
return userActions;
|
||||
},
|
||||
});
|
||||
|
||||
@ -55,7 +55,7 @@ import '../app/tokenpass/client';
|
||||
import '../app/ui/client';
|
||||
import '../app/ui-account/client';
|
||||
import '../app/ui-clean-history/client';
|
||||
import '../app/ui-login/client';
|
||||
import '../app/ui-login';
|
||||
import '../app/ui-master/client';
|
||||
import '../app/ui-message/client';
|
||||
import '../app/ui-sidenav/client';
|
||||
|
||||
@ -592,6 +592,10 @@
|
||||
"archive-room": "Archive Room",
|
||||
"archive-room_description": "Permission to archive a channel",
|
||||
"are_typing": "are typing",
|
||||
"are_uploading": "are uploading",
|
||||
"are_recording": "are recording",
|
||||
"is_uploading": "is uploading",
|
||||
"is_recording": "is recording",
|
||||
"Are_you_sure": "Are you sure?",
|
||||
"Are_you_sure_you_want_to_clear_all_unread_messages": "Are you sure you want to clear all unread messages?",
|
||||
"Are_you_sure_you_want_to_close_this_chat": "Are you sure you want to close this chat?",
|
||||
|
||||
@ -3312,7 +3312,7 @@
|
||||
"Msgs": "Wiadomości",
|
||||
"multi": "multi",
|
||||
"multi_line": "linia multi",
|
||||
"Multiple_monolith_instances_alert": "Obsługujesz wiele instancji... niektóre funkcje nie będą zachowywać się zgodnie z projektem.",
|
||||
"Multiple_monolith_instances_alert": null,
|
||||
"Mute": "Wyciszenie",
|
||||
"Mute_and_dismiss": "Wycisz i odrzuć",
|
||||
"Mute_all_notifications": "Wycisz wszystkie powiadomienia",
|
||||
@ -5393,4 +5393,4 @@
|
||||
"onboarding.form.standaloneServerForm.publishOwnApp": "W celu wysyłania powiadomień push należy skompilować i opublikować własną aplikację w Google Play i App Store",
|
||||
"onboarding.form.standaloneServerForm.manuallyIntegrate": "Konieczność ręcznej integracji z usługami zewnętrznymi",
|
||||
"Something_Went_Wrong": "Coś poszło nie tak"
|
||||
}
|
||||
}
|
||||
|
||||
28
fuselage.sh
Executable file
28
fuselage.sh
Executable file
@ -0,0 +1,28 @@
|
||||
#!/bin/bash
|
||||
|
||||
if [[ $1 != "undo" ]]; then
|
||||
echo "linking local project"
|
||||
else
|
||||
echo "unlinking local project"
|
||||
fi
|
||||
|
||||
cd ./node_modules/@rocket.chat
|
||||
|
||||
rm -rf fuselage
|
||||
|
||||
if [[ $1 != "undo" ]]; then
|
||||
ln -s ../../../fuselage/packages/fuselage fuselage
|
||||
fi
|
||||
|
||||
cd ../..
|
||||
cd ./apps/meteor/node_modules/@rocket.chat
|
||||
rm -rf fuselage
|
||||
if [[ $1 != "undo" ]]; then
|
||||
echo "linking local project"
|
||||
ln -s ../../../../../fuselage/packages/fuselage fuselage
|
||||
fi
|
||||
|
||||
cd ../../../../
|
||||
if [[ $1 == "undo" ]]; then
|
||||
yarn
|
||||
fi
|
||||
@ -13,7 +13,8 @@
|
||||
"dev": "turbo run dev --parallel --filter=@rocket.chat/meteor...",
|
||||
"dsv": "turbo run dsv --filter=@rocket.chat/meteor...",
|
||||
"lint": "turbo run lint",
|
||||
"storybook": "yarn workspace @rocket.chat/meteor run storybook"
|
||||
"storybook": "yarn workspace @rocket.chat/meteor run storybook",
|
||||
"fuselage": "./fuselage.sh"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/chart.js": "^2.9.37",
|
||||
|
||||
@ -103,6 +103,9 @@ export const LoginForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRoute
|
||||
<TextInput
|
||||
{...register('username', {
|
||||
required: true,
|
||||
onChange: () => {
|
||||
clearErrors(['username', 'password']);
|
||||
},
|
||||
})}
|
||||
placeholder={t('registration.component.form.emailPlaceholder')}
|
||||
error={
|
||||
@ -124,6 +127,9 @@ export const LoginForm = ({ setLoginRoute }: { setLoginRoute: DispatchLoginRoute
|
||||
<PasswordInput
|
||||
{...register('password', {
|
||||
required: true,
|
||||
onChange: () => {
|
||||
clearErrors(['username', 'password']);
|
||||
},
|
||||
})}
|
||||
error={
|
||||
errors.password?.message ||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user