Merge remote-tracking branch 'origin/develop' into release-candidate

pull/18394/head
Diego Sampaio 6 years ago
commit 0a773ad7b1
No known key found for this signature in database
GPG Key ID: E060152B30502562
  1. 8
      app/version-check/server/addSettings.js
  2. 33
      app/version-check/server/index.js
  3. 2
      client/account/preferences/PreferencesGlobalSection.js
  4. 2
      client/account/preferences/PreferencesLocalizationSection.js
  5. 4
      client/admin/users/UserForm.js
  6. 2
      client/admin/users/UserInfoActions.js
  7. 2
      client/components/basic/avatar/UserAvatarEditor.js
  8. 2
      client/components/basic/userStatus/UserStatusMenu.js
  9. 1
      packages/rocketchat-i18n/i18n/en.i18n.json

@ -6,5 +6,13 @@ settings.addGroup('General', function() {
type: 'string',
readonly: true,
});
this.add('Update_EnableChecker', true, {
type: 'boolean',
enableQuery: {
_id: 'Register_Server',
value: true,
},
});
});
});

@ -1,6 +1,7 @@
import { Meteor } from 'meteor/meteor';
import { SyncedCron } from 'meteor/littledata:synced-cron';
import { settings } from '../../settings';
import checkVersionUpdate from './functions/checkVersionUpdate';
import './methods/banner_dismiss';
import './addSettings';
@ -11,18 +12,30 @@ if (SyncedCron.nextScheduledAtDate(jobName)) {
SyncedCron.remove(jobName);
}
SyncedCron.add({
name: jobName,
schedule: (parser) => parser.text('at 2:00 am'),
job() {
checkVersionUpdate();
},
});
const addVersionCheckJob = () => {
SyncedCron.add({
name: jobName,
schedule: (parser) => parser.text('at 2:00 am'),
job() {
checkVersionUpdate();
},
});
};
Meteor.startup(() => {
checkVersionUpdate();
});
// Send email to admins
// Save latest alert
// ENV var to disable the check for update for our cloud
settings.get('Register_Server', (key, value) => {
if (value && SyncedCron.nextScheduledAtDate(jobName)) {
return;
}
if (value && settings.get('Update_EnableChecker')) {
addVersionCheckJob();
return;
}
SyncedCron.remove(jobName);
});

@ -10,7 +10,7 @@ const PreferencesGlobalSection = ({ onChange, ...props }) => {
const userDontAskAgainList = useUserPreference('dontAskAgainList');
const options = useMemo(() => userDontAskAgainList.map(({ action, label }) => [action, label]), [userDontAskAgainList]);
const options = useMemo(() => (userDontAskAgainList || []).map(({ action, label }) => [action, label]), [userDontAskAgainList]);
const selectedOptions = options.map(([action]) => action);

@ -7,7 +7,7 @@ import { useForm } from '../../hooks/useForm';
const PreferencesLocalizationSection = ({ onChange, ...props }) => {
const t = useTranslation();
const userLanguage = useUserPreference('language');
const userLanguage = useUserPreference('language') || '';
const languages = useLanguages();
const languageOptions = useMemo(() => languages.map(({ key, name }) => [key, name]).sort(([a], [b]) => a - b), [languages]);

@ -1,5 +1,5 @@
import React, { useCallback, useMemo } from 'react';
import { Field, TextInput, TextAreaInput, MultiSelectFiltered, Box, ToggleSwitch, Icon, Divider } from '@rocket.chat/fuselage';
import { Field, TextInput, TextAreaInput, PasswordInput, MultiSelectFiltered, Box, ToggleSwitch, Icon, Divider } from '@rocket.chat/fuselage';
import { useTranslation } from '../../contexts/TranslationContext';
import { isEmail } from '../../../app/utils/lib/isEmail.js';
@ -89,7 +89,7 @@ export default function UserForm({ formValues, formHandlers, availableRoles, app
{useMemo(() => <Field>
<Field.Label>{t('Password')}</Field.Label>
<Field.Row>
<TextInput flexGrow={1} value={password} onChange={handlePassword} addon={<Icon name='key' size='x20'/>}/>
<PasswordInput autoComplete='off' flexGrow={1} value={password} onChange={handlePassword} addon={<Icon name='key' size='x20'/>}/>
</Field.Row>
</Field>, [t, password, handlePassword])}
{useMemo(() => <Field>

@ -207,7 +207,7 @@ export const UserInfoActions = ({ username, _id, isActive, isAdmin, onChange })
const actions = useMemo(() => [...actionsDefinition.map(([key, { label, icon, action }]) => <UserInfo.Action key={key} title={label} label={label} onClick={action} icon={icon}/>), menu].filter(Boolean), [actionsDefinition, menu]);
return <ButtonGroup flexGrow={1} justifyContent='center'>
return <ButtonGroup flexGrow={0} justifyContent='center'>
{actions}
</ButtonGroup>;
};

@ -52,7 +52,7 @@ export function UserAvatarEditor({ username, setAvatarObj, suggestions, disabled
<Box display='flex' flexDirection='column' flexGrow='1' justifyContent='space-between' mis='x4'>
<Box display='flex' flexDirection='row' mbs='none'>
<Margins inline='x4'>
<Button square mis='none' onClick={clickReset} disabled={disabled}><Avatar size='x36' url={`/avatar/%40${ username }`} mie='x4'/></Button>
<Button square mis='none' onClick={clickReset} disabled={disabled} mie='x4'><Avatar size='x36' url={`/avatar/%40${ username }`}/></Button>
<Button square onClick={clickUpload} disabled={disabled}><Icon name='upload' size='x20'/></Button>
<Button square mie='none' onClick={clickUrl} disabled={disabled}><Icon name='permalink' size='x20'/></Button>
{suggestions && <UserAvatarSuggestions suggestions={suggestions} setAvatarObj={setAvatarObj} setNewAvatarSource={setNewAvatarSource} disabled={disabled}/>}

@ -15,7 +15,7 @@ const UserStatusMenu = ({
onChange = () => {},
optionWidth,
initialStatus = 'offline',
placement = 'bottom right',
placement = 'bottom-end',
...props
}) => {
const t = useTranslation();

@ -3646,6 +3646,7 @@
"Unstar_Message": "Remove Star",
"Update": "Update",
"Update_LatestAvailableVersion": "Update Latest Available Version",
"Update_EnableChecker": "Enable the Update Checker",
"Update_to_version": "Update to __version__",
"Update_your_RocketChat": "Update your Rocket.Chat",
"Updated_at": "Updated at",

Loading…
Cancel
Save