追加测试server的逻辑

This commit is contained in:
xu_yanfeng 2024-12-09 21:37:07 +08:00
parent 52fe01c01b
commit bacf6817ad
6 changed files with 86 additions and 26 deletions

View File

@ -1,19 +1,22 @@
import CCP from "cc-plugin/src/ccp/entry-render";
import { Msg, Page, PluginEvent } from "../../core/types"; import { Msg, Page, PluginEvent } from "../../core/types";
import { TestClient, testServer, TestServer } from "./test/server";
export type BackgroundCallback = (data: PluginEvent, sender: any) => void; export type BackgroundCallback = (data: PluginEvent, sender: any) => void;
class ConnectBackground { class ConnectBackground implements TestClient {
connect: chrome.runtime.Port | null = null; connect: chrome.runtime.Port | null = null;
constructor() { constructor() {
this._initConnect(); this._initConnect();
} }
private _initConnect() { private _initConnect() {
if (chrome && chrome.runtime) { if (CCP.Adaptation.Env.isChromeRuntime) {
this.connect = chrome.runtime.connect({ name: Page.Devtools }); this.connect = chrome.runtime.connect({ name: Page.Devtools });
this.connect.onDisconnect.addListener(() => { this.connect.onDisconnect.addListener(() => {
console.log(`%c[Connect-Dis]`, "color:red;") console.log(`%c[Connect-Dis]`, "color:red;")
this.connect = null; this.connect = null;
}) })
} else {
testServer.add(this);
} }
} }
/** /**
@ -28,16 +31,20 @@ class ConnectBackground {
}); });
} }
} }
testMessage(data: PluginEvent) { recv(event: PluginEvent): void {
this.doCallback(event);
}
doCallback(data: PluginEvent) {
if (this.callback) { if (this.callback) {
this.callback(data, null); this.callback(data, null);
} }
} }
sendMsgToContentScript(msg: Msg, data?: any) { sendMsgToContentScript(msg: Msg, data?: any) {
if (!chrome || !chrome.devtools) { if (CCP.Adaptation.Env.isChromeDevtools) {
return;
}
this.postMessageToBackground(msg, data); this.postMessageToBackground(msg, data);
} else {
testServer.recv(msg, data);
}
} }
postMessageToBackground(msg: Msg, data?: any) { postMessageToBackground(msg: Msg, data?: any) {
if (this.connect) { if (this.connect) {

View File

@ -259,6 +259,12 @@ export class Group {
} }
export interface NodeInfoData { export interface NodeInfoData {
uuid: string;// 节点的uuid /**
* uuid
*/
uuid: string;
/**
*
*/
group: Group[]; group: Group[];
} }

View File

@ -23,7 +23,7 @@
</slot> </slot>
</CCInput> </CCInput>
<div class="treeList"> <div class="treeList">
<CCTree :value="treeData"></CCTree> <CCTree :value="treeData" @node-click="handleNodeClick"></CCTree>
<!-- <el-tree <!-- <el-tree
:data="treeData" :data="treeData"
ref="tree" ref="tree"
@ -78,10 +78,10 @@ import Bus, { BusMsg } from "./bus";
import { connectBackground } from "./connectBackground"; import { connectBackground } from "./connectBackground";
import { EngineData, FrameDetails, Info, NodeInfoData, ObjectData, ObjectItemRequestData, TreeData } from "./data"; import { EngineData, FrameDetails, Info, NodeInfoData, ObjectData, ObjectItemRequestData, TreeData } from "./data";
import { appStore, RefreshType } from "./store"; import { appStore, RefreshType } from "./store";
import Test from "./test.vue"; import Test from "./test/test.vue";
ccui.components.CCAd;
import properties from "./ui/propertys.vue"; import properties from "./ui/propertys.vue";
import SettingsVue from "./ui/settings.vue"; import SettingsVue from "./ui/settings.vue";
ccui.components.CCAd;
const { CCTree, CCFootBar, CCDialog, CCInput, CCButton, CCInputNumber, CCSelect, CCButtonGroup, CCCheckBox, CCColor, CCDivider } = ccui.components; const { CCTree, CCFootBar, CCDialog, CCInput, CCButton, CCInputNumber, CCSelect, CCButtonGroup, CCCheckBox, CCColor, CCDivider } = ccui.components;
interface FrameInfo { interface FrameInfo {
label: string; label: string;

View File

@ -0,0 +1,46 @@
import { Msg, Page, PluginEvent } from "../../../core/types";
import { NodeInfoData, TreeData } from "../data";
export class TestClient {
recv(event: PluginEvent) {
}
}
export class TestServer {
private clients: TestClient[] = [];
add(client: TestClient) {
this.clients.push(client);
}
recv(msg: string, data: any) {
switch (msg) {
case Msg.NodeInfo: {
console.log(data);
const ret: NodeInfoData = {
uuid: "1",
group: []
};
const event = new PluginEvent(Page.Background, Page.Devtools, Msg.NodeInfo, ret);
this.send(event);
break;
}
case Msg.TreeInfo: {
const data: TreeData = {
id: "1",
text: "root",
active: true,
children: [],
};
const event = new PluginEvent(Page.Inject, Page.Devtools, Msg.TreeInfo, data);
this.send(event);
break;
}
default:
break;
}
}
send(event: PluginEvent) {
this.clients.forEach((client) => {
client.recv(event)
});
}
}
export const testServer = new TestServer();

View File

@ -11,9 +11,10 @@
import ccui from "@xuyanfeng/cc-ui"; import ccui from "@xuyanfeng/cc-ui";
import { ITreeData } from "@xuyanfeng/cc-ui/types/cc-tree/const"; import { ITreeData } from "@xuyanfeng/cc-ui/types/cc-tree/const";
import { defineComponent, ref } from "vue"; import { defineComponent, ref } from "vue";
import { Msg, Page, PluginEvent } from "../../core/types"; import { Msg, Page, PluginEvent } from "../../../core/types";
import { connectBackground } from "./connectBackground"; import { connectBackground } from "../connectBackground";
import { TreeData } from "./data"; import { TreeData } from "../data";
import { TestServer } from "./server";
const { CCButton, CCSection } = ccui.components; const { CCButton, CCSection } = ccui.components;
export default defineComponent({ export default defineComponent({
name: "test", name: "test",
@ -40,7 +41,7 @@ export default defineComponent({
children: [], children: [],
}; };
const event = new PluginEvent(Page.Inject, Page.Devtools, Msg.TreeInfo, data); const event = new PluginEvent(Page.Inject, Page.Devtools, Msg.TreeInfo, data);
connectBackground.testMessage(event); connectBackground.doCallback(event);
}, },
}; };
}, },

View File

@ -398,7 +398,7 @@
"@types/chrome@0.0.133": "@types/chrome@0.0.133":
version "0.0.133" version "0.0.133"
resolved "http://mirrors.cloud.tencent.com/npm/@types/chrome/-/chrome-0.0.133.tgz#9e1d55441584ba2d5274ca84db36427da9c5dc6e" resolved "https://mirrors.cloud.tencent.com/npm/@types/chrome/-/chrome-0.0.133.tgz#9e1d55441584ba2d5274ca84db36427da9c5dc6e"
integrity sha512-G8uIUdaCTBILprQvQXBWGXZxjAWbkCkFQit17cdH3zYQEwU8f/etNl8+M7e8MRz9Xj8daHaVpysneMZMx8/ldQ== integrity sha512-G8uIUdaCTBILprQvQXBWGXZxjAWbkCkFQit17cdH3zYQEwU8f/etNl8+M7e8MRz9Xj8daHaVpysneMZMx8/ldQ==
dependencies: dependencies:
"@types/filesystem" "*" "@types/filesystem" "*"
@ -461,16 +461,16 @@
"@types/serve-static" "*" "@types/serve-static" "*"
"@types/filesystem@*": "@types/filesystem@*":
version "0.0.35" version "0.0.36"
resolved "http://mirrors.cloud.tencent.com/npm/@types/filesystem/-/filesystem-0.0.35.tgz#6d6766626083e2b397c09bdc57092827120db11d" resolved "https://mirrors.cloud.tencent.com/npm/@types/filesystem/-/filesystem-0.0.36.tgz#7227c2d76bfed1b21819db310816c7821d303857"
integrity sha512-1eKvCaIBdrD2mmMgy5dwh564rVvfEhZTWVQQGRNn0Nt4ZEnJ0C8oSUCzvMKRA4lGde5oEVo+q2MrTTbV/GHDCQ== integrity sha512-vPDXOZuannb9FZdxgHnqSwAG/jvdGM8Wq+6N4D/d80z+D4HWH+bItqsZaVRQykAn6WEVeEkLm2oQigyHtgb0RA==
dependencies: dependencies:
"@types/filewriter" "*" "@types/filewriter" "*"
"@types/filewriter@*": "@types/filewriter@*":
version "0.0.32" version "0.0.33"
resolved "http://mirrors.cloud.tencent.com/npm/@types/filewriter/-/filewriter-0.0.32.tgz#3cf7e0f870e54e60ed1bbd9280fa24a9444d3b48" resolved "https://mirrors.cloud.tencent.com/npm/@types/filewriter/-/filewriter-0.0.33.tgz#d9d611db9d9cd99ae4e458de420eeb64ad604ea8"
integrity sha512-Kpi2GXQyYJdjL8mFclL1eDgihn1SIzorMZjD94kdPZh9E4VxGOeyjPxi5LpsM4Zku7P0reqegZTt2GxhmA9VBg== integrity sha512-xFU8ZXTw4gd358lb2jw25nxY9QAgqn2+bKKjKOYfNCzN4DKCFetK7sPtrlpg66Ywe3vWY9FNxprZawAh9wfJ3g==
"@types/fs-extra@9.0.1": "@types/fs-extra@9.0.1":
version "9.0.1" version "9.0.1"
@ -488,9 +488,9 @@
"@types/node" "*" "@types/node" "*"
"@types/har-format@*": "@types/har-format@*":
version "1.2.15" version "1.2.16"
resolved "http://mirrors.cloud.tencent.com/npm/@types/har-format/-/har-format-1.2.15.tgz#f352493638c2f89d706438a19a9eb300b493b506" resolved "https://mirrors.cloud.tencent.com/npm/@types/har-format/-/har-format-1.2.16.tgz#b71ede8681400cc08b3685f061c31e416cf94944"
integrity sha512-RpQH4rXLuvTXKR0zqHq3go0RVXYv/YVqv4TnPH95VbwUxZdQlK1EtcMvQvMpDngHbt13Csh9Z4qT9AbkiQH5BA== integrity sha512-fluxdy7ryD3MV6h8pTfTYpy/xQzCFC7m89nOH9y94cNqJ1mDIDPut7MnRHI3F6qRmh/cT2fUjG1MLdCNb4hE9A==
"@types/html-minifier-terser@^6.0.0": "@types/html-minifier-terser@^6.0.0":
version "6.1.0" version "6.1.0"
@ -1943,7 +1943,7 @@ case-sensitive-paths-webpack-plugin@^2.3.0:
integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==
"cc-plugin@file:.yalc/cc-plugin": "cc-plugin@file:.yalc/cc-plugin":
version "2.1.60" version "2.1.65"
dependencies: dependencies:
"@babel/generator" "^7.16.8" "@babel/generator" "^7.16.8"
"@popperjs/core" "^2.11.6" "@popperjs/core" "^2.11.6"