Skip to content

Commit f542dff

Browse files
authored
Merge pull request #11 from caido-community/use-slot-api
2 parents 9901e97 + b8c20ac commit f542dff

7 files changed

Lines changed: 94 additions & 172 deletions

File tree

caido.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ export default defineConfig({
1313
id,
1414
name: "Drop",
1515
description: "Drop - a plugin for collaboration in Caido.",
16-
version: "0.1.7",
16+
version: "0.1.8",
1717
author: {
1818
name: "Justin Gardner",
1919
email: "justin@caido.io",

packages/frontend/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
"vue": "3.5.13"
1717
},
1818
"devDependencies": {
19-
"@caido/sdk-backend": "0.53.1",
20-
"@caido/sdk-frontend": "0.53.1",
19+
"@caido/sdk-backend": "0.54.0",
20+
"@caido/sdk-frontend": "0.54.0",
2121
"@codemirror/view": "6.28.1",
2222
"@openpgp/web-stream-tools": "0.1.3",
2323
"@types/crypto-js": "^4.2.2",

packages/frontend/src/dom/DOMInjectionManager.ts

Lines changed: 0 additions & 119 deletions
This file was deleted.

packages/frontend/src/index.ts

Lines changed: 55 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import ToastService from "primevue/toastservice";
44
import { createApp } from "vue";
55

66
import DropToButton from "./components/DropToButton.vue";
7-
import { DOMInjectionManager } from "./dom/DOMInjectionManager";
87
import { SDKPlugin } from "./plugins/sdk";
98
import "./styles/customInjectionGlobal.css";
109
import "./styles/index.css";
@@ -55,13 +54,64 @@ export const init = async (sdk: FrontendSDK) => {
5554

5655
sdk.replay.addToSlot("session-toolbar-secondary", {
5756
type: "Custom",
57+
definition: {
58+
component: DropToButton,
59+
},
60+
});
61+
62+
sdk.filters.addToSlot("create-header", {
63+
type: "Custom",
64+
definition: {
65+
component: DropToButton,
66+
},
67+
});
68+
69+
sdk.filters.addToSlot("update-header", {
70+
type: "Custom",
71+
definition: {
72+
component: DropToButton,
73+
},
74+
});
75+
76+
sdk.scopes.addToSlot("create-header", {
77+
type: "Custom",
78+
definition: {
79+
component: DropToButton,
80+
},
81+
});
82+
83+
sdk.scopes.addToSlot("update-header", {
84+
type: "Custom",
85+
definition: {
86+
component: DropToButton,
87+
},
88+
});
89+
90+
sdk.httpHistory.addToSlot("toolbar-primary", {
91+
type: "Custom",
92+
definition: {
93+
component: DropToButton,
94+
},
95+
});
5896

97+
sdk.search.addToSlot("search-toolbar-primary", {
98+
type: "Custom",
5999
definition: {
60-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
61-
component: DropToButton as any,
100+
component: DropToButton,
62101
},
63102
});
64103

65-
const domInjectionManager = new DOMInjectionManager(sdk);
66-
domInjectionManager.start();
104+
sdk.matchReplace.addToSlot("update-header", {
105+
type: "Custom",
106+
definition: {
107+
component: DropToButton,
108+
},
109+
});
110+
111+
sdk.matchReplace.addToSlot("create-header", {
112+
type: "Custom",
113+
definition: {
114+
component: DropToButton,
115+
},
116+
});
67117
};

packages/frontend/src/utils/claimUtil.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ export const claimTamper = async (
107107
section: section,
108108
query: query,
109109
collectionId: "1",
110+
sources: [],
110111
});
111112
return res;
112113
};

packages/frontend/src/utils/dropTo.ts

Lines changed: 20 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,26 @@ import { eventBus } from "@/utils/eventBus";
1111

1212
const callbacks = {
1313
"#/replay": async (sdk: FrontendSDK, connection: DropConnection) => {
14-
const button = document.querySelector(
15-
'[data-is-selected="true"][data-session-id]',
16-
);
17-
if (!button) {
18-
sdk.window.showToast("Please select a replay tab first.", {
14+
const selectedSession = sdk.replay.getCurrentSession();
15+
if (!selectedSession) {
16+
sdk.window.showToast("Please select a replay session first.", {
1917
variant: "error",
2018
duration: 5000,
2119
});
2220
return;
2321
}
24-
const id = button?.getAttribute("data-session-id");
25-
if (!id) {
26-
sdk.window.showToast("Please select a replay session first.", {
22+
23+
const session = await sdk.graphql.replayEntriesBySession({
24+
sessionId: selectedSession.id,
25+
});
26+
27+
if (!session || !session.replaySession) {
28+
sdk.window.showToast("Error while getting replay session entries.", {
2729
variant: "error",
2830
duration: 5000,
2931
});
3032
return;
3133
}
32-
const session = await sdk.graphql.replayEntriesBySession({
33-
sessionId: id,
34-
});
3534

3635
const activeEntry = session?.replaySession?.activeEntry?.id;
3736
if (!activeEntry) {
@@ -50,6 +49,7 @@ const callbacks = {
5049
});
5150
return;
5251
}
52+
5353
const data = {
5454
session: session.replaySession,
5555
entry: entryData.replayEntry,
@@ -127,20 +127,16 @@ const callbacks = {
127127
},
128128

129129
"#/tamper": (sdk: FrontendSDK, connection: DropConnection) => {
130-
const preset = document.querySelector(
131-
'.c-tree-rule[data-is-active="true"]',
132-
);
133-
const id = preset?.getAttribute("data-rule-id");
134-
if (!id) {
130+
const currentRule = sdk.matchReplace.getCurrentRule();
131+
if (!currentRule) {
135132
sdk.window.showToast("Please select a rule first.", {
136133
variant: "error",
137134
duration: 5000,
138135
});
139136
return;
140137
}
141-
const rules = sdk.matchReplace.getRules();
142-
const rule = rules.find((rule) => rule.id === id);
143-
if (JSON.stringify(rule).indexOf('"kind":"ReplacerWorkflow"') > -1) {
138+
139+
if (JSON.stringify(currentRule).indexOf('"kind":"ReplacerWorkflow"') > -1) {
144140
sdk.window.showToast("Sorry, we don't support workflow M&R rules yet.", {
145141
variant: "error",
146142
duration: 5000,
@@ -149,7 +145,7 @@ const callbacks = {
149145
}
150146
const payload: DropPayload = {
151147
id: uuidv4(),
152-
objects: [{ type: "Tamper", value: rule }],
148+
objects: [{ type: "Tamper", value: currentRule }],
153149
notes: "M&R Rule drop",
154150
};
155151

@@ -161,18 +157,14 @@ const callbacks = {
161157
},
162158

163159
"#/filter": (sdk: FrontendSDK, connection: DropConnection) => {
164-
const parent = document.querySelector(".c-list-items__well");
165-
const preset = parent?.querySelector('[data-is-selected="true"]');
166-
const id = preset?.getAttribute("data-preset-id");
167-
if (!id) {
160+
const filter = sdk.filters.getCurrentFilter();
161+
if (!filter) {
168162
sdk.window.showToast("Please select a filter first.", {
169163
variant: "error",
170164
duration: 5000,
171165
});
172166
return;
173167
}
174-
const filters = sdk.filters.getAll();
175-
const filter = filters.find((filter) => filter.id === id);
176168
const payload: DropPayload = {
177169
id: uuidv4(),
178170
objects: [{ type: "Filter", value: filter }],
@@ -187,17 +179,14 @@ const callbacks = {
187179
},
188180

189181
"#/scope": (sdk: FrontendSDK, connection: DropConnection) => {
190-
const preset = document.querySelector('.c-preset[data-is-selected="true"]');
191-
const id = preset?.getAttribute("data-preset-id");
192-
if (!id) {
182+
const scope = sdk.scopes.getCurrentScope();
183+
if (!scope) {
193184
sdk.window.showToast("Please select a scope first.", {
194185
variant: "error",
195186
duration: 5000,
196187
});
197188
return;
198189
}
199-
const scopes = sdk.scopes.getScopes();
200-
const scope = scopes.find((scope) => scope.id === id);
201190
const payload: DropPayload = {
202191
id: uuidv4(),
203192
objects: [{ type: "Scope", value: scope }],

0 commit comments

Comments
 (0)