mirror of
https://github.com/trezor/trezor-suite.git
synced 2026-02-20 00:33:07 +01:00
chore(suite-native): portfolio tracker evolu unavailable
This commit is contained in:
committed by
Bohdan Juříček
parent
74ddc8c9d2
commit
72d9f5ca2e
@@ -70,7 +70,9 @@ export const portfolioTrackerDevice: TrezorDevice = {
|
||||
buttonRequests: [],
|
||||
metadata: {},
|
||||
passwords: {},
|
||||
unavailableCapabilities: {},
|
||||
unavailableCapabilities: {
|
||||
evolu: 'no-support',
|
||||
},
|
||||
availableTranslations: {},
|
||||
remember: true,
|
||||
authenticityChecks: {
|
||||
|
||||
@@ -41,6 +41,7 @@ import { localePersistWhitelist, localeReducer } from '@suite-native/intl';
|
||||
import { appSettingsPersistWhitelist, appSettingsReducer } from '@suite-native/settings';
|
||||
import {
|
||||
backfillDeviceAuthenticityChecks,
|
||||
backfillPortfolioTrackerUnavailableCapabilities,
|
||||
bluetoothPersistTransform,
|
||||
deriveAccountTypeFromPaymentType,
|
||||
devicePersistTransform,
|
||||
@@ -184,7 +185,7 @@ export const prepareRootReducers = async () => {
|
||||
reducer: deviceReducer,
|
||||
persistedKeys: ['devices', 'persistentDeviceData'],
|
||||
key: 'devices',
|
||||
version: 3,
|
||||
version: 4,
|
||||
transforms: [devicePersistTransform],
|
||||
migrations: {
|
||||
2: (oldState: any /* FIXME */) => {
|
||||
@@ -200,6 +201,14 @@ export const prepareRootReducers = async () => {
|
||||
if (!oldState?.devices) return oldState;
|
||||
const migratedDevices = backfillDeviceAuthenticityChecks(oldState.devices);
|
||||
|
||||
return { ...oldState, devices: migratedDevices };
|
||||
},
|
||||
4: (oldState: any /* FIXME */) => {
|
||||
if (!oldState?.devices) return oldState;
|
||||
const migratedDevices = backfillPortfolioTrackerUnavailableCapabilities(
|
||||
oldState.devices,
|
||||
);
|
||||
|
||||
return { ...oldState, devices: migratedDevices };
|
||||
},
|
||||
},
|
||||
|
||||
11
suite-native/storage/jest.config.js
Normal file
11
suite-native/storage/jest.config.js
Normal file
@@ -0,0 +1,11 @@
|
||||
/**
|
||||
* Jest configuration for native packages.
|
||||
* Keeping this file next to the package.json file instead of providing configuration
|
||||
* with `-c ../../jest.config.native` option in package.json scripts
|
||||
* allows us to run jest tests directly from IDEs.
|
||||
*/
|
||||
const baseConfig = require('../../jest.config.native');
|
||||
|
||||
module.exports = {
|
||||
...baseConfig,
|
||||
};
|
||||
@@ -8,6 +8,7 @@ export * from './migrations/account/v2';
|
||||
export * from './migrations/account/v3';
|
||||
export * from './migrations/device/v2';
|
||||
export * from './migrations/device/v3';
|
||||
export * from './migrations/device/v4';
|
||||
export * from './migrations/wallet/transactions/v2';
|
||||
export * from './migrations/wallet/accounts/v2';
|
||||
export * from './migrations/wallet/accounts/v3';
|
||||
|
||||
19
suite-native/storage/src/migrations/device/v4.ts
Normal file
19
suite-native/storage/src/migrations/device/v4.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { TrezorDevice } from '@suite-common/suite-types';
|
||||
import { PORTFOLIO_TRACKER_DEVICE_ID } from '@suite-common/wallet-core';
|
||||
|
||||
export const backfillPortfolioTrackerUnavailableCapabilities = (
|
||||
devices: TrezorDevice[],
|
||||
): TrezorDevice[] =>
|
||||
devices?.map(device => {
|
||||
if (device.id !== PORTFOLIO_TRACKER_DEVICE_ID) return device;
|
||||
|
||||
return {
|
||||
...device,
|
||||
unavailableCapabilities: {
|
||||
...device.unavailableCapabilities,
|
||||
...(device.unavailableCapabilities?.evolu === undefined
|
||||
? { evolu: 'no-support' as const }
|
||||
: {}),
|
||||
},
|
||||
};
|
||||
});
|
||||
156
suite-native/storage/src/tests/migrations/deviceV4.test.ts
Normal file
156
suite-native/storage/src/tests/migrations/deviceV4.test.ts
Normal file
@@ -0,0 +1,156 @@
|
||||
import { TrezorDevice } from '@suite-common/suite-types';
|
||||
import { PORTFOLIO_TRACKER_DEVICE_ID } from '@suite-common/wallet-core';
|
||||
|
||||
import { backfillPortfolioTrackerUnavailableCapabilities } from '../../migrations/device/v4';
|
||||
|
||||
describe('backfillPortfolioTrackerUnavailableCapabilities', () => {
|
||||
it('should add unavailableCapabilities to portfolio tracker device without existing capabilities', () => {
|
||||
const oldDevices = [
|
||||
{
|
||||
id: PORTFOLIO_TRACKER_DEVICE_ID,
|
||||
type: 'acquired',
|
||||
status: 'available',
|
||||
},
|
||||
] as unknown as TrezorDevice[];
|
||||
|
||||
const migratedDevices = backfillPortfolioTrackerUnavailableCapabilities(oldDevices as any);
|
||||
|
||||
expect(migratedDevices).toEqual([
|
||||
{
|
||||
id: PORTFOLIO_TRACKER_DEVICE_ID,
|
||||
type: 'acquired',
|
||||
status: 'available',
|
||||
unavailableCapabilities: {
|
||||
evolu: 'no-support',
|
||||
},
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should add unavailableCapabilities to portfolio tracker device with empty capabilities', () => {
|
||||
const oldDevices = [
|
||||
{
|
||||
id: PORTFOLIO_TRACKER_DEVICE_ID,
|
||||
type: 'acquired',
|
||||
unavailableCapabilities: {},
|
||||
},
|
||||
] as unknown as TrezorDevice[];
|
||||
|
||||
const migratedDevices = backfillPortfolioTrackerUnavailableCapabilities(oldDevices as any);
|
||||
|
||||
expect(migratedDevices).toEqual([
|
||||
{
|
||||
id: PORTFOLIO_TRACKER_DEVICE_ID,
|
||||
type: 'acquired',
|
||||
unavailableCapabilities: {
|
||||
evolu: 'no-support',
|
||||
},
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should preserve existing unavailableCapabilities and add evolu for portfolio tracker', () => {
|
||||
const oldDevices = [
|
||||
{
|
||||
id: PORTFOLIO_TRACKER_DEVICE_ID,
|
||||
type: 'acquired',
|
||||
unavailableCapabilities: {
|
||||
someOtherCapability: 'disabled',
|
||||
},
|
||||
},
|
||||
] as unknown as TrezorDevice[];
|
||||
|
||||
const migratedDevices = backfillPortfolioTrackerUnavailableCapabilities(oldDevices as any);
|
||||
|
||||
expect(migratedDevices).toEqual([
|
||||
{
|
||||
id: PORTFOLIO_TRACKER_DEVICE_ID,
|
||||
type: 'acquired',
|
||||
unavailableCapabilities: {
|
||||
someOtherCapability: 'disabled',
|
||||
evolu: 'no-support',
|
||||
},
|
||||
},
|
||||
]);
|
||||
});
|
||||
|
||||
it('should not modify portfolio tracker if evolu capability already exists', () => {
|
||||
const oldDevices = [
|
||||
{
|
||||
id: PORTFOLIO_TRACKER_DEVICE_ID,
|
||||
type: 'acquired',
|
||||
unavailableCapabilities: {
|
||||
evolu: 'already-set',
|
||||
otherCapability: 'value',
|
||||
},
|
||||
},
|
||||
] as unknown as TrezorDevice[];
|
||||
|
||||
const migratedDevices = backfillPortfolioTrackerUnavailableCapabilities(oldDevices as any);
|
||||
|
||||
expect(migratedDevices).toEqual(oldDevices);
|
||||
});
|
||||
|
||||
it('should not modify regular devices without portfolio tracker ID', () => {
|
||||
const oldDevices = [
|
||||
{
|
||||
id: 'regular-device-id',
|
||||
type: 'acquired',
|
||||
status: 'available',
|
||||
// No unavailableCapabilities
|
||||
},
|
||||
{
|
||||
id: 'another-device',
|
||||
type: 'acquired',
|
||||
unavailableCapabilities: {
|
||||
someCapability: 'value',
|
||||
},
|
||||
},
|
||||
] as unknown as TrezorDevice[];
|
||||
|
||||
const migratedDevices = backfillPortfolioTrackerUnavailableCapabilities(oldDevices);
|
||||
|
||||
expect(migratedDevices).toEqual(oldDevices);
|
||||
});
|
||||
|
||||
it('should handle mixed devices array with portfolio tracker and regular devices', () => {
|
||||
const oldDevices = [
|
||||
{
|
||||
id: 'regular-device-1',
|
||||
type: 'acquired',
|
||||
},
|
||||
{
|
||||
id: PORTFOLIO_TRACKER_DEVICE_ID,
|
||||
type: 'acquired',
|
||||
},
|
||||
{
|
||||
id: 'regular-device-2',
|
||||
unavailableCapabilities: {
|
||||
existingCap: 'value',
|
||||
},
|
||||
},
|
||||
] as unknown as TrezorDevice[];
|
||||
|
||||
const migratedDevices = backfillPortfolioTrackerUnavailableCapabilities(oldDevices);
|
||||
|
||||
expect(migratedDevices).toEqual([
|
||||
{
|
||||
id: 'regular-device-1',
|
||||
type: 'acquired',
|
||||
},
|
||||
{
|
||||
id: PORTFOLIO_TRACKER_DEVICE_ID,
|
||||
type: 'acquired',
|
||||
unavailableCapabilities: {
|
||||
evolu: 'no-support',
|
||||
},
|
||||
},
|
||||
{
|
||||
id: 'regular-device-2',
|
||||
unavailableCapabilities: {
|
||||
existingCap: 'value',
|
||||
},
|
||||
},
|
||||
]);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user