Skip to content

Commit 6be2861

Browse files
authored
Refactor components and views to Storybook compatibility (#17800)
1 parent 6828007 commit 6be2861

File tree

92 files changed

+1578
-1301
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

92 files changed

+1578
-1301
lines changed
Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
import React from 'react';
22

3-
import { MeteorProviderMock } from './providers';
3+
import { MeteorProviderMock } from './mocks/providers';
44

55
export const rocketChatDecorator = (fn) => {
66
const linkElement = document.getElementById('theme-styles') || document.createElement('link');
77
if (linkElement.id !== 'theme-styles') {
8-
require('../../app/theme/client/main.css');
9-
require('../../app/theme/client/vendor/fontello/css/fontello.css');
10-
require('../../app/theme/client/rocketchat.font.css');
8+
require('../app/theme/client/main.css');
9+
require('../app/theme/client/vendor/fontello/css/fontello.css');
10+
require('../app/theme/client/rocketchat.font.css');
1111
linkElement.setAttribute('id', 'theme-styles');
1212
linkElement.setAttribute('rel', 'stylesheet');
1313
linkElement.setAttribute('href', 'https://open.rocket.chat/theme.css');
1414
document.head.appendChild(linkElement);
1515
}
1616

1717
// eslint-disable-next-line import/no-unresolved
18-
const { default: icons } = require('!!raw-loader!../../private/public/icons.svg');
18+
const { default: icons } = require('!!raw-loader!../private/public/icons.svg');
1919

2020
return <MeteorProviderMock>
2121
<style>{`
@@ -29,3 +29,13 @@ export const rocketChatDecorator = (fn) => {
2929
</div>
3030
</MeteorProviderMock>;
3131
};
32+
33+
export const fullHeightDecorator = (storyFn) =>
34+
<div style={{ display: 'flex', flexDirection: 'column', maxHeight: '100vh' }}>
35+
{storyFn()}
36+
</div>;
37+
38+
export const centeredDecorator = (storyFn) =>
39+
<div style={{ display: 'flex', alignItems: 'center', justifyContent: 'center', minHeight: '100vh' }}>
40+
{storyFn()}
41+
</div>;

.storybook/hooks.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
import { useEffect, useState } from 'react';
2+
3+
export const useAutoToggle = (initialValue = false, ms = 1000) => {
4+
const [value, setValue] = useState(initialValue);
5+
6+
useEffect(() => {
7+
const timer = setInterval(() => setValue((value) => !value), ms);
8+
9+
return () => {
10+
clearInterval(timer);
11+
};
12+
}, []);
13+
14+
return value;
15+
};

.storybook/main.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ module.exports = {
77
addons: [
88
'@storybook/addon-actions',
99
'@storybook/addon-knobs',
10+
'@storybook/addon-viewport',
1011
],
1112
};

.storybook/preview.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import { withKnobs } from '@storybook/addon-knobs';
2-
import { addDecorator } from '@storybook/react';
2+
import { addDecorator, addParameters } from '@storybook/react';
33

4-
import { rocketChatDecorator } from './mocks/decorators';
4+
import { rocketChatDecorator } from './decorators';
55

66
addDecorator(rocketChatDecorator);
77
addDecorator(withKnobs);
8+
9+
addParameters({
10+
options: {
11+
showRoots: true,
12+
},
13+
});

.storybook/webpack.config.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,7 @@ module.exports = async ({ config }) => {
4242
},
4343
},
4444
},
45-
{
46-
loader: 'react-docgen-typescript-loader',
47-
},
45+
'react-docgen-typescript-loader',
4846
],
4947
});
5048

app/2fa/server/code/EmailCheck.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ ${ t('If_you_didnt_try_to_login_in_your_account_please_ignore_this_email') }
9999
const random = Random._randomString(6, '0123456789');
100100
const encryptedRandom = bcrypt.hashSync(random, Accounts._bcryptRounds());
101101
const expire = new Date();
102-
const expirationInSeconds = parseInt(settings.get('Accounts_TwoFactorAuthentication_By_Email_Code_Expiration'));
102+
const expirationInSeconds = parseInt(settings.get('Accounts_TwoFactorAuthentication_By_Email_Code_Expiration') as string, 10);
103103

104104
expire.setSeconds(expire.getSeconds() + expirationInSeconds);
105105

app/2fa/server/code/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ export function isAuthorizedForToken(connection: IMethodConnection, user: IUser,
9595
export function rememberAuthorization(connection: IMethodConnection, user: IUser): void {
9696
const currentToken = Accounts._getLoginToken(connection.id);
9797

98-
const rememberFor = parseInt(settings.get('Accounts_TwoFactorAuthentication_RememberFor'));
98+
const rememberFor = parseInt(settings.get('Accounts_TwoFactorAuthentication_RememberFor') as string, 10);
9999

100100
if (rememberFor <= 0) {
101101
return;

app/authorization/server/functions/hasPermission.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ const rolesHasPermission = mem(async (permission, roles) => {
1212
return !!result;
1313
}, {
1414
cacheKey: JSON.stringify,
15-
...process.env.TEST_MODE === 'true' && { maxAge: 0 },
15+
...process.env.TEST_MODE === 'true' && { maxAge: 1 },
1616
});
1717

1818
const getRoles = mem(async (uid, scope) => {

app/livechat/server/lib/stream/agentStatus.ts

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,31 @@ let actionTimeout = 60000;
99
let action = 'none';
1010
let comment = '';
1111

12-
settings.get('Livechat_agent_leave_action_timeout', function(_key: string, value: number) {
12+
settings.get('Livechat_agent_leave_action_timeout', (_key, value) => {
13+
if (typeof value !== 'number') {
14+
return;
15+
}
1316
actionTimeout = value * 1000;
1417
});
1518

16-
settings.get('Livechat_agent_leave_action', function(_key: string, value: boolean) {
19+
settings.get('Livechat_agent_leave_action', (_key, value) => {
20+
if (typeof value !== 'boolean') {
21+
return;
22+
}
1723
monitorAgents = value;
1824
});
1925

20-
settings.get('Livechat_agent_leave_action', function(_key: string, value: string) {
26+
settings.get('Livechat_agent_leave_action', (_key, value) => {
27+
if (typeof value !== 'string') {
28+
return;
29+
}
2130
action = value;
2231
});
2332

24-
settings.get('Livechat_agent_leave_comment', function(_key: string, value: string) {
33+
settings.get('Livechat_agent_leave_comment', (_key, value) => {
34+
if (typeof value !== 'string') {
35+
return;
36+
}
2537
comment = value;
2638
});
2739

app/ui-message/client/blocks/MessageBlock.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ import { UIKitIncomingInteractionContainerType } from '@rocket.chat/apps-engine/
22
import { UiKitMessage, UiKitComponent, kitContext, messageParser } from '@rocket.chat/fuselage-ui-kit';
33
import React, { useRef, useEffect } from 'react';
44

5-
import RawText from '../../../../client/components/basic/RawText';
65
import { renderMessageBody } from '../../../ui-utils/client';
76
import * as ActionManager from '../ActionManager';
87

@@ -12,7 +11,7 @@ messageParser.text = ({ text, type } = {}) => {
1211
return text;
1312
}
1413

15-
return <RawText>{renderMessageBody({ msg: text })}</RawText>;
14+
return <span dangerouslySetInnerHTML={{ __html: renderMessageBody({ msg: text }) }} />;
1615
};
1716

1817
export function MessageBlock({ mid: _mid, rid, blocks, appId }) {

0 commit comments

Comments
 (0)