Fix type and lint errors after upgrading corresponding dependencies

This commit is contained in:
ErickSkrauch 2021-07-13 22:40:31 +02:00
parent 404fcb804a
commit 12f5e711c4
No known key found for this signature in database
GPG Key ID: 669339FCBB30EE0E
18 changed files with 151 additions and 159 deletions

View File

@ -41,11 +41,11 @@ export function authenticate(
}
try {
const { token: newToken, refreshToken: newRefreshToken, user } = await validateToken(
accountId,
token,
refreshToken,
);
const {
token: newToken,
refreshToken: newRefreshToken,
user,
} = await validateToken(accountId, token, refreshToken);
const newAccount: Account = {
id: user.id,
username: user.username,

View File

@ -405,7 +405,7 @@ class PanelTransition extends React.PureComponent<Props, State> {
getHeader({ key, style, data }: TransitionPlainStyle): ReactElement {
const { Title } = data as AnimationData;
const { transformSpring } = (style as unknown) as AnimationStyle;
const { transformSpring } = style as unknown as AnimationStyle;
let { hasBackButton } = data;
@ -414,7 +414,7 @@ class PanelTransition extends React.PureComponent<Props, State> {
}
const transitionStyle = {
...this.getDefaultTransitionStyles(key, (style as unknown) as AnimationStyle),
...this.getDefaultTransitionStyles(key, style as unknown as AnimationStyle),
opacity: 1, // reset default
};
@ -448,7 +448,7 @@ class PanelTransition extends React.PureComponent<Props, State> {
getBody({ key, style, data }: TransitionPlainStyle): ReactElement {
const { Body } = data as AnimationData;
const { transformSpring } = (style as unknown) as AnimationStyle;
const { transformSpring } = style as unknown as AnimationStyle;
const { direction } = this.state;
let transform = this.translate(transformSpring, direction);
@ -460,7 +460,7 @@ class PanelTransition extends React.PureComponent<Props, State> {
}
const transitionStyle: CSSProperties = {
...this.getDefaultTransitionStyles(key, (style as unknown) as AnimationStyle),
...this.getDefaultTransitionStyles(key, style as unknown as AnimationStyle),
top: 'auto', // reset default
[verticalOrigin]: 0,
...transform,
@ -486,7 +486,7 @@ class PanelTransition extends React.PureComponent<Props, State> {
getFooter({ key, style, data }: TransitionPlainStyle): ReactElement {
const { Footer } = data as AnimationData;
const transitionStyle = this.getDefaultTransitionStyles(key, (style as unknown) as AnimationStyle);
const transitionStyle = this.getDefaultTransitionStyles(key, style as unknown as AnimationStyle);
return (
<div key={`footer/${key}`} style={transitionStyle}>
@ -498,7 +498,7 @@ class PanelTransition extends React.PureComponent<Props, State> {
getLinks({ key, style, data }: TransitionPlainStyle): ReactElement {
const { Links } = data as AnimationData;
const transitionStyle = this.getDefaultTransitionStyles(key, (style as unknown) as AnimationStyle);
const transitionStyle = this.getDefaultTransitionStyles(key, style as unknown as AnimationStyle);
return (
<div key={`links/${key}`} style={transitionStyle}>

View File

@ -15,18 +15,19 @@ interface Props {
const AccountSwitcher: ComponentType<Props> = ({ accounts, onAccountClick }) => {
const [selectedAccount, setSelectedAccount] = useState<number>();
const onAccountClickCallback = useCallback(
(account: Account): MouseEventHandler => async (event) => {
event.stopPropagation();
(account: Account): MouseEventHandler =>
async (event) => {
event.stopPropagation();
setSelectedAccount(account.id);
try {
if (onAccountClick) {
await onAccountClick(account);
setSelectedAccount(account.id);
try {
if (onAccountClick) {
await onAccountClick(account);
}
} finally {
setSelectedAccount(undefined);
}
} finally {
setSelectedAccount(undefined);
}
},
},
[onAccountClick],
);

View File

@ -44,7 +44,7 @@ const typeToForm: TypeToForm = {
type TypeToLabel = Record<ApplicationType, MessageDescriptor>;
const typeToLabel: TypeToLabel = ((Object.keys(typeToForm) as unknown) as Array<ApplicationType>).reduce(
const typeToLabel: TypeToLabel = (Object.keys(typeToForm) as unknown as Array<ApplicationType>).reduce(
(result, key) => {
result[key] = typeToForm[key].label;

View File

@ -14,7 +14,7 @@ interface Props {
const ApplicationTypeSwitcher: ComponentType<Props> = ({ appTypes, selectedType, setType }) => (
<div>
{((Object.keys(appTypes) as unknown) as Array<ApplicationType>).map((type) => (
{(Object.keys(appTypes) as unknown as Array<ApplicationType>).map((type) => (
<div className={styles.radioContainer} key={type}>
<Radio
onChange={() => setType(type)}

View File

@ -14,10 +14,11 @@ const FooterMenu: ComponentType = () => {
const dispatch = useReduxDispatch();
const createPopupHandler = useCallback(
(popup: ComponentType): MouseEventHandler<HTMLAnchorElement> => (event) => {
event.preventDefault();
dispatch(createPopup({ Popup: popup }));
},
(popup: ComponentType): MouseEventHandler<HTMLAnchorElement> =>
(event) => {
event.preventDefault();
dispatch(createPopup({ Popup: popup }));
},
[dispatch],
);

View File

@ -11,7 +11,7 @@ import FormInputComponent from './FormInputComponent';
type I18nString = string | MessageDescriptor;
type ItemLabel = I18nString | React.ReactElement;
interface Props extends InputHTMLAttributes<HTMLInputElement> {
interface Props extends InputHTMLAttributes<HTMLDivElement> {
label: I18nString;
items: Record<string, ItemLabel>;
block?: boolean;

View File

@ -39,9 +39,7 @@ export default class FormModel {
*
* @returns {object} - ref and name props for component
*/
bindField(
name: string,
): {
bindField(name: string): {
name: string;
ref: (el: any) => void;
error?: ValidationError;

View File

@ -27,19 +27,21 @@ const AccountSwitcher: ComponentType<Props> = ({
}) => {
const available = accounts.filter((account) => account.id !== activeAccount.id);
const onAccountClickCallback = useCallback(
(account: Account): MouseEventHandler => (event) => {
event.preventDefault();
onAccountClick(account);
},
(account: Account): MouseEventHandler =>
(event) => {
event.preventDefault();
onAccountClick(account);
},
[onAccountClick],
);
const onAccountRemoveCallback = useCallback(
(account: Account): MouseEventHandler => (event) => {
event.preventDefault();
event.stopPropagation();
(account: Account): MouseEventHandler =>
(event) => {
event.preventDefault();
event.stopPropagation();
onRemoveClick(account);
},
onRemoveClick(account);
},
[onRemoveClick],
);

View File

@ -88,9 +88,7 @@ export { default as debounce } from 'debounce';
*
* @returns {object} - decoded jwt payload
*/
export function getJwtPayloads(
jwt: string,
): {
export function getJwtPayloads(jwt: string): {
sub: string;
jti: number;
exp: number;

View File

@ -78,94 +78,96 @@ export default connect(
}),
{
refreshUserData,
onSubmit: ({ form, sendData }: { form: FormModel; sendData: () => Promise<any> }) => (dispatch: Dispatch) => {
form.beginLoading();
onSubmit:
({ form, sendData }: { form: FormModel; sendData: () => Promise<any> }) =>
(dispatch: Dispatch) => {
form.beginLoading();
return sendData()
.catch((resp) => {
const requirePassword = resp.errors && !!resp.errors.password;
return sendData()
.catch((resp) => {
const requirePassword = resp.errors && !!resp.errors.password;
// prevalidate user input, because requestPassword popup will block the
// entire form from input, so it must be valid
if (resp.errors) {
delete resp.errors.password;
// prevalidate user input, because requestPassword popup will block the
// entire form from input, so it must be valid
if (resp.errors) {
delete resp.errors.password;
if (resp.errors.email && resp.data && resp.data.canRepeatIn) {
resp.errors.email = {
type: resp.errors.email,
payload: {
msLeft: resp.data.canRepeatIn * 1000,
},
};
if (resp.errors.email && resp.data && resp.data.canRepeatIn) {
resp.errors.email = {
type: resp.errors.email,
payload: {
msLeft: resp.data.canRepeatIn * 1000,
},
};
}
if (Object.keys(resp.errors).length) {
form.setErrors(resp.errors);
return Promise.reject(resp);
}
if (requirePassword) {
return requestPassword(form);
}
}
if (Object.keys(resp.errors).length) {
form.setErrors(resp.errors);
return Promise.reject(resp);
})
.catch((resp) => {
if (!resp || !resp.errors) {
logger.warn('Unexpected profile editing error', {
resp,
});
} else {
return Promise.reject(resp);
}
})
.finally(() => form.endLoading());
if (requirePassword) {
return requestPassword(form);
}
}
function requestPassword(form: FormModel) {
return new Promise((resolve, reject) => {
dispatch(
createPopup({
Popup(props: { onClose: () => Promise<any> }) {
const onSubmit = () => {
form.beginLoading();
return Promise.reject(resp);
})
.catch((resp) => {
if (!resp || !resp.errors) {
logger.warn('Unexpected profile editing error', {
resp,
});
} else {
return Promise.reject(resp);
}
})
.finally(() => form.endLoading());
sendData()
.then(resolve)
.then(props.onClose)
.catch((resp) => {
if (resp.errors) {
form.setErrors(resp.errors);
function requestPassword(form: FormModel) {
return new Promise((resolve, reject) => {
dispatch(
createPopup({
Popup(props: { onClose: () => Promise<any> }) {
const onSubmit = () => {
form.beginLoading();
const parentFormHasErrors =
Object.keys(resp.errors).filter((name) => name !== 'password')
.length > 0;
sendData()
.then(resolve)
.then(props.onClose)
.catch((resp) => {
if (resp.errors) {
form.setErrors(resp.errors);
const parentFormHasErrors =
Object.keys(resp.errors).filter((name) => name !== 'password')
.length > 0;
if (parentFormHasErrors) {
// something wrong with parent form, hiding popup and show that form
props.onClose();
reject(resp);
logger.warn(
'Profile: can not submit password popup due to errors in source form',
{ resp },
);
if (parentFormHasErrors) {
// something wrong with parent form, hiding popup and show that form
props.onClose();
reject(resp);
logger.warn(
'Profile: can not submit password popup due to errors in source form',
{ resp },
);
}
} else {
return Promise.reject(resp);
}
} else {
return Promise.reject(resp);
}
})
.finally(() => form.endLoading());
};
})
.finally(() => form.endLoading());
};
return <PasswordRequestForm form={form} onSubmit={onSubmit} />;
},
// TODO: this property should be automatically extracted from the popup's isClosable prop
disableOverlayClose: true,
}),
);
});
}
},
return <PasswordRequestForm form={form} onSubmit={onSubmit} />;
},
// TODO: this property should be automatically extracted from the popup's isClosable prop
disableOverlayClose: true,
}),
);
});
}
},
},
)(ProfileController);

View File

@ -1,8 +1,6 @@
import request, { Resp } from 'app/services/request';
export function getSecret(
id: number,
): Promise<
export function getSecret(id: number): Promise<
Resp<{
qr: string;
secret: string;

View File

@ -66,9 +66,7 @@ class I18N {
await intlPolyfill('en');
}
async require(
locale: string,
): Promise<{
async require(locale: string): Promise<{
locale: string;
messages: Record<string, string>;
}> {

View File

@ -267,25 +267,23 @@ async function pull(): Promise<void> {
});
let downloadingReady = 0;
const promises = localesToPull.map(
async (languageId): Promise<void> => {
const {
data: { url },
} = await crowdin.translationsApi.buildProjectFileTranslation(PROJECT_ID, fileId, {
targetLanguageId: languageId,
});
const promises = localesToPull.map(async (languageId): Promise<void> => {
const {
data: { url },
} = await crowdin.translationsApi.buildProjectFileTranslation(PROJECT_ID, fileId, {
targetLanguageId: languageId,
});
const { data: fileContents } = await axios.get(url, {
// Disable response parsing
transformResponse: [],
});
fs.writeFileSync(getLocaleFilePath(languageId), fileContents);
const { data: fileContents } = await axios.get(url, {
// Disable response parsing
transformResponse: [],
});
fs.writeFileSync(getLocaleFilePath(languageId), fileContents);
downloadingProgressBar.update(++downloadingReady / localesToPull.length, {
cCurrent: downloadingReady,
});
},
);
downloadingProgressBar.update(++downloadingReady / localesToPull.length, {
cCurrent: downloadingReady,
});
});
await Promise.all(promises);

View File

@ -12,13 +12,15 @@ module.exports = ({ webpackLoaderContext: loader }) => ({
'postcss-import': {
addModulesDirectories: ['./src'],
resolve: ((defaultResolve) => (url, basedir, importOptions) =>
defaultResolve(
// mainly to remove '~' from request
loaderUtils.urlToRequest(url),
basedir,
importOptions,
))(require('postcss-import/lib/resolve-id')),
resolve: (
(defaultResolve) => (url, basedir, importOptions) =>
defaultResolve(
// mainly to remove '~' from request
loaderUtils.urlToRequest(url),
basedir,
importOptions,
)
)(require('postcss-import/lib/resolve-id')),
load: ((defaultLoad) => (filename, importOptions) => {
if (/\.font.(js|json)$/.test(filename)) {

View File

@ -240,8 +240,7 @@ function createState() {
id: 7,
username: 'SleepWalker',
email: 'danilenkos@auroraglobal.com',
token:
'eyJhbGciOiJIUzI1NiJ9.eyJlbHktc2NvcGVzIjoiYWNjb3VudHNfd2ViX3VzZXIiLCJpYXQiOjE1MTgzNzM4MDksImV4cCI6MTUxODM3NzQwOSwic3ViIjoiZWx5fDciLCJqdGkiOjM1NDh9.Fv4AbJ0iDbrH3bhbgF0ViJLfYYiwH78deR4fMlMhKrQ',
token: 'eyJhbGciOiJIUzI1NiJ9.eyJlbHktc2NvcGVzIjoiYWNjb3VudHNfd2ViX3VzZXIiLCJpYXQiOjE1MTgzNzM4MDksImV4cCI6MTUxODM3NzQwOSwic3ViIjoiZWx5fDciLCJqdGkiOjM1NDh9.Fv4AbJ0iDbrH3bhbgF0ViJLfYYiwH78deR4fMlMhKrQ',
refreshToken:
'3gh6ZZ3R9jGeFdp0TmlY7sd0zBxH6Zfq48M86eUAv952RcAKx32RAnjlKkgd6i-MV-RKbjtADIdoRwMUWOYQjEYtwwXPjcQJ',
},
@ -249,8 +248,7 @@ function createState() {
id: 102,
username: 'test',
email: 'admin@udf.su',
token:
'eyJhbGciOiJIUzI1NiJ9.eyJlbHktc2NvcGVzIjoiYWNjb3VudHNfd2ViX3VzZXIiLCJpYXQiOjE1MTgzNzM4NjUsImV4cCI6MTUxODM3NzQ2NSwic3ViIjoiZWx5fDEwMiIsImp0aSI6MzU0OX0.eJEgvXT3leGqBe3tYNGZb0E4WEvWfrLPjcD7eNjyQYO',
token: 'eyJhbGciOiJIUzI1NiJ9.eyJlbHktc2NvcGVzIjoiYWNjb3VudHNfd2ViX3VzZXIiLCJpYXQiOjE1MTgzNzM4NjUsImV4cCI6MTUxODM3NzQ2NSwic3ViIjoiZWx5fDEwMiIsImp0aSI6MzU0OX0.eJEgvXT3leGqBe3tYNGZb0E4WEvWfrLPjcD7eNjyQYO',
refreshToken:
'Al75SIx-LFOCP7kaqZBVqMVmSljJw9_bdFQGyuM64c6ShP7YsXbkCD8vPOundAwUDfRZqsIbOHUROmAHPB0VBfjLfw96yqxx',
},

View File

@ -6,7 +6,7 @@ describe('Applications', () => {
// remove all previously added apps
cy.window().then(async (win) => {
const { oauthApi } = (win as any) as {
const { oauthApi } = win as any as {
oauthApi: typeof import('app/services/api/oauth').default;
};
const apps = await oauthApi.getAppsByUser(user.id);

View File

@ -32,11 +32,7 @@ declare namespace Cypress {
*/
rawApiResp?: false;
}): Promise<{ accounts: TAccount[] }>;
login(options: {
accounts: AccountAlias[];
updateState?: boolean;
rawApiResp: true;
}): Promise<{
login(options: { accounts: AccountAlias[]; updateState?: boolean; rawApiResp: true }): Promise<{
accounts: {
success: true;
access_token: string;