chore: 新增其他系统的二进制文件

This commit is contained in:
liyuanhu 2025-04-15 16:04:17 +08:00
parent 7aefaa919f
commit ae04f35bb1
7 changed files with 107 additions and 30 deletions

View File

@ -6,7 +6,7 @@
"scripts": {
"web:dev": "vite",
"web:preview": "vite preview",
"web:build": "tsc && vite build",
"web:build": "vite build",
"sidecar:build": "node build-sidecar.mjs",
"tauri": "tauri"
},

View File

@ -1,26 +1,28 @@
import { useStartupCheck } from '@/hooks/useStartupCheck'
import { usePreventDefault } from '@/hooks/usePreventDefaultEventListener'
import { useGlobalShortcut } from '@/hooks/useGlobalShortcut'
import { useRecreateTheCircuit } from '@/hooks/useRecreateTheCircuit'
import { useCoreConfig } from './hooks/useCoreConfig'
import { useStartupCheck } from "@/hooks/useStartupCheck";
import { usePreventDefault } from "@/hooks/usePreventDefaultEventListener";
import { useGlobalShortcut } from "@/hooks/useGlobalShortcut";
import { useRecreateTheCircuit } from "@/hooks/useRecreateTheCircuit";
import { useCoreConfig } from "./hooks/useCoreConfig";
// import { commands } from '@/bindings'
import Titlebar from '@/components/Titlebar'
import Titlebar from "@/components/Titlebar";
import Layout from "@/layout";
import Tray from "@/components/Tray";
import Layout from '@/layout'
import Tray from '@/components/Tray'
function App() {
// 执行启动自检
useStartupCheck()
useStartupCheck();
// 阻止默认事件
usePreventDefault()
usePreventDefault();
// 注册全局快捷方式
useGlobalShortcut()
useGlobalShortcut();
// 当核心启动时重新创建电路
useRecreateTheCircuit()
useRecreateTheCircuit();
// 读取配置,若文件不存在则持久化到本地 `%APPDATA%/com.paw.paw-gui`
const { loadCoreConfig } = useCoreConfig()
loadCoreConfig()
const { loadCoreConfig } = useCoreConfig();
loadCoreConfig();
return (
<main>
@ -28,7 +30,7 @@ function App() {
<Layout />
<Tray />
</main>
)
);
}
export default App
export default App;

28
src/api/block.ts Normal file
View File

@ -0,0 +1,28 @@
import { CoreConfig } from "@/bindings";
import { api } from "@/utils/api";
// 区块链api 类
export class BlockChainApi {
public coreConfig: CoreConfig;
public baseUrl = "http://localhost:3000/api";
constructor() {
this.coreConfig = {} as CoreConfig;
}
// async initCoreConfig() {
// // 异步调用 loadCoreConfig 函数,获取核心配置信息
// this.coreConfig = await loadCoreConfig();
// }
// 获取最新的区块信息
async getLatestBlock() {
const res = await api.get(
this.baseUrl + "/cosmos/base/tendermint/v1beta1/blocks/latest",
);
return res
}
}
// 导出一个异步函数 initBlockChinApi用于初始化区块链API
export const blockChainApi = new BlockChainApi();

View File

View File

@ -31,24 +31,26 @@ const createConfigStore = async () => {
return await load('core_config.json', { autoSave: true })
}
export const loadCoreConfig = async () => {
const store = await createConfigStore()
const savedConfig = await store.get<CoreConfig>('core_config')
if (savedConfig) {
return savedConfig
}
const defaultConfig = await commands.getDefaultCoreConfig()
await store.set('core_config', defaultConfig)
await store.save()
return defaultConfig
}
export function useCoreConfig() {
/**
*
*/
const loadCoreConfig = async () => {
const store = await createConfigStore()
const savedConfig = await store.get<CoreConfig>('core_config')
console.log(savedConfig,'defaultConfig')
if (savedConfig) {
return savedConfig
}
const defaultConfig = await commands.getDefaultCoreConfig()
await store.set('core_config', defaultConfig)
await store.save()
return defaultConfig
}
/**
*

View File

@ -26,6 +26,7 @@ import type { AppDispatch, RootState } from "@/store";
import "./index.scss";
import { DialogConfig, FormAlertDialog } from "./components/FormAlertDialog";
import { ClearNodeDialog } from "./components/ClearNodeDialog";
import { blockChainApi } from "@/api/block";
export const DIALOGTYPE = {
ADDNode: {
@ -68,6 +69,8 @@ const NewHome = () => {
NODEDIALOGTYPE.ClearFailNode
);
const [blockChain, setBlockChain] = useState<any>(null);
const [tooltipClosed, setTooltipClosed] = useState(false);
const [tooltipType, setTooltipType] = useState(
@ -170,9 +173,17 @@ const NewHome = () => {
// return () => clearInterval(interval);
// }, [dispatch]);
useEffect(()=>{
blockChainApi.getLatestBlock().then((res)=>{
console.log("res",res)
setBlockChain(res)
})
},[])
return (
<div className="decentralized w-full h-full flex flex-col relative">
<div className="box"></div>
<div className="text-red-300">{blockChain?.block_id?.hash || "111"}</div>
<div className="w-full flex items-center justify-center relative">
{/* <img
className="w-[1693px] h-[271px] absolute top-[160px] left-[50%] translate-x-[-50%] z-10"

34
src/utils/api.ts Normal file
View File

@ -0,0 +1,34 @@
import { type ClientOptions, fetch } from "@tauri-apps/plugin-http";
class FetchApi {
async sendRequest(
url: string,
method: string,
data?: any,
config: RequestInit & ClientOptions = {}
) {
const result = await fetch(url, {
method: method,
body: data ? JSON.stringify(data) : undefined,
headers: {
"Content-Type": "application/json",
},
...config,
});
if (result.ok) {
return await result.json();
} else {
return null;
}
}
async get(url: string, config: RequestInit & ClientOptions = {}) {
return await this.sendRequest(url, "GET", undefined, config);
}
async post(url: string, data: any, config: RequestInit & ClientOptions = {}) {
return await this.sendRequest(url, "POST", data, config);
}
}
export const api = new FetchApi();