@@ -27,5 +24,4 @@
display: flex;
flex-flow: column;
}
-
diff --git a/app/renderer/pages/tabPage/monitorModePage/MonitorModePage.svelte b/app/renderer/pages/tabPage/monitorModePage/MonitorModePage.svelte
index 2c11809..c88880c 100644
--- a/app/renderer/pages/tabPage/monitorModePage/MonitorModePage.svelte
+++ b/app/renderer/pages/tabPage/monitorModePage/MonitorModePage.svelte
@@ -1,10 +1,8 @@
@@ -26,5 +24,4 @@
display: flex;
flex-flow: column;
}
-
diff --git a/app/stores/appConfigStore.ts b/app/stores/appConfigStore.ts
index 6c2f72d..1b44816 100644
--- a/app/stores/appConfigStore.ts
+++ b/app/stores/appConfigStore.ts
@@ -1,37 +1,128 @@
-import type { Server } from "@grpc/grpc-js";
-import { writable } from "svelte/store";
-export interface MainProcessAppConfigModel {
- proxyGrpcServerUrl: string;
- proxyGrpcServer: Server | null;
- testGrpcServer: Server | null;
- testGrpcServerUrl: string;
-}
+import { derived, writable } from "svelte/store";
+import type { Certificate, RpcProtoInfo } from "../renderer/behaviour";
+import immer from "immer";
+import { AppDataDiskStore, getDefaultTabConfig } from "../disk_storage/appDataDiskStorage";
+import type { AppConfigModel, TabConfigModel, RpcOperationMode, MonitorRequestEditorModel, MonitorResponseEditorModel, ClientEditorModel, MockRpcEditorModel } from "../renderer/components/types/types";
-export interface RequestResponseEditorModel {
- requestText: string;
- responseText: string;
-}
function createAppConfigStore() {
- const { set, subscribe, update } = writable
({
- proxyGrpcServerUrl: '0.0.0.0:50051',
- proxyGrpcServer: null,
- testGrpcServer: null,
- testGrpcServerUrl: '0.0.0.0:9090',
- });
+ const { set, subscribe, update } = writable(AppDataDiskStore.fetchAppData());
+ return {
+ subscribe,
+ setActiveTab: (index: number) => update((store) => ({ ...store, activeTabIndex: index })),
+ setValue: async (appConfigModel: AppConfigModel) => set(appConfigModel),
+ setDefaultTargetServerUrl: (targetServer: string) => update(store => {
+ return ({ ...store, defaultTargetServerUrl: targetServer });
+ }),
+ setTabValue: (newTabConfig: TabConfigModel, tabId: string) => update((store) => {
+ return immer(store, (draftStore) => {
+ for (let [index, tabConfig] of draftStore.tabs.entries()) {
+ if (tabConfig.id === tabId) {
+ draftStore.tabs[index] = newTabConfig;
+ }
+ }
+ })
+ }),
+ setActiveTabSelectedRpc: (rpcInfo: RpcProtoInfo) => update((config) => {
+ const activeTab = config.tabs[config.activeTabIndex]
+ const allTabs = Array.from(config.tabs)
+ allTabs[config.activeTabIndex] = { ...activeTab, selectedRpc: rpcInfo }
+ return { ...config, tabs: allTabs }
+ }),
+ setActiveTabTargetGrpcServerUrl: (url: string) => update((config) => {
+ const activeTab = config.tabs[config.activeTabIndex]
+ const allTabs = Array.from(config.tabs)
+ allTabs[config.activeTabIndex] = { ...activeTab, targetGrpcServerUrl: url }
+ return { ...config, tabs: allTabs }
+ }),
+ setActiveTabRpcOperationMode: (mode: RpcOperationMode) => update(config => {
+ const activeTab = config.tabs[config.activeTabIndex]
+ const allTabs = Array.from(config.tabs)
+ allTabs[config.activeTabIndex] = { ...activeTab, rpcOperationMode: mode }
+ return { ...config, tabs: allTabs }
+ }),
+ setActiveTabMonitorRequestEditorState: (requestEditorModel: MonitorRequestEditorModel) => update((config) => {
+ const activeTab = config.tabs[config.activeTabIndex]
+ const allTabs = Array.from(config.tabs)
+ allTabs[config.activeTabIndex] = { ...activeTab, monitorRequestEditorState: requestEditorModel }
+ return { ...config, tabs: allTabs }
+ }),
+ setActiveTabMonitorResponseEditorState: (responseEditorModel: MonitorResponseEditorModel) => update((config) => {
+ const activeTab = config.tabs[config.activeTabIndex]
+ const allTabs = Array.from(config.tabs)
+ allTabs[config.activeTabIndex] = { ...activeTab, monitorResponseEditorState: responseEditorModel }
+ return { ...config, tabs: allTabs }
+ }),
+ setActiveTabClientRequestEditorState: (requestEditorModel: ClientEditorModel) => update((config) => {
+ const activeTab = config.tabs[config.activeTabIndex]
+ const allTabs = Array.from(config.tabs)
+ allTabs[config.activeTabIndex] = { ...activeTab, clientRequestEditorState: requestEditorModel }
+ return { ...config, tabs: allTabs }
+ }),
+ setActiveTabClientResponseEditorState: (responseEditorModel: ClientEditorModel) => update((config) => {
+ const activeTab = config.tabs[config.activeTabIndex]
+ const allTabs = Array.from(config.tabs)
+ allTabs[config.activeTabIndex] = { ...activeTab, clientResponseEditorState: responseEditorModel }
+ return { ...config, tabs: allTabs }
+ }),
+ setActiveTabMockRpcEditorModel: (editorModel: MockRpcEditorModel) => update((config) => {
+ const activeTab = config.tabs[config.activeTabIndex]
+ const allTabs = Array.from(config.tabs)
+ allTabs[config.activeTabIndex] = { ...activeTab, mockRpcEditorState: editorModel }
+ return { ...config, tabs: allTabs }
+ }),
+ addNewTab: () => update((config) => {
+ const allTabs = Array.from(config.tabs)
+ const newTabConfig = getDefaultTabConfig()
+ if (allTabs.length > 0) {
+ newTabConfig.clientRequestEditorState.metadata = allTabs[0].clientRequestEditorState.metadata
+ }
+ const newTab = { ...newTabConfig, id: allTabs.length.toString() }
+ allTabs.push(newTab)
+ return { ...config, tabs: allTabs, activeTabIndex: allTabs.length - 1 }
+ }),
+ setTlsCertificate: (tlsCertificate: Certificate | undefined) => update((config) => {
+ const allTabs = Array.from(config.tabs)
+ const activeTab = config.tabs[config.activeTabIndex]
+ allTabs[config.activeTabIndex] = { ...activeTab, tlsCertificate }
+ return { ...config, tabs: allTabs }
+ }),
+ removeTab: (index: number) => update((config) => {
+ const allTabs = Array.from(config.tabs)
+ let newActiveTab = config.activeTabIndex
+ if (allTabs.length == 1) return config
+ allTabs.splice(index, 1)
+ if (config.activeTabIndex >= allTabs.length) newActiveTab = config.activeTabIndex--;
+ return { ...config, tabs: allTabs }
+ })
+ };
+}
+
+export const appConfigStore = createAppConfigStore()
+
+function createActiveTabConfigStore() {
+ const { subscribe } = derived(appConfigStore, (configStore) => {
+ return configStore.tabs[configStore.activeTabIndex]
+ })
- return {
- subscribe,
- setConfig: (config: MainProcessAppConfigModel) => set(config),
- setProxyGrpcServerUrl: (url: string) => update((config) => ({ ...config, proxyGrpcServerUrl: url })),
- setProxyGrpcServer: (server: Server) => update((config) => {
- return ({ ...config, proxyGrpcServer: server });
- }),
- setTestGrpcServer: (server: Server) => update((config) => {
- return ({ ...config, testGrpcServer: server });
- }),
- };
+ return {
+ subscribe,
+ setSelectedRpc: (rpcInfo: RpcProtoInfo) => {
+ console.log("Seleted RPC : ", rpcInfo.methodName)
+ return appConfigStore.setActiveTabSelectedRpc(rpcInfo);
+ },
+ setTargetGrpcServerUrl: (url: string) => appConfigStore.setActiveTabTargetGrpcServerUrl(url),
+ setRpcOperationMode: async (mode: RpcOperationMode) => {
+ appConfigStore.setActiveTabRpcOperationMode(mode);
+ },
+ setMonitorRequestEditorState: (editorModel: MonitorRequestEditorModel) => appConfigStore.setActiveTabMonitorRequestEditorState(editorModel),
+ setTlsCertificate: (tlsCertificate: Certificate | undefined) => appConfigStore.setTlsCertificate(tlsCertificate),
+ setMonitorResponseEditorState: (editorModel: MonitorResponseEditorModel) => appConfigStore.setActiveTabMonitorResponseEditorState(editorModel),
+ setClientRequestEditorState: (editorModel: ClientEditorModel) => appConfigStore.setActiveTabClientRequestEditorState(editorModel),
+ setClientResponseEditorState: (editorModel: ClientEditorModel) => appConfigStore.setActiveTabClientResponseEditorState(editorModel),
+ setMockRpcEditorState: (editorModel: MockRpcEditorModel) => appConfigStore.setActiveTabMockRpcEditorModel(editorModel),
+ };
}
-export const mainProcessAppConfigStore = createAppConfigStore();
+export const activeTabConfigStore = createActiveTabConfigStore();
\ No newline at end of file
diff --git a/app/stores/index.ts b/app/stores/index.ts
index b9deaea..4cdbb97 100644
--- a/app/stores/index.ts
+++ b/app/stores/index.ts
@@ -1,6 +1,6 @@
-export { mainProcessAppConfigStore } from "./appConfigStore";
-export type { MainProcessAppConfigModel, RequestResponseEditorModel } from "./appConfigStore";
+export { mainProcessAppConfigStore } from "./mainProcessAppConfigStore";
+export type { MainProcessAppConfigModel, RequestResponseEditorModel } from "./mainProcessAppConfigStore";
export { protoFilesStore, protoImportPathsStore } from "./protoFiles";
-export { activeTabConfigStore } from "./tabStore";
+export { activeTabConfigStore ,appConfigStore} from "./appConfigStore";
export { rpcProtoInfosStore, servicesStore } from "./protoInfo";
diff --git a/app/stores/mainProcessAppConfigStore.ts b/app/stores/mainProcessAppConfigStore.ts
new file mode 100644
index 0000000..733bba6
--- /dev/null
+++ b/app/stores/mainProcessAppConfigStore.ts
@@ -0,0 +1,37 @@
+import type { Server } from "@grpc/grpc-js";
+import { writable } from "svelte/store";
+export interface MainProcessAppConfigModel {
+ proxyGrpcServerUrl: string;
+ proxyGrpcServer: Server | null;
+ testGrpcServer: Server | null;
+ testGrpcServerUrl: string;
+}
+
+export interface RequestResponseEditorModel {
+ requestText: string;
+ responseText: string;
+}
+
+function createMainProcessAppConfigStore() {
+ const { set, subscribe, update } = writable({
+ proxyGrpcServerUrl: '0.0.0.0:50051',
+ proxyGrpcServer: null,
+ testGrpcServer: null,
+ testGrpcServerUrl: '0.0.0.0:9090',
+ });
+
+ return {
+ subscribe,
+ setConfig: (config: MainProcessAppConfigModel) => set(config),
+ setProxyGrpcServerUrl: (url: string) => update((config) => ({ ...config, proxyGrpcServerUrl: url })),
+ setProxyGrpcServer: (server: Server) => update((config) => {
+ return ({ ...config, proxyGrpcServer: server });
+ }),
+ setTestGrpcServer: (server: Server) => update((config) => {
+ return ({ ...config, testGrpcServer: server });
+ }),
+ };
+}
+
+
+export const mainProcessAppConfigStore = createMainProcessAppConfigStore();
diff --git a/app/stores/tabStore.ts b/app/stores/tabStore.ts
deleted file mode 100644
index be82d42..0000000
--- a/app/stores/tabStore.ts
+++ /dev/null
@@ -1,158 +0,0 @@
-import { derived, writable } from "svelte/store";
-import type { Certificate, RpcProtoInfo } from "../renderer/behaviour";
-import { EditorEventEmitter } from "../renderer/behaviour/responseStateController";
-import { ClientEditorModel, EditorDataFlowMode, MonitorConnectionStatus, MonitorRequestEditorModel, MonitorResponseEditorModel, RpcOperationMode, TabConfigModel, AppConfigModel, MockRpcEditorModel, } from "../renderer/components/types/types";
-import immer from "immer";
-
-
-function getDefaultTabConfig(): TabConfigModel {
- return ({
- id: '0',
- selectedRpc: undefined,
- targetGrpcServerUrl: 'localhost:9090',
- rpcOperationMode: RpcOperationMode.monitor,
- monitorRequestEditorState: {
- connectionStatus: MonitorConnectionStatus.waiting,
- eventEmitter: new EditorEventEmitter(), dataFlowMode: EditorDataFlowMode.passThrough
- },
- clientRequestEditorState: { text: '{}', metadata: '' },
- monitorResponseEditorState: {
- connectionStatus: MonitorConnectionStatus.waiting,
- eventEmitter: new EditorEventEmitter(), dataFlowMode: EditorDataFlowMode.passThrough
- },
- clientResponseEditorState: { text: '', metadata: '' },
- mockRpcEditorState: { responseText: '{}' }
- });
-}
-
-function createAppConfigStore() {
- const defaultTabConfig = getDefaultTabConfig();
- const { set, subscribe, update } = writable({
- activeTabIndex: 0,
- tabs: [defaultTabConfig],
- defaultTargetServerUrl: defaultTabConfig.targetGrpcServerUrl,
- });
- return {
- subscribe,
- setActiveTab: (index: number) => update((store) => ({ ...store, activeTabIndex: index })),
- setValue: async (tabConfigListModel: AppConfigModel) => set(tabConfigListModel),
- setDefaultTargetServerUrl: (targetServer: string) => update(store => {
- const tabs = store.tabs
- if (tabs.length == 1) {
- tabs[0].targetGrpcServerUrl = targetServer
- }
- return ({ ...store, defaultTargetServerUrl: targetServer });
- }),
- setTabValue: (newTabConfig: TabConfigModel, tabId: string) => update((store) => {
- return immer(store, (draftStore) => {
- for (let [index, tabConfig] of draftStore.tabs.entries()) {
- if (tabConfig.id === tabId) {
- draftStore.tabs[index] = newTabConfig;
- }
- }
- })
- }),
- setActiveTabSelectedRpc: (rpcInfo: RpcProtoInfo) => update((config) => {
- const activeTab = config.tabs[config.activeTabIndex]
- const allTabs = Array.from(config.tabs)
- allTabs[config.activeTabIndex] = { ...activeTab, selectedRpc: rpcInfo }
- return { ...config, tabs: allTabs }
- }),
- setActiveTabTargetGrpcServerUrl: (url: string) => update((config) => {
- const activeTab = config.tabs[config.activeTabIndex]
- const allTabs = Array.from(config.tabs)
- allTabs[config.activeTabIndex] = { ...activeTab, targetGrpcServerUrl: url }
- return { ...config, tabs: allTabs }
- }),
- setActiveTabRpcOperationMode: (mode: RpcOperationMode) => update(config => {
- const activeTab = config.tabs[config.activeTabIndex]
- const allTabs = Array.from(config.tabs)
- allTabs[config.activeTabIndex] = { ...activeTab, rpcOperationMode: mode }
- return { ...config, tabs: allTabs }
- }),
- setActiveTabMonitorRequestEditorState: (requestEditorModel: MonitorRequestEditorModel) => update((config) => {
- const activeTab = config.tabs[config.activeTabIndex]
- const allTabs = Array.from(config.tabs)
- allTabs[config.activeTabIndex] = { ...activeTab, monitorRequestEditorState: requestEditorModel }
- return { ...config, tabs: allTabs }
- }),
- setActiveTabMonitorResponseEditorState: (responseEditorModel: MonitorResponseEditorModel) => update((config) => {
- const activeTab = config.tabs[config.activeTabIndex]
- const allTabs = Array.from(config.tabs)
- allTabs[config.activeTabIndex] = { ...activeTab, monitorResponseEditorState: responseEditorModel }
- return { ...config, tabs: allTabs }
- }),
- setActiveTabClientRequestEditorState: (requestEditorModel: ClientEditorModel) => update((config) => {
- const activeTab = config.tabs[config.activeTabIndex]
- const allTabs = Array.from(config.tabs)
- allTabs[config.activeTabIndex] = { ...activeTab, clientRequestEditorState: requestEditorModel }
- return { ...config, tabs: allTabs }
- }),
- setActiveTabClientResponseEditorState: (responseEditorModel: ClientEditorModel) => update((config) => {
- const activeTab = config.tabs[config.activeTabIndex]
- const allTabs = Array.from(config.tabs)
- allTabs[config.activeTabIndex] = { ...activeTab, clientResponseEditorState: responseEditorModel }
- return { ...config, tabs: allTabs }
- }),
- setActiveTabMockRpcEditorModel: (editorModel: MockRpcEditorModel) => update((config) => {
- const activeTab = config.tabs[config.activeTabIndex]
- const allTabs = Array.from(config.tabs)
- allTabs[config.activeTabIndex] = { ...activeTab, mockRpcEditorState: editorModel }
- return { ...config, tabs: allTabs }
- }),
- addNewTab: () => update((config) => {
- const allTabs = Array.from(config.tabs)
- const newTabConfig = getDefaultTabConfig()
- newTabConfig.targetGrpcServerUrl = config.defaultTargetServerUrl
- if (allTabs.length > 0) {
- newTabConfig.clientRequestEditorState.metadata = allTabs[0].clientRequestEditorState.metadata
- }
- const newTab = { ...newTabConfig, id: allTabs.length.toString() }
- allTabs.push(newTab)
- return { ...config, tabs: allTabs, activeTabIndex: allTabs.length - 1 }
- }),
- setTlsCertificate: (tlsCertificate: Certificate | undefined) => update((config) => {
- const allTabs = Array.from(config.tabs)
- const activeTab = config.tabs[config.activeTabIndex]
- allTabs[config.activeTabIndex] = { ...activeTab, tlsCertificate }
- return { ...config, tabs: allTabs }
- }),
- removeTab: (index: number) => update((config) => {
- const allTabs = Array.from(config.tabs)
- let newActiveTab = config.activeTabIndex
- if (allTabs.length == 1) return config
- allTabs.splice(index, 1)
- if (config.activeTabIndex >= allTabs.length) newActiveTab = config.activeTabIndex--;
- return { ...config, tabs: allTabs }
- })
- };
-}
-
-export const appConfigStore = createAppConfigStore()
-
-function createActiveTabConfigStore() {
- const { subscribe } = derived(appConfigStore, (configStore) => {
- return configStore.tabs[configStore.activeTabIndex]
- })
-
- return {
- subscribe,
- setSelectedRpc: (rpcInfo: RpcProtoInfo) => {
- console.log("Seleted RPC : ", rpcInfo.methodName)
- return appConfigStore.setActiveTabSelectedRpc(rpcInfo);
- },
- setTargetGrpcServerUrl: (url: string) => appConfigStore.setActiveTabTargetGrpcServerUrl(url),
- setRpcOperationMode: async (mode: RpcOperationMode) => {
- appConfigStore.setActiveTabRpcOperationMode(mode);
- },
- setMonitorRequestEditorState: (editorModel: MonitorRequestEditorModel) => appConfigStore.setActiveTabMonitorRequestEditorState(editorModel),
- setTlsCertificate: (tlsCertificate: Certificate | undefined) => appConfigStore.setTlsCertificate(tlsCertificate),
- setMonitorResponseEditorState: (editorModel: MonitorResponseEditorModel) => appConfigStore.setActiveTabMonitorResponseEditorState(editorModel),
- setClientRequestEditorState: (editorModel: ClientEditorModel) => appConfigStore.setActiveTabClientRequestEditorState(editorModel),
- setClientResponseEditorState: (editorModel: ClientEditorModel) => appConfigStore.setActiveTabClientResponseEditorState(editorModel),
- setMockRpcEditorState: (editorModel: MockRpcEditorModel) => appConfigStore.setActiveTabMockRpcEditorModel(editorModel),
- };
-}
-
-
-export const activeTabConfigStore = createActiveTabConfigStore();
\ No newline at end of file