main
reng 3 months ago
parent 55b67ce009
commit 3a104bf704
  1. 18
      vite/src-tauri/src/lib.rs
  2. 2
      vite/src/App.css
  3. 12
      vite/src/comps/debug.jsx
  4. 16
      vite/src/pages/flow_free.jsx

@ -10,6 +10,8 @@ use webview2_com::Microsoft::Web::WebView2::Win32::{
}; };
use windows::core::{Interface, PCWSTR}; use windows::core::{Interface, PCWSTR};
use serde::Serialize; use serde::Serialize;
use std::net::TcpStream;
use std::net::IpAddr;
#[derive(Serialize, Clone)] #[derive(Serialize, Clone)]
struct OscEvent { struct OscEvent {
@ -93,7 +95,8 @@ pub fn run() {
get_env, get_env,
send_osc_message, send_osc_message,
reset_permission, reset_permission,
send_dmx_message send_dmx_message,
get_ip
]) ])
.plugin(tauri_plugin_http::init()) .plugin(tauri_plugin_http::init())
.setup(|app| { .setup(|app| {
@ -182,4 +185,17 @@ fn send_dmx_message(message: &str) -> Result<(), String> {
} }
Ok(()) Ok(())
}
#[tauri::command]
fn get_ip() -> String {
let local_ip = get_local_ip().unwrap();
format!("{}", local_ip)
}
fn get_local_ip() -> Result<IpAddr, Box<dyn std::error::Error>> {
let socket = std::net::UdpSocket::bind("0.0.0.0:0")?;
socket.connect("8.8.8.8:80")?;
let local_ip = socket.local_addr()?.ip();
Ok(local_ip)
} }

@ -11,7 +11,7 @@ html{
} }
main{ main{
@apply flex-1 grid grid-cols-2 gap-4 justify-start p-8 overflow-hidden; @apply flex-1 grid grid-cols-2 gap-4 justify-start p-4 overflow-hidden;
} }
label{ label{

@ -3,7 +3,7 @@ import { useData } from '../util/useData.jsx';
export const TEST_PROMPT='A distant, ambient setting with gentle light'; export const TEST_PROMPT='A distant, ambient setting with gentle light';
export function DebugControl({}){ export function DebugControl({refLight}){
const {data} = useData(); const {data} = useData();
@ -14,7 +14,7 @@ export function DebugControl({}){
} }
return ( return (
<div className="grid grid-cols-5 gap-2 [&>button]:rounded-full [&>button]:bg-white bg-gray-200 p-2 w-full justify-center"> <div className="grid grid-cols-3 gap-2 [&>button]:rounded-full [&>button]:bg-white bg-gray-200 p-2 w-full justify-center">
<button onClick={() =>{ <button onClick={() =>{
sendOsc(OSC_ADDRESS.STATUS, 'reset'); sendOsc(OSC_ADDRESS.STATUS, 'reset');
// refLight.current.set(1); // refLight.current.set(1);
@ -23,10 +23,10 @@ export function DebugControl({}){
<button onClick={() => sendOsc(OSC_ADDRESS.STATUS, 'go')}>go</button> <button onClick={() => sendOsc(OSC_ADDRESS.STATUS, 'go')}>go</button>
<button onClick={() => sendOsc(OSC_ADDRESS.STATUS, 'end')}>end</button> <button onClick={() => sendOsc(OSC_ADDRESS.STATUS, 'end')}>end</button>
<div className="flex flex-col gap-1"> {/* <div className="flex flex-col gap-1"> */}
<button className="btn btn-success" onClick={() => sendPrompt('a dog')}>Test Prompt</button> <button className="btn btn-success" onClick={() => sendPrompt('a dog')}>Test Prompt #1</button>
<button className="btn btn-success" onClick={() => sendPrompt(TEST_PROMPT)}>Test Prompt</button> <button className="btn btn-success" onClick={() => sendPrompt(TEST_PROMPT)}>Test Prompt #2</button>
</div> {/* </div> */}
</div> </div>
) )
} }

@ -1,3 +1,4 @@
import { invoke } from '@tauri-apps/api/core';
import { useEffect, useRef, useState } from "react"; import { useEffect, useRef, useState } from "react";
import SpeechRecognition, { useSpeechRecognition } from 'react-speech-recognition'; import SpeechRecognition, { useSpeechRecognition } from 'react-speech-recognition';
@ -49,6 +50,7 @@ export function FreeFlow(){
const [cuelist, setCuelist] = useState([]); const [cuelist, setCuelist] = useState([]);
const [currentCue, setCurrentCue] = useState(null); const [currentCue, setCurrentCue] = useState(null);
const [nextCue, setNextCue] = useState(null); const [nextCue, setNextCue] = useState(null);
const [localIP, setLocalIP] = useState(null);
const [chatWelcome, setChatWelcome] = useState(null); const [chatWelcome, setChatWelcome] = useState(null);
const [audioInput, setAudioInput] = useState(true); const [audioInput, setAudioInput] = useState(true);
@ -648,13 +650,22 @@ export function FreeFlow(){
onOscMessageReceived(onOsc); // Set up OSC message listener onOscMessageReceived(onOsc); // Set up OSC message listener
invoke('get_ip').then((ip)=>{
console.log('Local IP address:', ip);
setLocalIP(ip);
});
},[]); },[]);
return ( return (
<main className="items-start"> <main className="items-start">
<section className="flex-1 flex flex-col gap-2 self-stretch overflow-hidden"> <section className="flex-1 flex flex-col gap-2 self-stretch overflow-hidden">
<DebugControl/> <div className="bg-purple-300 text-3xl flex flex-row justify-between px-4 items-center gap-1">
<span className='font-bold'>PC {data?.id}</span>
<span className="">{localIP || '...'}</span>
</div>
<DebugControl/>
<div className="w-full p-2 grid grid-cols-4 gap-2 items-stretch justify-center *:max-h-[5rem]"> <div className="w-full p-2 grid grid-cols-4 gap-2 items-stretch justify-center *:max-h-[5rem]">
<div className="bg-gray-100 text-4xl font-bold mb-4 flex justify-center items-center"> <div className="bg-gray-100 text-4xl font-bold mb-4 flex justify-center items-center">
{refCurrentCue.current?.name} {refCurrentCue.current?.name}
@ -670,6 +681,7 @@ export function FreeFlow(){
/> />
{/* <Light ref={refLight} /> */} {/* <Light ref={refLight} /> */}
<VoiceAnalysis/> <VoiceAnalysis/>
{/* <div className="flex flex-col"> {/* <div className="flex flex-col">
<label className="text-center">Voice</label> <label className="text-center">Voice</label>
<button className={`${voice==Voice.ONYX && 'bg-gray-300'}`} onClick={() => setVoice(Voice.ONYX)}>Onyx</button> <button className={`${voice==Voice.ONYX && 'bg-gray-300'}`} onClick={() => setVoice(Voice.ONYX)}>Onyx</button>
@ -685,6 +697,8 @@ export function FreeFlow(){
saveHistory(history); saveHistory(history);
}}>Save Log</button> }}>Save Log</button>
</div> </div>
</div> </div>
<div className="flex-1 overflow-y-auto"> <div className="flex-1 overflow-y-auto">
<table className="border-collapse **:border-y w-full **:p-2 text-sm"> <table className="border-collapse **:border-y w-full **:p-2 text-sm">

Loading…
Cancel
Save