Skip to content

Commit

Permalink
Refactor device list
Browse files Browse the repository at this point in the history
  • Loading branch information
drauggres committed Aug 13, 2020
1 parent f4fa7c9 commit 951ab00
Show file tree
Hide file tree
Showing 8 changed files with 1,128 additions and 70 deletions.
935 changes: 935 additions & 0 deletions src/android/MediaFormat.ts

Large diffs are not rendered by default.

31 changes: 22 additions & 9 deletions src/client/ClientDeviceTracker.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import * as querystring from 'querystring';
import { NodeClient } from './NodeClient';
import { Message } from '../common/Message';
import { Device } from '../common/Device';
import { StreamParams } from './ScrcpyClient';
import { SERVER_PORT } from '../server/Constants';
import { ShellParams } from './ClientShell';
import DescriptorFields from "../common/DescriptorFields";

type MapItem = {
field?: keyof Device;
field?: keyof DescriptorFields;
title: string;
};

Expand Down Expand Up @@ -36,6 +36,10 @@ const FIELDS_MAP: MapItem[] = [
field: 'state',
title: 'State',
},
{
field: 'ip',
title: 'Wi-Fi IP',
},
{
field: 'pid',
title: 'Pid',
Expand Down Expand Up @@ -93,11 +97,11 @@ export class ClientDeviceTracker extends NodeClient {
console.log(`Unknown message type: ${message.type}`);
return;
}
const list: Device[] = message.data as Device[];
const list: DescriptorFields[] = message.data as DescriptorFields[];
this.buildDeviceTable(list);
}

private buildDeviceTable(data: Device[]): void {
private buildDeviceTable(data: DescriptorFields[]): void {
let devices = document.getElementById('devices');
if (!devices) {
devices = document.createElement('div');
Expand Down Expand Up @@ -133,19 +137,27 @@ export class ClientDeviceTracker extends NodeClient {

data.forEach((device) => {
const row = document.createElement('tr');
let hasPid = false;
let hasIp = false;
FIELDS_MAP.forEach((item) => {
if (item.field) {
const value = device[item.field].toString();
const td = document.createElement('td');
td.innerText = device[item.field].toString();
td.innerText = value;
row.appendChild(td);
if (item.field === 'pid') {
hasPid = (value !== '-1');
} else if (item.field === 'ip') {
hasIp = !value.includes('[');
}
}
});
const isActive = device.state === 'device';
DECODERS.forEach((decoderName) => {
const decoderTd = document.createElement('td');
if (isActive) {
decoderTd.appendChild(
ClientDeviceTracker.buildLink(
if (hasIp && hasPid) {
const link = ClientDeviceTracker.buildLink(
{
showFps: true,
action: 'stream',
Expand All @@ -155,8 +167,9 @@ export class ClientDeviceTracker extends NodeClient {
port: SERVER_PORT.toString(10),
},
'stream',
),
);
);
decoderTd.appendChild(link);
}
}
row.appendChild(decoderTd);
});
Expand Down
12 changes: 12 additions & 0 deletions src/common/DescriptorFields.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
export default interface DescriptorFields {
"build.version.release": string;
"build.version.sdk": string;
"ro.product.cpu.abi": string;
"product.manufacturer": string;
"product.model": string;
"wifi.interface": string;
udid: string;
state: string;
ip: string;
pid: number;
}
11 changes: 0 additions & 11 deletions src/common/Device.d.ts

This file was deleted.

6 changes: 2 additions & 4 deletions src/common/Message.d.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,13 @@
import { Device } from './Device';
import { LogcatClientMessage, LogcatServiceMessage } from 'adbkit/LogcatMessage';
import { XtermClientMessage } from './XtermMessage';
import DescriptorFields from "./DescriptorFields";

export enum MessageTypes {
'devicelist',
'logcat',
'shell',
}

export interface Message {
id: number;
type: keyof typeof MessageTypes;
data: Device[] | LogcatServiceMessage | LogcatClientMessage | XtermClientMessage;
data: DescriptorFields[] | XtermClientMessage;
}
56 changes: 56 additions & 0 deletions src/server/DeviceDescriptor.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
import DescriptorFields from "../common/DescriptorFields";

export class DeviceDescriptor {
public releaseVersion: string;
public sdkVersion: string;
public cpuAbi: string;
public productManufacturer: string;
public productModel: string;
public wifiInterface: string;
public udid: string;
public state: string;
public ip: string;
public pid: number;

constructor(fields: DescriptorFields) {
this.releaseVersion = fields["build.version.release"];
this.sdkVersion = fields["build.version.sdk"];
this.cpuAbi = fields["ro.product.cpu.abi"];
this.productManufacturer = fields["product.manufacturer"];
this.productModel = fields["product.model"];
this.wifiInterface = fields["wifi.interface"];
this.udid = fields["udid"];
this.state = fields["state"];
this.ip = fields["ip"];
this.pid = fields["pid"];
}

public toJSON(): DescriptorFields {
return {
"build.version.release": this.releaseVersion,
"build.version.sdk": this.sdkVersion,
"ro.product.cpu.abi": this.cpuAbi,
"product.manufacturer": this.productManufacturer,
"product.model": this.productModel,
"wifi.interface": this.wifiInterface,
udid: this.udid,
state: this.state,
ip: this.ip,
pid: this.pid
}
}

public equals(fields: DescriptorFields) {
return !(
this.udid !== fields["udid"] ||
this.state !== fields["state"] ||
this.ip !== fields["ip"] ||
this.pid !== fields.pid ||
this.releaseVersion !== fields["build.version.release"] ||
this.sdkVersion !== fields["build.version.sdk"] ||
this.cpuAbi !== fields["ro.product.cpu.abi"] ||
this.productManufacturer !== fields["product.manufacturer"] ||
this.productModel !== fields["product.model"] ||
this.wifiInterface !== fields["wifi.interface"]);
}
}
Loading

0 comments on commit 951ab00

Please sign in to comment.