Skip to content

Commit 4bca8be

Browse files
committed
Add: environments and variables
1 parent 4d45144 commit 4bca8be

File tree

12 files changed

+231
-28
lines changed

12 files changed

+231
-28
lines changed

src-tauri/Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src-tauri/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "construct"
3-
version = "0.3.1"
3+
version = "0.4.0"
44
description = "A GUI API Client"
55
authors = ["clearfeld"]
66
edition = "2021"

src-tauri/tauri.conf.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://schema.tauri.app/config/2",
33
"productName": "construct",
4-
"version": "0.3.1",
4+
"version": "0.4.0",
55
"identifier": "com.construct.app",
66
"build": {
77
"beforeDevCommand": "pnpm dev",

src/commons/sidebar/environment/workspace-environment-button.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,12 +178,12 @@ export const WorkspaceEnvironmentButton = memo(
178178
const setActiveEnvironment = useRequestStore(
179179
(state) => state.setActiveEnvironment,
180180
);
181-
const getActiveEnvironmentInEnvironments = useRequestStore(
182-
(state) => state.getActiveEnvironmentInEnvironments,
183-
);
181+
// const getActiveEnvironmentInEnvironments = useRequestStore(
182+
// (state) => state.getActiveEnvironmentInEnvironments,
183+
// );
184184

185185
const [isHovering, setIsHovering] = useState(false);
186-
const [isDropdownOpen, setIsDropdownOpen] = useState(false);
186+
// const [isDropdownOpen, setIsDropdownOpen] = useState(false);
187187

188188
const getEnvironmentById = useRequestStore(
189189
(state) => state.getEnvironmentById,

src/commons/tabbar/index.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ function TabBar() {
8484
<div {...stylex.props(styles.wrapper)}>
8585
<div
8686
style={{
87-
width: "calc(100% - 11.625rem)",
87+
width: "calc(100% - 13.125rem)",
8888
display: "flex",
8989
}}
9090
>

src/commons/tabbar/tab/index.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,10 +180,10 @@ export default function Tab({
180180
const setActiveEnvironment = useRequestStore(
181181
(state) => state.setActiveEnvironment,
182182
);
183-
const getActiveEnvironmentInEnvironments = useRequestStore(
184-
(state) => state.getActiveEnvironmentInEnvironments,
185-
);
186-
const setTabData = useRequestStore((state) => state.setTabData);
183+
// const getActiveEnvironmentInEnvironments = useRequestStore(
184+
// (state) => state.getActiveEnvironmentInEnvironments,
185+
// );
186+
// const setTabData = useRequestStore((state) => state.setTabData);
187187

188188
const getEnvironmentById = useRequestStore(
189189
(state) => state.getEnvironmentById,

src/pages/environments/index.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import type { T_ManagedVariable } from "@src/stores/request_store/environments_s
1111
import { E_TabStatus } from "@src/stores/request_store/tabbar_slice.ts";
1212
import { useEffect, useRef, useState } from "react";
1313
// import DragHandle from "../../../../../assets/drag-handle.svg?react";
14-
import { v4 as uuidv4 } from "uuid";
1514

1615
const styles = stylex.create({
1716
mainWrapper: {

src/pages/http_requests/request-row/index.tsx

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,11 @@ import { RequestRowUrlInput } from "./components/request-row-url-input.tsx";
1010
// import SaveSVG from "@assets/save.svg?react";
1111
// import React from "react";
1212

13-
// import { invoke } from "@tauri-apps/api/core";
14-
import { Button, Input, Label } from "@controlkit/ui";
13+
import { Input, Label } from "@controlkit/ui";
1514
import useRequestStore from "@src/stores/request_store";
1615
import { updateTargetIfExists } from "@src/stores/request_store/sidebar_slice.ts";
1716
import { E_TabStatus } from "@src/stores/request_store/tabbar_slice.ts";
17+
import SendRequestBtn from "./send_request.tsx";
1818

1919
// import { useSetRecoilState } from 'recoil';
2020
// import { HTTP_API_Response_Body_StateData } from "@store/http-api-request-and-response/response-body.ts";
@@ -94,7 +94,6 @@ interface RequestRowProps {
9494

9595
// @ts-ignore
9696
export function RequestRow(props: RequestRowProps) {
97-
const sendRequest = useRequestStore((state) => state.sendRequest);
9897

9998
const name = useRequestStore((state) => state.name);
10099
const setName = useRequestStore((state) => state.setName);
@@ -204,13 +203,7 @@ export function RequestRow(props: RequestRowProps) {
204203

205204
<RequestRowUrlInput />
206205

207-
<Button
208-
onClick={(_) => {
209-
sendRequest();
210-
}}
211-
>
212-
Send
213-
</Button>
206+
<SendRequestBtn />
214207

215208
{/* <RequestRowDropdown
216209
renderButtonContent={() => (
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
import { Button } from "@controlkit/ui";
2+
import useRequestStore from "@src/stores/request_store";
3+
import type { T_Header } from "@src/stores/request_store/request_slice";
4+
import { invoke } from "@tauri-apps/api/core";
5+
6+
export default function SendRequestBtn() {
7+
// const sendRequest = useRequestStore((state) => state.sendRequest);
8+
9+
const getHTTPRequest = useRequestStore((state) => state.getHTTPRequest);
10+
const getEnabledEnvironmentAndDetails = useRequestStore(
11+
(state) => state.getEnabledEnvironmentAndDetails,
12+
);
13+
14+
const setLoading = useRequestStore((state) => state.setLoading);
15+
const setResponse = useRequestStore((state) => state.setResponse);
16+
const setResponseHeaders = useRequestStore((state) => state.setResponseHeaders);
17+
const setResponseCookies = useRequestStore((state) => state.setResponseCookies);
18+
19+
function ReplaceManagedVariable(env: any, sub_target: any): string {
20+
console.log(env.variables);
21+
22+
let s = sub_target;
23+
for(const variable of env.variables) {
24+
console.log("VAR - ", s, variable.key, variable.initial_value, variable.current_value);
25+
26+
if(variable.current_value !== "") {
27+
if(variable.current_value === "NULL") {
28+
s = s.replace(`{{${variable.key}}}`, "null");
29+
continue;
30+
}
31+
32+
s = s.replace(`{{${variable.key}}}`, variable.current_value);
33+
}
34+
35+
if(variable.initial_value !== "") {
36+
if(variable.initial_value === "NULL") {
37+
s = s.replace(`{{${variable.key}}}`, "null");
38+
continue;
39+
}
40+
41+
s = s.replace(`{{${variable.key}}}`, variable.initial_value);
42+
}
43+
44+
// console.log(s.replace(`{{${variable.key}}}`, variable.value));
45+
// s = s.replace(`{{${variable.key}}}`, variable.value);
46+
}
47+
48+
return s;
49+
}
50+
51+
function AttemptToSendHTTPRequest() {
52+
setLoading(true);
53+
54+
const { url, method, autoHeaders, headers, body, cookies } =
55+
getHTTPRequest();
56+
57+
// const method = get().method;
58+
// const s = get();
59+
// const { url, body, cookies, autoHeaders, headers } = get();
60+
61+
// set({ loading: true, error: null });
62+
63+
console.group("AttemptToSendHTTPRequest");
64+
console.log("METHOD - ", method);
65+
console.log("URL - ", url);
66+
console.log("AUTO HEADERS - ", autoHeaders);
67+
console.log("HEADERS - ", headers);
68+
console.log("BODY - ", body);
69+
console.log("COOKIES - ", cookies);
70+
71+
// TODO: verify data before invoking
72+
// console.log(url);
73+
const trimmedUrl = url.trim();
74+
if (trimmedUrl.length === 0) {
75+
// TODO: error state ui
76+
// set({ error: "URL cannot be empty", loading: false });
77+
return;
78+
}
79+
80+
const env = getEnabledEnvironmentAndDetails();
81+
82+
console.log("ENV - ", env);
83+
84+
// url
85+
// body
86+
// headers
87+
88+
// get().environments();
89+
90+
// console.log(trimmedUrl);
91+
92+
console.log("SUBBED");
93+
94+
let subbed_url = trimmedUrl;
95+
let subbed_body = body;
96+
let subbed_headers = structuredClone(headers);
97+
98+
subbed_url = ReplaceManagedVariable(env, subbed_url);
99+
subbed_body = ReplaceManagedVariable(env, subbed_body);
100+
for(let idx = 0; idx < subbed_headers.length; ++idx) {
101+
subbed_headers[idx].value = ReplaceManagedVariable(env, subbed_headers[idx].value);
102+
}
103+
104+
const filtered_headers = subbed_headers
105+
.filter((h: T_Header) => h.enabled)
106+
.map((h: T_Header) => `${h.key}: ${h.value}`)
107+
.join(", ");
108+
109+
console.log("METHOD - ", method);
110+
console.log("URL - ", subbed_url);
111+
console.log("AUTO HEADERS - ", autoHeaders);
112+
console.log("HEADERS - ", subbed_headers);
113+
console.log("FILTERED HEADERS - ", filtered_headers);
114+
console.log("BODY - ", subbed_body);
115+
console.log("COOKIES - ", cookies);
116+
117+
invoke("http_request", {
118+
method: method.value,
119+
headers: filtered_headers,
120+
url: subbed_url,
121+
body: subbed_body,
122+
cookies: "",
123+
})
124+
// biome-ignore lint/suspicious/noExplicitAny: <explanation>
125+
.then((message: any) => {
126+
console.log(message);
127+
128+
setResponse(message.response_data_string);
129+
setResponseHeaders(message.response_headers);
130+
setResponseCookies(message.response_cookies);
131+
setLoading(false);
132+
133+
// setResponse(message.response_data_string);
134+
// set_HTTP_API_Response_Body(message.response_data_string);
135+
// set_HTTP_API_Response_Headers(message.response_headers);
136+
})
137+
.catch((error_message) => {
138+
console.error(error_message);
139+
140+
setLoading(false);
141+
});
142+
143+
console.groupEnd();
144+
}
145+
146+
return (
147+
<Button
148+
onClick={(_) => {
149+
// sendRequest();
150+
AttemptToSendHTTPRequest();
151+
}}
152+
>
153+
Send
154+
</Button>
155+
);
156+
}

src/pages/http_requests/response/index.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,11 @@ function ResponseSection() {
195195
// children={undefined}
196196
hideRightSegment={false}
197197
>
198-
<div>
198+
<div
199+
style={{
200+
display: "flex",
201+
}}
202+
>
199203
{response === null ? (
200204
<>
201205
{no_res_tabs.map((tab, index) => {

src/stores/request_store/environments_slice.ts

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ export interface EnvironmentsSlice {
5555
environment_id: T_ActiveEnvironment | null,
5656
) => void;
5757
getEnabledEnvironmentDetails: () => T_ActiveEnvironment | null;
58+
getEnabledEnvironmentAndDetails: () => T_ActiveEnvironment & T_Environment | null;
5859

5960
// TODO: rename this to something better emabled is the environment to pull variables from
6061
// active is for the tabs sidebar and active page edit
@@ -119,6 +120,20 @@ export const createEnvironmentsSlice: StateCreator<
119120
set({ enabledEnvironment: environment_details });
120121
},
121122
getEnabledEnvironmentDetails: () => get().enabledEnvironment,
123+
getEnabledEnvironmentAndDetails: () => {
124+
const ee = get().enabledEnvironment;
125+
if(ee === null) return null;
126+
127+
const env = get().environments.find(
128+
(env) => env.id === get().enabledEnvironment?.env_id,
129+
);
130+
if(env == null) return null;
131+
132+
return {
133+
...ee,
134+
...env,
135+
};
136+
},
122137

123138
activeEnvironmentDetails: null,
124139
setActiveEnvironmentDetails: (environment_id: T_ActiveEnvironment | null) =>
@@ -183,6 +198,7 @@ export const createEnvironmentsSlice: StateCreator<
183198
if (aenv) {
184199
const var_index = aenv.variables.findIndex((v) => v.id === variable_id);
185200
if (var_index !== -1) {
201+
// @ts-ignore
186202
aenv.variables[var_index][field] = value;
187203

188204
set({
@@ -247,12 +263,13 @@ export const createEnvironmentsSlice: StateCreator<
247263
getVaultSecret: () => get().vaultSecret,
248264
});
249265

266+
/*
250267
const env_id = uuidv4();
251268
const v1 = uuidv4();
252269
const v2 = uuidv4();
253270
const v3 = uuidv4();
254271
255-
const globals_test_data: T_ManagedVariable[] = [
272+
const _globals_test_data: T_ManagedVariable[] = [
256273
{
257274
id: v1,
258275
key: "access_token",
@@ -286,7 +303,7 @@ const globals_test_data: T_ManagedVariable[] = [
286303
},
287304
];
288305
289-
const environment_test_data: T_Environment[] = [
306+
const _environment_test_data: T_Environment[] = [
290307
{
291308
id: env_id,
292309
name: "1 - New Environment",
@@ -376,3 +393,4 @@ const environment_test_data: T_Environment[] = [
376393
],
377394
},
378395
];
396+
*/

0 commit comments

Comments
 (0)