diff --git a/src/devices/AndroidDevice.tsx b/src/devices/AndroidDevice.tsx index 2a773f702..51c87f68b 100644 --- a/src/devices/AndroidDevice.tsx +++ b/src/devices/AndroidDevice.tsx @@ -83,14 +83,14 @@ export default class AndroidDevice extends BaseDevice { } archive(): ArchivedDevice { - return new ArchivedDevice( - this.serial, - this.deviceType, - this.title, - this.os, - [...this.logEntries], - null, - ); + return new ArchivedDevice({ + serial: this.serial, + deviceType: this.deviceType, + title: this.title, + os: this.os, + logEntries: [...this.logEntries], + screenshotHandle: null, + }); } navigateToLocation(location: string) { diff --git a/src/devices/ArchivedDevice.tsx b/src/devices/ArchivedDevice.tsx index 4542751ff..0d0d8d31b 100644 --- a/src/devices/ArchivedDevice.tsx +++ b/src/devices/ArchivedDevice.tsx @@ -22,21 +22,26 @@ function normalizeArchivedDeviceType(deviceType: DeviceType): DeviceType { } export default class ArchivedDevice extends BaseDevice { - constructor( - serial: string, - deviceType: DeviceType, - title: string, - os: OS, - logEntries: Array, - screenshotHandle: string | null, - source: string = '', - supportRequestDetails?: SupportFormRequestDetailsState, - ) { - super(serial, normalizeArchivedDeviceType(deviceType), title, os); - this.logs = logEntries; - this.source = source; - this.supportRequestDetails = supportRequestDetails; - this.archivedScreenshotHandle = screenshotHandle; + constructor(options: { + serial: string; + deviceType: DeviceType; + title: string; + os: OS; + logEntries: Array; + screenshotHandle: string | null; + source?: string; + supportRequestDetails?: SupportFormRequestDetailsState; + }) { + super( + options.serial, + normalizeArchivedDeviceType(options.deviceType), + options.title, + options.os, + ); + this.logs = options.logEntries; + this.source = options.source || ''; + this.supportRequestDetails = options.supportRequestDetails; + this.archivedScreenshotHandle = options.screenshotHandle; } logs: Array; diff --git a/src/devices/MetroDevice.tsx b/src/devices/MetroDevice.tsx index b95b1bd3c..3c19b810a 100644 --- a/src/devices/MetroDevice.tsx +++ b/src/devices/MetroDevice.tsx @@ -200,13 +200,13 @@ export default class MetroDevice extends BaseDevice { } archive() { - return new ArchivedDevice( - this.serial, - this.deviceType, - this.title, - this.os, - [...this.logEntries], - null, - ); + return new ArchivedDevice({ + serial: this.serial, + deviceType: this.deviceType, + title: this.title, + os: this.os, + logEntries: [...this.logEntries], + screenshotHandle: null, + }); } } diff --git a/src/utils/__tests__/exportData.electron.tsx b/src/utils/__tests__/exportData.electron.tsx index 0eac86439..0538198c5 100644 --- a/src/utils/__tests__/exportData.electron.tsx +++ b/src/utils/__tests__/exportData.electron.tsx @@ -71,14 +71,14 @@ function generateClientFromDevice( } test('test generateClientIndentifierWithSalt helper function', () => { - const device = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const device = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const identifier = generateClientIdentifier(device, 'app'); const saltIdentifier = generateClientIdentifierWithSalt(identifier, 'salt'); expect(saltIdentifier).toEqual('app#iOS#archivedEmulator#salt-serial'); @@ -86,14 +86,14 @@ test('test generateClientIndentifierWithSalt helper function', () => { }); test('test generateClientFromClientWithSalt helper function', () => { - const device = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const device = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const client = generateClientFromDevice(device, 'app'); const saltedClient = generateClientFromClientWithSalt(client, 'salt'); expect(saltedClient).toEqual({ @@ -117,14 +117,14 @@ test('test generateClientFromClientWithSalt helper function', () => { }); test('test generateClientFromDevice helper function', () => { - const device = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const device = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const client = generateClientFromDevice(device, 'app'); expect(client).toEqual({ id: 'app#iOS#archivedEmulator#serial', @@ -138,14 +138,14 @@ test('test generateClientFromDevice helper function', () => { }); test('test generateClientIdentifier helper function', () => { - const device = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const device = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const identifier = generateClientIdentifier(device, 'app'); expect(identifier).toEqual('app#iOS#archivedEmulator#serial'); }); @@ -177,14 +177,14 @@ test('test processStore function for empty state', () => { test('test processStore function for an iOS device connected', async () => { const json = await processStore({ activeNotifications: [], - device: new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ), + device: new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }), pluginStates: {}, clients: [], devicePlugins: new Map(), @@ -214,14 +214,14 @@ test('test processStore function for an iOS device connected', async () => { }); test('test processStore function for an iOS device connected with client plugin data', async () => { - const device = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const device = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const clientIdentifier = generateClientIdentifier(device, 'testapp'); const json = await processStore({ activeNotifications: [], @@ -252,22 +252,22 @@ test('test processStore function for an iOS device connected with client plugin }); test('test processStore function to have only the client for the selected device', async () => { - const selectedDevice = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); - const unselectedDevice = new ArchivedDevice( - 'identifier', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const selectedDevice = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); + const unselectedDevice = new ArchivedDevice({ + serial: 'identifier', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const unselectedDeviceClientIdentifier = generateClientIdentifier( unselectedDevice, @@ -321,14 +321,14 @@ test('test processStore function to have only the client for the selected device }); test('test processStore function to have multiple clients for the selected device', async () => { - const selectedDevice = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const selectedDevice = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const clientIdentifierApp1 = generateClientIdentifier( selectedDevice, @@ -388,14 +388,14 @@ test('test processStore function to have multiple clients for the selected devic test('test processStore function for device plugin state and no clients', async () => { // Test case to verify that device plugin data is exported even if there are no clients - const selectedDevice = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const selectedDevice = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const json = await processStore({ activeNotifications: [], device: selectedDevice, @@ -426,14 +426,14 @@ test('test processStore function for device plugin state and no clients', async test('test processStore function for unselected device plugin state and no clients', async () => { // Test case to verify that device plugin data is exported even if there are no clients - const selectedDevice = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const selectedDevice = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const json = await processStore({ activeNotifications: [], device: selectedDevice, @@ -460,14 +460,14 @@ test('test processStore function for unselected device plugin state and no clien test('test processStore function for notifications for selected device', async () => { // Test case to verify that device plugin data is exported even if there are no clients - const selectedDevice = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const selectedDevice = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const client = generateClientFromDevice(selectedDevice, 'testapp1'); const notification = generateNotifications( 'notificationID', @@ -510,22 +510,22 @@ test('test processStore function for notifications for selected device', async ( test('test processStore function for notifications for unselected device', async () => { // Test case to verify that device plugin data is exported even if there are no clients - const selectedDevice = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); - const unselectedDevice = new ArchivedDevice( - 'identifier', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const selectedDevice = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); + const unselectedDevice = new ArchivedDevice({ + serial: 'identifier', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const client = generateClientFromDevice(selectedDevice, 'testapp1'); const unselectedclient = generateClientFromDevice( @@ -566,14 +566,14 @@ test('test processStore function for notifications for unselected device', async }); test('test processStore function for selected plugins', async () => { - const selectedDevice = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const selectedDevice = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const client = generateClientFromDevice(selectedDevice, 'app'); const pluginstates = { @@ -617,14 +617,14 @@ test('test processStore function for selected plugins', async () => { }); test('test processStore function for no selected plugins', async () => { - const selectedDevice = new ArchivedDevice( - 'serial', - 'emulator', - 'TestiPhone', - 'iOS', - [], - null, - ); + const selectedDevice = new ArchivedDevice({ + serial: 'serial', + deviceType: 'emulator', + title: 'TestiPhone', + os: 'iOS', + logEntries: [], + screenshotHandle: null, + }); const client = generateClientFromDevice(selectedDevice, 'app'); const pluginstates = { [generateClientIdentifier(selectedDevice, 'app') + '#TestDevicePlugin1']: { diff --git a/src/utils/exportData.tsx b/src/utils/exportData.tsx index 5a7b9ffd9..0a216778f 100644 --- a/src/utils/exportData.tsx +++ b/src/utils/exportData.tsx @@ -268,14 +268,14 @@ const addSaltToDeviceSerial = async ( } = options; const {serial} = device; const newSerial = salt + '-' + serial; - const newDevice = new ArchivedDevice( - newSerial, - device.deviceType, - device.title, - device.os, - selectedPlugins.includes('DeviceLogs') ? device.getLogs() : [], - deviceScreenshot, - ); + const newDevice = new ArchivedDevice({ + serial: newSerial, + deviceType: device.deviceType, + title: device.title, + os: device.os, + logEntries: selectedPlugins.includes('DeviceLogs') ? device.getLogs() : [], + screenshotHandle: deviceScreenshot, + }); statusUpdate && statusUpdate('Adding salt to the selected device id in the client data...'); const updatedClients = clients.map((client: ClientExport) => { @@ -681,20 +681,20 @@ export function importDataToStore(source: string, data: string, store: Store) { } const {serial, deviceType, title, os, logs} = device; - const archivedDevice = new ArchivedDevice( + const archivedDevice = new ArchivedDevice({ serial, deviceType, title, os, - logs + logEntries: logs ? logs.map(l => { return {...l, date: new Date(l.date)}; }) : [], - deviceScreenshot, + screenshotHandle: deviceScreenshot, source, supportRequestDetails, - ); + }); const devices = store.getState().connections.devices; const matchedDevices = devices.filter( availableDevice => availableDevice.serial === serial,