diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index db905f2f947a..b7ce1a785259 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -1,11 +1,46 @@ - + + - -Closes #ISSUE_NUMBER +## Proposed changes + - +## Issue(s) + + +## How to test or reproduce + + +## Screenshots + +## Types of changes + + + +- [ ] Bugfix (non-breaking change which fixes an issue) +- [ ] Improvement (non-breaking change which improves a current function) +- [ ] New feature (non-breaking change which adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) +- [ ] Hotfix (a major bugfix that has to be merged asap) +- [ ] Documentation Update (if none of the other choices apply) + +## Checklist + + +- [ ] I have read the [CONTRIBUTING](https://github.com/RocketChat/Rocket.Chat/blob/develop/.github/CONTRIBUTING.md#contributing-to-rocketchat) doc +- [ ] I have signed the [CLA](https://cla-assistant.io/RocketChat/Rocket.Chat) +- [ ] Lint and unit tests pass locally with my changes +- [ ] I have added tests that prove my fix is effective or that my feature works (if applicable) +- [ ] I have added necessary documentation (if applicable) +- [ ] Any dependent changes have been merged and published in downstream modules + +## Changelog + + + + +## Further comments + - diff --git a/.scripts/houstonMetadata.js b/.houston/metadata.js similarity index 100% rename from .scripts/houstonMetadata.js rename to .houston/metadata.js diff --git a/.houston/templates/prs.hbs b/.houston/templates/prs.hbs new file mode 100644 index 000000000000..34a9666df2ba --- /dev/null +++ b/.houston/templates/prs.hbs @@ -0,0 +1,2 @@ +{{> versions}} +{{> _prs}} diff --git a/.houston/templates/versions.hbs b/.houston/templates/versions.hbs new file mode 100644 index 000000000000..8ee2a4f98551 --- /dev/null +++ b/.houston/templates/versions.hbs @@ -0,0 +1,13 @@ +{{#if (or release.node_version release.npm_version release.mongo_versions)}} + +### Engine versions +{{#if release.node_version}} +- Node: `{{ release.node_version }}` +{{/if}} +{{#if release.npm_version}} +- NPM: `{{ release.npm_version }}` +{{/if}} +{{#if release.mongo_versions}} +- MongoDB: `{{ join release.mongo_versions ', ' }}` +{{/if}} +{{/if}} diff --git a/.postcssrc b/.postcssrc index 48f60768f666..e0279b84e3c1 100644 --- a/.postcssrc +++ b/.postcssrc @@ -10,7 +10,6 @@ "autoprefixer": {} }, "excludedPackages": [ - "deepwell:bootstrap-datepicker2", - "smoral:sweetalert" + "deepwell:bootstrap-datepicker2" ] } diff --git a/.storybook/mocks/decorators.js b/.storybook/mocks/decorators.js index 34a326f11077..0c545d5c1611 100644 --- a/.storybook/mocks/decorators.js +++ b/.storybook/mocks/decorators.js @@ -24,7 +24,7 @@ export const rocketChatDecorator = (fn) => { } `}
-
+
{fn()}
; diff --git a/README.md b/README.md index 764a1099748c..b2bda6396d04 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,6 @@ * [Raspberry Pi 2](#raspberry-pi-2) * [Koozali SME](#koozali-sme) * [Ubuntu VPS](#ubuntu-vps) - * [Hyper.sh](#hypersh) * [WeDeploy](#wedeploy) * [D2C.io](#d2cio) * [Syncloud.org](#syncloudorg) @@ -196,9 +195,6 @@ Add Rocket.Chat to this world famous time tested small enterprise server today. ## Ubuntu VPS Follow these [deployment instructions](https://rocket.chat/docs/installation/manual-installation/ubuntu/). -## Hyper.sh -Follow their [deployment instructions](https://rocket.chat/docs/installation/paas-deployments/hyper-sh/) to install a per-second billed Rocket.Chat instance on [Hyper.sh](https://rocket.chat/docs/installation/paas-deployments/hyper-sh/). - ## WeDeploy Install Rocket.Chat on [WeDeploy](https://wedeploy.com): diff --git a/app/apps/client/admin/appManage.html b/app/apps/client/admin/appManage.html index 783647e27ae0..8b6c0371ed26 100644 --- a/app/apps/client/admin/appManage.html +++ b/app/apps/client/admin/appManage.html @@ -359,8 +359,8 @@

{{_ "Settings"}}

{{> CodeMirror name=id options=getEditorOptions code=value }}
- - + +
{{/if}} @@ -463,7 +463,7 @@

{{_ "Settings"}}

{{#if hasChanges section}} {{_ "Save_to_enable_this_action"}} {{else}} - + {{/if}} {{/if}} @@ -472,14 +472,14 @@

{{_ "Settings"}}

- +
{{else}}
-
{{_ 'Select_file'}} +
{{_ 'Select_file'}}
diff --git a/app/apps/client/admin/apps.js b/app/apps/client/admin/apps.js index 86f32c90c23e..045ac52571bd 100644 --- a/app/apps/client/admin/apps.js +++ b/app/apps/client/admin/apps.js @@ -226,7 +226,7 @@ Template.apps.events({ } = instance.state.get('apps').find(({ id }) => id === currentTarget.dataset.id); FlowRouter.go('app-manage', { appId }, { version }); }, - async 'click .js-install, click .js-update'(event, instance) { + async 'click .js-update'(event, instance) { event.preventDefault(); event.stopPropagation(); @@ -240,7 +240,7 @@ Template.apps.events({ instance.startAppWorking(app.id); try { - const { status } = await Apps.installApp(app.id, app.marketplaceVersion); + const { status } = await Apps.updateApp(app.id, app.marketplaceVersion); warnStatusChange(app.name, status); } catch (error) { handleAPIError(error); diff --git a/app/apps/client/admin/helpers.js b/app/apps/client/admin/helpers.js index f78b4c661599..a1b0b2cdf9c5 100644 --- a/app/apps/client/admin/helpers.js +++ b/app/apps/client/admin/helpers.js @@ -363,11 +363,12 @@ export const appStatusSpanProps = ({ export const formatPrice = (price) => `\$${ Number.parseFloat(price).toFixed(2) }`; -export const formatPricingPlan = ({ strategy, price, tiers }) => { +export const formatPricingPlan = ({ strategy, price, tiers = [] }) => { const { perUnit = false } = (Array.isArray(tiers) && tiers.find((tier) => tier.price === price)) || {}; const pricingPlanTranslationString = [ 'Apps_Marketplace_pricingPlan', + Array.isArray(tiers) && tiers.length > 0 && 'startingAt', strategy, perUnit && 'perUser', ].filter(Boolean).join('_'); diff --git a/app/apps/client/admin/marketplace.js b/app/apps/client/admin/marketplace.js index 495bda2a90ac..ed39d11b8bcd 100644 --- a/app/apps/client/admin/marketplace.js +++ b/app/apps/client/admin/marketplace.js @@ -273,7 +273,7 @@ Template.marketplace.events({ } = instance.state.get('apps').find(({ id }) => id === currentTarget.dataset.id); FlowRouter.go('marketplace-app', { appId }, { version: version || marketplaceVersion }); }, - async 'click .js-install, click .js-update'(event, instance) { + async 'click .js-install'(event, instance) { event.preventDefault(); event.stopPropagation(); @@ -284,6 +284,7 @@ Template.marketplace.events({ } const { currentTarget: button } = event; + const app = instance.state.get('apps').find(({ id }) => id === button.dataset.id); instance.startAppWorking(app.id); @@ -297,6 +298,31 @@ Template.marketplace.events({ instance.stopAppWorking(app.id); } }, + async 'click .js-update'(event, instance) { + event.preventDefault(); + event.stopPropagation(); + + const isLoggedInCloud = await checkCloudLogin(); + instance.state.set('isLoggedInCloud', isLoggedInCloud); + if (!isLoggedInCloud) { + return; + } + + const { currentTarget: button } = event; + + const app = instance.state.get('apps').find(({ id }) => id === button.dataset.id); + + instance.startAppWorking(app.id); + + try { + const { status } = await Apps.updateApp(app.id, app.marketplaceVersion); + warnStatusChange(app.name, status); + } catch (error) { + handleAPIError(error); + } finally { + instance.stopAppWorking(app.id); + } + }, async 'click .js-purchase'(event, instance) { event.preventDefault(); event.stopPropagation(); diff --git a/app/apps/server/bridges/users.js b/app/apps/server/bridges/users.js index 5aac0567bed6..cbcdab1795d8 100644 --- a/app/apps/server/bridges/users.js +++ b/app/apps/server/bridges/users.js @@ -1,10 +1,9 @@ import { Random } from 'meteor/random'; import { setUserAvatar, checkUsernameAvailability, deleteUser, _setStatusTextPromise } from '../../../lib/server/functions'; -import { Users } from '../../../models'; +import { Users } from '../../../models/server'; import { Users as UsersRaw } from '../../../models/server/raw'; - export class AppUserBridge { constructor(orch) { this.orch = orch; @@ -25,7 +24,7 @@ export class AppUserBridge { async getAppUser(appId) { this.orch.debugLog(`The App ${ appId } is getting its assigned user`); - const user = Users.findOne({ appId }); + const user = Users.findOneByAppId(appId); return this.orch.getConverters().get('users').convertToApp(user); } diff --git a/app/authorization/server/startup.js b/app/authorization/server/startup.js index 0a9dba5a9ff0..20ab45d3b997 100644 --- a/app/authorization/server/startup.js +++ b/app/authorization/server/startup.js @@ -12,97 +12,97 @@ Meteor.startup(function() { // then we can define edit--message instead of edit-message // 2. admin, moderator, and user roles should not be deleted as they are referened in the code. const permissions = [ - { _id: 'access-permissions', roles: ['admin'] }, - { _id: 'access-setting-permissions', roles: ['admin'] }, - { _id: 'add-oauth-service', roles: ['admin'] }, - { _id: 'add-user-to-joined-room', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'add-user-to-any-c-room', roles: ['admin'] }, - { _id: 'add-user-to-any-p-room', roles: [] }, - { _id: 'api-bypass-rate-limit', roles: ['admin', 'bot', 'app'] }, - { _id: 'archive-room', roles: ['admin', 'owner'] }, - { _id: 'assign-admin-role', roles: ['admin'] }, - { _id: 'assign-roles', roles: ['admin'] }, - { _id: 'ban-user', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'bulk-register-user', roles: ['admin'] }, - { _id: 'create-c', roles: ['admin', 'user', 'bot', 'app'] }, - { _id: 'create-d', roles: ['admin', 'user', 'bot', 'app'] }, - { _id: 'create-p', roles: ['admin', 'user', 'bot', 'app'] }, - { _id: 'create-personal-access-tokens', roles: ['admin', 'user'] }, - { _id: 'create-user', roles: ['admin'] }, - { _id: 'clean-channel-history', roles: ['admin'] }, - { _id: 'delete-c', roles: ['admin', 'owner'] }, - { _id: 'delete-d', roles: ['admin'] }, - { _id: 'delete-message', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'delete-own-message', roles: ['admin', 'user'] }, - { _id: 'delete-p', roles: ['admin', 'owner'] }, - { _id: 'delete-user', roles: ['admin'] }, - { _id: 'edit-message', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'edit-other-user-active-status', roles: ['admin'] }, - { _id: 'edit-other-user-info', roles: ['admin'] }, - { _id: 'edit-other-user-password', roles: ['admin'] }, - { _id: 'edit-other-user-avatar', roles: ['admin'] }, - { _id: 'edit-privileged-setting', roles: ['admin'] }, - { _id: 'edit-room', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'edit-room-retention-policy', roles: ['admin'] }, - { _id: 'force-delete-message', roles: ['admin', 'owner'] }, - { _id: 'join-without-join-code', roles: ['admin', 'bot', 'app'] }, - { _id: 'leave-c', roles: ['admin', 'user', 'bot', 'anonymous', 'app'] }, - { _id: 'leave-p', roles: ['admin', 'user', 'bot', 'anonymous', 'app'] }, - { _id: 'manage-assets', roles: ['admin'] }, - { _id: 'manage-emoji', roles: ['admin'] }, - { _id: 'manage-user-status', roles: ['admin'] }, - { _id: 'manage-outgoing-integrations', roles: ['admin'] }, - { _id: 'manage-incoming-integrations', roles: ['admin'] }, - { _id: 'manage-own-outgoing-integrations', roles: ['admin'] }, - { _id: 'manage-own-incoming-integrations', roles: ['admin'] }, - { _id: 'manage-oauth-apps', roles: ['admin'] }, - { _id: 'manage-selected-settings', roles: ['admin'] }, - { _id: 'mention-all', roles: ['admin', 'owner', 'moderator', 'user'] }, - { _id: 'mention-here', roles: ['admin', 'owner', 'moderator', 'user'] }, - { _id: 'mute-user', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'remove-user', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'run-import', roles: ['admin'] }, - { _id: 'run-migration', roles: ['admin'] }, - { _id: 'set-moderator', roles: ['admin', 'owner'] }, - { _id: 'set-owner', roles: ['admin', 'owner'] }, - { _id: 'send-many-messages', roles: ['admin', 'bot', 'app'] }, - { _id: 'set-leader', roles: ['admin', 'owner'] }, - { _id: 'unarchive-room', roles: ['admin'] }, - { _id: 'view-c-room', roles: ['admin', 'user', 'bot', 'app', 'anonymous'] }, - { _id: 'user-generate-access-token', roles: ['admin'] }, - { _id: 'view-d-room', roles: ['admin', 'user', 'bot', 'app', 'guest'] }, - { _id: 'view-full-other-user-info', roles: ['admin'] }, - { _id: 'view-history', roles: ['admin', 'user', 'anonymous'] }, - { _id: 'view-joined-room', roles: ['guest', 'bot', 'app', 'anonymous'] }, - { _id: 'view-join-code', roles: ['admin'] }, - { _id: 'view-logs', roles: ['admin'] }, - { _id: 'view-other-user-channels', roles: ['admin'] }, - { _id: 'view-p-room', roles: ['admin', 'user', 'anonymous', 'guest'] }, - { _id: 'view-privileged-setting', roles: ['admin'] }, - { _id: 'view-room-administration', roles: ['admin'] }, - { _id: 'view-statistics', roles: ['admin'] }, - { _id: 'view-user-administration', roles: ['admin'] }, - { _id: 'preview-c-room', roles: ['admin', 'user', 'anonymous'] }, - { _id: 'view-outside-room', roles: ['admin', 'owner', 'moderator', 'user'] }, - { _id: 'view-broadcast-member-list', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'call-management', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'create-invite-links', roles: ['admin', 'owner', 'moderator'] }, - { _id: 'view-l-room', roles: ['livechat-agent', 'livechat-manager', 'admin'] }, - { _id: 'view-livechat-manager', roles: ['livechat-manager', 'admin'] }, - { _id: 'view-livechat-rooms', roles: ['livechat-manager', 'admin'] }, - { _id: 'close-livechat-room', roles: ['livechat-agent', 'livechat-manager', 'admin'] }, - { _id: 'close-others-livechat-room', roles: ['livechat-manager', 'admin'] }, - { _id: 'save-others-livechat-room-info', roles: ['livechat-manager'] }, - { _id: 'remove-closed-livechat-rooms', roles: ['livechat-manager', 'admin'] }, - { _id: 'view-livechat-analytics', roles: ['livechat-manager', 'admin'] }, - { _id: 'view-livechat-queue', roles: ['livechat-manager', 'admin'] }, - { _id: 'transfer-livechat-guest', roles: ['livechat-manager', 'admin'] }, - { _id: 'manage-livechat-managers', roles: ['livechat-manager', 'admin'] }, - { _id: 'manage-livechat-agents', roles: ['livechat-manager', 'admin'] }, - { _id: 'manage-livechat-departments', roles: ['livechat-manager', 'admin'] }, - { _id: 'view-livechat-departments', roles: ['livechat-manager', 'admin'] }, - { _id: 'add-livechat-department-agents', roles: ['livechat-manager', 'admin'] }, - { _id: 'view-livechat-current-chats', roles: ['livechat-manager', 'admin'] }, + { _id: 'access-permissions', roles: ['admin'] }, + { _id: 'access-setting-permissions', roles: ['admin'] }, + { _id: 'add-oauth-service', roles: ['admin'] }, + { _id: 'add-user-to-joined-room', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'add-user-to-any-c-room', roles: ['admin'] }, + { _id: 'add-user-to-any-p-room', roles: [] }, + { _id: 'api-bypass-rate-limit', roles: ['admin', 'bot', 'app'] }, + { _id: 'archive-room', roles: ['admin', 'owner'] }, + { _id: 'assign-admin-role', roles: ['admin'] }, + { _id: 'assign-roles', roles: ['admin'] }, + { _id: 'ban-user', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'bulk-register-user', roles: ['admin'] }, + { _id: 'create-c', roles: ['admin', 'user', 'bot', 'app'] }, + { _id: 'create-d', roles: ['admin', 'user', 'bot', 'app'] }, + { _id: 'create-p', roles: ['admin', 'user', 'bot', 'app'] }, + { _id: 'create-personal-access-tokens', roles: ['admin', 'user'] }, + { _id: 'create-user', roles: ['admin'] }, + { _id: 'clean-channel-history', roles: ['admin'] }, + { _id: 'delete-c', roles: ['admin', 'owner'] }, + { _id: 'delete-d', roles: ['admin'] }, + { _id: 'delete-message', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'delete-own-message', roles: ['admin', 'user'] }, + { _id: 'delete-p', roles: ['admin', 'owner'] }, + { _id: 'delete-user', roles: ['admin'] }, + { _id: 'edit-message', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'edit-other-user-active-status', roles: ['admin'] }, + { _id: 'edit-other-user-info', roles: ['admin'] }, + { _id: 'edit-other-user-password', roles: ['admin'] }, + { _id: 'edit-other-user-avatar', roles: ['admin'] }, + { _id: 'edit-privileged-setting', roles: ['admin'] }, + { _id: 'edit-room', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'edit-room-retention-policy', roles: ['admin'] }, + { _id: 'force-delete-message', roles: ['admin', 'owner'] }, + { _id: 'join-without-join-code', roles: ['admin', 'bot', 'app'] }, + { _id: 'leave-c', roles: ['admin', 'user', 'bot', 'anonymous', 'app'] }, + { _id: 'leave-p', roles: ['admin', 'user', 'bot', 'anonymous', 'app'] }, + { _id: 'manage-assets', roles: ['admin'] }, + { _id: 'manage-emoji', roles: ['admin'] }, + { _id: 'manage-user-status', roles: ['admin'] }, + { _id: 'manage-outgoing-integrations', roles: ['admin'] }, + { _id: 'manage-incoming-integrations', roles: ['admin'] }, + { _id: 'manage-own-outgoing-integrations', roles: ['admin'] }, + { _id: 'manage-own-incoming-integrations', roles: ['admin'] }, + { _id: 'manage-oauth-apps', roles: ['admin'] }, + { _id: 'manage-selected-settings', roles: ['admin'] }, + { _id: 'mention-all', roles: ['admin', 'owner', 'moderator', 'user'] }, + { _id: 'mention-here', roles: ['admin', 'owner', 'moderator', 'user'] }, + { _id: 'mute-user', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'remove-user', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'run-import', roles: ['admin'] }, + { _id: 'run-migration', roles: ['admin'] }, + { _id: 'set-moderator', roles: ['admin', 'owner'] }, + { _id: 'set-owner', roles: ['admin', 'owner'] }, + { _id: 'send-many-messages', roles: ['admin', 'bot', 'app'] }, + { _id: 'set-leader', roles: ['admin', 'owner'] }, + { _id: 'unarchive-room', roles: ['admin'] }, + { _id: 'view-c-room', roles: ['admin', 'user', 'bot', 'app', 'anonymous'] }, + { _id: 'user-generate-access-token', roles: ['admin'] }, + { _id: 'view-d-room', roles: ['admin', 'user', 'bot', 'app', 'guest'] }, + { _id: 'view-full-other-user-info', roles: ['admin'] }, + { _id: 'view-history', roles: ['admin', 'user', 'anonymous'] }, + { _id: 'view-joined-room', roles: ['guest', 'bot', 'app', 'anonymous'] }, + { _id: 'view-join-code', roles: ['admin'] }, + { _id: 'view-logs', roles: ['admin'] }, + { _id: 'view-other-user-channels', roles: ['admin'] }, + { _id: 'view-p-room', roles: ['admin', 'user', 'anonymous', 'guest'] }, + { _id: 'view-privileged-setting', roles: ['admin'] }, + { _id: 'view-room-administration', roles: ['admin'] }, + { _id: 'view-statistics', roles: ['admin'] }, + { _id: 'view-user-administration', roles: ['admin'] }, + { _id: 'preview-c-room', roles: ['admin', 'user', 'anonymous'] }, + { _id: 'view-outside-room', roles: ['admin', 'owner', 'moderator', 'user'] }, + { _id: 'view-broadcast-member-list', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'call-management', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'create-invite-links', roles: ['admin', 'owner', 'moderator'] }, + { _id: 'view-l-room', roles: ['livechat-agent', 'livechat-manager', 'admin'] }, + { _id: 'view-livechat-manager', roles: ['livechat-manager', 'admin'] }, + { _id: 'view-livechat-rooms', roles: ['livechat-manager', 'admin'] }, + { _id: 'close-livechat-room', roles: ['livechat-agent', 'livechat-manager', 'admin'] }, + { _id: 'close-others-livechat-room', roles: ['livechat-manager', 'admin'] }, + { _id: 'save-others-livechat-room-info', roles: ['livechat-manager'] }, + { _id: 'remove-closed-livechat-rooms', roles: ['livechat-manager', 'admin'] }, + { _id: 'view-livechat-analytics', roles: ['livechat-manager', 'admin'] }, + { _id: 'view-livechat-queue', roles: ['livechat-manager', 'admin'] }, + { _id: 'transfer-livechat-guest', roles: ['livechat-manager', 'admin'] }, + { _id: 'manage-livechat-managers', roles: ['livechat-manager', 'admin'] }, + { _id: 'manage-livechat-agents', roles: ['livechat-manager', 'admin'] }, + { _id: 'manage-livechat-departments', roles: ['livechat-manager', 'admin'] }, + { _id: 'view-livechat-departments', roles: ['livechat-manager', 'admin'] }, + { _id: 'add-livechat-department-agents', roles: ['livechat-manager', 'admin'] }, + { _id: 'view-livechat-current-chats', roles: ['livechat-manager', 'admin'] }, { _id: 'view-livechat-real-time-monitoring', roles: ['livechat-manager', 'admin'] }, { _id: 'view-livechat-triggers', roles: ['livechat-manager', 'admin'] }, { _id: 'view-livechat-customfields', roles: ['livechat-manager', 'admin'] }, @@ -111,6 +111,10 @@ Meteor.startup(function() { { _id: 'view-livechat-webhooks', roles: ['livechat-manager', 'admin'] }, { _id: 'view-livechat-facebook', roles: ['livechat-manager', 'admin'] }, { _id: 'view-livechat-officeHours', roles: ['livechat-manager', 'admin'] }, + { _id: 'view-livechat-room-closed-same-department', roles: ['livechat-manager', 'admin'] }, + { _id: 'view-livechat-room-closed-by-another-agent', roles: ['livechat-manager', 'admin'] }, + { _id: 'view-livechat-room-customfields', roles: ['livechat-manager', 'livechat-agent', 'admin'] }, + { _id: 'edit-livechat-room-customfields', roles: ['livechat-manager', 'livechat-agent', 'admin'] }, ]; for (const permission of permissions) { diff --git a/app/autotranslate/client/views/autoTranslateFlexTab.html b/app/autotranslate/client/views/autoTranslateFlexTab.html index 5e5d74daeaba..161e3793b153 100644 --- a/app/autotranslate/client/views/autoTranslateFlexTab.html +++ b/app/autotranslate/client/views/autoTranslateFlexTab.html @@ -30,8 +30,8 @@

{{_ "Auto_Translate"}}

{{_ "AutoTranslate_Change_Language_Description"}}
- - + + {{else}} {{languageName autoTranslateLanguage}} {{/if}} diff --git a/app/channel-settings-mail-messages/client/views/mailMessagesInstructions.js b/app/channel-settings-mail-messages/client/views/mailMessagesInstructions.js index fb8755501854..4bc7442b5ee3 100644 --- a/app/channel-settings-mail-messages/client/views/mailMessagesInstructions.js +++ b/app/channel-settings-mail-messages/client/views/mailMessagesInstructions.js @@ -240,9 +240,9 @@ Template.mailMessagesInstructions.onCreated(function() { this.selectedUsers = new ReactiveVar([]); this.userFilter = new ReactiveVar(''); - const filter = { exceptions: [Meteor.user().username].concat(this.selectedUsers.get().map((u) => u.username)) }; + const filter = { exceptions: this.selectedUsers.get().map((u) => u.username) }; Deps.autorun(() => { - filter.exceptions = [Meteor.user().username].concat(this.selectedUsers.get().map((u) => u.username)); + filter.exceptions = this.selectedUsers.get().map((u) => u.username); }); this.ac = new AutoComplete( diff --git a/app/channel-settings/client/views/channelSettings.html b/app/channel-settings/client/views/channelSettings.html index 67b3fb5ad62e..174bea859f9e 100644 --- a/app/channel-settings/client/views/channelSettings.html +++ b/app/channel-settings/client/views/channelSettings.html @@ -226,6 +226,7 @@ {{/if}} {{/with}} {{#with settings.joinCode}} + {{#if canView}} + {{/if}} {{/with}} {{#if hasRetentionPermission}} diff --git a/app/chatpal-search/client/template/admin.html b/app/chatpal-search/client/template/admin.html index d59a982a6b23..f9b1e6c83a99 100644 --- a/app/chatpal-search/client/template/admin.html +++ b/app/chatpal-search/client/template/admin.html @@ -37,7 +37,7 @@
- +
diff --git a/app/cloud/client/admin/callback.html b/app/cloud/client/admin/callback.html deleted file mode 100644 index 5d6c9c432f4c..000000000000 --- a/app/cloud/client/admin/callback.html +++ /dev/null @@ -1,16 +0,0 @@ - diff --git a/app/cloud/client/admin/callback.js b/app/cloud/client/admin/callback.js deleted file mode 100644 index de860026192e..000000000000 --- a/app/cloud/client/admin/callback.js +++ /dev/null @@ -1,46 +0,0 @@ -import './callback.html'; - -import { Meteor } from 'meteor/meteor'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { Template } from 'meteor/templating'; -import { Tracker } from 'meteor/tracker'; -import { FlowRouter } from 'meteor/kadira:flow-router'; -import queryString from 'query-string'; - -import { SideNav } from '../../../ui-utils/client'; - - -Template.cloudCallback.onCreated(function() { - const instance = this; - - instance.loading = new ReactiveVar(true); - instance.callbackError = new ReactiveVar({ error: false }); - - const params = queryString.parse(location.search); - - if (params.error_code) { - instance.callbackError.set({ error: true, errorCode: params.error_code }); - } else { - Meteor.call('cloud:finishOAuthAuthorization', params.code, params.state, (error) => { - if (error) { - console.warn('cloud:finishOAuthAuthorization', error); - return; - } - - FlowRouter.go('/admin/cloud'); - }); - } -}); - -Template.cloudCallback.helpers({ - callbackError() { - return Template.instance().callbackError.get(); - }, -}); - -Template.cloudCallback.onRendered(() => { - Tracker.afterFlush(() => { - SideNav.setFlex('adminFlex'); - SideNav.openFlex(); - }); -}); diff --git a/app/cloud/client/admin/cloud.html b/app/cloud/client/admin/cloud.html deleted file mode 100644 index 78c1e053390d..000000000000 --- a/app/cloud/client/admin/cloud.html +++ /dev/null @@ -1,145 +0,0 @@ - diff --git a/app/cloud/client/admin/cloud.js b/app/cloud/client/admin/cloud.js deleted file mode 100644 index cd9edf0a41a6..000000000000 --- a/app/cloud/client/admin/cloud.js +++ /dev/null @@ -1,233 +0,0 @@ -import './cloud.html'; - -import { Meteor } from 'meteor/meteor'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { Template } from 'meteor/templating'; -import { Tracker } from 'meteor/tracker'; -import queryString from 'query-string'; -import toastr from 'toastr'; - -import { t } from '../../../utils'; -import { SideNav, modal } from '../../../ui-utils/client'; - - -Template.cloud.onCreated(function() { - const instance = this; - instance.info = new ReactiveVar(); - instance.loading = new ReactiveVar(true); - instance.isLoggedIn = new ReactiveVar(false); - - instance.loadRegStatus = function _loadRegStatus() { - Meteor.call('cloud:checkRegisterStatus', (error, info) => { - if (error) { - console.warn('cloud:checkRegisterStatus', error); - return; - } - - instance.info.set(info); - instance.loading.set(false); - }); - }; - - instance.getLoggedIn = function _getLoggedIn() { - Meteor.call('cloud:checkUserLoggedIn', (error, result) => { - if (error) { - console.warn(error); - return; - } - - instance.isLoggedIn.set(result); - }); - }; - - instance.oauthAuthorize = function _oauthAuthorize() { - Meteor.call('cloud:getOAuthAuthorizationUrl', (error, url) => { - if (error) { - console.warn(error); - return; - } - - window.location.href = url; - }); - }; - - instance.logout = function _logout() { - Meteor.call('cloud:logout', (error) => { - if (error) { - console.warn(error); - return; - } - - instance.getLoggedIn(); - }); - }; - - instance.connectWorkspace = function _connectWorkspace(token) { - Meteor.call('cloud:connectWorkspace', token, (error, success) => { - if (error) { - toastr.error(error); - instance.loadRegStatus(); - return; - } - - if (!success) { - toastr.error('An error occured connecting'); - instance.loadRegStatus(); - return; - } - - toastr.success(t('Connected')); - - instance.loadRegStatus(); - }); - }; - - instance.disconnectWorkspace = function _disconnectWorkspace() { - Meteor.call('cloud:disconnectWorkspace', (error, success) => { - if (error) { - toastr.error(error); - instance.loadRegStatus(); - return; - } - - if (!success) { - toastr.error('An error occured disconnecting'); - instance.loadRegStatus(); - return; - } - - toastr.success(t('Disconnected')); - - instance.loadRegStatus(); - }); - }; - - instance.syncWorkspace = function _syncWorkspace() { - Meteor.call('cloud:syncWorkspace', (error, success) => { - if (error) { - toastr.error(error); - instance.loadRegStatus(); - return; - } - - if (!success) { - toastr.error('An error occured syncing'); - instance.loadRegStatus(); - return; - } - - toastr.success(t('Sync Complete')); - - instance.loadRegStatus(); - }); - }; - - instance.registerWorkspace = function _registerWorkspace() { - Meteor.call('cloud:registerWorkspace', (error, success) => { - if (error) { - toastr.error(error); - instance.loadRegStatus(); - return; - } - - if (!success) { - toastr.error('An error occured'); - instance.loadRegStatus(); - return; - } - - return instance.syncWorkspace(); - }); - }; - - const params = queryString.parse(location.search); - - if (params.token) { - instance.connectWorkspace(params.token); - } else { - instance.loadRegStatus(); - } - - instance.getLoggedIn(); -}); - -Template.cloud.helpers({ - info() { - return Template.instance().info.get(); - }, - isLoggedIn() { - return Template.instance().isLoggedIn.get(); - }, -}); - -Template.cloud.events({ - 'click .js-register'() { - modal.open({ - template: 'cloudRegisterManually', - showCancelButton: false, - showConfirmButton: false, - showFooter: false, - closeOnCancel: true, - html: true, - confirmOnEnter: false, - }); - }, - 'click .update-email-btn'() { - const val = $('input[name=cloudEmail]').val(); - - Meteor.call('cloud:updateEmail', val, false, (error) => { - if (error) { - console.warn(error); - return; - } - - toastr.success(t('Saved')); - }); - }, - - 'click .resend-email-btn'() { - const val = $('input[name=cloudEmail]').val(); - - Meteor.call('cloud:updateEmail', val, true, (error) => { - if (error) { - console.warn(error); - return; - } - - toastr.success(t('Requested')); - }); - }, - - 'click .login-btn'(e, i) { - i.oauthAuthorize(); - }, - - 'click .logout-btn'(e, i) { - i.logout(); - }, - - 'click .connect-btn'(e, i) { - const token = $('input[name=cloudToken]').val(); - - i.connectWorkspace(token); - }, - - 'click .register-btn'(e, i) { - i.registerWorkspace(); - }, - - 'click .disconnect-btn'(e, i) { - i.disconnectWorkspace(); - }, - - 'click .sync-btn'(e, i) { - i.syncWorkspace(); - }, -}); - -Template.cloud.onRendered(() => { - Tracker.afterFlush(() => { - SideNav.setFlex('adminFlex'); - SideNav.openFlex(); - }); -}); diff --git a/app/cloud/client/admin/cloudRegisterManually.css b/app/cloud/client/admin/cloudRegisterManually.css deleted file mode 100644 index 8cd3c5628e34..000000000000 --- a/app/cloud/client/admin/cloudRegisterManually.css +++ /dev/null @@ -1,26 +0,0 @@ -.rc-promtp { - display: flex; - - min-height: 188px; - padding: 1rem; - - border-radius: 2px; - background: #2f343d; - flex-flow: column wrap; - justify-content: space-between; - - &--element, - &--element[disabled] { - flex: 1 1 auto; - - resize: none; - - color: #cbced1; - border: none; - background: none; - - font-family: Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace; - font-size: 14px; - line-height: 20px; - } -} diff --git a/app/cloud/client/admin/cloudRegisterManually.html b/app/cloud/client/admin/cloudRegisterManually.html deleted file mode 100644 index 738a36423501..000000000000 --- a/app/cloud/client/admin/cloudRegisterManually.html +++ /dev/null @@ -1,36 +0,0 @@ - diff --git a/app/cloud/client/admin/cloudRegisterManually.js b/app/cloud/client/admin/cloudRegisterManually.js deleted file mode 100644 index 223d9bc609ce..000000000000 --- a/app/cloud/client/admin/cloudRegisterManually.js +++ /dev/null @@ -1,106 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { ReactiveDict } from 'meteor/reactive-dict'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { Template } from 'meteor/templating'; -import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import Clipboard from 'clipboard'; -import toastr from 'toastr'; - -import { APIClient } from '../../../utils/client'; -import { modal } from '../../../ui-utils/client'; - -import './cloudRegisterManually.html'; -import './cloudRegisterManually.css'; - -const CLOUD_STEPS = { - COPY: 0, - PASTE: 1, - DONE: 2, - ERROR: 3, -}; - -Template.cloudRegisterManually.events({ - 'submit form'(e) { - e.preventDefault(); - }, - 'input .js-cloud-key'(e, instance) { - instance.state.set('cloudKey', e.currentTarget.value); - }, - 'click .js-next'(event, instance) { - instance.state.set('step', CLOUD_STEPS.PASTE); - }, - 'click .js-back'(event, instance) { - instance.state.set('step', CLOUD_STEPS.COPY); - }, - 'click .js-finish'(event, instance) { - instance.state.set('loading', true); - - APIClient - .post('v1/cloud.manualRegister', {}, { cloudBlob: instance.state.get('cloudKey') }) - .then(() => modal.open({ - type: 'success', - title: TAPi18n.__('Success'), - text: TAPi18n.__('Cloud_register_success'), - confirmButtonText: TAPi18n.__('Ok'), - closeOnConfirm: false, - showCancelButton: false, - }, () => window.location.reload())) - .catch(() => modal.open({ - type: 'error', - title: TAPi18n.__('Error'), - text: TAPi18n.__('Cloud_register_error'), - })) - .then(() => instance.state.set('loading', false)); - }, -}); - -Template.cloudRegisterManually.helpers({ - cloudLink() { - return Template.instance().cloudLink.get(); - }, - copyStep() { - return Template.instance().state.get('step') === CLOUD_STEPS.COPY; - }, - clientKey() { - return Template.instance().state.get('clientKey'); - }, - isLoading() { - return Template.instance().state.get('loading'); - }, - step() { - return Template.instance().state.get('step'); - }, - disabled() { - const { state } = Template.instance(); - - const shouldDisable = state.get('cloudKey').trim().length === 0 || state.get('loading'); - - return shouldDisable && 'disabled'; - }, -}); - -Template.cloudRegisterManually.onRendered(function() { - const clipboard = new Clipboard('.js-copy'); - clipboard.on('success', function() { - toastr.success(TAPi18n.__('Copied')); - }); - - const btn = this.find('.cloud-console-btn'); - // After_copy_the_text_go_to_cloud - this.cloudLink.set(TAPi18n.__('Cloud_click_here').replace(/(\[(.*)\]\(\))/ig, (_, __, text) => btn.outerHTML.replace('', `${ text }`))); -}); - -Template.cloudRegisterManually.onCreated(function() { - this.cloudLink = new ReactiveVar(); - this.state = new ReactiveDict({ - step: CLOUD_STEPS.COPY, - loading: false, - clientKey: '', - cloudKey: '', - error: '', - }); - - Meteor.call('cloud:getWorkspaceRegisterData', (error, result) => { - this.state.set('clientKey', result); - }); -}); diff --git a/app/cloud/client/admin/index.js b/app/cloud/client/admin/index.js deleted file mode 100644 index 92cb6032c24e..000000000000 --- a/app/cloud/client/admin/index.js +++ /dev/null @@ -1,2 +0,0 @@ -import './cloud'; -import './callback'; diff --git a/app/cloud/client/index.js b/app/cloud/client/index.js deleted file mode 100644 index ce6ceecd3d5c..000000000000 --- a/app/cloud/client/index.js +++ /dev/null @@ -1,33 +0,0 @@ -import './admin/callback'; -import './admin/cloud'; -import './admin/cloudRegisterManually'; - -import { BlazeLayout } from 'meteor/kadira:blaze-layout'; - -import { registerAdminRoute, registerAdminSidebarItem } from '../../../client/admin'; -import { hasAtLeastOnePermission } from '../../authorization'; - -registerAdminRoute('/cloud', { - name: 'cloud', - async action() { - await import('./admin'); - BlazeLayout.render('main', { center: 'cloud', old: true }); - }, -}); - -registerAdminRoute('/cloud/oauth-callback', { - name: 'cloud-oauth-callback', - async action() { - await import('./admin'); - BlazeLayout.render('main', { center: 'cloudCallback', old: true }); - }, -}); - -registerAdminSidebarItem({ - icon: 'cloud-plus', - href: 'cloud', - i18nLabel: 'Connectivity_Services', - permissionGranted() { - return hasAtLeastOnePermission(['manage-cloud']); - }, -}); diff --git a/app/cors/server/cors.js b/app/cors/server/cors.js index c5853db94059..9c6d8eb31803 100644 --- a/app/cors/server/cors.js +++ b/app/cors/server/cors.js @@ -44,6 +44,7 @@ WebApp.rawConnectHandlers.use(Meteor.bindEnvironment(function(req, res, next) { }); })); +// Deprecated setting let Support_Cordova_App = false; settings.get('Support_Cordova_App', (key, value) => { Support_Cordova_App = value; @@ -53,24 +54,24 @@ WebApp.rawConnectHandlers.use(function(req, res, next) { // XSS Protection for old browsers (IE) res.setHeader('X-XSS-Protection', '1'); - if (Support_Cordova_App !== true) { - return next(); - } - - if (/^\/(api|_timesync|sockjs|tap-i18n)(\/|$)/.test(req.url)) { - res.setHeader('Access-Control-Allow-Origin', '*'); - } if (settings.get('Iframe_Restrict_Access')) { res.setHeader('X-Frame-Options', settings.get('Iframe_X_Frame_Options')); } - const { setHeader } = res; - res.setHeader = function(key, val, ...args) { - if (key.toLowerCase() === 'access-control-allow-origin' && val === 'http://meteor.local') { - return; + // Deprecated behavior + if (Support_Cordova_App === true) { + if (/^\/(api|_timesync|sockjs|tap-i18n)(\/|$)/.test(req.url)) { + res.setHeader('Access-Control-Allow-Origin', '*'); } - return setHeader.apply(this, [key, val, ...args]); - }; + + const { setHeader } = res; + res.setHeader = function(key, val, ...args) { + if (key.toLowerCase() === 'access-control-allow-origin' && val === 'http://meteor.local') { + return; + } + return setHeader.apply(this, [key, val, ...args]); + }; + } return next(); }); diff --git a/app/custom-sounds/client/lib/CustomSounds.js b/app/custom-sounds/client/lib/CustomSounds.js index a0422581f6aa..27b09ca5a50d 100644 --- a/app/custom-sounds/client/lib/CustomSounds.js +++ b/app/custom-sounds/client/lib/CustomSounds.js @@ -3,18 +3,21 @@ import { ReactiveVar } from 'meteor/reactive-var'; import _ from 'underscore'; import { CachedCollectionManager } from '../../../ui-cached-collection'; +import { getURL } from '../../../utils/client'; const getCustomSoundId = (sound) => `custom-sound-${ sound }`; class CustomSoundsClass { constructor() { this.list = new ReactiveVar({}); - this.add({ _id: 'beep', name: 'Beep', extension: 'mp3', src: 'sounds/beep.mp3' }); - this.add({ _id: 'chelle', name: 'Chelle', extension: 'mp3', src: 'sounds/chelle.mp3' }); - this.add({ _id: 'ding', name: 'Ding', extension: 'mp3', src: 'sounds/ding.mp3' }); - this.add({ _id: 'droplet', name: 'Droplet', extension: 'mp3', src: 'sounds/droplet.mp3' }); - this.add({ _id: 'highbell', name: 'Highbell', extension: 'mp3', src: 'sounds/highbell.mp3' }); - this.add({ _id: 'seasons', name: 'Seasons', extension: 'mp3', src: 'sounds/seasons.mp3' }); + this.add({ _id: 'chime', name: 'Chime', extension: 'mp3', src: getURL('sounds/chime.mp3') }); + this.add({ _id: 'door', name: 'Door', extension: 'mp3', src: getURL('sounds/door.mp3') }); + this.add({ _id: 'beep', name: 'Beep', extension: 'mp3', src: getURL('sounds/beep.mp3') }); + this.add({ _id: 'chelle', name: 'Chelle', extension: 'mp3', src: getURL('sounds/chelle.mp3') }); + this.add({ _id: 'ding', name: 'Ding', extension: 'mp3', src: getURL('sounds/ding.mp3') }); + this.add({ _id: 'droplet', name: 'Droplet', extension: 'mp3', src: getURL('sounds/droplet.mp3') }); + this.add({ _id: 'highbell', name: 'Highbell', extension: 'mp3', src: getURL('sounds/highbell.mp3') }); + this.add({ _id: 'seasons', name: 'Seasons', extension: 'mp3', src: getURL('sounds/seasons.mp3') }); } add(sound) { @@ -41,9 +44,12 @@ class CustomSoundsClass { const audio = $(`#${ sound._id }`); if (audio && audio[0]) { const list = this.list.get(); + if (!sound.src) { + sound.src = this.getURL(sound); + } list[sound._id] = sound; this.list.set(list); - $('source', audio).attr('src', this.getURL(sound)); + $('source', audio).attr('src', sound.src); audio[0].load(); } else { this.add(sound); @@ -51,8 +57,7 @@ class CustomSoundsClass { } getURL(sound) { - const path = __meteor_runtime_config__.ROOT_URL_PATH_PREFIX || ''; - return `${ path }/custom-sounds/${ sound._id }.${ sound.extension }?_dc=${ sound.random || 0 }`; + return getURL(`/custom-sounds/${ sound._id }.${ sound.extension }?_dc=${ sound.random || 0 }`); } getList() { @@ -72,6 +77,16 @@ class CustomSoundsClass { return audio; } + + pause = (sound) => { + const audio = document.querySelector(`#${ getCustomSoundId(sound) }`); + if (!audio || !audio.pause) { + return; + } + + audio.pause(); + audio.currentTime = 0; + } } export const CustomSounds = new CustomSoundsClass(); diff --git a/app/custom-sounds/server/startup/custom-sounds.js b/app/custom-sounds/server/startup/custom-sounds.js index 7417d90e568f..77a0d2c52b38 100644 --- a/app/custom-sounds/server/startup/custom-sounds.js +++ b/app/custom-sounds/server/startup/custom-sounds.js @@ -1,9 +1,8 @@ import { Meteor } from 'meteor/meteor'; import { WebApp } from 'meteor/webapp'; -import _ from 'underscore'; -import { RocketChatFile } from '../../../file'; -import { settings } from '../../../settings'; +import { RocketChatFile } from '../../../file/server'; +import { settings } from '../../../settings/server'; export let RocketChatFileCustomSoundsInstance; @@ -35,16 +34,16 @@ Meteor.startup(function() { }); return WebApp.connectHandlers.use('/custom-sounds/', Meteor.bindEnvironment(function(req, res/* , next*/) { - const params = { sound: decodeURIComponent(req.url.replace(/^\//, '').replace(/\?.*$/, '')) }; + const fileId = decodeURIComponent(req.url.replace(/^\//, '').replace(/\?.*$/, '')); - if (_.isEmpty(params.sound)) { + if (!fileId) { res.writeHead(403); res.write('Forbidden'); res.end(); return; } - const file = RocketChatFileCustomSoundsInstance.getFileWithReadStream(params.sound); + const file = RocketChatFileCustomSoundsInstance.getFileWithReadStream(fileId); if (!file) { return; } @@ -73,7 +72,7 @@ Meteor.startup(function() { } else { res.setHeader('Last-Modified', new Date().toUTCString()); } - res.setHeader('Content-Type', 'audio/mpeg'); + res.setHeader('Content-Type', file.contentType); res.setHeader('Content-Length', file.length); file.readStream.pipe(res); diff --git a/app/emoji/client/emojiPicker.html b/app/emoji/client/emojiPicker.html index 0e3a5c7546e1..498f4ec1e487 100644 --- a/app/emoji/client/emojiPicker.html +++ b/app/emoji/client/emojiPicker.html @@ -44,6 +44,9 @@

{{_ ca {{/each}} {{/if}} - + diff --git a/app/emoji/client/emojiPicker.js b/app/emoji/client/emojiPicker.js index 410bbfa5682c..86360cc47575 100644 --- a/app/emoji/client/emojiPicker.js +++ b/app/emoji/client/emojiPicker.js @@ -1,6 +1,7 @@ import _ from 'underscore'; import { ReactiveVar } from 'meteor/reactive-var'; import { ReactiveDict } from 'meteor/reactive-dict'; +import { FlowRouter } from 'meteor/kadira:flow-router'; import { Template } from 'meteor/templating'; import { t } from '../../utils/client'; @@ -142,6 +143,12 @@ Template.emojiPicker.events({ event.stopPropagation(); event.preventDefault(); }, + 'click .add-custom'(event) { + event.stopPropagation(); + event.preventDefault(); + FlowRouter.go('/admin/emoji-custom'); + EmojiPicker.close(); + }, 'click .category-link'(event) { event.stopPropagation(); event.preventDefault(); diff --git a/app/integrations/client/getIntegration.js b/app/integrations/client/getIntegration.js deleted file mode 100644 index d80c8ee690e5..000000000000 --- a/app/integrations/client/getIntegration.js +++ /dev/null @@ -1,34 +0,0 @@ -import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { FlowRouter } from 'meteor/kadira:flow-router'; -import toastr from 'toastr'; - -import { hasAllPermission } from '../../authorization/client'; -import { APIClient } from '../../utils/client'; - -export async function getIntegration(integrationId, uid) { - if (!integrationId) { - return; - } - - const reqParams = { - integrationId, - }; - - if (!hasAllPermission('manage-outgoing-integrations')) { - if (!hasAllPermission('manage-own-outgoing-integrations')) { - toastr.error(TAPi18n.__('No_integration_found')); - FlowRouter.go('admin-integrations'); - return; - } - reqParams.createdBy = uid; - } - - try { - const { integration } = await APIClient.v1.get('integrations.get', reqParams); - - return integration; - } catch (e) { - toastr.error(TAPi18n.__('Error')); - console.error(e); - } -} diff --git a/app/integrations/client/index.js b/app/integrations/client/index.js deleted file mode 100644 index f7c2445d187d..000000000000 --- a/app/integrations/client/index.js +++ /dev/null @@ -1,3 +0,0 @@ -import '../lib/rocketchat'; -import './startup'; -import './route'; diff --git a/app/integrations/client/route.js b/app/integrations/client/route.js deleted file mode 100644 index 08a7eb444653..000000000000 --- a/app/integrations/client/route.js +++ /dev/null @@ -1,75 +0,0 @@ -import { BlazeLayout } from 'meteor/kadira:blaze-layout'; - -import { registerAdminRoute } from '../../../client/admin'; -import { t } from '../../utils'; - -const dynamic = () => import('./views'); - -registerAdminRoute('/integrations', { - name: 'admin-integrations', - async action() { - await dynamic(); - return BlazeLayout.render('main', { - center: 'integrations', - pageTitle: t('Integrations'), - }); - }, -}); - -registerAdminRoute('/integrations/new', { - name: 'admin-integrations-new', - async action() { - await dynamic(); - return BlazeLayout.render('main', { - center: 'integrationsNew', - pageTitle: t('Integration_New'), - }); - }, -}); - -registerAdminRoute('/integrations/incoming/:id?', { - name: 'admin-integrations-incoming', - async action(params) { - await dynamic(); - return BlazeLayout.render('main', { - center: 'pageSettingsContainer', - pageTitle: t('Integration_Incoming_WebHook'), - pageTemplate: 'integrationsIncoming', - params, - }); - }, -}); - -registerAdminRoute('/integrations/outgoing/:id?', { - name: 'admin-integrations-outgoing', - async action(params) { - await dynamic(); - return BlazeLayout.render('main', { - center: 'integrationsOutgoing', - pageTitle: t('Integration_Outgoing_WebHook'), - params, - }); - }, -}); - -registerAdminRoute('/integrations/outgoing/:id?/history', { - name: 'admin-integrations-outgoing-history', - async action(params) { - await dynamic(); - return BlazeLayout.render('main', { - center: 'integrationsOutgoingHistory', - pageTitle: t('Integration_Outgoing_WebHook_History'), - params, - }); - }, -}); - -registerAdminRoute('/integrations/additional/zapier', { - name: 'admin-integrations-additional-zapier', - async action() { - await dynamic(); - BlazeLayout.render('main', { - center: 'integrationsAdditionalZapier', - }); - }, -}); diff --git a/app/integrations/client/streamer.js b/app/integrations/client/streamer.js deleted file mode 100644 index 6bc2d6dc1327..000000000000 --- a/app/integrations/client/streamer.js +++ /dev/null @@ -1,3 +0,0 @@ -import { Meteor } from 'meteor/meteor'; - -export const integrationHistoryStreamer = new Meteor.Streamer('integrationHistory'); diff --git a/app/integrations/client/stylesheets/integrations.css b/app/integrations/client/stylesheets/integrations.css deleted file mode 100644 index 83ee9e64cfe6..000000000000 --- a/app/integrations/client/stylesheets/integrations.css +++ /dev/null @@ -1,75 +0,0 @@ -.admin-integrations-new-panel { - & .admin-integrations-new-item { - display: flex; - - padding: 20px 10px; - - cursor: pointer; - - color: #444444; - border-bottom: 1px solid #dddddd; - align-items: center; - - &:hover { - background-color: #fafafa; - } - - & > i { - color: #aaaaaa; - - font-size: 2rem; - } - - & .admin-integrations-new-item-body { - display: flex; - flex-direction: column; - - padding: 0 20px; - flex-grow: 1; - } - - & .admin-integrations-new-item-title { - font-size: 1.4rem; - font-weight: 500; - line-height: 2.1rem; - } - - & .admin-integrations-new-item-description { - color: #aaaaaa; - - font-size: 1rem; - line-height: 1.5rem; - } - } - - & > a:last-child > .admin-integrations-new-item { - border-bottom: none; - } -} - -.message-example { - & li { - list-style: none; - } -} - -.integrate-other-ways { - & p { - font-size: 1rem; - line-height: 1.5rem; - - & a { - color: #175cc4 !important; - } - } -} - -.content.zapier { - display: flex; - flex-direction: column; - align-items: center; - - #zapier-goes-here { - width: 95%; - } -} diff --git a/app/integrations/client/views/additional/zapier.html b/app/integrations/client/views/additional/zapier.html deleted file mode 100644 index d95f0ac50691..000000000000 --- a/app/integrations/client/views/additional/zapier.html +++ /dev/null @@ -1,10 +0,0 @@ - diff --git a/app/integrations/client/views/index.js b/app/integrations/client/views/index.js deleted file mode 100644 index f7c6282cbd35..000000000000 --- a/app/integrations/client/views/index.js +++ /dev/null @@ -1,11 +0,0 @@ -import './integrations.html'; -import './integrations'; -import './integrationsNew.html'; -import './integrationsNew'; -import './integrationsIncoming.html'; -import './integrationsIncoming'; -import './integrationsOutgoing.html'; -import './integrationsOutgoing'; -import './integrationsOutgoingHistory.html'; -import './integrationsOutgoingHistory'; -import './additional/zapier.html'; diff --git a/app/integrations/client/views/integrations.html b/app/integrations/client/views/integrations.html deleted file mode 100644 index 0a39da5ae278..000000000000 --- a/app/integrations/client/views/integrations.html +++ /dev/null @@ -1,74 +0,0 @@ - diff --git a/app/integrations/client/views/integrations.js b/app/integrations/client/views/integrations.js deleted file mode 100644 index 0506b21e1697..000000000000 --- a/app/integrations/client/views/integrations.js +++ /dev/null @@ -1,65 +0,0 @@ -import { Template } from 'meteor/templating'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { Tracker } from 'meteor/tracker'; -import moment from 'moment'; -import _ from 'underscore'; - -import { hasAtLeastOnePermission } from '../../../authorization'; -import { integrations } from '../../lib/rocketchat'; -import { SideNav } from '../../../ui-utils/client'; -import { APIClient } from '../../../utils/client'; - -const ITEMS_COUNT = 50; - -Template.integrations.helpers({ - hasPermission() { - return hasAtLeastOnePermission([ - 'manage-outgoing-integrations', - 'manage-own-outgoing-integrations', - 'manage-incoming-integrations', - 'manage-own-incoming-integrations', - ]); - }, - integrations() { - return Template.instance().integrations.get(); - }, - dateFormated(date) { - return moment(date).format('L LT'); - }, - eventTypeI18n(event) { - return TAPi18n.__(integrations.outgoingEvents[event].label); - }, -}); - -Template.integrations.onRendered(() => { - Tracker.afterFlush(() => { - SideNav.setFlex('adminFlex'); - SideNav.openFlex(); - }); -}); - -Template.integrations.onCreated(async function() { - this.integrations = new ReactiveVar([]); - this.offset = new ReactiveVar(0); - this.total = new ReactiveVar(0); - - this.autorun(async () => { - const offset = this.offset.get(); - const { integrations, total } = await APIClient.v1.get(`integrations.list?sort={"type":1}&count=${ ITEMS_COUNT }&offset=${ offset }`); - this.total.set(total); - this.integrations.set(this.integrations.get().concat(integrations)); - }); -}); - -Template.integrations.events({ - 'scroll .content': _.throttle(function(e, instance) { - if (e.target.scrollTop >= (e.target.scrollHeight - e.target.clientHeight)) { - const integrations = instance.integrations.get(); - if (instance.total.get() <= integrations.length) { - return; - } - return instance.offset.set(instance.offset.get() + ITEMS_COUNT); - } - }, 200), -}); diff --git a/app/integrations/client/views/integrationsIncoming.html b/app/integrations/client/views/integrationsIncoming.html deleted file mode 100644 index d9aae546f700..000000000000 --- a/app/integrations/client/views/integrationsIncoming.html +++ /dev/null @@ -1,138 +0,0 @@ - diff --git a/app/integrations/client/views/integrationsIncoming.js b/app/integrations/client/views/integrationsIncoming.js deleted file mode 100644 index 222205d64fa7..000000000000 --- a/app/integrations/client/views/integrationsIncoming.js +++ /dev/null @@ -1,251 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { FlowRouter } from 'meteor/kadira:flow-router'; -import { Template } from 'meteor/templating'; -import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { Tracker } from 'meteor/tracker'; -import hljs from 'highlight.js'; -import toastr from 'toastr'; - -import { exampleMsg, exampleSettings, exampleUser } from './messageExample'; -import { hasAtLeastOnePermission } from '../../../authorization'; -import { modal, SideNav } from '../../../ui-utils/client'; -import { t, handleError } from '../../../utils'; -import { getIntegration } from '../getIntegration'; - -Template.integrationsIncoming.onCreated(async function _incomingIntegrationsOnCreated() { - const params = Template.instance().data.params ? Template.instance().data.params() : undefined; - this.integration = new ReactiveVar({}); - this.record = new ReactiveVar({ - username: 'rocket.cat', - }); - if (params && params.id) { - const integration = await getIntegration(params.id, Meteor.userId()); - if (integration) { - this.integration.set(integration); - } - } -}); - -Template.integrationsIncoming.helpers({ - exampleMsg, - exampleUser, - exampleSettings, - hasPermission() { - return hasAtLeastOnePermission([ - 'manage-incoming-integrations', - 'manage-own-incoming-integrations', - ]); - }, - - canDelete() { - return this.params && this.params() && typeof this.params().id !== 'undefined'; - }, - - data() { - const data = Template.instance().integration.get(); - if (data) { - const completeToken = `${ data._id }/${ data.token }`; - data.url = Meteor.absoluteUrl(`hooks/${ completeToken }`); - data.completeToken = completeToken; - data.hasScriptError = data.scriptEnabled && data.scriptError; - Template.instance().record.set(data); - return data; - } - - return Template.instance().record.curValue; - }, - exampleJson() { - const record = Template.instance().record.get(); - const data = { - username: record.alias, - icon_emoji: record.emoji, - icon_url: record.avatar, - text: 'Example message', - attachments: [{ - title: 'Rocket.Chat', - title_link: 'https://rocket.chat', - text: 'Rocket.Chat, the best open source chat', - image_url: '/images/integration-attachment-example.png', - color: '#764FA5', - }], - }; - - const invalidData = [null, '']; - Object.keys(data).forEach((key) => { - if (invalidData.includes(data[key])) { - delete data[key]; - } - }); - - return hljs.highlight('json', JSON.stringify(data, null, 2)).value; - }, - - curl() { - const record = Template.instance().record.get(); - - if (!record.url) { - return; - } - - const data = { - username: record.alias, - icon_emoji: record.emoji, - icon_url: record.avatar, - text: 'Example message', - attachments: [{ - title: 'Rocket.Chat', - title_link: 'https://rocket.chat', - text: 'Rocket.Chat, the best open source chat', - image_url: '/images/integration-attachment-example.png', - color: '#764FA5', - }], - }; - - const invalidData = [null, '']; - Object.keys(data).forEach((key) => { - if (invalidData.includes(data[key])) { - delete data[key]; - } - }); - - return `curl -X POST -H 'Content-Type: application/json' --data '${ JSON.stringify(data) }' ${ record.url }`; - }, - - editorOptions() { - return { - lineNumbers: true, - mode: 'javascript', - gutters: [ - // 'CodeMirror-lint-markers' - 'CodeMirror-linenumbers', - 'CodeMirror-foldgutter', - ], - // lint: true, - foldGutter: true, - // lineWrapping: true, - matchBrackets: true, - autoCloseBrackets: true, - matchTags: true, - showTrailingSpace: true, - highlightSelectionMatches: true, - }; - }, -}); - -Template.integrationsIncoming.events({ - 'blur input': (e, t) => { - const value = t.record.curValue || {}; - - value.name = $('[name=name]').val().trim(); - value.alias = $('[name=alias]').val().trim(); - value.emoji = $('[name=emoji]').val().trim(); - value.avatar = $('[name=avatar]').val().trim(); - value.channel = $('[name=channel]').val().trim(); - value.username = $('[name=username]').val().trim(); - - t.record.set(value); - }, - - 'click .rc-header__section-button > .delete': () => { - const params = Template.instance().data.params(); - - modal.open({ - title: t('Are_you_sure'), - text: t('You_will_not_be_able_to_recover'), - type: 'warning', - showCancelButton: true, - confirmButtonColor: '#DD6B55', - confirmButtonText: t('Yes_delete_it'), - cancelButtonText: t('Cancel'), - closeOnConfirm: false, - html: false, - }, () => { - Meteor.call('deleteIncomingIntegration', params.id, (err) => { - if (err) { - return handleError(err); - } - modal.open({ - title: t('Deleted'), - text: t('Your_entry_has_been_deleted'), - type: 'success', - timer: 1000, - showConfirmButton: false, - }); - - FlowRouter.go('admin-integrations'); - }); - }); - }, - - 'click .button-fullscreen': () => { - const codeMirrorBox = $('.code-mirror-box'); - codeMirrorBox.addClass('code-mirror-box-fullscreen content-background-color'); - codeMirrorBox.find('.CodeMirror')[0].CodeMirror.refresh(); - }, - - 'click .button-restore': () => { - const codeMirrorBox = $('.code-mirror-box'); - codeMirrorBox.removeClass('code-mirror-box-fullscreen content-background-color'); - codeMirrorBox.find('.CodeMirror')[0].CodeMirror.refresh(); - }, - - 'click .rc-header__section-button > .save': () => { - const enabled = $('[name=enabled]:checked').val().trim(); - const name = $('[name=name]').val().trim(); - const alias = $('[name=alias]').val().trim(); - const emoji = $('[name=emoji]').val().trim(); - const avatar = $('[name=avatar]').val().trim(); - const channel = $('[name=channel]').val().trim(); - const username = $('[name=username]').val().trim(); - const scriptEnabled = $('[name=scriptEnabled]:checked').val().trim(); - const script = $('[name=script]').val().trim(); - - if (channel === '') { - return toastr.error(TAPi18n.__('The_channel_name_is_required')); - } - - if (username === '') { - return toastr.error(TAPi18n.__('The_username_is_required')); - } - - const integration = { - enabled: enabled === '1', - channel, - username, - alias: alias !== '' ? alias : undefined, - emoji: emoji !== '' ? emoji : undefined, - avatar: avatar !== '' ? avatar : undefined, - name: name !== '' ? name : undefined, - script: script !== '' ? script : undefined, - scriptEnabled: scriptEnabled === '1', - }; - - const params = Template.instance().data.params ? Template.instance().data.params() : undefined; - if (params && params.id) { - Meteor.call('updateIncomingIntegration', params.id, integration, (err) => { - if (err) { - return handleError(err); - } - - toastr.success(TAPi18n.__('Integration_updated')); - }); - } else { - Meteor.call('addIncomingIntegration', integration, (err, data) => { - if (err) { - return handleError(err); - } - - toastr.success(TAPi18n.__('Integration_added')); - FlowRouter.go('admin-integrations-incoming', { id: data._id }); - }); - } - }, -}); - -Template.integrationsIncoming.onRendered(() => { - Tracker.afterFlush(() => { - SideNav.setFlex('adminFlex'); - SideNav.openFlex(); - }); -}); diff --git a/app/integrations/client/views/integrationsNew.html b/app/integrations/client/views/integrationsNew.html deleted file mode 100644 index 9c3ab5ee9ec3..000000000000 --- a/app/integrations/client/views/integrationsNew.html +++ /dev/null @@ -1,51 +0,0 @@ - diff --git a/app/integrations/client/views/integrationsNew.js b/app/integrations/client/views/integrationsNew.js deleted file mode 100644 index f5bd29c08e6f..000000000000 --- a/app/integrations/client/views/integrationsNew.js +++ /dev/null @@ -1,35 +0,0 @@ -import { Template } from 'meteor/templating'; -import { Tracker } from 'meteor/tracker'; - -import { hasAtLeastOnePermission } from '../../../authorization'; -import { SideNav } from '../../../ui-utils/client'; - -Template.integrationsNew.helpers({ - hasPermission() { - return hasAtLeastOnePermission([ - 'manage-outgoing-integrations', - 'manage-own-outgoing-integrations', - 'manage-incoming-integrations', - 'manage-own-incoming-integrations', - ]); - }, - canAddIncomingIntegration() { - return hasAtLeastOnePermission([ - 'manage-incoming-integrations', - 'manage-own-incoming-integrations', - ]); - }, - canAddOutgoingIntegration() { - return hasAtLeastOnePermission([ - 'manage-outgoing-integrations', - 'manage-own-outgoing-integrations', - ]); - }, -}); - -Template.integrationsNew.onRendered(() => { - Tracker.afterFlush(() => { - SideNav.setFlex('adminFlex'); - SideNav.openFlex(); - }); -}); diff --git a/app/integrations/client/views/integrationsOutgoing.html b/app/integrations/client/views/integrationsOutgoing.html deleted file mode 100644 index 18d6fc8d5791..000000000000 --- a/app/integrations/client/views/integrationsOutgoing.html +++ /dev/null @@ -1,241 +0,0 @@ - diff --git a/app/integrations/client/views/integrationsOutgoing.js b/app/integrations/client/views/integrationsOutgoing.js deleted file mode 100644 index dba874aca11b..000000000000 --- a/app/integrations/client/views/integrationsOutgoing.js +++ /dev/null @@ -1,353 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { Random } from 'meteor/random'; -import { FlowRouter } from 'meteor/kadira:flow-router'; -import { Template } from 'meteor/templating'; -import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { Tracker } from 'meteor/tracker'; -import hljs from 'highlight.js'; -import toastr from 'toastr'; - -import { exampleMsg, exampleSettings, exampleUser } from './messageExample'; -import { hasAtLeastOnePermission } from '../../../authorization'; -import { modal, SideNav } from '../../../ui-utils'; -import { t, handleError } from '../../../utils/client'; -import { integrations } from '../../lib/rocketchat'; -import { getIntegration } from '../getIntegration'; - -Template.integrationsOutgoing.onCreated(async function _integrationsOutgoingOnCreated() { - const params = Template.instance().data.params ? Template.instance().data.params() : undefined; - this.record = new ReactiveVar({ - username: 'rocket.cat', - token: Random.id(24), - retryFailedCalls: true, - retryCount: 6, - retryDelay: 'powers-of-ten', - runOnEdits: true, - }); - - this.updateRecord = () => { - this.record.set({ - enabled: $('[name=enabled]:checked').val().trim() === '1', - event: $('[name=event]').val().trim(), - name: $('[name=name]').val().trim(), - alias: $('[name=alias]').val().trim(), - emoji: $('[name=emoji]').val().trim(), - avatar: $('[name=avatar]').val().trim(), - channel: $('[name=channel]').val() ? $('[name=channel]').val().trim() : undefined, - username: $('[name=username]').val().trim(), - triggerWords: $('[name=triggerWords]').val() ? $('[name=triggerWords]').val().trim() : undefined, - urls: $('[name=urls]').val().trim(), - token: $('[name=token]').val().trim(), - scriptEnabled: $('[name=scriptEnabled]:checked').val().trim() === '1', - script: $('[name=script]').val().trim(), - targetRoom: $('[name=targetRoom]').val() ? $('[name=targetRoom]').val().trim() : undefined, - triggerWordAnywhere: $('[name=triggerWordAnywhere]:checked').val().trim() === '1', - retryFailedCalls: $('[name=retryFailedCalls]:checked').val().trim() === '1', - retryCount: $('[name=retryCount]').val() ? $('[name=retryCount]').val().trim() : 6, - retryDelay: $('[name=retryDelay]').val() ? $('[name=retryDelay]').val().trim() : 'powers-of-ten', - runOnEdits: $('[name=runOnEdits]:checked').val().trim() === '1', - }); - }; - - const integration = await getIntegration(params.id, Meteor.userId()); - if (params.id && !integration) { - toastr.error(TAPi18n.__('No_integration_found')); - FlowRouter.go('admin-integrations'); - return; - } - - integration.hasScriptError = integration.scriptEnabled && integration.scriptError; - this.record.set(integration); -}); - -Template.integrationsOutgoing.helpers({ - exampleMsg, - exampleUser, - exampleSettings, - join(arr, sep) { - if (!arr || !arr.join) { - return arr; - } - - return arr.join(sep); - }, - - showHistoryButton() { - return this.params && this.params() && typeof this.params().id !== 'undefined'; - }, - - hasPermission() { - return hasAtLeastOnePermission([ - 'manage-outgoing-integrations', - 'manage-own-outgoing-integrations', - ]); - }, - - data() { - return Template.instance().record.get(); - }, - - canDelete() { - return this.params && this.params() && typeof this.params().id !== 'undefined'; - }, - - eventTypes() { - return Object.values(integrations.outgoingEvents); - }, - - hasTypeSelected() { - const record = Template.instance().record.get(); - - return typeof record.event === 'string' && record.event !== ''; - }, - - shouldDisplayChannel() { - const record = Template.instance().record.get(); - - return typeof record.event === 'string' && integrations.outgoingEvents[record.event].use.channel; - }, - - shouldDisplayTriggerWords() { - const record = Template.instance().record.get(); - - return typeof record.event === 'string' && integrations.outgoingEvents[record.event].use.triggerWords; - }, - - shouldDisplayTargetRoom() { - const record = Template.instance().record.get(); - - return typeof record.event === 'string' && integrations.outgoingEvents[record.event].use.targetRoom; - }, - - exampleJson() { - const record = Template.instance().record.get(); - const data = { - username: record.alias, - icon_emoji: record.emoji, - icon_url: record.avatar, - text: 'Response text', - attachments: [{ - title: 'Rocket.Chat', - title_link: 'https://rocket.chat', - text: 'Rocket.Chat, the best open source chat', - image_url: '/images/integration-attachment-example.png', - color: '#764FA5', - }], - }; - - const invalidData = [null, '']; - Object.keys(data).forEach((key) => { - if (invalidData.includes(data[key])) { - delete data[key]; - } - }); - - return hljs.highlight('json', JSON.stringify(data, null, 2)).value; - }, - - editorOptions() { - return { - lineNumbers: true, - mode: 'javascript', - gutters: [ - // "CodeMirror-lint-markers", - 'CodeMirror-linenumbers', - 'CodeMirror-foldgutter', - ], - // lint: true, - foldGutter: true, - // lineWrapping: true, - matchBrackets: true, - autoCloseBrackets: true, - matchTags: true, - showTrailingSpace: true, - highlightSelectionMatches: true, - }; - }, -}); - -Template.integrationsOutgoing.events({ - 'blur input': (e, t) => { - t.updateRecord(); - }, - - 'click input[type=radio]': (e, t) => { - t.updateRecord(); - }, - - 'change select[name=event]': (e, t) => { - const record = t.record.get(); - record.event = $('[name=event]').val().trim(); - - t.record.set(record); - }, - - 'click .rc-button.history': () => { - FlowRouter.go(`/admin/integrations/outgoing/${ FlowRouter.getParam('id') }/history`); - }, - - 'click .expand': (e) => { - $(e.currentTarget).closest('.section').removeClass('section-collapsed'); - $(e.currentTarget).closest('button').removeClass('expand').addClass('collapse').find('span').text(TAPi18n.__('Collapse')); - $('.CodeMirror').each((index, codeMirror) => codeMirror.CodeMirror.refresh()); - }, - - 'click .collapse': (e) => { - $(e.currentTarget).closest('.section').addClass('section-collapsed'); - $(e.currentTarget).closest('button').addClass('expand').removeClass('collapse').find('span').text(TAPi18n.__('Expand')); - }, - - 'click .rc-header__section-button > .delete': () => { - const params = Template.instance().data.params(); - - modal.open({ - title: t('Are_you_sure'), - text: t('You_will_not_be_able_to_recover'), - type: 'warning', - showCancelButton: true, - confirmButtonColor: '#DD6B55', - confirmButtonText: t('Yes_delete_it'), - cancelButtonText: t('Cancel'), - closeOnConfirm: false, - html: false, - }, () => { - Meteor.call('deleteOutgoingIntegration', params.id, (err) => { - if (err) { - handleError(err); - } else { - modal.open({ - title: t('Deleted'), - text: t('Your_entry_has_been_deleted'), - type: 'success', - timer: 1000, - showConfirmButton: false, - }); - - FlowRouter.go('admin-integrations'); - } - }); - }); - }, - - 'click .button-fullscreen': () => { - $('.code-mirror-box').addClass('code-mirror-box-fullscreen content-background-color'); - $('.CodeMirror')[0].CodeMirror.refresh(); - }, - - 'click .button-restore': () => { - $('.code-mirror-box').removeClass('code-mirror-box-fullscreen content-background-color'); - $('.CodeMirror')[0].CodeMirror.refresh(); - }, - - 'click .rc-header__section-button > .save': () => { - const event = $('[name=event]').val().trim(); - const enabled = $('[name=enabled]:checked').val().trim(); - const name = $('[name=name]').val().trim(); - const impersonateUser = $('[name=impersonateUser]:checked').val().trim(); - const alias = $('[name=alias]').val().trim(); - const emoji = $('[name=emoji]').val().trim(); - const avatar = $('[name=avatar]').val().trim(); - const username = $('[name=username]').val().trim(); - const token = $('[name=token]').val().trim(); - const scriptEnabled = $('[name=scriptEnabled]:checked').val().trim(); - const script = $('[name=script]').val().trim(); - const retryFailedCalls = $('[name=retryFailedCalls]:checked').val().trim(); - let urls = $('[name=urls]').val().trim(); - - if (username === '' && impersonateUser === '0') { - return toastr.error(TAPi18n.__('The_username_is_required')); - } - - urls = urls.split('\n').filter((url) => url.trim() !== ''); - if (urls.length === 0) { - return toastr.error(TAPi18n.__('You_should_inform_one_url_at_least')); - } - - let triggerWords; - let triggerWordAnywhere; - let runOnEdits; - if (integrations.outgoingEvents[event].use.triggerWords) { - triggerWords = $('[name=triggerWords]').val().trim(); - triggerWords = triggerWords.split(',').filter((word) => word.trim() !== ''); - - triggerWordAnywhere = $('[name=triggerWordAnywhere]:checked').val().trim(); - runOnEdits = $('[name=runOnEdits]:checked').val().trim(); - } - - let channel; - if (integrations.outgoingEvents[event].use.channel) { - channel = $('[name=channel]').val().trim(); - - if (!channel || channel.trim() === '') { - return toastr.error(TAPi18n.__('error-the-field-is-required', { field: TAPi18n.__('Channel') })); - } - } - - let targetRoom; - if (integrations.outgoingEvents[event].use.targetRoom) { - targetRoom = $('[name=targetRoom]').val().trim(); - - if (!targetRoom || targetRoom.trim() === '') { - return toastr.error(TAPi18n.__('error-the-field-is-required', { field: TAPi18n.__('TargetRoom') })); - } - } - - let retryCount; - let retryDelay; - if (retryFailedCalls === '1') { - retryCount = parseInt($('[name=retryCount]').val().trim()); - retryDelay = $('[name=retryDelay]').val().trim(); - } - - const integration = { - event: event !== '' ? event : undefined, - enabled: enabled === '1', - username, - channel: channel !== '' ? channel : undefined, - targetRoom: targetRoom !== '' ? targetRoom : undefined, - alias: alias !== '' ? alias : undefined, - emoji: emoji !== '' ? emoji : undefined, - avatar: avatar !== '' ? avatar : undefined, - name: name !== '' ? name : undefined, - triggerWords: triggerWords !== '' ? triggerWords : undefined, - urls: urls !== '' ? urls : undefined, - token: token !== '' ? token : undefined, - script: script !== '' ? script : undefined, - scriptEnabled: scriptEnabled === '1', - impersonateUser: impersonateUser === '1', - retryFailedCalls: retryFailedCalls === '1', - retryCount: retryCount || 6, - retryDelay: retryDelay || 'powers-of-ten', - triggerWordAnywhere: triggerWordAnywhere === '1', - runOnEdits: runOnEdits === '1', - }; - - const params = Template.instance().data.params ? Template.instance().data.params() : undefined; - if (params && params.id) { - Meteor.call('updateOutgoingIntegration', params.id, integration, (err) => { - if (err) { - return handleError(err); - } - - toastr.success(TAPi18n.__('Integration_updated')); - }); - } else { - Meteor.call('addOutgoingIntegration', integration, (err, data) => { - if (err) { - return handleError(err); - } - - toastr.success(TAPi18n.__('Integration_added')); - FlowRouter.go('admin-integrations-outgoing', { id: data._id }); - }); - } - }, -}); - -Template.integrationsOutgoing.onRendered(() => { - Tracker.afterFlush(() => { - SideNav.setFlex('adminFlex'); - SideNav.openFlex(); - }); -}); diff --git a/app/integrations/client/views/integrationsOutgoingHistory.html b/app/integrations/client/views/integrationsOutgoingHistory.html deleted file mode 100644 index cdd0d7f17933..000000000000 --- a/app/integrations/client/views/integrationsOutgoingHistory.html +++ /dev/null @@ -1,143 +0,0 @@ - diff --git a/app/integrations/client/views/integrationsOutgoingHistory.js b/app/integrations/client/views/integrationsOutgoingHistory.js deleted file mode 100644 index 66384848d6a4..000000000000 --- a/app/integrations/client/views/integrationsOutgoingHistory.js +++ /dev/null @@ -1,191 +0,0 @@ -import { Meteor } from 'meteor/meteor'; -import { ReactiveVar } from 'meteor/reactive-var'; -import { FlowRouter } from 'meteor/kadira:flow-router'; -import { Template } from 'meteor/templating'; -import { TAPi18n } from 'meteor/rocketchat:tap-i18n'; -import { Tracker } from 'meteor/tracker'; -import _ from 'underscore'; -import hljs from 'highlight.js'; -import moment from 'moment'; -import toastr from 'toastr'; - -import { handleError } from '../../../utils'; -import { hasAtLeastOnePermission } from '../../../authorization'; -import { integrations } from '../../lib/rocketchat'; -import { SideNav } from '../../../ui-utils/client'; -import { APIClient } from '../../../utils/client'; -import { getIntegration } from '../getIntegration'; -import { integrationHistoryStreamer } from '../streamer'; - -const HISTORY_COUNT = 25; - -Template.integrationsOutgoingHistory.onCreated(async function _integrationsOutgoingHistoryOnCreated() { - const params = Template.instance().data.params ? Template.instance().data.params() : undefined; - this.isLoading = new ReactiveVar(false); - this.history = new ReactiveVar([]); - this.offset = new ReactiveVar(0); - this.total = new ReactiveVar(0); - - if (params && params.id) { - integrationHistoryStreamer.on(params.id, ({ type, id, diff, data }) => { - const histories = this.history.get(); - - if (type === 'inserted') { - this.history.set([{ ...data }].concat(histories)); - return; - } - - if (type === 'updated') { - const history = histories.find(({ _id }) => _id === id); - Object.assign(history, diff); - this.history.set(histories); - return; - } - - if (type === 'removed') { - this.history.set([]); - } - }); - - const integration = await getIntegration(params.id, Meteor.userId()); - - if (!integration) { - toastr.error(TAPi18n.__('No_integration_found')); - return FlowRouter.go('admin-integrations'); - } - this.autorun(async () => { - this.isLoading.set(true); - const { history, total } = await APIClient.v1.get(`integrations.history?id=${ integration._id }&count=${ HISTORY_COUNT }&offset=${ this.offset.get() }`); - this.history.set(this.history.get().concat(history)); - this.total.set(total); - this.isLoading.set(false); - }); - } else { - toastr.error(TAPi18n.__('No_integration_found')); - FlowRouter.go('admin-integrations'); - } -}); - -Template.integrationsOutgoingHistory.helpers({ - hasPermission() { - return hasAtLeastOnePermission(['manage-outgoing-integrations', 'manage-own-outgoing-integrations']); - }, - - isLoading() { - return Template.instance().isLoading.get(); - }, - - histories() { - return Template.instance().history.get().sort((a, b) => { - if (+a._updatedAt < +b._updatedAt) { - return 1; - } - - if (+a._updatedAt > +b._updatedAt) { - return -1; - } - - return 0; - }); - }, - - hasProperty(history, property) { - return typeof history[property] !== 'undefined' || history[property] != null; - }, - - iconClass(history) { - if (typeof history.error !== 'undefined' && history.error) { - return 'icon-cancel-circled error-color'; - } if (history.finished) { - return 'icon-ok-circled success-color'; - } - return 'icon-help-circled'; - }, - - statusI18n(error) { - return typeof error !== 'undefined' && error ? TAPi18n.__('Failure') : TAPi18n.__('Success'); - }, - - formatDate(date) { - return moment(date).format('L LTS'); - }, - - formatDateDetail(date) { - return moment(date).format('L HH:mm:ss:SSSS'); - }, - - eventTypei18n(event) { - return TAPi18n.__(integrations.outgoingEvents[event].label); - }, - - jsonStringify(data) { - if (!data) { - return ''; - } if (typeof data === 'object') { - return hljs.highlight('json', JSON.stringify(data, null, 2)).value; - } - return hljs.highlight('json', data).value; - }, - - integrationId() { - return this.params && this.params() && this.params().id; - }, -}); - -Template.integrationsOutgoingHistory.events({ - 'click .expand': (e) => { - $(e.currentTarget).closest('.section').removeClass('section-collapsed'); - $(e.currentTarget).closest('button').removeClass('expand').addClass('collapse').find('span').text(TAPi18n.__('Collapse')); - $('.CodeMirror').each((index, codeMirror) => codeMirror.CodeMirror.refresh()); - }, - - 'click .collapse': (e) => { - $(e.currentTarget).closest('.section').addClass('section-collapsed'); - $(e.currentTarget).closest('button').addClass('expand').removeClass('collapse').find('span').text(TAPi18n.__('Expand')); - }, - - 'click .replay': (e, t) => { - if (!t || !t.data || !t.data.params || !t.data.params().id) { - return; - } - - const historyId = $(e.currentTarget).attr('data-history-id'); - - Meteor.call('replayOutgoingIntegration', { integrationId: t.data.params().id, historyId }, (e) => { - if (e) { - handleError(e); - } - }); - }, - - 'click .clear-history': (e, t) => { - if (!t || !t.data || !t.data.params || !t.data.params().id) { - return; - } - - Meteor.call('clearIntegrationHistory', t.data.params().id, (e) => { - if (e) { - handleError(e); - return; - } - - toastr.success(TAPi18n.__('Integration_History_Cleared')); - - t.history.set([]); - }); - }, - - 'scroll .content': _.throttle((e, instance) => { - const history = instance.history.get(); - if ((e.target.scrollTop >= e.target.scrollHeight - e.target.clientHeight) && instance.total.get() > history.length) { - instance.offset.set(instance.offset.get() + HISTORY_COUNT); - } - }, 200), -}); - -Template.integrationsOutgoingHistory.onRendered(() => { - Tracker.afterFlush(() => { - SideNav.setFlex('adminFlex'); - SideNav.openFlex(); - }); -}); diff --git a/app/integrations/client/views/messageExample.js b/app/integrations/client/views/messageExample.js deleted file mode 100644 index 2e553dae32b6..000000000000 --- a/app/integrations/client/views/messageExample.js +++ /dev/null @@ -1,39 +0,0 @@ -import { Template } from 'meteor/templating'; -import { Random } from 'meteor/random'; - -export const exampleMsg = () => { - const record = Template.instance().record.get(); - return { - _id: Random.id(), - alias: record.alias, - emoji: record.emoji, - avatar: record.avatar, - msg: 'Example message', - bot: { - i: Random.id(), - }, - groupable: false, - attachments: [{ - title: 'Rocket.Chat', - title_link: 'https://rocket.chat', - text: 'Rocket.Chat, the best open source chat', - image_url: '/images/integration-attachment-example.png', - color: '#764FA5', - }], - ts: new Date(), - u: { - _id: Random.id(), - username: record.username, - }, - }; -}; - -export const exampleUser = () => ({ - u: { - _id: Random.id(), - }, -}); - -export const exampleSettings = () => ({ - settings: {}, -}); diff --git a/app/lib/server/startup/settings.js b/app/lib/server/startup/settings.js index 618e917331c9..63241e0b0bed 100644 --- a/app/lib/server/startup/settings.js +++ b/app/lib/server/startup/settings.js @@ -874,6 +874,8 @@ settings.addGroup('General', function() { type: 'boolean', public: true, }); + + // Deprecated setting this.add('Support_Cordova_App', false, { type: 'boolean', i18nDescription: 'Support_Cordova_App_Description', diff --git a/app/livechat/client/views/app/integrations/livechatIntegrationFacebook.html b/app/livechat/client/views/app/integrations/livechatIntegrationFacebook.html index f7ff03d6b089..6686dbde984c 100644 --- a/app/livechat/client/views/app/integrations/livechatIntegrationFacebook.html +++ b/app/livechat/client/views/app/integrations/livechatIntegrationFacebook.html @@ -4,10 +4,10 @@
{{#if enabled}} - - + + {{else}} - + {{#unless hasToken}}

{{_ "You_have_to_set_an_API_token_first_in_order_to_use_the_integration"}}

diff --git a/app/livechat/client/views/app/livechatAgents.html b/app/livechat/client/views/app/livechatAgents.html index 063de6b19c25..bb57a86497e9 100644 --- a/app/livechat/client/views/app/livechatAgents.html +++ b/app/livechat/client/views/app/livechatAgents.html @@ -62,7 +62,7 @@
-
{{> avatar username=username}}
+
{{> avatar username=username}}
{{name}} diff --git a/app/livechat/client/views/app/livechatManagers.html b/app/livechat/client/views/app/livechatManagers.html index ec1468cd13b0..d35e2d33be44 100644 --- a/app/livechat/client/views/app/livechatManagers.html +++ b/app/livechat/client/views/app/livechatManagers.html @@ -57,7 +57,7 @@
-
{{> avatar username=username}}
+
{{> avatar username=username}}
{{name}} diff --git a/app/livechat/client/views/app/livechatQueue.html b/app/livechat/client/views/app/livechatQueue.html index e666828d5c33..2a3f926611e1 100644 --- a/app/livechat/client/views/app/livechatQueue.html +++ b/app/livechat/client/views/app/livechatQueue.html @@ -84,7 +84,7 @@
-
{{> avatar username=user.username}}
+
{{> avatar username=user.username}}
{{user.username}}
diff --git a/app/livechat/client/views/app/tabbar/visitorEdit.html b/app/livechat/client/views/app/tabbar/visitorEdit.html index 306d1c310246..a83fcfd5e766 100644 --- a/app/livechat/client/views/app/tabbar/visitorEdit.html +++ b/app/livechat/client/views/app/tabbar/visitorEdit.html @@ -31,16 +31,18 @@

{{username}}

- {{#each visitorCustomFields}} -
- -
- {{/each}} + {{#if canViewCustomFields }} + {{#each visitorCustomFields}} +
+ +
+ {{/each}} + {{/if}} {{/with}} {{#with room}} @@ -91,17 +93,18 @@

{{_ "Conversation" }}

{{/each}}
- - {{#each roomCustomFields}} -
- -
- {{/each}} + {{#if canViewCustomFields }} + {{#each roomCustomFields}} +
+ +
+ {{/each}} + {{/if}} {{/with}} {{/if}} @@ -15,7 +15,7 @@
- +
{{/if}} @@ -35,7 +35,7 @@ {{> avatar username=initialsUsername }} {{#with service='initials'}}
- +
{{/with}}
@@ -43,11 +43,11 @@
-
{{_ "Select_file"}} +
{{_ "Select_file"}}
{{#with upload}} - + {{/with}}
@@ -57,7 +57,7 @@
- +
{{/with}} @@ -100,7 +100,7 @@ {{#if username.ready}}
- +
{{/if}}
diff --git a/app/ui-flextab/client/tabs/userInfo.html b/app/ui-flextab/client/tabs/userInfo.html index 69e6128cf614..69c85ecd4075 100644 --- a/app/ui-flextab/client/tabs/userInfo.html +++ b/app/ui-flextab/client/tabs/userInfo.html @@ -29,7 +29,7 @@

{{_ "User_Info"}}

- + {{#if username}}{{/if}} {{# userPresence uid=uid}}
diff --git a/app/ui-login/client/reset-password/resetPassword.html b/app/ui-login/client/reset-password/resetPassword.html index b1d6c4f3d8fb..549d1fafb753 100644 --- a/app/ui-login/client/reset-password/resetPassword.html +++ b/app/ui-login/client/reset-password/resetPassword.html @@ -23,7 +23,7 @@
- +
diff --git a/app/ui-master/.eslintrc b/app/ui-master/.eslintrc deleted file mode 100644 index 275f73194ad6..000000000000 --- a/app/ui-master/.eslintrc +++ /dev/null @@ -1,5 +0,0 @@ -{ - "globals": { - "DynamicCss": false - } -} \ No newline at end of file diff --git a/app/ui-master/client/main.html b/app/ui-master/client/main.html index fa1554c3c4b9..22cfc0b1d330 100644 --- a/app/ui-master/client/main.html +++ b/app/ui-master/client/main.html @@ -1,4 +1,4 @@ - +
@@ -45,7 +45,6 @@
{{> status}}
- {{> audioNotification }} {{/if}} {{/if}} {{/unless}} diff --git a/app/ui-master/client/main.js b/app/ui-master/client/main.js index 0a7e0753ecc8..e5580d61ea27 100644 --- a/app/ui-master/client/main.js +++ b/app/ui-master/client/main.js @@ -30,8 +30,6 @@ function customScriptsOnLogout() { } } -settings.collection.find({ _id: /theme-color-rc/i }, { fields: { value: 1 } }).observe({ changed: () => { DynamicCss.run(true, settings); } }); - callbacks.add('afterLogoutCleanUp', () => customScriptsOnLogout(), callbacks.priority.LOW, 'custom-script-on-logout'); Template.body.onRendered(function() { diff --git a/app/ui-master/server/inject.js b/app/ui-master/server/inject.js index 62b08f405849..5f0ac8fcaed3 100644 --- a/app/ui-master/server/inject.js +++ b/app/ui-master/server/inject.js @@ -35,7 +35,6 @@ Meteor.startup(() => { }); injectIntoHead('noreferrer', ''); - injectIntoHead('dynamic', ``); if (process.env.DISABLE_ANIMATION || process.env.TEST_MODE === 'true') { injectIntoHead('disable-animation', ` diff --git a/app/ui-message/client/message.html b/app/ui-message/client/message.html index b3951f4fa709..d8624209a8dd 100644 --- a/app/ui-message/client/message.html +++ b/app/ui-message/client/message.html @@ -34,7 +34,7 @@ {{getName}}{{#if showUsername}} @{{msg.u.username}}{{/if}} {{#if getStatus}} - + {{/if}} {{#each role in roleTags}} @@ -158,7 +158,7 @@
diff --git a/ee/app/livechat-enterprise/server/permissions.js b/ee/app/livechat-enterprise/server/permissions.js index ee3b286fe6a2..4659711921a5 100644 --- a/ee/app/livechat-enterprise/server/permissions.js +++ b/ee/app/livechat-enterprise/server/permissions.js @@ -34,6 +34,10 @@ export const createPermissions = () => { 'view-livechat-real-time-monitoring', 'view-livechat-officeHours', 'manage-livechat-agents', + 'view-livechat-room-closed-same-department', + 'view-livechat-room-closed-by-another-agent', + 'view-livechat-room-customfields', + 'edit-livechat-room-customfields', ]; diff --git a/imports/client/mimic-fn b/imports/client/mimic-fn deleted file mode 120000 index 6e14eb82385a..000000000000 --- a/imports/client/mimic-fn +++ /dev/null @@ -1 +0,0 @@ -../../node_modules/mimic-fn \ No newline at end of file diff --git a/imports/client/mimic-fn/index.js b/imports/client/mimic-fn/index.js new file mode 120000 index 000000000000..3e62681b7465 --- /dev/null +++ b/imports/client/mimic-fn/index.js @@ -0,0 +1 @@ +../../../node_modules/mem/node_modules/mimic-fn/index.js \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7166d2061ff9..89edc6a2f1f5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2810,11 +2810,6 @@ "uuid": "^3.2.1" }, "dependencies": { - "adm-zip": { - "version": "0.4.14", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.14.tgz", - "integrity": "sha512-/9aQCnQHF+0IiCl0qhXoK7qs//SwYE7zX8lsr/DNk1BRAHYxeLZPL4pguwK29gUEqasYQjqPtEpDRSWEkdHn9g==" - }, "typescript": { "version": "2.9.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", @@ -2879,9 +2874,9 @@ "integrity": "sha512-TVPEckSbzHr+Ix3h4OuEd5OyDVAVnviSQRqwYzAbfRvb4B9riZwqUlvdNKgRofy1og5ovRMZUL9CqduGbsdhsA==" }, "@rocket.chat/fuselage-ui-kit": { - "version": "0.6.3-dev.35", - "resolved": "https://registry.npmjs.org/@rocket.chat/fuselage-ui-kit/-/fuselage-ui-kit-0.6.3-dev.35.tgz", - "integrity": "sha512-E/C7voGjzfnp8WGqflOau/BtXSQa7Zaf2zc4cOXeudlagPLsG3K0uSU99ZiazKXZOR01h3QZM3Ikw5mEXTkeww==", + "version": "0.6.3-dev.39", + "resolved": "https://registry.npmjs.org/@rocket.chat/fuselage-ui-kit/-/fuselage-ui-kit-0.6.3-dev.39.tgz", + "integrity": "sha512-ll9lYOM2mEAsKtHiPdxDwVO2YGkarZMCLl7UK6yT71BFVuDY7hJXm14+aj+JBTKc9B2J0CFIo+MfO1cDuqYc+A==", "requires": { "@rocket.chat/ui-kit": "^0.8.0" }, @@ -7788,9 +7783,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001051", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001051.tgz", - "integrity": "sha512-sw8UUnTlRevawTMZKN7vpfwSjCBVoiMPlYd8oT2VwNylyPCBdMAUmLGUApnYYTtIm5JXsQegUAY7GPHqgfDzjw==", + "version": "1.0.30001054", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001054.tgz", + "integrity": "sha512-jiKlTI6Ur8Kjfj8z0muGrV6FscpRvefcQVPSuMuXnvRCfExU7zlVLNjmOz1TnurWgUrAY7MMmjyy+uTgIl1XHw==", "dev": true }, "chalk": { @@ -7820,9 +7815,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.3.428", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.428.tgz", - "integrity": "sha512-u3+5jEfgLKq/hGO96YfAoOAM1tgFnRDTCD5mLuev44tttcXix+INtVegAkmGzUcfDsnzkPt51XXurXZLLwXt0w==", + "version": "1.3.431", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.431.tgz", + "integrity": "sha512-2okqkXCIda7qDwjYhUFxPcQdZDIZZ/zBLDzVOif7WW/TSNfEhdT6SO07O1x/sFteEHX189Z//UwjbZKKCOn2Fg==", "dev": true }, "node-releases": { @@ -15831,28 +15826,28 @@ "dependencies": { "abbrev": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "resolved": false, "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", "dev": true, "optional": true }, "ansi-regex": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "resolved": false, "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "optional": true }, "aproba": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "resolved": false, "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", "dev": true, "optional": true }, "are-we-there-yet": { "version": "1.1.5", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "resolved": false, "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", "dev": true, "optional": true, @@ -15863,14 +15858,14 @@ }, "balanced-match": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "resolved": false, "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true, "optional": true }, "brace-expansion": { "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "resolved": false, "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "optional": true, @@ -15888,28 +15883,28 @@ }, "code-point-at": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "resolved": false, "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", "dev": true, "optional": true }, "concat-map": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "resolved": false, "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true, "optional": true }, "console-control-strings": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "resolved": false, "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", "dev": true, "optional": true }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": false, "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true, "optional": true @@ -15926,21 +15921,21 @@ }, "deep-extend": { "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "resolved": false, "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, "optional": true }, "delegates": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "resolved": false, "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true, "optional": true }, "detect-libc": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "resolved": false, "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=", "dev": true, "optional": true @@ -15957,14 +15952,14 @@ }, "fs.realpath": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "resolved": false, "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true, "optional": true }, "gauge": { "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "resolved": false, "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "dev": true, "optional": true, @@ -15996,14 +15991,14 @@ }, "has-unicode": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "resolved": false, "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", "dev": true, "optional": true }, "iconv-lite": { "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "resolved": false, "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "optional": true, @@ -16023,7 +16018,7 @@ }, "inflight": { "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "resolved": false, "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "optional": true, @@ -16041,14 +16036,14 @@ }, "ini": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "resolved": false, "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true, "optional": true }, "is-fullwidth-code-point": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "resolved": false, "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", "dev": true, "optional": true, @@ -16058,14 +16053,14 @@ }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": false, "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", "dev": true, "optional": true }, "minimatch": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "resolved": false, "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", "dev": true, "optional": true, @@ -16075,7 +16070,7 @@ }, "minimist": { "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "resolved": false, "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", "dev": true, "optional": true @@ -16103,7 +16098,7 @@ }, "mkdirp": { "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "resolved": false, "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", "dev": true, "optional": true, @@ -16158,7 +16153,7 @@ }, "nopt": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "resolved": false, "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", "dev": true, "optional": true, @@ -16187,7 +16182,7 @@ }, "npmlog": { "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "resolved": false, "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", "dev": true, "optional": true, @@ -16200,21 +16195,21 @@ }, "number-is-nan": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "resolved": false, "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", "dev": true, "optional": true }, "object-assign": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "resolved": false, "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", "dev": true, "optional": true }, "once": { "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "resolved": false, "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "optional": true, @@ -16224,21 +16219,21 @@ }, "os-homedir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "resolved": false, "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true, "optional": true }, "os-tmpdir": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "resolved": false, "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", "dev": true, "optional": true }, "osenv": { "version": "0.1.5", - "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "resolved": false, "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", "dev": true, "optional": true, @@ -16249,7 +16244,7 @@ }, "path-is-absolute": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "resolved": false, "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true, "optional": true @@ -16263,7 +16258,7 @@ }, "rc": { "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "resolved": false, "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", "dev": true, "optional": true, @@ -16276,7 +16271,7 @@ "dependencies": { "minimist": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "resolved": false, "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", "dev": true, "optional": true @@ -16285,7 +16280,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": false, "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "optional": true, @@ -16311,21 +16306,21 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "resolved": false, "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true, "optional": true }, "safer-buffer": { "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "resolved": false, "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true, "optional": true }, "sax": { "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "resolved": false, "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", "dev": true, "optional": true @@ -16339,21 +16334,21 @@ }, "set-blocking": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "resolved": false, "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true, "optional": true }, "signal-exit": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", + "resolved": false, "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", "dev": true, "optional": true }, "string-width": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "resolved": false, "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", "dev": true, "optional": true, @@ -16365,7 +16360,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": false, "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "optional": true, @@ -16375,7 +16370,7 @@ }, "strip-ansi": { "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "resolved": false, "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", "dev": true, "optional": true, @@ -16385,7 +16380,7 @@ }, "strip-json-comments": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "resolved": false, "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true, "optional": true @@ -16408,14 +16403,14 @@ }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": false, "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true, "optional": true }, "wide-align": { "version": "1.1.3", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "resolved": false, "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", "dev": true, "optional": true, @@ -16425,7 +16420,7 @@ }, "wrappy": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "resolved": false, "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true, "optional": true @@ -21459,7 +21454,7 @@ "dependencies": { "asn1.js": { "version": "4.10.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz", + "resolved": false, "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==", "requires": { "bn.js": "^4.0.0", @@ -21469,7 +21464,7 @@ }, "assert": { "version": "1.4.1", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", + "resolved": false, "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=", "requires": { "util": "0.10.3" @@ -21477,7 +21472,7 @@ "dependencies": { "util": { "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "resolved": false, "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", "requires": { "inherits": "2.0.1" @@ -21487,22 +21482,22 @@ }, "base64-js": { "version": "1.3.0", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.0.tgz", + "resolved": false, "integrity": "sha512-ccav/yGvoa80BQDljCxsmmQ3Xvx60/UpBIij5QN21W3wBi/hhIC9OoO+KLpu9IJTS9j4DRVJ3aDDF9cMSoa2lw==" }, "bn.js": { "version": "4.11.8", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz", + "resolved": false, "integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==" }, "brorand": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "resolved": false, "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" }, "browserify-aes": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "resolved": false, "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "requires": { "buffer-xor": "^1.0.3", @@ -21515,7 +21510,7 @@ }, "browserify-cipher": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "resolved": false, "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", "requires": { "browserify-aes": "^1.0.4", @@ -21525,7 +21520,7 @@ }, "browserify-des": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "resolved": false, "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", "requires": { "cipher-base": "^1.0.1", @@ -21536,7 +21531,7 @@ }, "browserify-rsa": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.0.1.tgz", + "resolved": false, "integrity": "sha1-IeCr+vbyApzy+vsTNWenAdQTVSQ=", "requires": { "bn.js": "^4.1.0", @@ -21545,7 +21540,7 @@ }, "browserify-sign": { "version": "4.0.4", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.0.4.tgz", + "resolved": false, "integrity": "sha1-qk62jl17ZYuqa/alfmMMvXqT0pg=", "requires": { "bn.js": "^4.1.1", @@ -21559,7 +21554,7 @@ }, "browserify-zlib": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", + "resolved": false, "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", "requires": { "pako": "~1.0.5" @@ -21567,7 +21562,7 @@ }, "buffer": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.2.1.tgz", + "resolved": false, "integrity": "sha512-c+Ko0loDaFfuPWiL02ls9Xd3GO3cPVmUobQ6t3rXNUk304u6hGq+8N/kFi+QEIKhzK3uwolVhLzszmfLmMLnqg==", "requires": { "base64-js": "^1.0.2", @@ -21576,17 +21571,17 @@ }, "buffer-xor": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "resolved": false, "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=" }, "builtin-status-codes": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "resolved": false, "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=" }, "cipher-base": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "resolved": false, "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "requires": { "inherits": "^2.0.1", @@ -21595,7 +21590,7 @@ }, "console-browserify": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", + "resolved": false, "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", "requires": { "date-now": "^0.1.4" @@ -21603,17 +21598,17 @@ }, "constants-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", + "resolved": false, "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=" }, "core-util-is": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "resolved": false, "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "create-ecdh": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.3.tgz", + "resolved": false, "integrity": "sha512-GbEHQPMOswGpKXM9kCWVrremUcBmjteUaQ01T9rkKCPDXfUHX0IoP9LpHYo2NPFampa4e+/pFDc3jQdxrxQLaw==", "requires": { "bn.js": "^4.1.0", @@ -21622,7 +21617,7 @@ }, "create-hash": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "resolved": false, "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "requires": { "cipher-base": "^1.0.1", @@ -21634,7 +21629,7 @@ }, "create-hmac": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "resolved": false, "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "requires": { "cipher-base": "^1.0.3", @@ -21647,7 +21642,7 @@ }, "crypto-browserify": { "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "resolved": false, "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", "requires": { "browserify-cipher": "^1.0.0", @@ -21665,12 +21660,12 @@ }, "date-now": { "version": "0.1.4", - "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", + "resolved": false, "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" }, "des.js": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.0.tgz", + "resolved": false, "integrity": "sha1-wHTS4qpqipoH29YfmhXCzYPsjsw=", "requires": { "inherits": "^2.0.1", @@ -21679,7 +21674,7 @@ }, "diffie-hellman": { "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "resolved": false, "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", "requires": { "bn.js": "^4.1.0", @@ -21689,12 +21684,12 @@ }, "domain-browser": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "resolved": false, "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==" }, "elliptic": { "version": "6.4.1", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.1.tgz", + "resolved": false, "integrity": "sha512-BsXLz5sqX8OHcsh7CqBMztyXARmGQ3LWPtGjJi6DiJHq5C/qvi9P3OqgswKSDftbu8+IoI/QDTAm2fFnQ9SZSQ==", "requires": { "bn.js": "^4.4.0", @@ -21708,12 +21703,12 @@ }, "events": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", + "resolved": false, "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==" }, "evp_bytestokey": { "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "resolved": false, "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", "requires": { "md5.js": "^1.3.4", @@ -21722,7 +21717,7 @@ }, "hash-base": { "version": "3.0.4", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz", + "resolved": false, "integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=", "requires": { "inherits": "^2.0.1", @@ -21731,7 +21726,7 @@ }, "hash.js": { "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "resolved": false, "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", "requires": { "inherits": "^2.0.3", @@ -21740,14 +21735,14 @@ "dependencies": { "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "resolved": false, "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, "hmac-drbg": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "resolved": false, "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", "requires": { "hash.js": "^1.0.3", @@ -21757,27 +21752,27 @@ }, "https-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "resolved": false, "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=" }, "ieee754": { "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "resolved": false, "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" }, "inherits": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "resolved": false, "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=" }, "isarray": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "resolved": false, "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" }, "md5.js": { "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "resolved": false, "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "requires": { "hash-base": "^3.0.0", @@ -21787,7 +21782,7 @@ }, "miller-rabin": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "resolved": false, "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", "requires": { "bn.js": "^4.0.0", @@ -21796,27 +21791,27 @@ }, "minimalistic-assert": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "resolved": false, "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==" }, "minimalistic-crypto-utils": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "resolved": false, "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=" }, "os-browserify": { "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", + "resolved": false, "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" }, "pako": { "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "resolved": false, "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==" }, "parse-asn1": { "version": "5.1.4", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.4.tgz", + "resolved": false, "integrity": "sha512-Qs5duJcuvNExRfFZ99HDD3z4mAi3r9Wl/FOjEOijlxwCZs7E7mW2vjTpgQ4J8LpTF8x5v+1Vn5UQFejmWT11aw==", "requires": { "asn1.js": "^4.0.0", @@ -21829,12 +21824,12 @@ }, "path-browserify": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.0.tgz", + "resolved": false, "integrity": "sha512-Hkavx/nY4/plImrZPHRk2CL9vpOymZLgEbMNX1U0bjcBL7QN9wODxyx0yaMZURSQaUtSEvDrfAvxa9oPb0at9g==" }, "pbkdf2": { "version": "3.0.17", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.17.tgz", + "resolved": false, "integrity": "sha512-U/il5MsrZp7mGg3mSQfn742na2T+1/vHDCG5/iTI3X9MKUuYUZVLQhyRsg06mCgDBTd57TxzgZt7P+fYfjRLtA==", "requires": { "create-hash": "^1.1.2", @@ -21846,17 +21841,17 @@ }, "process": { "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "resolved": false, "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" }, "process-nextick-args": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz", + "resolved": false, "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw==" }, "public-encrypt": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "resolved": false, "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", "requires": { "bn.js": "^4.1.0", @@ -21869,22 +21864,22 @@ }, "punycode": { "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "resolved": false, "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" }, "querystring": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "resolved": false, "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=" }, "querystring-es3": { "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "resolved": false, "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, "randombytes": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "resolved": false, "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "requires": { "safe-buffer": "^5.1.0" @@ -21892,7 +21887,7 @@ }, "randomfill": { "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "resolved": false, "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", "requires": { "randombytes": "^2.0.5", @@ -21901,7 +21896,7 @@ }, "readable-stream": { "version": "3.3.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz", + "resolved": false, "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==", "requires": { "inherits": "^2.0.3", @@ -21911,14 +21906,14 @@ "dependencies": { "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "resolved": false, "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, "ripemd160": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "resolved": false, "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "requires": { "hash-base": "^3.0.0", @@ -21927,17 +21922,17 @@ }, "safe-buffer": { "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "resolved": false, "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "setimmediate": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "resolved": false, "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" }, "sha.js": { "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "resolved": false, "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", "requires": { "inherits": "^2.0.1", @@ -21946,7 +21941,7 @@ }, "stream-browserify": { "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "resolved": false, "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", "requires": { "inherits": "~2.0.1", @@ -21955,7 +21950,7 @@ "dependencies": { "readable-stream": { "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": false, "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "requires": { "core-util-is": "~1.0.0", @@ -21969,14 +21964,14 @@ "dependencies": { "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "resolved": false, "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, "string_decoder": { "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": false, "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "requires": { "safe-buffer": "~5.1.0" @@ -21986,7 +21981,7 @@ }, "stream-http": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-3.0.0.tgz", + "resolved": false, "integrity": "sha512-JELJfd+btL9GHtxU3+XXhg9NLYrKFnhybfvRuDghtyVkOFydz3PKNT1df07AMr88qW03WHF+FSV0PySpXignCA==", "requires": { "builtin-status-codes": "^3.0.0", @@ -21997,7 +21992,7 @@ }, "string_decoder": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "resolved": false, "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", "requires": { "safe-buffer": "~5.1.0" @@ -22005,7 +22000,7 @@ }, "timers-browserify": { "version": "2.0.10", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.10.tgz", + "resolved": false, "integrity": "sha512-YvC1SV1XdOUaL6gx5CoGroT3Gu49pK9+TZ38ErPldOWW4j49GI1HKs9DV+KGq/w6y+LZ72W1c8cKz2vzY+qpzg==", "requires": { "setimmediate": "^1.0.4" @@ -22013,12 +22008,12 @@ }, "tty-browserify": { "version": "0.0.1", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.1.tgz", + "resolved": false, "integrity": "sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==" }, "url": { "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "resolved": false, "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", "requires": { "punycode": "1.3.2", @@ -22027,14 +22022,14 @@ "dependencies": { "punycode": { "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "resolved": false, "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=" } } }, "util": { "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "resolved": false, "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", "requires": { "inherits": "2.0.3" @@ -22042,24 +22037,24 @@ "dependencies": { "inherits": { "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "resolved": false, "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" } } }, "util-deprecate": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "resolved": false, "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" }, "vm-browserify": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.0.tgz", + "resolved": false, "integrity": "sha512-iq+S7vZJE60yejDYM0ek6zg308+UZsdtPExWP9VZoCFCz1zkJoXFnAX7aZfd/ZwrkidzdUZL0C/ryW+JwAiIGw==" }, "xtend": { "version": "4.0.1", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz", + "resolved": false, "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=" } } diff --git a/package.json b/package.json index ed4b373afb06..c5783cac5b30 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "@rocket.chat/fuselage": "^0.6.3-dev.39", "@rocket.chat/fuselage-hooks": "^0.6.3-dev.35", "@rocket.chat/fuselage-polyfills": "^0.6.3-dev.23", - "@rocket.chat/fuselage-ui-kit": "^0.6.3-dev.35", + "@rocket.chat/fuselage-ui-kit": "^0.6.3-dev.39", "@rocket.chat/icons": "^0.6.3-dev.23", "@rocket.chat/ui-kit": "^0.6.3-dev.23", "@slack/client": "^4.8.0", @@ -253,9 +253,10 @@ } }, "houston": { - "metadata": ".scripts/houstonMetadata.js", + "minTag": "0.55.0-rc.0", "updateFiles": [ "package.json", + "package-lock.json", ".circleci/snap.sh", ".circleci/update-releases.sh", ".docker/Dockerfile", diff --git a/packages/rocketchat-i18n/i18n/ca.i18n.json b/packages/rocketchat-i18n/i18n/ca.i18n.json index 5f5528d5c9bd..0bac88069909 100644 --- a/packages/rocketchat-i18n/i18n/ca.i18n.json +++ b/packages/rocketchat-i18n/i18n/ca.i18n.json @@ -634,7 +634,6 @@ "Closed_by_visitor": "Tancat pel visitant", "Closing_chat": "Tancant xat", "Cloud": "Cloud", - "Cloud_connect": "Connexió Rocket.Chat Cloud ", "Cloud_connect_support": "Si encara no heu rebut cap correu electrònic de registre, assegureu-vos que el vostre correu electrònic s’ha actualitzat anteriorment. Si encara teniu problemes, podeu posar-vos en contacte amb l’assistència a", "Cloud_console": "Cloud Console", "Cloud_what_is_it": "Què és això?", @@ -652,9 +651,9 @@ "Cloud_manually_input_token": "Introduïu manualment la fitxa rebuda al correu electrònic de registre de Cloud.", "Cloud_registration_required": "Cal registrar-se", "Cloud_registration_required_description": "Sembla que durant la configuració no heu triat registrar l’espai de treball.", - "Cloud_registration_requried_link_text": "Feu clic aquí per registrar el vostre espai de treball.", + "Cloud_registration_required_link_text": "Feu clic aquí per registrar el vostre espai de treball.", "Cloud_error_in_authenticating": "S'ha rebut un error en autenticar-se", - "Cloud_error_code": "Codi:", + "Cloud_error_code": "Codi: __errorCode__", "Cloud_status_page_description": "Si un determinat servei Cloud té problemes, podeu comprovar els problemes coneguts a la nostra pàgina d’estat.", "Cloud_troubleshooting": "Resolució de problemes", "Collaborative": "Col·laboratiu", @@ -2996,4 +2995,4 @@ "Your_push_was_sent_to_s_devices": "La notificació push s'ha enviat a %s dispositius", "Your_server_link": "Enllaç del servidor", "Your_workspace_is_ready": "El vostre espai de treball està a punt per utilitzar 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/cs.i18n.json b/packages/rocketchat-i18n/i18n/cs.i18n.json index 6d4c48da78ff..d6a2885c56f7 100644 --- a/packages/rocketchat-i18n/i18n/cs.i18n.json +++ b/packages/rocketchat-i18n/i18n/cs.i18n.json @@ -690,12 +690,10 @@ "Closing_chat": "Uzavření místnosti", "Cloud": "Cloud", "Cloud_Register_manually": "Registrovat ručně", - "Cloud_click_here": "Po zkopírování textu přejděte do cloudové konzole. [Klikněte zde]()", "Cloud_register_offline_finish_helper": "Po dokončení procesu registrace v cloudové konzoli byste měli dostat nějaký text. Pro dokončení registrace jej vložte sem.", "Cloud_register_offline_helper": "Pracovní prostory lze ručně zaregistrovat, pokud je k nim omezen síťový přístup. Zkopírujte níže uvedený text a dokončete proces pomocí naší cloudové konzole.", "Cloud_register_success": "Váš pracovní prostor byl úspěšně zaregistrován!", "Cloud_register_error": "Při zpracování vašeho požadavku došlo k chybě. Prosím zkuste to znovu později.", - "Cloud_connect": "Připojit k Rocket.Chat Cloud", "Cloud_connect_support": "Pokud jste ještě neobdrželi registrační e-mail, ujistěte se, že váš e-mail je aktualizován výše. Pokud problémy přetrvávají, můžete kontaktovat podporu na adrese", "Cloud_console": "Cloud přehled", "Cloud_Info": "Informace o Cloudu", @@ -714,9 +712,9 @@ "Cloud_manually_input_token": "Ručně zadejte token přijatý z e-mailu pro registraci do Cloudu.", "Cloud_registration_required": "Povinná registrace", "Cloud_registration_required_description": "Vypadá to, že jste se nevybral/a zaregistraci svého pracovního prostoru během instalace .", - "Cloud_registration_requried_link_text": "Klikněte zde pro registraci svého pracovního prostoru.", + "Cloud_registration_required_link_text": "Klikněte zde pro registraci svého pracovního prostoru.", "Cloud_error_in_authenticating": "Při ověřování došlo k chybě", - "Cloud_error_code": "Kód:", + "Cloud_error_code": "Kód: __errorCode__", "Cloud_status_page_description": "Pokud má konkrétní cloudová služba problémy, můžete zkontrolovat známé problémy na naší stavové stránce na adrese", "Cloud_Service_Agree_PrivacyTerms": "Souhlas s podmínkami soukromí služby cloud", "Cloud_troubleshooting": "Odstraňování chyb", @@ -3694,4 +3692,4 @@ "Your_server_link": "Odkaz na Váš server", "Your_temporary_password_is_password": "Vaše dočasné heslo je [password].", "Your_workspace_is_ready": "Váš prostředí je připraveno k použití 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/da.i18n.json b/packages/rocketchat-i18n/i18n/da.i18n.json index 8e2181aa273e..a89bc5c81dd4 100644 --- a/packages/rocketchat-i18n/i18n/da.i18n.json +++ b/packages/rocketchat-i18n/i18n/da.i18n.json @@ -681,7 +681,6 @@ "Closed_by_visitor": "Lukket af besøgende", "Closing_chat": "Lukning af chat", "Cloud": "Cloud", - "Cloud_connect": "Rocket.Chat Cloud-forbindelse", "Cloud_what_is_it": "Hvad er det her?", "Cloud_what_is_it_description": "Rocket.Chat Cloud-forbindelse lader dig forbinde en Rocket.Chat-instans, som du selv er vært for, til vores sky. Hvis du gør det, kan du administrere dine licenser, regninger og support i Rocket.Chat Cloud.", "Cloud_login_to_cloud": "Log ind i Rocket.Chat Cloud", @@ -690,9 +689,9 @@ "Cloud_manually_input_token": "Indtast manuelt den token, der fulgte med Cloud-tilmeldingen.", "Cloud_registration_required": "Tilmelding påkrævet", "Cloud_registration_required_description": "Under konfigurationen valgte du tilsyneladende ikke at tilmelde din instans.", - "Cloud_registration_requried_link_text": "Tryk her for at tilmelde din instans.", + "Cloud_registration_required_link_text": "Tryk her for at tilmelde din instans.", "Cloud_error_in_authenticating": "Fejl i forbindelse med godkendelse", - "Cloud_error_code": "Kode:", + "Cloud_error_code": "Kode: __errorCode__", "Collaborative": "Samarbejde", "Collapse_Embedded_Media_By_Default": "Skjul embedded media som standard", "color": "Farve", diff --git a/packages/rocketchat-i18n/i18n/de-IN.i18n.json b/packages/rocketchat-i18n/i18n/de-IN.i18n.json index ee0713b989f0..c9c831324984 100644 --- a/packages/rocketchat-i18n/i18n/de-IN.i18n.json +++ b/packages/rocketchat-i18n/i18n/de-IN.i18n.json @@ -609,7 +609,6 @@ "Closed_by_visitor": "Durch Besucher geschlossen", "Closing_chat": "Schließe Chat", "Cloud": "Cloud", - "Cloud_connect": "Rocket.Chat-Cloud-Connector", "Cloud_connect_support": "Wenn Du noch immer keine Registrierungs-E-Mail erhalten haben, überprüfe bitte die o. g. Adresse. Wenn es dann immer noch Probleme gibt, erreichst Du unseren Support unter", "Cloud_console": "Cloud Console", "Cloud_what_is_it": "Was ist das?", @@ -627,9 +626,9 @@ "Cloud_manually_input_token": "Gib das von der Cloud-Registrierungs-E-Mail erhaltene Token manuell ein.", "Cloud_registration_required": "Registrierung erforderlich", "Cloud_registration_required_description": "Sieht aus, als hättest Du Dich während des Setups nicht für die Registrierung Deines Arbeitsbereichs entschieden.", - "Cloud_registration_requried_link_text": "Klicke hier, um Deinen Arbeitsbereich zu registrieren.", + "Cloud_registration_required_link_text": "Klicke hier, um Deinen Arbeitsbereich zu registrieren.", "Cloud_error_in_authenticating": "Fehler beim Authentifizieren", - "Cloud_error_code": "Code:", + "Cloud_error_code": "Code: __errorCode__", "Cloud_status_page_description": "Wenn ein bestimmter Cloud-Dienste Probleme hat, lohnt sich ein Blick auf die Status-Seite der Cloud-Dienste unter", "Cloud_troubleshooting": "Troubleshooting", "Collaborative": "Kollaborativ", diff --git a/packages/rocketchat-i18n/i18n/de.i18n.json b/packages/rocketchat-i18n/i18n/de.i18n.json index 196da04d0b28..6de29f4bbc03 100644 --- a/packages/rocketchat-i18n/i18n/de.i18n.json +++ b/packages/rocketchat-i18n/i18n/de.i18n.json @@ -660,12 +660,10 @@ "Closing_chat": "Schließe Chat", "Cloud": "Cloud", "Cloud_Register_manually": "Manuell registrieren", - "Cloud_click_here": "Wechseln Sie nach dem Kopieren des Texts zur Cloud-Konsole. [Klicke hier]()", "Cloud_register_offline_finish_helper": "Nach Abschluss des Registrierungsvorgangs in der Cloud-Konsole, sollte ein Text angezeigt werden. Bitte hier einfügen, um die Registrierung abzuschließen.", "Cloud_register_offline_helper": "Arbeitsbereiche können manuell registriert werden, wenn ein Airgap besteht oder der Netzwerkzugriff eingeschränkt ist. Kopieren Sie den folgenden Text und rufen Sie unsere Cloud-Konsole auf, um den Vorgang abzuschließen.", "Cloud_register_success": "Ihr Arbeitsbereich wurde erfolgreich registriert!", "Cloud_register_error": "Beim Verarbeiten Ihrer Anfrage ist ein Fehler aufgetreten. Bitte versuchen Sie es später noch einmal.", - "Cloud_connect": "Rocket.Chat Cloud Connect", "Cloud_connect_support": "Wenn Sie noch immer keine Registrierungs-E-Mail erhalten haben, überprüfen Sie bitte die o. g. Adresse. Wenn es dann immer noch Probleme gibt, erreichen Sie unseren Support unter", "Cloud_console": "Cloud Console", "Cloud_Info": "Cloud-Informationen", @@ -684,9 +682,9 @@ "Cloud_manually_input_token": "Geben Sie das von der Cloud-Registrierungs-E-Mail erhaltene Token manuell ein.", "Cloud_registration_required": "Registrierung erforderlich", "Cloud_registration_required_description": "Sieht aus, als hätten Sie sich während des Setups nicht für die Registrierung Ihres Arbeitsbereichs entschieden.", - "Cloud_registration_requried_link_text": "Klicken Sie hier, um Ihren Arbeitsbereich zu registrieren.", + "Cloud_registration_required_link_text": "Klicken Sie hier, um Ihren Arbeitsbereich zu registrieren.", "Cloud_error_in_authenticating": "Fehler beim Authentifizieren", - "Cloud_error_code": "Code:", + "Cloud_error_code": "Code: __errorCode__", "Cloud_status_page_description": "Wenn ein bestimmter Cloud-Dienste Probleme hat, lohnt sich ein Blick auf die Status-Seite der Cloud-Dienste unter", "Cloud_Service_Agree_PrivacyTerms": "Cloud-Dienst-Datenschutzbestimmungen zustimmen", "Cloud_troubleshooting": "Troubleshooting", @@ -3564,4 +3562,4 @@ "Your_server_link": "Ihre Serververbindung", "Your_temporary_password_is_password": "Ihr temporäres Passwort lautet [password].", "Your_workspace_is_ready": "Ihr Arbeitsbereich ist einsatzbereit 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 8cf17e9333ad..ffc3965f6d9c 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -233,6 +233,7 @@ "MAU_value": "MAU __value__", "Activity": "Activity", "Add": "Add", + "Add_custom_emoji": "Add custom emoji", "add-oauth-service": "Add Oauth Service", "add-oauth-service_description": "Permission to add a new Oauth service", "add-user": "Add User", @@ -387,6 +388,7 @@ "App_user_not_allowed_to_login": "App users are not allowed to log in directly.", "Appearance": "Appearance", "Application_added": "Application added", + "Application_delete_warning": "You will not be able to recover this Application!", "Application_Name": "Application Name", "Application_updated": "Application updated", "Apply": "Apply", @@ -409,9 +411,13 @@ "Apps_Marketplace_Login_Required_Title": "Marketplace Login Required", "Apps_Marketplace_Login_Required_Description": "Purchasing apps from the Rocket.Chat Marketplace requires registering your workspace and logging in.", "Apps_Marketplace_pricingPlan_monthly": "__price__ / month", + "Apps_Marketplace_pricingPlan_startingAt_monthly": "starting at __price__ / month", "Apps_Marketplace_pricingPlan_monthly_perUser": "__price__ / month per user", + "Apps_Marketplace_pricingPlan_startingAt_monthly_perUser": "starting at __price__ / month per user", "Apps_Marketplace_pricingPlan_yearly": "__price__ / year", + "Apps_Marketplace_pricingPlan_startingAt_yearly": "starting at __price__ / year", "Apps_Marketplace_pricingPlan_yearly_perUser": "__price__ / year per user", + "Apps_Marketplace_pricingPlan_startingAt_yearly_perUser": "starting at __price__ / year per user", "Apps_Settings": "App's Settings", "Apps_User_Already_Exists": "The username \"__username__\" is already being used. Rename or remove the user using it to install this App", "Apps_WhatIsIt": "Apps: What Are They?", @@ -700,12 +706,11 @@ "Closing_chat": "Closing chat", "Cloud": "Cloud", "Cloud_Register_manually": "Register Manually", - "Cloud_click_here": "After copy the text, go to cloud console. [Click here]()", + "Cloud_click_here": "After copy the text, go to [cloud console (click here)](__cloudConsoleUrl__).", "Cloud_register_offline_finish_helper": "After completing the registration process in the Cloud Console you should be presented with some text. Please paste it here to finish the registration.", "Cloud_register_offline_helper": "Workspaces can be manually registered if airgapped or network access is restricted. Copy the text below and go to our Cloud Console to complete the process.", "Cloud_register_success": "Your workspace has been successfully registered!", "Cloud_register_error": "There has been an error trying to process your request. Please try again later.", - "Cloud_connect": "Rocket.Chat Cloud Connect", "Cloud_connect_support": "If you still haven't received a registration email please make sure your email is updated above. If you still have issues you can contact support at", "Cloud_console": "Cloud Console", "Cloud_Info": "Cloud Info", @@ -724,9 +729,9 @@ "Cloud_manually_input_token": "Manually enter the token received from the Cloud Registration Email.", "Cloud_registration_required": "Registration Required", "Cloud_registration_required_description": "Looks like during setup you didn't chose to register your workspace.", - "Cloud_registration_requried_link_text": "Click here to register your workspace.", + "Cloud_registration_required_link_text": "Click here to register your workspace.", "Cloud_error_in_authenticating": "Error received while authenticating", - "Cloud_error_code": "Code: ", + "Cloud_error_code": "Code: __errorCode__", "Cloud_status_page_description": "If a particular Cloud Service is having issues you can check for known issues on our status page at", "Cloud_Service_Agree_PrivacyTerms": "Cloud Service Agree PrivacyTerms", "Cloud_troubleshooting": "Troubleshooting", @@ -1033,6 +1038,8 @@ "Create_unique_rules_for_this_channel": "Create unique rules for this channel", "Created": "Created", "Created_at": "Created at", + "Created_by": "Created by", + "Created_as": "Created as", "Created_at_s_by_s": "Created at %s by %s", "Created_at_s_by_s_triggered_by_s": "Created at %s by %s triggered by %s", "CRM_Integration": "CRM Integration", @@ -1069,6 +1076,7 @@ "Custom_Script_On_Logout_Description": "Custom Script that will run on execute logout flow ONLY", "Custom_Sound_Add": "Add Custom Sound", "Custom_Sound_Delete_Warning": "Deleting a sound cannot be undone.", + "Custom_Sound_Edit": "Edit Custom Sound", "Custom_Sound_Error_Invalid_Sound": "Invalid sound", "Custom_Sound_Error_Name_Already_In_Use": "The custom sound name is already in use.", "Custom_Sound_Has_Been_Deleted": "The custom sound has been deleted.", @@ -1467,6 +1475,7 @@ "Everyone_can_access_this_channel": "Everyone can access this channel", "Exact": "Exact", "Example_s": "Example: %s", + "Example_payload": "Example payload", "Exclude_Botnames": "Exclude Bots", "Exclude_Botnames_Description": "Do not propagate messages from bots whose name matches the regular expression above. If left empty, all messages from bots will be propagated.", "Exclude_pinned": "Exclude pinned messages", @@ -1839,6 +1848,8 @@ "Integration_Incoming_WebHook": "Incoming WebHook Integration", "Integration_New": "New Integration", "Integration_Outgoing_WebHook": "Outgoing WebHook Integration", + "Integration_Delete_Warning": "Deleting an Integrations cannot be undone.", + "Webhook_Details": "WebHook Details", "Integration_Outgoing_WebHook_History": "Outgoing WebHook Integration History", "Integration_Outgoing_WebHook_History_Data_Passed_To_Trigger": "Data Passed to Integration", "Integration_Outgoing_WebHook_History_Data_Passed_To_URL": "Data Passed to URL", @@ -2685,6 +2696,7 @@ "post-readonly": "Post ReadOnly", "post-readonly_description": "Permission to post a message in a read-only channel", "Post_as": "Post as", + "Post_to": "Post to", "Post_to_Channel": "Post to Channel", "Post_to_s_as_s": "Post to %s as %s", "Preferences": "Preferences", @@ -2833,6 +2845,7 @@ "Removed_User": "Removed User", "Replied_on": "Replied on", "Reply": "Reply", + "Replay": "Replay", "reply_counter": "__counter__ reply", "reply_counter_plural": "__counter__ replies", "Replies": "Replies", @@ -2858,6 +2871,9 @@ "Reset_password": "Reset password", "Reset_section_settings": "Reset Section Settings", "Reset_Connection": "Reset Connection", + "Responding": "Responding", + "Response_description_pre": "If the handler wishes to post a response back into the channel, the following JSON should be returned as the body of the response:", + "Response_description_post": "Empty bodies or bodies with an empty text property will simply be ignored. Non-200 responses will be retried a reasonable number of times. A response will be posted using the alias and avatar specified above. You can override these informations as in the example above.", "Restart": "Restart", "Restart_the_server": "Restart the server", "Retail": "Retail", @@ -3003,6 +3019,7 @@ "Search_by_username": "Search by username", "Search_Channels": "Search Channels", "Search_current_provider_not_active": "Current Search Provider is not active", + "Search_Integrations": "Search Integrations", "Search_message_search_failed": "Search request failed", "Search_Messages": "Search Messages", "Search_Page_Size": "Page Size", @@ -3056,6 +3073,7 @@ "Sending": "Sending...", "Sent_an_attachment": "Sent an attachment", "Sent_from": "Sent from", + "Separate_multiple_words_with_commas": "Separate multiple words with commas", "Served_By": "Served By", "Server_File_Path": "Server File Path", "Server_Folder_Path": "Server Folder Path", @@ -3654,6 +3672,8 @@ "view-l-room": "View Omnichannel Rooms", "view-l-room_description": "Permission to view Omnichannel rooms", "view-livechat-analytics": "View Omnichannel Analytics", + "view-livechat-room-closed-by-another-agent": "View Omnichannel Rooms closed by another agent", + "view-livechat-room-closed-same-department": "View Omnichannel Rooms closed by another agent in the same department", "view-livechat-departments": "View Omnichannel Departments", "view-livechat-manager": "View Omnichannel Manager", "view-livechat-manager_description": "Permission to view other Omnichannel managers", @@ -3726,8 +3746,10 @@ "Welcome_to_the": "Welcome to the", "Where_are_the_messages_being_sent?": "Where are the messages being sent?", "When_is_the_chat_busier?": "When is the chat busier?", + "When_a_line_starts_with_one_of_there_words_post_to_the_URLs_below": "When a line starts with one of these words, post to the URL(s) below", "Why_do_you_want_to_report_question_mark": "Why do you want to report?", "will_be_able_to": "will be able to", + "Will_be_available_here_after_saving": "Will be available here after saving.", "Worldwide": "Worldwide", "Would_you_like_to_return_the_inquiry": "Would you like to return the inquiry?", "Yes": "Yes", diff --git a/packages/rocketchat-i18n/i18n/es.i18n.json b/packages/rocketchat-i18n/i18n/es.i18n.json index 397df04e8260..ab29e482610c 100644 --- a/packages/rocketchat-i18n/i18n/es.i18n.json +++ b/packages/rocketchat-i18n/i18n/es.i18n.json @@ -685,7 +685,6 @@ "Closed_by_visitor": "Cerrado por el visitante", "Closing_chat": "Cerrando chat", "Cloud_Register_manually": "Registrar manualmente", - "Cloud_click_here": "Después de copiar el texto, ve a la consola Cloud. [Haga clic aquí]()", "Cloud_register_offline_finish_helper": "Después de completar el proceso de registro en la Cloud Console se le presentará un texto. Por favor, pégalo aquí para terminar el registro.", "Cloud_register_offline_helper": "Los espacios de trabajo pueden registrarse manualmente si el acceso a la red está restringido. Copia el texto de abajo y ve a nuestra Cloud Console para completar el proceso.", "Cloud_register_success": "¡Su espacio de trabajo ha sido registrado correctamente!", @@ -706,9 +705,9 @@ "Cloud_manually_input_token": "Introduzca manualmente el token recibido en el correo electrónico de registro en la nube.", "Cloud_registration_required": "Se requiere registro", "Cloud_registration_required_description": "Parece que durante la configuración no eligió registrar su espacio de trabajo.", - "Cloud_registration_requried_link_text": "Haga clic aquí para registrar su espacio de trabajo.", + "Cloud_registration_required_link_text": "Haga clic aquí para registrar su espacio de trabajo.", "Cloud_error_in_authenticating": "Error durante la autentificación", - "Cloud_error_code": "Código:", + "Cloud_error_code": "Código: __errorCode__", "Cloud_status_page_description": "Si está teniendo problemas con un servicio en particular de la nube, puede comprobar los problemas conocidos en nuestra página de estado en", "Cloud_Service_Agree_PrivacyTerms": "Acuerdos y términos de privacidad del servicio en la nube", "Cloud_troubleshooting": "Solución de problemas", @@ -3361,4 +3360,4 @@ "Your_push_was_sent_to_s_devices": "Su push fue enviado a los dispositivos %s", "Your_server_link": "Su enlace de servidor", "Your_workspace_is_ready": "Su espacio de trabajo está listo para usar 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/fa.i18n.json b/packages/rocketchat-i18n/i18n/fa.i18n.json index a1db2d28b55e..56e0c9601bfc 100644 --- a/packages/rocketchat-i18n/i18n/fa.i18n.json +++ b/packages/rocketchat-i18n/i18n/fa.i18n.json @@ -661,12 +661,10 @@ "Closing_chat": "در حال بستن چت", "Cloud": "ابر", "Cloud_Register_manually": "ثبت دستی", - "Cloud_click_here": "پس از کپی کردن متن ، به کنسول ابری بروید. [اینجا کلیک کنید]()", "Cloud_register_offline_finish_helper": "پس از اتمام مراحل ثبت نام در بسترCloud ، باید متنی برای شما ارائه شود. لطفاً برای پایان ثبت نام آن را در اینجا جایگذاری کنید.", "Cloud_register_offline_helper": "در صورت محدود بودن دسترسی به شبکه ، می توان مکان های کاری را به صورت دستی ثبت کرد. متن را کپی کنید و برای تکمیل مراحل به کنسول Cloud ما بروید.", "Cloud_register_success": "فضای کاری شما با موفقیت ثبت شده است!", "Cloud_register_error": "هنگام پردازش درخواست شما خطایی رخ داده است. لطفا بعدا دوباره امتحان کنید.", - "Cloud_connect": "اتصال Roket.Chat Cloud", "Cloud_connect_support": "اگر هنوز ایمیل ثبت نام دریافت نکردید ، لطفاً اطمینان حاصل کنید که ایمیل شما در بالا به روز شده است. اگر هنوز مشکل دارید می توانید با پشتیبانی تماس بگیرید", "Cloud_console": "کنسول Cloud", "Cloud_Info": "اطلاعات Cloud", @@ -684,9 +682,9 @@ "Cloud_manually_input_token": "نشانه دریافت شده از ایمیل ثبت نام Cloud را به صورت دستی وارد کنید.", "Cloud_registration_required": "نیاز به ثبت نام", "Cloud_registration_required_description": "به نظر می رسد در هنگام راه اندازی شما تصمیم به ثبت نام فضای کاری خود ندارید.", - "Cloud_registration_requried_link_text": "برای ثبت فضای کاری خود اینجا را کلیک کنید.", + "Cloud_registration_required_link_text": "برای ثبت فضای کاری خود اینجا را کلیک کنید.", "Cloud_error_in_authenticating": "هنگام تأیید اعتبار ، خطایی رخ داده", - "Cloud_error_code": "کد:", + "Cloud_error_code": "کد: __errorCode__", "Cloud_status_page_description": "اگر سرویس ویژه Cloud مشکلی دارد ، می توانید موارد شناخته شده را در صفحه وضعیت ما در اینجا بررسی کنید", "Cloud_Service_Agree_PrivacyTerms": "سرویس ابر با حریم خصوصی موافقت می کند", "Cloud_troubleshooting": "عیب یابی", @@ -3057,4 +3055,4 @@ "Your_push_was_sent_to_s_devices": "فشار خود را به دستگاه %s را ارسال شد", "Your_server_link": "لینک سرور شما", "Your_workspace_is_ready": "فضای کاری شما آماده استفاده است" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/fr.i18n.json b/packages/rocketchat-i18n/i18n/fr.i18n.json index bd657ac1282a..a5e308554202 100644 --- a/packages/rocketchat-i18n/i18n/fr.i18n.json +++ b/packages/rocketchat-i18n/i18n/fr.i18n.json @@ -607,7 +607,7 @@ "Cloud_resend_email": "Envoyer à nouveau l'e-mail", "Cloud_registration_required": "Inscription requise", "Cloud_registration_required_description": "On dirait que, lors de l'installation, vous n'avez pas choisi d'enregistrer votre espace de travail.", - "Cloud_registration_requried_link_text": "Cliquez ici pour enregistrer votre espace de travail.", + "Cloud_registration_required_link_text": "Cliquez ici pour enregistrer votre espace de travail.", "Cloud_troubleshooting": "Dépannage", "Collapse_Embedded_Media_By_Default": "Réduire tous les médias intégrés par défaut", "color": "Couleur", @@ -3094,4 +3094,4 @@ "Your_question": "Votre question", "Your_server_link": "Le lien de votre serveur", "Your_workspace_is_ready": "Votre espace de travail est prêt à l'emploi 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/hr.i18n.json b/packages/rocketchat-i18n/i18n/hr.i18n.json index 24b414b06202..34be45dec63a 100644 --- a/packages/rocketchat-i18n/i18n/hr.i18n.json +++ b/packages/rocketchat-i18n/i18n/hr.i18n.json @@ -600,7 +600,6 @@ "Closed_by_visitor": "Zatvorio posjetitelj", "Closing_chat": "Zatvaranje chata", "Cloud": "Cloud", - "Cloud_connect": "Rocket.Chat Cloud Connect", "Cloud_what_is_it": "Što je ovo?", "Cloud_what_is_it_description": "Rocket.Chat Cloud Connect omogućuje vam povezivanje vašeg Rocket.Chat radnog prostora koje ste sami ugradili u naš Cloud. Na taj način možete upravljati licencama, naplatom i podrškom u Rocket.Chat Cloudu.", "Cloud_login_to_cloud": "Prijava u Rocket.Chat Cloud", @@ -609,9 +608,9 @@ "Cloud_manually_input_token": "Ručno unesite token primljen iz e-pošte za registraciju u Cloudu.", "Cloud_registration_required": "Potrebna je registracija", "Cloud_registration_required_description": "Izgleda da tijekom postavljanja niste odabrali registrirati svoj radni prostor.", - "Cloud_registration_requried_link_text": "Kliknite ovdje da biste registrirali svoj radni prostor.", + "Cloud_registration_required_link_text": "Kliknite ovdje da biste registrirali svoj radni prostor.", "Cloud_error_in_authenticating": "Pri provjeri autentičnosti primljena je pogreška", - "Cloud_error_code": "Kod:", + "Cloud_error_code": "Kod: __errorCode__", "Collaborative": "Kolaborativni", "Collapse_Embedded_Media_By_Default": "Zadano sakrij sve ugrađene medije", "color": "Boja", @@ -2979,4 +2978,4 @@ "Your_push_was_sent_to_s_devices": "Push obavijest je poslana %s uređaje", "Your_server_link": "Veza poslužitelja", "Your_workspace_is_ready": "Radni je prostor spreman za upotrebu 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/hu.i18n.json b/packages/rocketchat-i18n/i18n/hu.i18n.json index 7d5173dd6067..974b45e77107 100644 --- a/packages/rocketchat-i18n/i18n/hu.i18n.json +++ b/packages/rocketchat-i18n/i18n/hu.i18n.json @@ -656,7 +656,6 @@ "Closed_by_visitor": "Látogató által bezárva", "Closing_chat": "Beszélgetés bezáráse", "Cloud": "Felhő", - "Cloud_connect": "Rocket.Chat Felhő kapcsolódás", "Cloud_console": "Felhő konzol", "Cloud_what_is_it": "Mi ez?", "Cloud_what_is_it_services_like": "Szolgáltatások, mint:", @@ -670,9 +669,9 @@ "Cloud_manually_input_token": "Add meg kézzel a tokent, ami a Felhő regisztrációs e-mailben szerepel.", "Cloud_registration_required": "Regisztráció szükséges", "Cloud_registration_required_description": "Úgy tűnik, a beállítás során nem választottad a munkaterület regisztrációját.", - "Cloud_registration_requried_link_text": "Kattints ide a munkahely regisztrálásához.", + "Cloud_registration_required_link_text": "Kattints ide a munkahely regisztrálásához.", "Cloud_error_in_authenticating": "Hiba a hitelesítés során:", - "Cloud_error_code": "Kód:", + "Cloud_error_code": "Kód: __errorCode__", "Cloud_troubleshooting": "Hibakeresés", "Collaborative": "Együttműködő", "Collapse_Embedded_Media_By_Default": "Beágyazott média alapértelmezett összecsukása", @@ -3355,4 +3354,4 @@ "Your_question": "Kérdésed", "Your_server_link": "A szerver linkje", "Your_workspace_is_ready": "A munkaterület készen áll a 🎉 használatára" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/ja.i18n.json b/packages/rocketchat-i18n/i18n/ja.i18n.json index 1073647cd010..0c7a6a5138a0 100644 --- a/packages/rocketchat-i18n/i18n/ja.i18n.json +++ b/packages/rocketchat-i18n/i18n/ja.i18n.json @@ -698,12 +698,10 @@ "Closing_chat": "閉じるチャット", "Cloud": "クラウド", "Cloud_Register_manually": "手動で登録する", - "Cloud_click_here": "テキストをコピーしたら、クラウドコンソールに移動します。 [ここをクリック]()", "Cloud_register_offline_finish_helper": "Cloud Consoleで登録プロセスを完了すると、テキストが表示されます。ここに貼り付けて登録を完了してください。", "Cloud_register_offline_helper": "エアギャップまたはネットワークアクセスが制限されている場合、ワークスペースを手動で登録できます。以下のテキストをコピーし、クラウドコンソールに移動してプロセスを完了します。", "Cloud_register_success": "ワークスペースが正常に登録されました!", "Cloud_register_error": "リクエストの処理中にエラーが発生しました。後でもう一度やり直してください。", - "Cloud_connect": "Rocket.Chat クラウド接続", "Cloud_connect_support": "まだ登録メールが届いていない場合は、上記のメールアドレスを必ず更新してください。それでも問題が解決しない場合は、サポートに連絡することができます。", "Cloud_console": "クラウドコンソール", "Cloud_Info": "クラウド情報", @@ -722,9 +720,9 @@ "Cloud_manually_input_token": "クラウド登録メールに記載されたトークンを手動で入力してください。", "Cloud_registration_required": "登録が必要です", "Cloud_registration_required_description": "セットアップ中にワークスペースを登録しない選択をしたようです。", - "Cloud_registration_requried_link_text": "ワークスペースを登録するにはここをクリック。", + "Cloud_registration_required_link_text": "ワークスペースを登録するにはここをクリック。", "Cloud_error_in_authenticating": "認証中にエラーが発生", - "Cloud_error_code": "コード:", + "Cloud_error_code": "コード: __errorCode__", "Cloud_status_page_description": "特定のクラウドサービスに問題がある場合は、Googleのステータスページで既知の問題を確認できます。", "Cloud_Service_Agree_PrivacyTerms": "クラウドサービスに同意するプライバシー規約", "Cloud_troubleshooting": "トラブルシューティング", @@ -3761,4 +3759,4 @@ "Your_server_link": "サーバーのURLはこちら", "Your_temporary_password_is_password": "一時的なパスワードは[password]です。", "Your_workspace_is_ready": "ワークスペースの準備ができました🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/km.i18n.json b/packages/rocketchat-i18n/i18n/km.i18n.json index 9a0586af194e..fa04232a815c 100644 --- a/packages/rocketchat-i18n/i18n/km.i18n.json +++ b/packages/rocketchat-i18n/i18n/km.i18n.json @@ -654,9 +654,7 @@ "Closing_chat": "ការជជែកបិទ", "Cloud": "ពពក", "Cloud_Register_manually": "ចុះឈ្មោះដោយដៃ", - "Cloud_click_here": "បន្ទាប់ពីចម្លងអត្ថបទសូមចូលទៅកាន់កុងសូលក្លោដ។ [ចុច​ទីនេះ]()", "Cloud_register_success": "កន្លែងការងាររបស់អ្នកត្រូវបានចុះឈ្មោះដោយជោគជ័យ!", - "Cloud_connect": "ការតភ្ជាប់ពពក Rocket.Chat ", "Cloud_connect_support": "ប្រសិនបើអ្នកនៅតែមិនទាន់បានទទួលអ៊ីមែលចុះឈ្មោះសូមប្រាកដថាអ៊ីមែលរបស់អ្នកត្រូវបានធ្វើបច្ចុប្បន្នភាពខាងលើ។ ប្រសិនបើអ្នកនៅតែមានបញ្ហាអ្នកអាចទាក់ទងការគាំទ្រ។", "Cloud_console": "Cloud Console", "Cloud_Info": "ព័ត៌មានពពក", @@ -675,9 +673,9 @@ "Cloud_manually_input_token": "បញ្ចូលលេខសម្ងាត់ដែលបានទទួលដោយផ្ទាល់ពីអ៊ីម៉ែលចុះឈ្មោះពពក។", "Cloud_registration_required": "ត្រូវការ​ការ​ចុះឈ្មោះ", "Cloud_registration_required_description": "មើលទៅដូចក្នុងអំឡុងពេលរៀបចំដែលអ្នកមិនបានជ្រើសដើម្បីចុះឈ្មោះកន្លែងធ្វើការរបស់អ្នក។", - "Cloud_registration_requried_link_text": "សូមចុចត្រង់នេះដើម្បីចុះឈ្មោះកន្លែងធ្វើការរបស់អ្នក។", + "Cloud_registration_required_link_text": "សូមចុចត្រង់នេះដើម្បីចុះឈ្មោះកន្លែងធ្វើការរបស់អ្នក។", "Cloud_error_in_authenticating": "កំហុសបានទទួលខណៈពេលផ្ទៀងផ្ទាត់", - "Cloud_error_code": "លេខកូដ:", + "Cloud_error_code": "លេខកូដ: __errorCode__", "Cloud_status_page_description": "ប្រសិនបើសេវាកម្មពពកជាក់លាក់មួយមានបញ្ហាអ្នកអាចពិនិត្យមើលបញ្ហាដែលត្រូវបានគេស្គាល់នៅលើទំព័រស្ថានភាពរបស់យើង។", "Cloud_troubleshooting": "ការ​ដោះស្រាយ​បញ្ហា", "Collaborative": "សហការ", @@ -3174,4 +3172,4 @@ "Your_push_was_sent_to_s_devices": "ការជំរុញរបស់អ្នកត្រូវបានបញ្ជូនទៅកាន់ឧបករណ៍ %s បាន", "Your_server_link": "តំណភ្ជាប់ម៉ាស៊ីនមេរបស់អ្នក", "Your_workspace_is_ready": "កន្លែងធ្វើការរបស់អ្នករួចរាល់ដើម្បីប្រើ🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/ko.i18n.json b/packages/rocketchat-i18n/i18n/ko.i18n.json index c7d4f94b65b5..ef5ec22f7827 100644 --- a/packages/rocketchat-i18n/i18n/ko.i18n.json +++ b/packages/rocketchat-i18n/i18n/ko.i18n.json @@ -599,15 +599,14 @@ "Closed_by_visitor": "방문자가 종료했습니다.", "Closing_chat": "대화 종료 중..", "Cloud": "클라우드", - "Cloud_connect": "Rocket.Chat 클라우드 접속", "Cloud_console": "클라우드 콘솔", "Cloud_what_is_it": "이게 무엇입니까?", "Cloud_login_to_cloud": "Rocket.Chat Cloud에 로그인", "Cloud_update_email": "이메일 업데이트", "Cloud_resend_email": "이메일 재전송", "Cloud_registration_required": "등록이 필요합니다.", - "Cloud_registration_requried_link_text": "작업 공간을 등록하려면 여기를 클릭하십시오.", - "Cloud_error_code": "코드:", + "Cloud_registration_required_link_text": "작업 공간을 등록하려면 여기를 클릭하십시오.", + "Cloud_error_code": "코드: __errorCode__", "Collaborative": "협업", "Collapse_Embedded_Media_By_Default": "기본적으로 포함된 미디어 접기", "color": "색", @@ -3162,4 +3161,4 @@ "Your_question": "귀하의 질문", "Your_server_link": "서버 링크", "Your_workspace_is_ready": "Rocket.Chat을 사용할 준비가 되었습니다." -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/nl.i18n.json b/packages/rocketchat-i18n/i18n/nl.i18n.json index 0915abcd6811..b63cd1f010db 100644 --- a/packages/rocketchat-i18n/i18n/nl.i18n.json +++ b/packages/rocketchat-i18n/i18n/nl.i18n.json @@ -609,7 +609,6 @@ "Closed_by_visitor": "Gesloten door bezoeker", "Closing_chat": "closing-chat", "Cloud": "Cloud", - "Cloud_connect": "Rocket.Chat Cloud Connect", "Cloud_connect_support": "Als u nog steeds geen registratie-e-mail heeft ontvangen, zorg er dan voor dat uw e-mail hierboven is bijgewerkt. Als u nog steeds problemen ondervindt, kunt u contact opnemen met ondersteuning op", "Cloud_console": "Cloud Console", "Cloud_what_is_it": "Wat is dit?", @@ -3053,4 +3052,4 @@ "Your_push_was_sent_to_s_devices": "Je push werd verzonden naar %s apparaten", "Your_server_link": "Uw serverlink", "Your_workspace_is_ready": "Uw werkruimte is klaar voor gebruik 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/pl.i18n.json b/packages/rocketchat-i18n/i18n/pl.i18n.json index 7e2a9e7649cf..150a6cbd64d4 100644 --- a/packages/rocketchat-i18n/i18n/pl.i18n.json +++ b/packages/rocketchat-i18n/i18n/pl.i18n.json @@ -679,8 +679,6 @@ "Closed_by_visitor": "Zamknięte przez odwiedzającego", "Closing_chat": "Zamykanie czatu", "Cloud": "Chmura", - "Cloud_click_here": "Po skopiowaniu tekstu, przejdź do konsoli chmury. [Kliknij tutaj]()", - "Cloud_connect": "Połączenie z Chmurą Rocket.Chat", "Cloud_console": "Konsola w chmurze", "Cloud_Info": "Chmura", "Cloud_what_is_it": "Co to jest?", @@ -697,9 +695,9 @@ "Cloud_manually_input_token": "Wpisz ręcznie swój token otrzymany z wiadomości rejestrującej w Chmurze.", "Cloud_registration_required": "Rejestracja wymagana", "Cloud_registration_required_description": "Wygląda na to że podczas instalacji nie wybrałeś opcji rejestracji przestrzeni roboczej.", - "Cloud_registration_requried_link_text": "Kliknij tutaj, aby zarejestrować swoją przestrzeń roboczą.", + "Cloud_registration_required_link_text": "Kliknij tutaj, aby zarejestrować swoją przestrzeń roboczą.", "Cloud_error_in_authenticating": "Błąd podczas uwierzytelniania", - "Cloud_error_code": "Kod:", + "Cloud_error_code": "Kod: __errorCode__", "Cloud_troubleshooting": "Rozwiązywanie problemów", "Collaborative": "Współpracujący", "Collapse_Embedded_Media_By_Default": "Zwiń media (obrazki itp.) domyślnie", @@ -3402,4 +3400,4 @@ "Your_question": "Twoje pytanie", "Your_server_link": "Twój link do serwera", "Your_workspace_is_ready": "Twój obszar roboczy jest gotowy do użycia 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json index 2ccd8ca0da59..fe136fe92dfd 100644 --- a/packages/rocketchat-i18n/i18n/pt-BR.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt-BR.i18n.json @@ -679,7 +679,6 @@ "Cloud_Register_manually": "Registre manualmente", "Cloud_register_success": "A sua área de trabalho foi registrada com sucesso!", "Cloud_register_error": "Houve um erro ao processar sua solicitação. Por favor tente novamente mais tarde. ", - "Cloud_connect": "Rocket.Chat Cloud Connect", "Cloud_connect_support": "Se você ainda não recebeu um e-mail de registro, verifique se o seu e-mail está atualizado acima. Se você ainda tiver problemas, entre em contato com o suporte em", "Cloud_what_is_it": "O que é isso?", "Cloud_what_is_it_description": "O Rocket.Chat Cloud Connect permite que você conecte seu workspace Rocket.Chat auto-hospedado à nossa nuvem. Fazer isso permite que você gerencie suas licenças, Faturamento e Suporte no Rocket.Chat Cloud.", @@ -691,9 +690,9 @@ "Cloud_manually_input_token": "Insira manualmente o token recebido do e-mail de registro na nuvem.", "Cloud_registration_required": "Registro requerido", "Cloud_registration_required_description": "Parece que durante a configuração você não escolheu registrar seu workspace.", - "Cloud_registration_requried_link_text": "Clique aqui para registrar seu workspace.", + "Cloud_registration_required_link_text": "Clique aqui para registrar seu workspace.", "Cloud_error_in_authenticating": "Erro recebido durante a autenticação", - "Cloud_error_code": "Código:", + "Cloud_error_code": "Código: __errorCode__", "Cloud_troubleshooting": "Resolução de problemas", "Collaborative": "Colaborativo", "Collapse_Embedded_Media_By_Default": "Esconder mídia por padrão", @@ -3304,6 +3303,8 @@ "view-l-room": "Ver salas de Omnichannel", "view-l-room_description": "Permissão para ver salas de Omnichannel", "view-livechat-analytics": "Ver o Omnichannel Analytics", + "view-livechat-room-closed-by-another-agent": "Ver Salas Omnichannel fechadas por outro agente", + "view-livechat-room-closed-same-department": "Ver Salas Omnichannel fechadas por outro agente do mesmo departamento", "view-livechat-manager": "Ver o Gerente Omnichannel", "view-livechat-manager_description": "Permissão para ver outros gerentes de Omnichannel", "view-livechat-rooms": "Ver Salas de Omnichannel", @@ -3429,4 +3430,4 @@ "Your_question": "A sua pergunta", "Your_server_link": "O link do seu servidor", "Your_workspace_is_ready": "O seu espaço de trabalho está pronto a usar 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/pt.i18n.json b/packages/rocketchat-i18n/i18n/pt.i18n.json index 715088a58199..dc4826591c71 100644 --- a/packages/rocketchat-i18n/i18n/pt.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt.i18n.json @@ -637,7 +637,6 @@ "Closed_by_visitor": "Encerrado pelo convidado", "Closing_chat": "A encerrar chat", "Cloud": "Nuvem", - "Cloud_connect": "Rocket.Chat Cloud Connect", "Cloud_connect_support": "Se ainda não recebeu um e-mail de registo, verifique se o seu e-mail está atualizado acima. Se ainda tiver problemas, entre em contacto com o suporte em", "Cloud_console": "Cloud Console", "Cloud_what_is_it": "O que é isto?", @@ -650,9 +649,9 @@ "Cloud_manually_input_token": "Insira manualmente o token recebido do e-mail de registro na nuvem.", "Cloud_registration_required": "Registro requerido", "Cloud_registration_required_description": "Parece que durante a configuração você não escolheu registrar seu workspace.", - "Cloud_registration_requried_link_text": "Clique aqui para registrar seu workspace.", + "Cloud_registration_required_link_text": "Clique aqui para registrar seu workspace.", "Cloud_error_in_authenticating": "Erro recebido durante a autenticação", - "Cloud_error_code": "Código:", + "Cloud_error_code": "Código: __errorCode__", "Collaborative": "Colaborativo", "Collapse_Embedded_Media_By_Default": "Esconder Leitor por padrão", "color": "Côr", @@ -3248,4 +3247,4 @@ "Your_question": "A sua pergunta", "Your_server_link": "O link do seu servidor", "Your_workspace_is_ready": "O seu espaço de trabalho está pronto a usar 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/ru.i18n.json b/packages/rocketchat-i18n/i18n/ru.i18n.json index f6fbbc1689b2..04e057628a07 100644 --- a/packages/rocketchat-i18n/i18n/ru.i18n.json +++ b/packages/rocketchat-i18n/i18n/ru.i18n.json @@ -662,12 +662,10 @@ "Closing_chat": "Закрыть чат", "Cloud": "Облако", "Cloud_Register_manually": "Зарегистрироваться вручную", - "Cloud_click_here": "После копирования текста перейдите на Cloud Console. [Щелкните здесь]()", "Cloud_register_offline_finish_helper": "После завершения процесса регистрации в Cloud Console вам должен быть представлен некоторый текст. Пожалуйста, вставьте его здесь, чтобы закончить регистрацию.", "Cloud_register_offline_helper": "Рабочие места могут быть зарегистрированы вручную, если доступ в сеть ограничен. Скопируйте текст ниже и перейдите в нашу Cloud Console, чтобы завершить процесс.", "Cloud_register_success": "Ваше рабочее место успешно зарегистрировано!", "Cloud_register_error": "Произошла ошибка при попытке обработать ваш запрос. Пожалуйста, попробуйте позже.", - "Cloud_connect": "Rocket.Chat Cloud Connect", "Cloud_connect_support": "Если Вы все еще не получили регистрационное электронное письмо, пожалуйста, удостоверьтесь, что Ваша электронная почта обновлена выше. Если у Вас все еще есть проблемы, вы можете связаться с поддержкой по адресу", "Cloud_console": "Облачная Консоль", "Cloud_Info": "Информация об облаке", @@ -686,9 +684,9 @@ "Cloud_manually_input_token": "Вручную введите токен, полученный из электронного письма регистрации в облаке.", "Cloud_registration_required": "Требуется регистрация", "Cloud_registration_required_description": "Похоже, что во время установки вы не решили регистрировать свое рабочее пространство.", - "Cloud_registration_requried_link_text": "Нажмите здесь, чтобы зарегистрировать ваше рабочее пространство.", + "Cloud_registration_required_link_text": "Нажмите здесь, чтобы зарегистрировать ваше рабочее пространство.", "Cloud_error_in_authenticating": "Ошибка при аутентификации", - "Cloud_error_code": "Код:", + "Cloud_error_code": "Код: __errorCode__", "Cloud_status_page_description": "Если у конкретной облачной службы возникают проблемы, вы можете проверить ее на нашей странице состояния по адресу", "Cloud_Service_Agree_PrivacyTerms": "Согласие с условиями конфиденциальности Cloud Service", "Cloud_troubleshooting": "Исправление проблем", @@ -3554,4 +3552,4 @@ "Your_server_link": "Ссылка на ваш сервер", "Your_temporary_password_is_password": "Ваш временный пароль [password].", "Your_workspace_is_ready": "Ваше рабочее пространство готово к работе 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/sv.i18n.json b/packages/rocketchat-i18n/i18n/sv.i18n.json index eb5398c34929..1cc153579053 100644 --- a/packages/rocketchat-i18n/i18n/sv.i18n.json +++ b/packages/rocketchat-i18n/i18n/sv.i18n.json @@ -573,7 +573,6 @@ "Closed_by_visitor": "Stängd av besökare", "Closing_chat": "Stänger chat", "Cloud": "Cloud", - "Cloud_connect": "Rocket.Chat Cloud Connect", "Collaborative": "Kollaborativ", "Collapse_Embedded_Media_By_Default": "Kollapsa inbäddad media som standard", "color": "Färg", @@ -2945,4 +2944,4 @@ "Your_push_was_sent_to_s_devices": "Din push skickades till %s enheter", "Your_server_link": "Din serverlänk", "Your_workspace_is_ready": "Din arbetsyta är redo att använda 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/tr.i18n.json b/packages/rocketchat-i18n/i18n/tr.i18n.json index d463c1eaa310..cfe4dab5ba2c 100644 --- a/packages/rocketchat-i18n/i18n/tr.i18n.json +++ b/packages/rocketchat-i18n/i18n/tr.i18n.json @@ -634,7 +634,6 @@ "Cloud_Register_manually": "Manuel Kayıt", "Cloud_register_success": "Çalışma alanınız başarıyla kaydedildi!", "Cloud_register_error": "İsteğiniz işlenirken bir hata oluştu. Lütfen daha sonra tekrar deneyiniz.", - "Cloud_connect": "Rocket.Chat Cloud Bağlantısı", "Cloud_console": "Bulut Konsolu", "Cloud_what_is_it": "Bu nedir?", "Cloud_what_is_it_description": "Rocket.Chat Cloud Connect, kendi barındırdığınız Rocket.Chat Workspace'inizi Cloud'umuza bağlamanızı sağlar. Bunu yapmak, Rocket.Chat Cloud'daki lisanslarınızı, Fatura ve Desteği yönetmenizi etkinleştirir.", @@ -650,9 +649,9 @@ "Cloud_manually_input_token": "Cloud Kayıt E-Postasından alınan belirteci elle girin.", "Cloud_registration_required": "Kayıt Gerekli", "Cloud_registration_required_description": "Görünen o ki kurulum sırasında çalışma alanınızı kaydetmeyi seçmediniz.", - "Cloud_registration_requried_link_text": "Çalışma alanınızı kaydetmek için buraya tıklayın.", + "Cloud_registration_required_link_text": "Çalışma alanınızı kaydetmek için buraya tıklayın.", "Cloud_error_in_authenticating": "Doğrulama sırasında hata alındı", - "Cloud_error_code": "Kod:", + "Cloud_error_code": "Kod: __errorCode__", "Cloud_troubleshooting": "Sorun Giderme", "Collaborative": "Birlikte Çalışma", "Collapse_Embedded_Media_By_Default": "Gömülü Ortam Varsayılan Olarak Daraltılsın", @@ -3326,4 +3325,4 @@ "Your_question": "Sorunuz", "Your_server_link": "Sunucu bağlantınız", "Your_workspace_is_ready": "Çalışma alanınız kullanılmaya hazır 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/uk.i18n.json b/packages/rocketchat-i18n/i18n/uk.i18n.json index 7b4e77467295..bde08843bb17 100644 --- a/packages/rocketchat-i18n/i18n/uk.i18n.json +++ b/packages/rocketchat-i18n/i18n/uk.i18n.json @@ -674,12 +674,10 @@ "Closing_chat": "закриття чату", "Cloud": "Хмара", "Cloud_Register_manually": "Реєстрація вручну", - "Cloud_click_here": "Після копіювання тексту перейдіть до хмарної консолі. [Натисніть тут]()", "Cloud_register_offline_finish_helper": "ПІсля завершення процедури реєстрації у Cloud Console ви маєте побачити текст. Вставте цей текст сюди, щоб закінчити реєстрацію.", "Cloud_register_offline_helper": "Якщо ваш доступ до мережі обмежено або застосовується фізична ізоляція мережі, робочі простори можна зареєструвати вручну. Скопіюйте текст, що його наведено нижче, та перейдіть до нашої консолі Cloud Console, щоб завершити процес.", "Cloud_register_success": "Ваша робоча область успішно зареєстрована!", "Cloud_register_error": "Під час обробки вашого запиту сталася помилка. Будь ласка, спробуйте пізніше.", - "Cloud_connect": "З'єднання Rocket.Chat Cloud ", "Cloud_connect_support": "Якщо ви все ще не отримали електронний лист, будь ласка, переконайтеся, що ваша електронна адреса була оновлена вище. Якщо у вас все ще виникають проблеми, ви можете зв’язатися із службою підтримки", "Cloud_console": "Хмарна консоль", "Cloud_Info": "Інформація про хмару", @@ -698,9 +696,9 @@ "Cloud_manually_input_token": "Вучну ввести токен, отриманий з електонної пошти при реєстрації у хмарі.", "Cloud_registration_required": "Потрібна реєстрація", "Cloud_registration_required_description": "Схоже, що під час налаштування ви не вибрали реєстрацію робочої області.", - "Cloud_registration_requried_link_text": "Натисніть тут, щоб зареєструвати робочу область.", + "Cloud_registration_required_link_text": "Натисніть тут, щоб зареєструвати робочу область.", "Cloud_error_in_authenticating": "Отримана помилка під час авторизації", - "Cloud_error_code": "Код:", + "Cloud_error_code": "Код: __errorCode__", "Cloud_status_page_description": "Якщо у певної хмарної служби є проблеми, ви можете перевірити відомі проблеми на нашій сторінці статусу за адресою", "Cloud_Service_Agree_PrivacyTerms": "Згода з умовами конфіденційності Cloud Service", "Cloud_troubleshooting": "Вирішення проблем", @@ -3389,4 +3387,4 @@ "Your_server_link": "Посилання на Ваш сервер", "Your_temporary_password_is_password": "Ваш тимчасовий пароль [password].", "Your_workspace_is_ready": "Ваш робочий простір готовий до використання 🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-i18n/i18n/zh-TW.i18n.json b/packages/rocketchat-i18n/i18n/zh-TW.i18n.json index 263ebd612abe..6b28d5fc0789 100644 --- a/packages/rocketchat-i18n/i18n/zh-TW.i18n.json +++ b/packages/rocketchat-i18n/i18n/zh-TW.i18n.json @@ -700,12 +700,10 @@ "Closing_chat": "關閉聊天中", "Cloud": "雲端", "Cloud_Register_manually": "手動註冊", - "Cloud_click_here": "在複製完文字後,到雲端控制介面。[點這裡]()", "Cloud_register_offline_finish_helper": "在雲端控制介面完成註冊程序之後您應該會顯示一些文字。請貼到這裡來完成註冊。", "Cloud_register_offline_helper": "如果存在間隙或網路存取受到限制,則可以手動註冊工作區。複製下面的文字,然後轉到我們的雲端控制介面以完成該過程。", "Cloud_register_success": "您的工作區已成功註冊!", "Cloud_register_error": "嘗試處理您的請求時出錯。請稍後再試。", - "Cloud_connect": "Rocket.Chat 雲端連線", "Cloud_connect_support": "假如您仍沒有收到註冊電子郵件請確認您的電子郵件已更新。假如您仍有問題您可以連絡支援在", "Cloud_console": "雲端控制台", "Cloud_Info": "雲端資訊", @@ -724,9 +722,9 @@ "Cloud_manually_input_token": "手動輸入在雲端註冊的電子郵件來收 token 郵件。", "Cloud_registration_required": "必須註冊", "Cloud_registration_required_description": "看起來安裝過程中您沒有選擇您的工作區域。", - "Cloud_registration_requried_link_text": "點擊這裡來註冊您的工作區域。", + "Cloud_registration_required_link_text": "點擊這裡來註冊您的工作區域。", "Cloud_error_in_authenticating": "當驗證時收到錯誤", - "Cloud_error_code": "代碼:", + "Cloud_error_code": "代碼: __errorCode__", "Cloud_status_page_description": "假如特定的雲端服務有問題,您可以檢查在我們的狀態頁面找到已知問題", "Cloud_Service_Agree_PrivacyTerms": "雲端服務同意隱私條款", "Cloud_troubleshooting": "故障排除", diff --git a/packages/rocketchat-i18n/i18n/zh.i18n.json b/packages/rocketchat-i18n/i18n/zh.i18n.json index c583accc2e93..e797495f2c6b 100644 --- a/packages/rocketchat-i18n/i18n/zh.i18n.json +++ b/packages/rocketchat-i18n/i18n/zh.i18n.json @@ -660,12 +660,10 @@ "Closing_chat": "正在关闭聊天", "Cloud": "Cloud ", "Cloud_Register_manually": "手动注册", - "Cloud_click_here": "复制文字后,访问云端控制界面。[单击此处]()", "Cloud_register_offline_finish_helper": "在Cloud Console中完成注册过程后,应该显示出一些文本。请粘贴到此处以完成注册。", "Cloud_register_offline_helper": "如果网络访问受到限制,可以手动注册工作区。复制下面的文字并转到Cloud Console以完成本次操作。", "Cloud_register_success": "您的工作区已成功注册!", "Cloud_register_error": "处理请求时出错。请稍后再试。", - "Cloud_connect": "Rocket.Chat Cloud 连接", "Cloud_connect_support": "如果你尚未收到注册邮件请检查上方邮件是否正确。仍有问题可获取支持于", "Cloud_console": "云控制台", "Cloud_Info": "云端资料", @@ -684,9 +682,9 @@ "Cloud_manually_input_token": "手动输入在 Cloud 注册邮件中包含的令牌。", "Cloud_registration_required": "要求注册", "Cloud_registration_required_description": "在安装过程中,您似乎没有选择注册工作区。", - "Cloud_registration_requried_link_text": "点击此处注册您的工作区。", + "Cloud_registration_required_link_text": "点击此处注册您的工作区。", "Cloud_error_in_authenticating": "验证出错", - "Cloud_error_code": "代码:", + "Cloud_error_code": "代码: __errorCode__", "Cloud_status_page_description": "如果某项云服务有问题您可以查看我们的状态页面于", "Cloud_troubleshooting": "故障排除", "Collaborative": "协作", @@ -3546,4 +3544,4 @@ "Your_server_link": "您的服务器链接", "Your_temporary_password_is_password": "您的暂时密码为 [password]。", "Your_workspace_is_ready": "您的工作区已准备好使用🎉" -} \ No newline at end of file +} diff --git a/packages/rocketchat-livechat/assets/rocket-livechat.js b/packages/rocketchat-livechat/assets/rocket-livechat.js index e4156d0b7c1a..326d528fff58 100644 --- a/packages/rocketchat-livechat/assets/rocket-livechat.js +++ b/packages/rocketchat-livechat/assets/rocket-livechat.js @@ -695,7 +695,7 @@ chatWidget.dataset.state = 'closed'; chatWidget.className = 'rocketchat-widget'; chatWidget.innerHTML = '
' + - ' ' + + ' ' + '
'; chatWidget.style.position = 'fixed'; diff --git a/private/client/imports/general/variables.css b/private/client/imports/general/variables.css deleted file mode 100644 index 92c5124c4d22..000000000000 --- a/private/client/imports/general/variables.css +++ /dev/null @@ -1,380 +0,0 @@ -:root { - /* - * Color palette - */ - --color-dark-100: #0c0d0f; - --color-dark-90: #1e232a; - --color-dark-80: #2e343e; - --color-dark-70: #53585f; - --color-dark-30: #9da2a9; - --color-dark-20: #caced1; - --color-dark-10: #e0e5e8; - --color-dark-05: #f1f2f4; - --color-dark-blue: #175cc4; - --color-blue: #1d74f5; - --color-light-blue: #4eb2f5; - --color-lighter-blue: #e8f2ff; - --color-purple: #861da8; - --color-red: #f5455c; - --color-dark-red: #e0364d; - --color-orange: #f59547; - --color-yellow: #ffd21f; - --color-dark-yellow: #f6c502; - --color-green: #2de0a5; - --color-dark-green: #26d198; - - /* - * General Colors - */ - --color-darkest: #1f2329; - --color-dark: #2f343d; - --color-dark-medium: #414852; - --color-dark-light: #6c727a; - --color-gray: #9ea2a8; - --color-gray-medium: #cbced1; - --color-gray-light: #e1e5e8; - --color-gray-lightest: #f2f3f5; - --color-black: #000000; - --color-white: #ffffff; - --rc-color-error: var(--color-red); - --rc-color-error-light: #e1364c; - --rc-color-alert: var(--color-yellow); - --rc-color-alert-light: var(--color-dark-yellow); - --rc-color-success: var(--color-green); - --rc-color-success-light: #25d198; - --rc-color-button-primary: var(--color-blue); - --rc-color-button-primary-light: var(--color-dark-blue); - --rc-color-alert-message-primary: var(--color-blue); - --rc-color-alert-message-primary-background: #f1f6ff; - --rc-color-alert-message-secondary: #7ca52b; - --rc-color-alert-message-secondary-background: #fafff1; - --rc-color-alert-message-warning: #d52d24; - --rc-color-alert-message-warning-background: #fff3f3; - --rc-color-primary: var(--color-dark); - --rc-color-primary-background: var(--color-dark); - --rc-color-primary-darkest: var(--color-darkest); - --rc-color-primary-dark: var(--color-dark-medium); - --rc-color-primary-light: var(--color-gray); - --rc-color-primary-light-medium: var(--color-gray-medium); - --rc-color-primary-lightest: var(--color-gray-lightest); - --rc-color-content: var(--color-white); - --rc-color-link-active: var(--rc-color-button-primary); - - /* - * General - */ - --text-size: 0.875rem; - --header-min-height: 60px; - --toolbar-height: 55px; - --footer-min-height: 70px; - --rooms-box-width: 280px; - --flex-tab-width: 400px; - --flex-tab-webrtc-width: 400px; - --flex-tab-webrtc-2-width: 850px; - --user-image-square: 20px; - --border: 2px; - --border-radius: 2px; - --status-online: var(--rc-color-success); - --status-away: var(--rc-color-alert); - --status-busy: var(--rc-color-error); - --status-invisible: var(--color-gray-medium); - --status-invisible-sidebar: var(--rc-color-primary-darkest); - --default-padding: 1.5rem; - --default-small-padding: 1rem; - --status-bullet-size: 10px; - --status-bullet-radius: 50%; - --account-username-weight: 700; - --status-name-weight: 400; - --default-font-weight-header: 500; - - /* - * General Typography - */ - --text-default-size: 1rem; - --text-default-weight: 500; - --text-small-size: 0.875rem; - --text-small-weight: 500; - --text-heading-size: 1.375rem; - --text-heading-weight: 700; - --text-label-size: 075rem; - --text-label-weight: 600; - --text-tiny-size: 075rem; - --text-tiny-weight: 400; - --text-micro-size: 0.625rem; - --text-micro-weight: 700; - - /* - * Forms - */ - --gap-between-elements: 2.5rem; - --label-margin-bottom: 1rem; - - /* - * Forms - Button - */ - --button-square-size: 36px; - --button-padding: 0.782rem; - --button-padding-small: 0 0.5rem; - --button-height-small: 28px; - --button-text-size-small: 13px; - --button-text-size: var(--input-font-size); - --button-border-width: var(--border); - --button-border-radius: var(--border-radius); - --button-disabled-background: var(--color-gray-light); - --button-disabled-text-color: var(--color-white); - --button-primary-background: var(--rc-color-button-primary); - --button-primary-text-color: var(--color-white); - --button-cancel-color: var(--rc-color-error); - --button-secondary-background: var(--color-gray-medium); - --button-secondary-text-color: var(--color-dark-medium); - - /* - * Forms - Input - */ - --input-font-size: 0.875rem; - --input-title-text-size: var(--input-font-size); - --input-title-color: #2d343d; - --input-text-color: var(--color-dark-medium); - --input-placeholder-color: var(--color-gray-medium); - --input-icon-color: var(--color-dark); - --input-border-color: var(--color-gray-light); - --input-border-width: var(--border); - --input-border-radius: var(--border-radius); - --input-description-text-color: var(--color-gray); - --input-description-text-size: var(--input-font-size); - --input-error-color: var(--rc-color-error); - - /* - * Forms - popup list - */ - --popup-list-border-radius: var(--border-radius); - --popup-list-background: var(--color-white); - --popup-list-background-hover: var(--color-gray-lightest); - --popup-list-selected-background: var(--color-gray-lightest); - --popup-list-name-color: #2d343d; - --popup-list-name-size: 1rem; - - /* - * Forms - tags - */ - --tags-border-width: var(--border); - --tags-border-radius: var(--border-radius); - --tags-border-color: var(--color-gray-light); - --tags-text-color: var(--rc-color-primary); - --tags-background: #f2f3f5; - --tags-avatar-size: 20px; - - /* - * Forms - select avatar - */ - --select-avatar-size: 48px; - --select-avatar-preview-size: 150px; - --select-avatar-upload-background: var(--color-gray-light); - --select-avatar-upload-color: #2d343d; - - /* - * Sidebar - */ - --sidebar-width: 280px; - --sidebar-small-width: 90%; - --sidebar-background: var(--rc-color-primary); - --sidebar-background-hover: var(--rc-color-primary-dark); - --sidebar-background-light: var(--rc-color-primary-lightest); - --sidebar-background-light-hover: var(--rc-color-primary-light); - --sidebar-background-light-active: var(--rc-color-primary-light-medium); - --sidebar-default-padding: 24px; - --sidebar-small-default-padding: 16px; - --sidebar-extra-small-default-padding: 12px; - --sidebar-footer-height: 48px; - --sidebar-small-header-padding: var(--sidebar-small-default-padding); - - /* - * Sidebar flex - */ - --sidebar-flex-search-background: var(--color-white); - --sidebar-flex-search-placeholder-color: var(--color-gray); - - /* - * Sidebar Account - */ - --sidebar-account-thumb-size: 23px; - --sidebar-small-account-thumb-size: 40px; - --sidebar-account-status-bullet-size: 10px; - --sidebar-small-account-status-bullet-size: 8px; - --sidebar-account-status-bullet-radius: 50%; - --sidebar-account-username-size: 1rem; - --sidebar-account-username-weight: 700; - --sidebar-small-account-username-weight: 400; - --sidebar-account-username-color: var(--color-white); - --sidebar-account-username-color-darker: var(--color-dark); - --sidebar-account-status-font-size: 0.875rem; - --sidebar-account-status-color: var(--color-gray); - - /* - * Sidebar Item - */ - --sidebar-item-radius: 2px; - --sidebar-item-height: 24px; - --sidebar-item-height-medium: 34px; - --sidebar-item-height-extended: 52px; - --sidebar-item-thumb-size: 18px; - --sidebar-item-thumb-size-medium: 27px; - --sidebar-item-thumb-size-extended: 36px; - --sidebar-item-text-color: var(--rc-color-primary-light); - --sidebar-item-background: inherit; - --sidebar-item-hover-background: var(--rc-color-primary-darkest); - --sidebar-item-active-background: var(--rc-color-primary-dark); - --sidebar-item-active-color: var(--sidebar-item-text-color); - --sidebar-item-unread-color: var(--rc-color-content); - --sidebar-item-unread-font-weight: 600; - --sidebar-item-popup-background: var(--rc-color-primary-dark); - --sidebar-item-user-status-size: 6px; - --sidebar-item-user-status-radius: 50%; - --sidebar-item-text-size: 0.875rem; - - /* - * Modal - */ - --modal-wrapper-width: 650px; - --modal-wrapper-margin: 3rem; - --modal-back-button-color: var(--color-gray); - - /* - * Modal - Create Channel - */ - --create-channel-gap-between-elements: 1rem; - --create-channel-title-color: var(--color-darkest); - --create-channel-title-text-size: 1.375rem; - --create-channel-description-color: var(--color-gray); - --create-channel-description-text-size: 0.875rem; - - /* - * Toolbar - */ - --toolbar-placeholder-color: var(--color-gray); - - /* - * Rooms list - */ - --rooms-list-title-color: var(--rc-color-primary-light); - --rooms-list-title-text-size: 0.75rem; - --rooms-list-empty-text-color: var(--color-gray); - --rooms-list-empty-text-size: 0.75rem; - --rooms-list-padding: var(--sidebar-default-padding); - --rooms-list-small-padding: var(--sidebar-small-default-padding); - - /* - * Chip - */ - --chip-background: #dddddd; - - /* - * Avatar - */ - --avatar-radius: var(--border-radius); - --avatar-initials-text-size: 22px; - --avatar-initials-text-weight: 700; - - /* - * Badge - */ - --badge-text-color: var(--color-white); - --badge-radius: 12px; - --badge-text-size: 0.75rem; - --badge-background: var(--rc-color-primary-dark); - --badge-unread-background: var(--rc-color-primary-dark); - --badge-user-mentions-background: var(--color-dark-blue); - --badge-group-mentions-background: var(--rc-color-primary-dark); - - /* - * Mention link - */ - --mention-link-radius: 10px; - --mention-link-background: var(--color-lighter-blue); - --mention-link-text-color: var(--color-dark-blue); - --mention-link-me-background: var(--color-dark-blue); - --mention-link-me-text-color: var(--color-white); - --mention-link-group-background: var(--rc-color-primary-dark); - --mention-link-group-text-color: var(--color-white); - - /* - * Message box - */ - --message-box-text-size: var(--input-font-size); - --message-box-placeholder-color: var(--color-gray-medium); - --message-box-markdown-color: var(--color-gray); - --message-box-markdown-hover-color: var(--color-dark); - --message-box-user-typing-color: var(--color-gray); - --message-box-user-typing-text-size: 0.75rem; - --message-box-user-typing-user-color: var(--color-dark); - --message-box-container-border-color: var(--color-gray-medium); - --message-box-container-border-width: var(--border); - --message-box-container-border-radius: var(--border-radius); - --message-box-editing-color: #fff5df; - --message-box-popover-title-text-color: var(--color-gray); - --message-box-popover-title-text-size: 0.75rem; - - /* - * Header - */ - --header-height: 77px; - --header-padding: 16px; - --header-toggle-favorite-color: var(--color-gray-medium); - --header-toggle-favorite-star-color: var(--rc-color-alert-light); - --header-toggle-encryption-off-color: var(--color-gray-medium); - --header-toggle-encryption-on-color: var(--rc-color-alert-message-secondary); - --header-title-username-color-darker: var(--color-dark); - --header-title-font-size: var(--text-default-size); - --header-title-font-size--subtitle: var(--text-small-size); - --header-title-status-color: var(--color-gray); - --header-title-username-weight: 400; - --header-title-status-name-weight: 400; - --header-title-status-bullet-radius: var(--status-bullet-radius); - --header-title-status-bullet-size: var(--status-bullet-size); - --header-background-color: var(--color-white); - - /* - * Flex nav - */ - --flex-nav-background: var(--color-gray-lightest); - - /* - * Popover - */ - --popover-padding: 1rem; - --popover-radius: var(--border-radius); - --popover-background: var(--color-white); - --popover-column-min-width: 130px; - --popover-column-padding: 1rem; - --popover-title-color: var(--color-dark); - --popover-title-text-size: 0.75rem; - --popover-item-color: var(--color-dark); - --popover-item-text-size: 0.875rem; - --popover-divider-height: 2px; - --popover-divider-color: var(--color-gray-light); - - /* - * Tooltip - */ - --tooltip-background: var(--color-darkest); - --tooltip-text-color: var(--color-white); - --tooltip-text-size: 0.75rem; - --tooltip-radius: var(--border-radius); - - /* - * alert - */ - --alerts-padding: var(--sidebar-default-padding); - --alerts-padding-vertical: 10px; - --alerts-padding-vertical-large: 20px; - --alerts-background: #1d73f5; - --alerts-color: var(--color-white); - --alerts-font-size: var(--text-default-size); - --content-page-padding: 2.5rem; - - /* - * badge - */ - --badge-size: 14px; - --badge-font-size: 0.625rem; -} diff --git a/private/client/imports/general/variables.css b/private/client/imports/general/variables.css new file mode 120000 index 000000000000..5593377224c7 --- /dev/null +++ b/private/client/imports/general/variables.css @@ -0,0 +1 @@ +../../../../app/theme/client/imports/general/variables.css \ No newline at end of file diff --git a/private/server/colors.less b/private/server/colors.less deleted file mode 100755 index 638946d86c82..000000000000 --- a/private/server/colors.less +++ /dev/null @@ -1,893 +0,0 @@ -/** ---------------------------------------------------------------------------- - * Derivative colours (fixed variants of inherited variables) - */ -@default-action-color: darken(@secondary-background-color, 15%); -@default-action-contrast: contrast(@default-action-color, #444444); -@primary-background-contrast: contrast(@primary-background-color, #444444); -@primary-action-contrast: contrast(@primary-action-color, #444444); -@secondary-background-contrast: contrast(@secondary-background-color, #444444); -@secondary-action-contrast: contrast(@secondary-action-color, #444444); -@selection-background: lighten(@selection-color, 30%); -@success-background: lighten(@success-color, 45%); -@success-border: lighten(@success-color, 30%); -@error-background: lighten(@error-color, 45%); -@error-border: lighten(@error-color, 30%); -@error-contrast: contrast(@error-color); -@pending-background: lighten(@pending-color, 45%); -@pending-border: lighten(@pending-color, 30%); - -/** ---------------------------------------------------------------------------- - * Transparency variables - */ - -@transparent-darkest: rgba(17, 12, 12, 0.5); -@transparent-darker: rgba(0, 0, 0, 0.15); -@transparent-dark: rgba(15, 34, 0, 0.05); -@transparent-light: rgba(255, 255, 255, 0.1); -@transparent-lighter: rgba(255, 255, 255, 0.3); -@transparent-lightest: rgba(255, 255, 255, 0.6); - -:root { - --legacy-default-action-color: @default-action-color; - --legacy-default-action-contrast: @default-action-contrast; - --legacy-primary-background-contrast: @primary-background-contrast; - --legacy-primary-action-contrast: @primary-action-contrast; - --legacy-secondary-background-contrast: @secondary-background-contrast; - --legacy-secondary-action-contrast: @secondary-action-contrast; - --legacy-selection-background: @selection-background; - --legacy-success-background: @success-background; - --legacy-success-border: @success-border; - --legacy-error-background: @error-background; - --legacy-error-border: @error-border; - --legacy-error-contrast: @error-contrast; - --legacy-pending-background: @pending-background; - --legacy-pending-border: @pending-border; - --legacy-transparent-darkest: @transparent-darkest; - --legacy-transparent-darker: @transparent-darker; - --legacy-transparent-dark: @transparent-dark; - --legacy-transparent-light: @transparent-light; - --legacy-transparent-lighter: @transparent-lighter; - --legacy-transparent-lightest: @transparent-lightest; -} - -/** ---------------------------------------------------------------------------- - * Mixins - */ - -.buttonColors(@color, @bg) { - color: @color; - background-color: @bg; - - &:hover { - color: mix(@color, contrast(@bg), 60%); - background-color: mix(@bg, contrast(@color), 60%); - } -} - -/** ---------------------------------------------------------------------------- - * Classes for variables - */ - -// Major colors - -.content-background-color { - background-color: @content-background-color; -} - -.color-content-background-color { - color: @content-background-color; -} - -.primary-background-color { - background-color: @primary-background-color; -} - -.global-font-family { - font-family: @body-font-family; -} - -.color-primary-font-color { - color: @primary-font-color; -} - -.color-primary-action-color { - color: @primary-action-color; -} - -.background-primary-action-color { - background-color: @primary-action-color; -} - -.secondary-background-color { - background-color: @secondary-background-color; -} - -.border-secondary-background-color { - border-color: @secondary-background-color; -} - -.secondary-font-color { - color: @secondary-font-color; -} - -.border-component-color { - border-color: @component-color; -} - -.background-component-color { - background-color: @component-color; -} - -.color-component-color { - color: @component-color; -} - -.success-color { - color: @success-color; -} - -.pending-color { - color: @pending-color; -} - -.pending-background { - background-color: @pending-background; -} - -.pending-border { - border-color: @pending-border; -} - -.error-color { - color: @error-color; -} - -.background-error-color { - background-color: @error-color; -} - -.color-info-font-color { - color: @info-font-color; -} - -.background-info-font-color { - background-color: @info-font-color; -} - -.background-attention-color { - background-color: @attention-color; -} - -// Minor Colors - -.tertiary-background-color { - background-color: @tertiary-background-color; -} - -.border-tertiary-background-color { - border-color: @tertiary-background-color; -} - -// Derivative Colors - -.color-tertiary-font-color { - color: @tertiary-font-color; -} - -.error-background { - background-color: @error-background; -} - -.error-border { - border-color: @error-border; -} - -.color-error-contrast { - color: @error-contrast; -} - -// transparent - -.background-transparent-darkest { - background-color: @transparent-darkest; -} - -.background-transparent-darker { - background-color: @transparent-darker; -} - -.background-transparent-darker-hover:hover { - background-color: @transparent-darker; -} - -.background-transparent-darker-before::before { - background-color: @transparent-darker; -} - -.background-transparent-dark { - background-color: @transparent-dark; -} - -.background-transparent-dark-hover:hover { - background-color: @transparent-dark; -} - -.border-transparent-dark { - border-color: @transparent-dark; -} - -.background-transparent-light { - background-color: @transparent-light; -} - -.border-transparent-lighter { - border-color: @transparent-lighter; -} - -.background-transparent-lightest { - background-color: @transparent-lightest; -} - -// Derivative Colors -.color-primary-action-contrast { - color: @primary-action-contrast; -} - -/** ---------------------------------------------------------------------------- - * Special components - */ - -* { - -webkit-overflow-scrolling: touch; - - &::-webkit-scrollbar { - height: 8px; - width: 8px; - background: @transparent-dark; - } - - &::-webkit-scrollbar-thumb { - background-color: @custom-scrollbar-color; - -webkit-border-radius: 50px; - } - - &::-webkit-scrollbar-corner { - background-color: @transparent-dark; - } -} - -.filter-item { - &:hover { - border-color: @info-font-color; - } - - &.active { - border-color: @primary-background-color; - } -} - -/** ---------------------------------------------------------------------------- - * Document components - */ - -.burger i { - background-color: @primary-font-color; -} - -/** ---------------------------------------------------------------------------- - * Forms - */ - -input, -select, -textarea { - color: @primary-font-color; - background-color: transparent; - border-color: mix(contrast(@content-background-color), @content-background-color, 10%); - border-style: solid; - - &::placeholder { - color: mix(@primary-font-color, @content-background-color, 75%); - } - - &[disabled] { - background-color: mix(contrast(@content-background-color), @content-background-color, 10%); - } -} - -.disabled label, -[disabled] label { - color: mix(@primary-font-color, @content-background-color, 75%); -} - -.-autocomplete-container { - background-color: mix(contrast(@content-background-color), @content-background-color, 10%); -} - -.-autocomplete-item.selected { - background-color: mix(contrast(@content-background-color), @content-background-color, 20%); -} - -.rc-old input[type="button"], -.rc-old input[type="submit"] { - color: @primary-font-color; - background: mix(contrast(@content-background-color), @content-background-color, 10%); - border-color: mix(contrast(@content-background-color), @content-background-color, 10%); -} - -.toolbar-search__input { - &:focus { - border-color: fade(@primary-background-contrast, 50%); - } - - &::placeholder { - color: @transparent-lighter; - } -} - -.toolbar-search__buttons i:hover { - color: fade(@primary-background-contrast, 50%); -} - -// .flex-nav { -// input, -// select, -// textarea { -// color: @primary-background-contrast; -// background-color: transparent; -// border-color: mix(contrast(@transparent-lighter), @transparent-lighter, 10%); -// border-style: solid; - -// &::placeholder { -// color: mix(@primary-background-contrast, @transparent-lighter, 75%); -// } - -// &[disabled] { -// background-color: mix(contrast(@transparent-lighter), @transparent-lighter, 10%); -// } -// } - -// .disabled label, -// [disabled] label { -// color: mix(@primary-background-contrast, @transparent-lighter, 75%); -// } - -// .-autocomplete-container { -// background-color: mix(contrast(@transparent-lighter), @transparent-lighter, 10%); -// } - -// .-autocomplete-item.selected { -// background-color: mix(contrast(@transparent-lighter), @transparent-lighter, 20%); -// } - -// input[type="button"], -// input[type="submit"] { -// color: @primary-background-contrast; -// background: mix(contrast(@transparent-lighter), @transparent-lighter, 10%); -// border-color: mix(contrast(@transparent-lighter), @transparent-lighter, 10%); -// } - -// input { -// &:focus { -// border-color: fade(@primary-background-contrast, 50%); -// } -// } - -// .input.checkbox.toggle { -// input:checked + label::before { -// background-color: @primary-action-color; -// } -// } -// } - -.input-line { - &.setting-changed > label { - color: @selection-color; - } -} - -input:-webkit-autofill { - color: @primary-font-color !important; - background-color: transparent !important; -} - -.input { - &.radio { - label { - &::before { - border-color: lighten(@secondary-background-contrast, 30%); - background-color: @content-background-color; - } - - &::after { - background-color: @secondary-background-contrast; - } - } - } - - &.checkbox.toggle { - input:checked + label::before { - background-color: @secondary-background-contrast; - } - - input:disabled + label::before { - background-color: lighten(@secondary-background-contrast, 50%) !important; - } - - label { - &::before { - background-color: lighten(@secondary-background-contrast, 30%); - } - - &::after { - background-color: @content-background-color; - } - - &:hover { - &::before { - background-color: lighten(@secondary-background-contrast, 20%); - } - } - } - } -} - -/** ---------------------------------------------------------------------------- - * Misc typography variants - */ - -// a:active, -// a:hover { -// color: @primary-action-color; -// } - -.message, -.flex-tab { - a i, - a[class^="icon-"] { - color: @primary-font-color; - - &:hover { - color: darken(@primary-font-color, 10%); - } - } -} - -.error { - border-color: @error-color; -} - -/** ---------------------------------------------------------------------------- - * Admin and settings styles - */ - -.page-list, -.page-settings { - a:not(.rc-button) { - color: @primary-font-color; - - &:hover { - color: @primary-action-color; - } - } -} - -.admin-table-row { - background-color: @transparent-light; - - &:nth-of-type(even) { - background-color: @transparent-lightest; - } -} - -.avatar-suggestion-item { - .question-mark::before { - color: @secondary-font-color; - } -} - -/** ---------------------------------------------------------------------------- - * Asides (external to main application views) - */ - -.full-page, -.page-loading { - a { - color: @tertiary-font-color; - } - - a:hover { - color: @primary-background-contrast; - } -} - -#login-card { - .input-text { - input:-webkit-autofill { - -webkit-box-shadow: 0 0 0 20px @content-background-color inset; - } - } -} - -/** ---------------------------------------------------------------------------- - * Room components - */ - -.toggle-favorite { - color: @component-color; -} - -.upload-progress-progress { - background-color: @success-background; -} - -.messages-container { - .footer { - background: @content-background-color; - } -} - -.message-form { - .message-buttons { - .buttonColors(lighten(@primary-font-color, 25%), @secondary-background-color); - - &:hover { - background-color: mix(@secondary-background-color, contrast(@primary-font-color), 20%); - } - } - - .message-form-text { - &.editing { - background-color: lighten(@pending-color, 40%); - } - } -} - -.message.editing { - background-color: lighten(@pending-color, 40%); -} - -.rc-old { - & .popup-item { - &.selected { - color: @primary-action-contrast; - background-color: @primary-action-color; - } - } -} - -.messages-box { - &.selectable .selected { - background-color: @selection-background; - } -} - -/** ---------------------------------------------------------------------------- - * Message content - */ - -.message { - &.new-day::before { - background-color: @content-background-color; - } - - &.new-day::after { - border-color: @component-color; - } - - .options-menu { - color: lighten(@primary-font-color, 13%); - - ul li:hover { - background-color: @tertiary-background-color; - } - } - - a { - color: @link-font-color; - - &:hover { - color: darken(@link-font-color, 10%); - } - } - - .highlight-text { - background-color: @selection-background; - } -} - -/** ---------------------------------------------------------------------------- - * Sidebar - */ -.sidebar-item__last-message { - a:not(.mention-link) { - color: @link-font-color; - - &:hover { - color: darken(@link-font-color, 10%); - } - } -} - -.message-popup.search-results-list { - background-color: lighten(@primary-background-color, 2.5%); - - .popup-item.selected { - background-color: @transparent-darker; - } -} - -/** ---------------------------------------------------------------------------- - * Flex tabs / admin fly-out panels - */ -.flex-tab { - .channel-settings { - .buttons { - .button { - .buttonColors(lighten(@primary-font-color, 25%), @secondary-background-color); - } - } - - .input.checkbox.toggle { - input:checked + label::before { - background-color: @primary-background-color; - } - } - } -} - -.flex-tab-bar { - .tab-button { - &:hover { - background-color: @secondary-background-color; - } - - &.active { - background-color: @secondary-background-color; - border-right-color: @selection-color; - } - - &.attention { - animation-duration: 1000ms; - animation-name: blink; - animation-iteration-count: infinite; - animation-direction: alternate; - } - } - - .counter { - background: @secondary-font-color; - color: white; - } -} - -/** ---------------------------------------------------------------------------- - * User status / user meta - */ -i.status-online { - color: @status-online; -} - -.status-bg-online { - background-color: @status-online; -} - -.account-box .status-online .thumb::after, -.account-box .status.online::after, -.popup-user-status-online, -.status-online::after, -.user-image.status-online .avatar::after { - background-color: @status-online; - border-color: darken(@status-online, 10%); -} - -.account-box .status-offline .thumb::after, -.account-box .status.offline::after { - background-color: @transparent-lighter; -} - -i.status-away { - color: @status-away; -} - -.status-bg-away { - background-color: @status-away; -} - -.account-box .status-away .thumb::after, -.account-box .status.away::after, -.popup-user-status-away, -.status-away::after, -.status-pending::after, -.user-image.status-away .avatar::after { - background-color: @status-away; - border-color: darken(@status-away, 10%); -} - -i.status-busy { - color: @status-busy; -} - -.status-bg-busy { - background-color: @status-busy; -} - -.account-box .status-busy .thumb::after, -.account-box .status.busy::after, -.popup-user-status-busy, -.status-busy::after, -.user-image.status-busy .avatar::after { - background-color: @status-busy; - border-color: darken(@status-busy, 10%); -} - -i.status-offline { - color: @status-offline; -} - -.status-bg-offline { - background-color: @status-offline; -} - -.popup-user-status-offline, -.status-offline::after, -.user-image.status-offline .avatar::after { - background-color: @status-offline; - border-color: darken(@status-offline, 10%); -} - -// .popup-user-status-system { -// border-color: transparent; -// } - -// .user-view { -// .box::after, -// .stats li, -// .tags li { -// background-color: @component-color; -// } -// } - -/** ---------------------------------------------------------------------------- - * Buttons! - */ -.actionLinks li .action-link { - .buttonColors(@primary-action-contrast, @primary-action-color); -} - -// new layout buttons - -.button { - .buttonColors(@default-action-contrast, @default-action-color); - - &.primary { - .buttonColors(@primary-action-contrast, @primary-action-color); - - &[disabled] { - background-color: lighten(desaturate(@primary-action-color, 50%), 30%); - } - } - - &.secondary { - .buttonColors(@secondary-action-contrast, @secondary-action-color); - - &[disabled] { - background-color: lighten(desaturate(@secondary-action-color, 50%), 30%); - } - } - - &.tertiary { - .buttonColors(@primary-action-contrast, @selection-color); - - &[disabled] { - background-color: lighten(desaturate(@selection-color, 50%), 30%); - } - } - - &.danger { - .buttonColors(@error-contrast, @error-color); - - &[disabled] { - background-color: lighten(desaturate(@error-color, 50%), 30%); - } - } -} - -/** ---------------------------------------------------------------------------- - * Feedback and overlay content - */ - -.alert-warning { - color: darken(@pending-color, 25%); - background-color: @pending-background; -} - -.alert-link { - color: @link-font-color; - - &:hover { - color: darken(@link-font-color, 10%); - } -} - -label.required::after { - color: @error-color; -} - -/** ---------------------------------------------------------------------------- - * Loading - */ - -.main-content, -.flex-tab { - .loading-animation > .bounce { - background-color: @primary-font-color; - } -} - -.loading-animation.loading-animation--primary > .bounce { - background-color: @primary-font-color; -} - -@keyframes blink { - from { - color: @selection-color; - } - - to { - opacity: inherit; - } -} - -/** ---------------------------------------------------------------------------- - * Input Range Slider - */ - -.range-slider-range::-webkit-slider-thumb { - background-color: @primary-background-color; -} - -.range-slider-range::-webkit-slider-thumb:hover { - background-color: darken(@success-color, 30%); -} - -.range-slider-range:active::-webkit-slider-thumb { - background-color: darken(@success-color, 10%); -} - -.range-slider-range::-moz-range-thumb { - background-color: @primary-background-color; -} - -.range-slider-range::-moz-range-thumb:hover { - background-color: darken(@success-color, 30%); -} - -.range-slider-range:active::-moz-range-thumb { - background-color: darken(@success-color, 10%); -} - -.range-slider-value { - color: lighten(@tertiary-background-color, 50%); - background-color: @primary-background-color; -} - -.range-slider-value::after { - border-top-color: transparent; - border-right-color: @primary-background-color; - border-bottom-color: transparent; -} - -.range-slider-range::-moz-range-track { - background-color: @tertiary-background-color; -} - -.announcement { - background-color: @primary-background-color; - &.warning { - background-color: var(--rc-color-alert); - } - &.error { - background-color: var(--rc-color-alert-message-warning); - } -} diff --git a/private/server/dynamic-css.js b/private/server/dynamic-css.js deleted file mode 100644 index 2a17c4c073a3..000000000000 --- a/private/server/dynamic-css.js +++ /dev/null @@ -1,187 +0,0 @@ -/* eslint-disable */ - -'use strict'; -(function() { - var debounce = function debounce(func, wait, immediate) { - var timeout = void 0; - return function () { - var _this = this; - - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - var later = function later() { - timeout = null; - !immediate && func.apply(_this, args); - }; - - var callNow = immediate && !timeout; - clearTimeout(timeout); - timeout = setTimeout(later, wait); - callNow && func.apply(this, args); - }; - }; - - var cssVarPoly = { - test: function test() { - return window.CSS && window.CSS.supports && window.CSS.supports('(--foo: red)'); - }, - init: function init() { - if (this.test()) { - return; - } - - console.time('cssVarPoly'); - cssVarPoly.ratifiedVars = {}; - cssVarPoly.varsByBlock = []; - cssVarPoly.oldCSS = []; - cssVarPoly.findCSS(); - cssVarPoly.updateCSS(); - console.timeEnd('cssVarPoly'); - }, - findCSS: function findCSS() { - var styleBlocks = Array.prototype.concat.apply([], document.querySelectorAll('#css-variables, link[type="text/css"].__meteor-css__')); - var counter = 1; - styleBlocks.map(function (block) { - if (block.nodeName === 'STYLE') { - var theCSS = block.innerHTML; - cssVarPoly.findSetters(theCSS, counter); - cssVarPoly.oldCSS[counter++] = theCSS; - } else if (block.nodeName === 'LINK') { - var url = block.getAttribute('href'); - cssVarPoly.oldCSS[counter] = ''; - cssVarPoly.getLink(url, counter, function (counter, request) { - cssVarPoly.findSetters(request.responseText, counter); - cssVarPoly.oldCSS[counter++] = request.responseText; - cssVarPoly.updateCSS(); - }); - } - }); - }, - findSetters: function findSetters(theCSS, counter) { - cssVarPoly.varsByBlock[counter] = theCSS.match(/(--[^:; ]+:..*?;)/g); - }, - - - updateCSS: debounce(function () { - cssVarPoly.ratifySetters(cssVarPoly.varsByBlock); - cssVarPoly.oldCSS.filter(function (e) { - return e; - }).forEach(function (css, id) { - var newCSS = cssVarPoly.replaceGetters(css, cssVarPoly.ratifiedVars); - var el = document.querySelector('#inserted' + id); - - if (el) { - el.innerHTML = newCSS; - } else { - var style = document.createElement('style'); - style.type = 'text/css'; - style.innerHTML = newCSS; - style.classList.add('inserted'); - style.id = 'inserted' + id; - document.getElementsByTagName('head')[0].appendChild(style); - } - }); - }, 100), - - replaceGetters: function replaceGetters(oldCSS, varList) { - return oldCSS.replace(/var\((--.*?)\)/gm, function (all, variable) { - return varList[variable]; - }); - }, - ratifySetters: function ratifySetters(varList) { - varList.filter(function (curVars) { - return curVars; - }).forEach(function (curVars) { - curVars.forEach(function (theVar) { - var matches = theVar.split(/:\s*/); - cssVarPoly.ratifiedVars[matches[0]] = matches[1].replace(/;/, ''); - }); - }); - Object.keys(cssVarPoly.ratifiedVars).filter(function (key) { - return cssVarPoly.ratifiedVars[key].indexOf('var') > -1; - }).forEach(function (key) { - cssVarPoly.ratifiedVars[key] = cssVarPoly.ratifiedVars[key].replace(/var\((--.*?)\)/gm, function (all, variable) { - return cssVarPoly.ratifiedVars[variable]; - }); - }); - }, - getLink: function getLink(url, counter, success) { - var request = new XMLHttpRequest(); - request.open('GET', url, true); - request.overrideMimeType('text/css;'); - - request.onload = function () { - if (request.status >= 200 && request.status < 400) { - if (typeof success === 'function') { - success(counter, request); - } - } else { - console.warn('an error was returned from:', url); - } - }; - - request.onerror = function () { - console.warn('we could not get anything from:', url); - }; - - request.send(); - } - }; - var stateCheck = setInterval(function () { - if (document.readyState === 'complete' && typeof Meteor !== 'undefined') { - clearInterval(stateCheck); - cssVarPoly.init(); - } - }, 100); - - var DynamicCss = {}; - - window.DynamicCss = DynamicCss; - - DynamicCss.test = function () { - return window.CSS && window.CSS.supports && window.CSS.supports('(--foo: red)'); - }; - - DynamicCss.run = debounce(function () { - var replace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; - var settings = arguments.length && arguments[1]; - - if (replace && !settings) { - console.error('You must provide settings to the "run" function in DynamicCss'); - } - - if (replace) { - var colors = settings.collection.find({ - _id: /theme-color-rc/i - }, { - fields: { - value: 1, - editor: 1 - } - }).fetch().filter(function (color) { - return color && color.value; - }); - - if (!colors) { - return; - } - - var css = colors.map(function (_ref) { - var _id = _ref._id, - value = _ref.value, - editor = _ref.editor; - - if (editor === 'expression') { - return '--' + _id.replace('theme-color-', '') + ': var(--' + value + ');'; - } - - return '--' + _id.replace('theme-color-', '') + ': ' + value + ';'; - }).join('\n'); - document.querySelector('#css-variables').innerHTML = ':root {' + css + '}'; - } - - cssVarPoly.init(); - }, 1000); -})(); diff --git a/server/methods/registerUser.js b/server/methods/registerUser.js index d95098efcae0..9ef019fab962 100644 --- a/server/methods/registerUser.js +++ b/server/methods/registerUser.js @@ -3,18 +3,11 @@ import { Match, check } from 'meteor/check'; import { Accounts } from 'meteor/accounts-base'; import s from 'underscore.string'; -import * as Mailer from '../../app/mailer'; import { Users } from '../../app/models'; import { settings } from '../../app/settings'; import { saveCustomFields, validateEmailDomain, passwordPolicy } from '../../app/lib'; import { validateInviteToken } from '../../app/invites/server/functions/validateInviteToken'; -let verifyEmailTemplate = ''; -Meteor.startup(() => { - Mailer.getTemplateWrapped('Verification_Email', (value) => { - verifyEmailTemplate = value; - }); -}); Meteor.methods({ registerUser(formData) { const AllowAnonymousRead = settings.get('Accounts_AllowAnonymousRead'); @@ -46,12 +39,14 @@ Meteor.methods({ } if (settings.get('Accounts_RegistrationForm') === 'Secret URL' && (!formData.secretURL || formData.secretURL !== settings.get('Accounts_RegistrationForm_SecretURL'))) { - if (formData.secretURL) { - try { - validateInviteToken(formData.secretURL); - } catch (e) { - throw new Meteor.Error('error-user-registration-secret', 'User registration is only allowed via Secret URL', { method: 'registerUser' }); - } + if (!formData.secretURL) { + throw new Meteor.Error('error-user-registration-secret', 'User registration is only allowed via Secret URL', { method: 'registerUser' }); + } + + try { + validateInviteToken(formData.secretURL); + } catch (e) { + throw new Meteor.Error('error-user-registration-secret', 'User registration is only allowed via Secret URL', { method: 'registerUser' }); } } @@ -86,11 +81,6 @@ Meteor.methods({ saveCustomFields(userId, formData); try { - const subject = Mailer.replace(settings.get('Verification_Email_Subject')); - - Accounts.emailTemplates.verifyEmail.subject = () => subject; - Accounts.emailTemplates.verifyEmail.html = (userModel, url) => Mailer.replace(Mailer.replacekey(verifyEmailTemplate, 'Verification_Url', url), userModel); - Accounts.sendVerificationEmail(userId, userData.email); } catch (error) { // throw new Meteor.Error 'error-email-send-failed', 'Error trying to send email: ' + error.message, { method: 'registerUser', message: error.message } diff --git a/tests/cypress/integration/04-main-elements-render.js b/tests/cypress/integration/04-main-elements-render.js index 1e71d695976b..6f9c19014fbe 100644 --- a/tests/cypress/integration/04-main-elements-render.js +++ b/tests/cypress/integration/04-main-elements-render.js @@ -133,10 +133,6 @@ describe('[Main Elements Render]', function() { mainContent.recordBtn.should('be.visible'); }); - it.skip('it should show the video call button', () => { - mainContent.videoCamBtn.should('be.visible'); - }); - it('it should show the emoji button', () => { mainContent.emojiBtn.should('be.visible'); }); diff --git a/tests/cypress/integration/12-settings.js b/tests/cypress/integration/12-settings.js index a8437627dfc7..be803c1f5c30 100644 --- a/tests/cypress/integration/12-settings.js +++ b/tests/cypress/integration/12-settings.js @@ -160,12 +160,6 @@ describe('[Api Settings Change]', () => { .end(done); }); - it.skip('it should not show the video file button', () => { - // the page needs a refresh to show the changes in the client - mainContent.videoCamBtn.waitForVisible(10000, true); - mainContent.videoCamBtn.should('not.be.visible'); - }); - it('it should change the message video files via api', (done) => { request.post(api('settings/Message_VideoRecorderEnabled')) .set(credentials) diff --git a/tests/cypress/pageobjects/main-content.page.js b/tests/cypress/pageobjects/main-content.page.js index d6d927443f4f..7ba9fe6fce88 100644 --- a/tests/cypress/pageobjects/main-content.page.js +++ b/tests/cypress/pageobjects/main-content.page.js @@ -19,8 +19,6 @@ class MainContent extends Page { get recordBtn() { return browser.element('.js-audio-message-record'); } - get videoCamBtn() { return browser.element('.message-buttons .icon-videocam'); } - get emojiBtn() { return browser.element('.rc-message-box__icon.emoji-picker-icon'); } get messagePopUp() { return browser.element('.message-popup'); }