mirror of
https://github.com/trezor/trezor-suite.git
synced 2026-03-09 08:48:15 +01:00
chore: move DeviceModelInternal to device-utils
This commit is contained in:
@@ -26,9 +26,9 @@
|
||||
"@suite-common/validators": "workspace:*",
|
||||
"@testing-library/jest-dom": "^6.6.3",
|
||||
"@trezor/asset-utils": "workspace:*",
|
||||
"@trezor/device-utils": "workspace:*",
|
||||
"@trezor/dom-utils": "workspace:*",
|
||||
"@trezor/env-utils": "workspace:*",
|
||||
"@trezor/protobuf": "workspace:*",
|
||||
"@trezor/react-utils": "workspace:*",
|
||||
"@trezor/styles": "workspace:*",
|
||||
"@trezor/theme": "workspace:*",
|
||||
|
||||
@@ -4,7 +4,7 @@ import styled, { useTheme } from 'styled-components';
|
||||
|
||||
import { DEFAULT_FLAGSHIP_MODEL } from '@suite-common/suite-constants';
|
||||
import { getNarrowedDeviceModelInternal } from '@suite-common/suite-utils';
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { AnimationWrapper, Shape } from './AnimationPrimitives';
|
||||
import { resolveStaticPath } from '../../utils/resolveStaticPath';
|
||||
|
||||
@@ -5,8 +5,7 @@ import styled from 'styled-components';
|
||||
|
||||
import { DEFAULT_FLAGSHIP_MODEL } from '@suite-common/suite-constants';
|
||||
import { getNarrowedDeviceModelInternal } from '@suite-common/suite-utils';
|
||||
// todo: components should not rely on @trezor/protobuf
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { AnimationWrapper, Shape } from './AnimationPrimitives';
|
||||
import { resolveStaticPath } from '../../utils/resolveStaticPath';
|
||||
|
||||
@@ -27,9 +27,9 @@
|
||||
"path": "../../suite-common/validators"
|
||||
},
|
||||
{ "path": "../asset-utils" },
|
||||
{ "path": "../device-utils" },
|
||||
{ "path": "../dom-utils" },
|
||||
{ "path": "../env-utils" },
|
||||
{ "path": "../protobuf" },
|
||||
{ "path": "../react-utils" },
|
||||
{ "path": "../styles" },
|
||||
{ "path": "../theme" },
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
// firmware should be always set. This tests actually tests the fact that
|
||||
|
||||
import { DeviceModelInternal } from '../../src/types';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
const emulatorStartOpts = process.env.emulatorStartOpts || global.emulatorStartOpts;
|
||||
// @ts-expect-error (here might be bug)
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { typedObjectKeys } from '@trezor/utils';
|
||||
|
||||
import { DeviceModelInternal, FirmwareRange } from '../../../exports';
|
||||
import { FirmwareRange } from '../../../types';
|
||||
|
||||
export const validateParams = [
|
||||
{
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
// origin: https://github.com/trezor/connect/blob/develop/src/js/core/methods/helpers/paramsValidator.js
|
||||
import type { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { typedObjectKeys, versionUtils } from '@trezor/utils';
|
||||
|
||||
import { ERRORS } from '../../constants';
|
||||
import { config } from '../../data/config';
|
||||
import type { CoinInfo, DeviceModelInternal, FirmwareRange } from '../../types';
|
||||
import type { CoinInfo, FirmwareRange } from '../../types';
|
||||
import { fromHardened } from '../../utils/pathUtils';
|
||||
|
||||
type ParamType = 'string' | 'number' | 'array' | 'array-buffer' | 'boolean' | 'uint' | 'object';
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
// origin: https://github.com/trezor/connect/blob/develop/src/js/core/methods/EthereumSignTypedData.js
|
||||
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { MessagesSchema } from '@trezor/protobuf';
|
||||
import { Assert, Type } from '@trezor/schema-utils';
|
||||
|
||||
import { ERRORS, PROTO } from '../../../constants';
|
||||
import { AbstractMethod } from '../../../core/AbstractMethod';
|
||||
import { getEthereumNetwork } from '../../../data/coinInfo';
|
||||
import { DeviceModelInternal, EthereumNetworkInfo } from '../../../types';
|
||||
import { EthereumNetworkInfo } from '../../../types';
|
||||
import {
|
||||
EthereumSignTypedData as EthereumSignTypedDataParams,
|
||||
EthereumSignTypedDataTypes,
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
|
||||
import coinsEth from '@trezor/connect-common/files/coins-eth.json';
|
||||
import coins from '@trezor/connect-common/files/coins.json';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import messages from '@trezor/protobuf/messages.json';
|
||||
|
||||
import { parseCoinsJson } from './coinInfo';
|
||||
import { parseFirmwareReleases } from './firmwareInfo';
|
||||
import { ConnectSettings, DeviceModelInternal } from '../types';
|
||||
import { ConnectSettings } from '../types';
|
||||
import { firmwareAssets } from '../utils/assetUtils'; // Adjust the path as necessary
|
||||
|
||||
type AssetCollection = { [key: string]: Record<string, any> };
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import * as releases2 from '@trezor/connect-common/files/firmware/t2t1/releases.json';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { DeviceModelInternal } from '../../types';
|
||||
import { getFirmwareStatus, getReleases, parseFirmwareReleases } from '../firmwareInfo';
|
||||
|
||||
describe('data/firmwareInfo', () => {
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
// origin: https://github.com/trezor/connect/blob/develop/src/js/data/FirmwareInfo.js
|
||||
|
||||
import { VersionArray } from '@trezor/device-utils';
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal, VersionArray } from '@trezor/device-utils';
|
||||
import { versionUtils } from '@trezor/utils';
|
||||
|
||||
import type {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
type ModelConfig = {
|
||||
name: string;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// original file https://github.com/trezor/connect/blob/develop/src/js/device/Device.js
|
||||
import { randomBytes } from 'crypto';
|
||||
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { TransportProtocol, v1 as v1Protocol } from '@trezor/protocol';
|
||||
import { Session } from '@trezor/transport';
|
||||
import { type Descriptor, TRANSPORT_ERROR, type Transport } from '@trezor/transport';
|
||||
@@ -37,7 +38,6 @@ import {
|
||||
} from '../events';
|
||||
import {
|
||||
DeviceFirmwareStatus,
|
||||
DeviceModelInternal,
|
||||
DeviceState,
|
||||
DeviceStatus,
|
||||
Device as DeviceTyped,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { FetchError } from 'node-fetch';
|
||||
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { FirmwareRelease, FirmwareRevisionCheckResult } from '../../exports';
|
||||
import * as utilsAssets from '../../utils/assets';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { Static, Type } from '@trezor/schema-utils';
|
||||
|
||||
import { DeviceModelInternal } from './device';
|
||||
import { FeeLevel } from './fees';
|
||||
|
||||
// TODO: refactor in utxo-lib
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import { VersionArray } from '@trezor/device-utils';
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal, VersionArray } from '@trezor/device-utils';
|
||||
import { Type } from '@trezor/schema-utils';
|
||||
|
||||
export type FirmwareRange = Record<
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import coinsJSONEth from '@trezor/connect-common/files/coins-eth.json';
|
||||
import coinsJSON from '@trezor/connect-common/files/coins.json';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { getAllNetworks, parseCoinsJson } from '../../data/coinInfo';
|
||||
import { CoinInfo, DeviceModelInternal, Features } from '../../types';
|
||||
import { CoinInfo, Features } from '../../types';
|
||||
import {
|
||||
getUnavailableCapabilities,
|
||||
parseCapabilities,
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { isArrayMember } from '@trezor/utils';
|
||||
|
||||
import { DeviceModelInternal } from '../types';
|
||||
|
||||
const isDeviceModel = (model: string): model is DeviceModelInternal =>
|
||||
isArrayMember(model, Object.values(DeviceModelInternal));
|
||||
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { isArrayMember, versionUtils } from '@trezor/utils';
|
||||
|
||||
import { PROTO } from '../constants';
|
||||
import { config } from '../data/config';
|
||||
import { CoinInfo, DeviceModelInternal, Features, UnavailableCapabilities } from '../types';
|
||||
import { CoinInfo, Features, UnavailableCapabilities } from '../types';
|
||||
|
||||
const DEFAULT_CAPABILITIES_T1: PROTO.Capability[] = [
|
||||
'Capability_Bitcoin',
|
||||
|
||||
@@ -2,3 +2,4 @@ export * from './firmwareUtils';
|
||||
export * from './bootloaderUtils';
|
||||
export * from './modeUtils';
|
||||
export * from './types';
|
||||
export * from './deviceModelInternal';
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
"@trezor/components": "workspace:*",
|
||||
"@trezor/dom-utils": "workspace:*",
|
||||
"@trezor/env-utils": "workspace:*",
|
||||
"@trezor/protobuf": "workspace:*",
|
||||
"@trezor/react-utils": "workspace:*",
|
||||
"@trezor/theme": "workspace:*",
|
||||
"@trezor/urls": "workspace:*",
|
||||
|
||||
@@ -2,7 +2,7 @@ import { Meta, StoryFn } from '@storybook/react';
|
||||
|
||||
import { StoryColumn } from '@trezor/components';
|
||||
// todo: product-components should not depend on protobuf
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { ConfirmOnDevice as ConfirmOnDeviceComponent } from './ConfirmOnDevice';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { ReactNode } from 'react';
|
||||
import styled, { css, keyframes } from 'styled-components';
|
||||
|
||||
import { ElevationUp } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { borders, spacingsPx } from '@trezor/theme';
|
||||
|
||||
import { ConfirmOnDeviceContent } from './ConfirmOnDeviceContent';
|
||||
|
||||
@@ -3,7 +3,7 @@ import { ReactNode } from 'react';
|
||||
import styled, { css } from 'styled-components';
|
||||
|
||||
import { Column, IconButton, Row, Text } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { borders, spacings, spacingsPx } from '@trezor/theme';
|
||||
|
||||
import { RotateDeviceImage } from '../RotateDeviceImage/RotateDeviceImage';
|
||||
|
||||
@@ -3,7 +3,7 @@ import { FormattedMessage } from 'react-intl';
|
||||
import styled, { useTheme } from 'styled-components';
|
||||
|
||||
import { Icon, Image, Row, Text } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { spacings } from '@trezor/theme';
|
||||
|
||||
import { CardButton } from '../CardButton/CardButton';
|
||||
|
||||
@@ -5,8 +5,8 @@ import styled, { css } from 'styled-components';
|
||||
|
||||
import { formInputsMaxLength } from '@suite-common/validators';
|
||||
import { TooltipProps } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { setCaretPosition } from '@trezor/dom-utils';
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { useKeyPress } from '@trezor/react-utils';
|
||||
import { borders, spacingsPx } from '@trezor/theme';
|
||||
import { countBytesInString } from '@trezor/utils';
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Meta, StoryObj } from '@storybook/react';
|
||||
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import {
|
||||
RotateDeviceImage as RotateDeviceImageComponent,
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import React from 'react';
|
||||
|
||||
import { DeviceAnimation } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
export type RotateDeviceImageProps = {
|
||||
deviceModel?: DeviceModelInternal;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { IconName } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
export const mapTrezorModelToIcon: Record<DeviceModelInternal, IconName> = {
|
||||
[DeviceModelInternal.UNKNOWN]: 'trezorModelOneFilled', // Just to provide something that wont break UI
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
{ "path": "../components" },
|
||||
{ "path": "../dom-utils" },
|
||||
{ "path": "../env-utils" },
|
||||
{ "path": "../protobuf" },
|
||||
{ "path": "../react-utils" },
|
||||
{ "path": "../theme" },
|
||||
{ "path": "../urls" },
|
||||
|
||||
@@ -184,7 +184,7 @@ const createCustomTypes = () => {
|
||||
lines.push(`export type ${UINT_TYPE} = string | number;`, '');
|
||||
lines.push('// custom type sint32/64');
|
||||
lines.push(`export type ${SINT_TYPE} = string | number;`, '');
|
||||
lines.push(readPatch('customTypes.ts'), '');
|
||||
lines.push(readPatch('../../device-utils/src/deviceModelInternal.ts'), '');
|
||||
|
||||
return lines;
|
||||
};
|
||||
|
||||
@@ -20,6 +20,3 @@ export const { parseConfigure, decodeMessage, encodeMessage } = (() => {
|
||||
export * from './types';
|
||||
export * as Messages from './messages';
|
||||
export * as MessagesSchema from './messages-schema';
|
||||
|
||||
// It's problem to reexport enums when they are under MessagesSchema namespace, check packages/connect/src/types/device.ts
|
||||
export { DeviceModelInternal } from './messages-schema';
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
import { connectInitThunk } from '@suite-common/connect-init';
|
||||
import { testMocks } from '@suite-common/test-utils';
|
||||
import { notificationsActions } from '@suite-common/toast-notifications';
|
||||
import { CommonParams, DeviceModelInternal } from '@trezor/connect';
|
||||
import { CommonParams } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { mergeDeepObject } from '@trezor/utils';
|
||||
|
||||
import * as backupActions from 'src/actions/backup/backupActions';
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { firmwareActions, firmwareUpdate } from '@suite-common/firmware';
|
||||
import { testMocks } from '@suite-common/test-utils';
|
||||
import { DeviceModelInternal, FirmwareType, UI } from '@trezor/connect';
|
||||
import { FirmwareType, UI } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
const { getSuiteDevice, getFirmwareRelease } = testMocks;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { prepareFirmwareReducer } from '@suite-common/firmware';
|
||||
import { testMocks } from '@suite-common/test-utils';
|
||||
import { DeviceReducerState } from '@suite-common/wallet-core';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import suiteReducer from 'src/reducers/suite/suiteReducer';
|
||||
import { extraDependencies } from 'src/support/extraDependencies';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import * as recoveryActions from 'src/actions/recovery/recoveryActions';
|
||||
import recoveryReducer from 'src/reducers/recovery/recoveryReducer';
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { selectSelectedDevice } from '@suite-common/wallet-core';
|
||||
import TrezorConnect, { DeviceModelInternal, PROTO, RecoveryDevice, UI } from '@trezor/connect';
|
||||
import TrezorConnect, { PROTO, RecoveryDevice, UI } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { EventType, analytics } from '@trezor/suite-analytics';
|
||||
|
||||
import * as onboardingActions from 'src/actions/onboarding/onboardingActions';
|
||||
|
||||
@@ -4,8 +4,8 @@ import { useFirmwareInstallation } from '@suite-common/firmware';
|
||||
import { TranslationKey } from '@suite-common/intl-types';
|
||||
import { selectSelectedDeviceLabelOrName } from '@suite-common/wallet-core';
|
||||
import { BulletList, Column, DeviceAnimation, H2, NewModal, Paragraph } from '@trezor/components';
|
||||
import { DEVICE, Device, DeviceModelInternal, UI } from '@trezor/connect';
|
||||
import { getFirmwareVersion } from '@trezor/device-utils';
|
||||
import { DEVICE, Device, UI } from '@trezor/connect';
|
||||
import { DeviceModelInternal, getFirmwareVersion } from '@trezor/device-utils';
|
||||
import { ConfirmOnDevice } from '@trezor/product-components';
|
||||
import { spacings } from '@trezor/theme';
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import styled from 'styled-components';
|
||||
import { getPackagingUrl } from '@suite-common/suite-utils';
|
||||
import { selectSelectedDevice } from '@suite-common/wallet-core';
|
||||
import { Banner, DeviceAnimation, variables } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { typography } from '@trezor/theme';
|
||||
import { TREZOR_RESELLERS_URL, TREZOR_SUPPORT_URL } from '@trezor/urls';
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ import { ReactNode } from 'react';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { selectDeviceInternalModel } from '@suite-common/wallet-core';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { useSelector } from 'src/hooks/suite/useSelector';
|
||||
import { DisplayMode } from 'src/types/suite';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { Icon, IconName, IconProps } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { handleOnCopy } from 'src/utils/suite/deviceDisplay';
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { configureMockStore } from '@suite-common/test-utils';
|
||||
import { prepareDeviceReducer } from '@suite-common/wallet-core';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { DeepPartial } from '@trezor/type-utils';
|
||||
|
||||
import suiteReducer from '../../../../reducers/suite/suiteReducer';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import {
|
||||
ParseTextToLinesParams,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import {
|
||||
CHARACTER_OFFSET_FOR_CONTINUES_ARROW,
|
||||
|
||||
@@ -3,7 +3,7 @@ import { ReactNode } from 'react';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { Icon, IconName, IconProps, Image, variables } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { useGuide } from 'src/hooks/guide';
|
||||
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { getNarrowedDeviceModelInternal, resolveStaticPath } from '@suite-common/suite-utils';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { hasBitcoinOnlyFirmware } from '@trezor/device-utils';
|
||||
import { DeviceModelInternal, hasBitcoinOnlyFirmware } from '@trezor/device-utils';
|
||||
|
||||
import { applySettings } from 'src/actions/settings/deviceSettingsActions';
|
||||
import { getHomescreens } from 'src/constants/suite/homescreens';
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useEffect, useState } from 'react';
|
||||
import styled, { useTheme } from 'styled-components';
|
||||
|
||||
import { variables } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { HELP_CENTER_PIN_URL } from '@trezor/urls';
|
||||
|
||||
import { onPinSubmit } from 'src/actions/suite/modalActions';
|
||||
|
||||
@@ -2,7 +2,7 @@ import styled from 'styled-components';
|
||||
|
||||
import { selectSelectedDevice } from '@suite-common/wallet-core';
|
||||
import { DeviceAnimation, Image, variables } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { useSelector } from 'src/hooks/suite';
|
||||
|
||||
|
||||
@@ -3,7 +3,8 @@ import { useCallback, useEffect } from 'react';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { Button, KEYBOARD_CODE, PinButton } from '@trezor/components';
|
||||
import TrezorConnect, { DeviceModelInternal, UI } from '@trezor/connect';
|
||||
import TrezorConnect, { UI } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { HELP_CENTER_ADVANCED_RECOVERY_URL } from '@trezor/urls';
|
||||
import { resolveAfter } from '@trezor/utils';
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import styled from 'styled-components';
|
||||
|
||||
import { selectDeviceLabelOrNameById } from '@suite-common/wallet-core';
|
||||
import { Row, Tooltip } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { RotateDeviceImage } from '@trezor/product-components';
|
||||
import { spacings } from '@trezor/theme';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import * as STEP from 'src/constants/onboarding/steps';
|
||||
import type { Step } from 'src/types/onboarding';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
export const MAX_LABEL_LENGTH = 16;
|
||||
export const DEFAULT_PASSPHRASE_PROTECTION = true;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
const safe3Homescreens = [
|
||||
'original_t3b1', // note - has to be first
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { Network, getMainnets, getTestnets } from '@suite-common/wallet-config';
|
||||
import { selectDeviceSupportedNetworks, selectSelectedDevice } from '@suite-common/wallet-core';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { hasBitcoinOnlyFirmware } from '@trezor/device-utils';
|
||||
import { DeviceModelInternal, hasBitcoinOnlyFirmware } from '@trezor/device-utils';
|
||||
import { arrayPartition } from '@trezor/utils';
|
||||
|
||||
import { useSelector } from 'src/hooks/suite';
|
||||
|
||||
@@ -14,7 +14,8 @@ import {
|
||||
restartDiscoveryThunk,
|
||||
selectDeviceThunk,
|
||||
} from '@suite-common/wallet-core';
|
||||
import { DEVICE, DeviceModelInternal } from '@trezor/connect';
|
||||
import { DEVICE } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { METADATA, ROUTER, SUITE } from 'src/actions/suite/constants';
|
||||
import { handleProtocolRequest } from 'src/actions/suite/protocolActions';
|
||||
|
||||
@@ -13,7 +13,8 @@ import {
|
||||
networkAmountToSmallestUnit,
|
||||
} from '@suite-common/wallet-utils';
|
||||
import { parseAsset } from '@trezor/blockchain-link-utils/src/blockfrost';
|
||||
import { DeviceModelInternal, FirmwareType } from '@trezor/connect';
|
||||
import { FirmwareType } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { isDesktop } from '@trezor/env-utils';
|
||||
import type { OnUpgradeFunc } from '@trezor/suite-storage';
|
||||
import { PartialRecord } from '@trezor/type-utils';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { FirmwareVersionString } from '@trezor/device-utils/src/types';
|
||||
|
||||
import * as STEP from 'src/constants/onboarding/steps';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/protobuf';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { pickByDeviceModel } from '../modelUtils';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
export const pickByDeviceModel = <Type>(
|
||||
deviceModelInternal: DeviceModelInternal | undefined,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { TrezorDevice } from 'src/types/suite';
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { satisfies, valid } from 'semver';
|
||||
|
||||
import { DeviceModelInternal, FirmwareType } from '@trezor/connect';
|
||||
import { getFirmwareVersion } from '@trezor/device-utils';
|
||||
import { FirmwareType } from '@trezor/connect';
|
||||
import { DeviceModelInternal, getFirmwareVersion } from '@trezor/device-utils';
|
||||
|
||||
import { type ExtendedMessageDescriptor, type TrezorDevice } from 'src/types/suite';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import * as STEP from 'src/constants/onboarding/steps';
|
||||
import { Step } from 'src/types/onboarding';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { testMocks } from '@suite-common/test-utils';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import * as URLS from '@trezor/urls';
|
||||
|
||||
import type { TrezorDevice } from 'src/types/suite';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { deviceModelInformation } from 'src/utils/suite/homescreen';
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import {
|
||||
dataUrlToImage,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { deflateRaw } from 'pako';
|
||||
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { HAS_MONOCHROME_SCREEN } from 'src/constants/suite/device';
|
||||
import { TrezorDevice } from 'src/types/suite/index';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { goToPreviousStep } from 'src/actions/onboarding/onboardingActions';
|
||||
import { setStatus } from 'src/actions/recovery/recoveryActions';
|
||||
|
||||
@@ -2,7 +2,7 @@ import styled from 'styled-components';
|
||||
|
||||
import { isDeviceWithButtons } from '@suite-common/suite-utils';
|
||||
import { selectSelectedDevice } from '@suite-common/wallet-core';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { goToNextStep, updateAnalytics } from 'src/actions/onboarding/onboardingActions';
|
||||
import { OnboardingButtonCta } from 'src/components/onboarding';
|
||||
|
||||
@@ -4,7 +4,7 @@ import styled from 'styled-components';
|
||||
|
||||
import { selectSelectedDevice } from '@suite-common/wallet-core';
|
||||
import { Button, Divider, Text, Tooltip } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { resetDevice } from 'src/actions/settings/deviceSettingsActions';
|
||||
import { OnboardingButtonBack, OnboardingStepBox, OptionsWrapper } from 'src/components/onboarding';
|
||||
|
||||
@@ -17,7 +17,7 @@ import styled from 'styled-components';
|
||||
import { TranslationKey } from '@suite-common/intl-types';
|
||||
import { selectSelectedDevice } from '@suite-common/wallet-core';
|
||||
import { Banner, ElevationUp, Text, useElevation } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import {
|
||||
Elevation,
|
||||
borders,
|
||||
|
||||
@@ -8,7 +8,8 @@ import {
|
||||
isDeviceWithButtons,
|
||||
} from '@suite-common/suite-utils';
|
||||
import { BulletList, Card, H2, H3, Image, NewModal, Paragraph } from '@trezor/components';
|
||||
import TrezorConnect, { DeviceModelInternal } from '@trezor/connect';
|
||||
import TrezorConnect from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { spacings } from '@trezor/theme';
|
||||
|
||||
import {
|
||||
|
||||
@@ -1,9 +1,6 @@
|
||||
import { Icon, SelectBar, Tooltip } from '@trezor/components';
|
||||
import {
|
||||
DeviceModelInternal,
|
||||
type DisplayRotation as DisplayRotationType,
|
||||
PROTO,
|
||||
} from '@trezor/connect';
|
||||
import { type DisplayRotation as DisplayRotationType, PROTO } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { EventType, analytics } from '@trezor/suite-analytics';
|
||||
|
||||
import { applySettings } from 'src/actions/settings/deviceSettingsActions';
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useRef, useState } from 'react';
|
||||
import styled from 'styled-components';
|
||||
|
||||
import { Button, ButtonGroup, Tooltip, variables } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { HOMESCREEN_EDITOR_URL } from '@trezor/urls';
|
||||
|
||||
import { applySettings } from 'src/actions/settings/deviceSettingsActions';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { useEffect } from 'react';
|
||||
|
||||
import { Card, Column, Icon } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { spacings } from '@trezor/theme';
|
||||
|
||||
import { Translation } from 'src/components/suite/Translation';
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useEffect } from 'react';
|
||||
import { getNetworkDisplaySymbol } from '@suite-common/wallet-config';
|
||||
import { formatNetworkAmount } from '@suite-common/wallet-utils';
|
||||
import { Card, Column, Icon } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { spacings } from '@trezor/theme';
|
||||
|
||||
import { openModal } from 'src/actions/suite/modalActions';
|
||||
|
||||
@@ -3,7 +3,7 @@ import { useEffect } from 'react';
|
||||
import { getNetworkDisplaySymbol } from '@suite-common/wallet-config';
|
||||
import { formatNetworkAmount } from '@suite-common/wallet-utils';
|
||||
import { Banner, Card, Column, Icon } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { spacings } from '@trezor/theme';
|
||||
|
||||
import { HiddenPlaceholder } from 'src/components/suite/HiddenPlaceholder';
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { SelectedAccountLoaded } from '@suite-common/wallet-types';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { WalletLayout } from 'src/components/wallet';
|
||||
import { useDevice } from 'src/hooks/suite';
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import { ReactNode } from 'react';
|
||||
|
||||
import { Button, Tooltip } from '@trezor/components';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { mapTrezorModelToIconDeprecated } from '@trezor/product-components';
|
||||
|
||||
interface DeviceButtonProps {
|
||||
|
||||
@@ -8,8 +8,9 @@ import {
|
||||
} from '@suite-common/firmware';
|
||||
import { FirmwareStatus, TrezorDevice } from '@suite-common/suite-types';
|
||||
import { selectSelectedDevice } from '@suite-common/wallet-core';
|
||||
import { DEVICE, DeviceModelInternal, FirmwareType, UI } from '@trezor/connect';
|
||||
import { DEVICE, FirmwareType, UI } from '@trezor/connect';
|
||||
import {
|
||||
DeviceModelInternal,
|
||||
getFirmwareVersion,
|
||||
hasBitcoinOnlyFirmware,
|
||||
isBitcoinOnlyDevice,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { testMocks } from '@suite-common/test-utils';
|
||||
import { DeviceModelInternal, FirmwareType } from '@trezor/connect';
|
||||
import { FirmwareType } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
const { getDeviceFeatures, getConnectDevice, getMessageSystemConfig } = testMocks;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
export const DEFAULT_FLAGSHIP_MODEL = DeviceModelInternal.T3T1;
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { Environment } from '@trezor/env-utils';
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { isDeviceWithButtons } from '../device';
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { AcquiredDevice, TrezorDevice } from '@suite-common/suite-types';
|
||||
import { Device, DeviceModelInternal, KnownDevice, UnavailableCapability } from '@trezor/connect';
|
||||
import { Device, KnownDevice, UnavailableCapability } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import * as URLS from '@trezor/urls';
|
||||
|
||||
/**
|
||||
|
||||
@@ -18,12 +18,12 @@ import {
|
||||
import {
|
||||
AccountUtxo,
|
||||
Device,
|
||||
DeviceModelInternal,
|
||||
DeviceUniquePath,
|
||||
Features,
|
||||
FirmwareType,
|
||||
TrezorConnect,
|
||||
} from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
// in-memory implementation of indexedDB
|
||||
import 'fake-indexeddb/auto';
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
"type-check": "yarn g:tsc --build"
|
||||
},
|
||||
"dependencies": {
|
||||
"@trezor/connect": "workspace:*",
|
||||
"@trezor/device-utils": "workspace:*",
|
||||
"@trezor/type-utils": "workspace:*"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { getExplorerUrls } from './getExplorerUrls';
|
||||
import { Networks } from './types';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { RequiredKey } from '@trezor/type-utils';
|
||||
|
||||
export type NetworkSymbol =
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": { "outDir": "libDev" },
|
||||
"references": [
|
||||
{ "path": "../../packages/connect" },
|
||||
{ "path": "../../packages/device-utils" },
|
||||
{ "path": "../../packages/type-utils" }
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { TrezorDevice } from '@suite-common/suite-types';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
// These hidden device constants are used in mobile app to hold all imported accounts.
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import {
|
||||
} from '@suite-common/wallet-types';
|
||||
import { getSendFormDraftKey } from '@suite-common/wallet-utils';
|
||||
import { BlockbookTransaction } from '@trezor/blockchain-link-types';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { cloneObject } from '@trezor/utils';
|
||||
|
||||
import { sendFormActions } from './sendFormActions';
|
||||
|
||||
@@ -2,7 +2,8 @@ import { FiatCurrencyCode } from '@suite-common/suite-config';
|
||||
import { UNIT_ABBREVIATION } from '@suite-common/suite-constants';
|
||||
import type { AccountType, NetworkSymbol } from '@suite-common/wallet-config';
|
||||
import { FeeLevelLabel, TokenAddress, TokenSymbol } from '@suite-common/wallet-types';
|
||||
import { DeviceModelInternal, VersionArray } from '@trezor/connect';
|
||||
import { VersionArray } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { EventType } from './constants';
|
||||
import {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { DeviceModelInternal, FirmwareType } from '@trezor/connect';
|
||||
import { FirmwareType } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
export type AnalyticsSendFlowStep =
|
||||
| 'address_and_amount'
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { Image } from '@suite-native/atoms';
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
import { prepareNativeStyle, useNativeStyles } from '@trezor/styles';
|
||||
|
||||
const deviceImageMap: Record<DeviceModelInternal, string> = {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
export type SetupSupportingDeviceModel = Exclude<
|
||||
DeviceModelInternal,
|
||||
|
||||
@@ -3,7 +3,8 @@ import { AnyAction } from '@reduxjs/toolkit';
|
||||
import * as semver from 'semver';
|
||||
|
||||
import { UnreachableCaseError } from '@suite-common/suite-utils';
|
||||
import { DEVICE, Device, DeviceEvent, DeviceModelInternal, VersionArray } from '@trezor/connect';
|
||||
import { DEVICE, Device, DeviceEvent, VersionArray } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
export const minimalSupportedFirmwareVersion = {
|
||||
UNKNOWN: [0, 0, 0] as VersionArray,
|
||||
|
||||
@@ -9,8 +9,12 @@ import {
|
||||
FirmwareUpdateStartType,
|
||||
analytics,
|
||||
} from '@suite-native/analytics';
|
||||
import { DeviceModelInternal, FirmwareType } from '@trezor/connect';
|
||||
import { getBootloaderVersion, getFirmwareVersion } from '@trezor/device-utils';
|
||||
import { FirmwareType } from '@trezor/connect';
|
||||
import {
|
||||
DeviceModelInternal,
|
||||
getBootloaderVersion,
|
||||
getFirmwareVersion,
|
||||
} from '@trezor/device-utils';
|
||||
|
||||
export const useFirmwareAnalytics = ({
|
||||
device,
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
"@suite-common/wallet-config": "workspace:*",
|
||||
"@suite-common/wallet-utils": "workspace:*",
|
||||
"@trezor/asset-utils": "workspace:*",
|
||||
"@trezor/connect": "workspace:*",
|
||||
"@trezor/device-utils": "workspace:*",
|
||||
"@trezor/styles": "workspace:*",
|
||||
"@trezor/theme": "workspace:*",
|
||||
"expo-image": "^2.0.0",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DeviceModelInternal } from '@trezor/connect';
|
||||
import { DeviceModelInternal } from '@trezor/device-utils';
|
||||
|
||||
import { Icon, IconName, IconSize } from './Icon';
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user