Skip to content

Commit

Permalink
WOOOO SWITCH TO VITE + REACT + TS
Browse files Browse the repository at this point in the history
  • Loading branch information
SutekhVRC committed Nov 17, 2022
1 parent fd92d53 commit c3bd448
Show file tree
Hide file tree
Showing 32 changed files with 915 additions and 614 deletions.
5 changes: 1 addition & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,10 @@ yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

/node_modules/
node_modules
dist
dist-ssr
*.local
.next
/target/

# Editor directories and files
.vscode/*
Expand All @@ -24,4 +22,3 @@ dist-ssr
*.njsproj
*.sln
*.sw?
package-lock.json
File renamed without changes
File renamed without changes
File renamed without changes
13 changes: 13 additions & 0 deletions index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + React + TS</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
5 changes: 0 additions & 5 deletions next-env.d.ts

This file was deleted.

11 changes: 0 additions & 11 deletions next.config.js

This file was deleted.

26 changes: 12 additions & 14 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,24 +1,22 @@
{
"name": "vc-boilerplate",
"name": "vibecheck",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "next dev -p 1420",
"build": "next build && next export -o dist",
"tauri": "tauri"
"dev": "vite",
"build": "tsc && vite build",
"preview": "vite preview"
},
"dependencies": {
"@tauri-apps/api": "^1.1.0",
"next": "^12.2.5",
"react": "^18.2.0",
"react-dom": "^18.2.0",
"yarn": "^1.22.19"
"react-dom": "^18.2.0"
},
"devDependencies": {
"@tauri-apps/cli": "^1.1.0",
"@types/node": "^18.7.11",
"@types/react": "^18.0.17",
"@types/react-dom": "^18.0.6",
"typescript": "^4.7.4"
"@types/react": "^18.0.24",
"@types/react-dom": "^18.0.8",
"@vitejs/plugin-react": "^2.2.0",
"typescript": "^4.6.4",
"vite": "^3.2.3"
}
}
}
8 changes: 0 additions & 8 deletions public/index.html

This file was deleted.

1 change: 1 addition & 0 deletions public/vite.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion src-tauri/.gitignore
Original file line number Diff line number Diff line change
@@ -1 +1 @@
/target/
/target/
2 changes: 0 additions & 2 deletions src-tauri/Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ rust-version = "1.57"
tauri-build = { version = "1.2.0", features = [] }

[dependencies]
buttplug = "6.2.0"
buttplug = {path = "../../../../../../../buttplug-6.2.0-sutekhvrc-mod"}
tokio = {version = "1.17.0", features = ["rt-multi-thread", "sync", "macros", "io-std", "time"] }
futures-util = "0.3.21"
tracing-subscriber = "0.3.9"
Expand Down
40 changes: 38 additions & 2 deletions src-tauri/src/bluetooth.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,52 @@
use btleplug::api::Manager as _;
use btleplug::api::{Central, Manager as _};
use btleplug::platform::Manager;
use buttplug::client::ButtplugClient;
use buttplug::core::connector::ButtplugInProcessClientConnectorBuilder;
use buttplug::server::ButtplugServerBuilder;
use buttplug::server::device::hardware::communication::btleplug::BtlePlugCommunicationManagerBuilder;
use buttplug::server::device::hardware::communication::lovense_connect_service::LovenseConnectServiceCommunicationManagerBuilder;



pub async fn detect_btle_adapter() -> bool {
if let Ok(manager) = Manager::new().await {
if let Ok(adapters) = manager.adapters().await {
return adapters.is_empty();
if adapters.is_empty() {
return false;
}
let adapter = manager.adapters().await.unwrap();
let central = adapter.into_iter().nth(0).unwrap();
println!("[+] BTLE: {}", central.adapter_info().await.unwrap());
return !adapters.is_empty();

} else {
return false;
}
} else {
println!("[-] Failed to create btle Manager.");
return false;
}
}

pub async fn vc_toy_client_server_init(client_name: &str, btle_enabled: &mut bool, allow_raw_messages: bool) -> ButtplugClient {

let mut server_builder = ButtplugServerBuilder::default();
if detect_btle_adapter().await {
server_builder.comm_manager(BtlePlugCommunicationManagerBuilder::default());
*btle_enabled = true;
} else {
println!("[!] No Bluetooth LE interfaces detected.. Disabling btle.");
}
server_builder.comm_manager(LovenseConnectServiceCommunicationManagerBuilder::default());

if allow_raw_messages {
server_builder.allow_raw_messages();
}
let server = server_builder.finish().unwrap();
let connector = ButtplugInProcessClientConnectorBuilder::default()
.server(server)
.finish();
let client = ButtplugClient::new(client_name);
client.connect(connector).await.unwrap();
client
}
8 changes: 7 additions & 1 deletion src-tauri/src/frontend_native.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use std::collections::HashMap;

use crate::{vcore::{self, ToyAlterError}, toyops::{FrontendOutVCToyModel, AlterVCToyModel}};
use crate::{vcore::{self, ToyAlterError, ConnectionModes}, toyops::{FrontendOutVCToyModel, AlterVCToyModel}};

/*
* vibecheck_version
Expand Down Expand Up @@ -125,4 +125,10 @@ pub fn get_toys(vc_state: tauri::State<'_, vcore::VCStateMutex>) -> Option<HashM
#[tauri::command(async)]
pub fn alter_toy(vc_state: tauri::State<'_, vcore::VCStateMutex>, toy_id: u32, toy_feature: AlterVCToyModel) -> Result<(), ToyAlterError> {
vcore::native_alter_toy(vc_state, toy_id, toy_feature)
}

#[tauri::command(async)]
pub fn get_connection_modes(vc_state: tauri::State<'_, vcore::VCStateMutex>) -> ConnectionModes {
let vc_lock = vc_state.0.lock();
vc_lock.connection_modes.clone()
}
5 changes: 4 additions & 1 deletion src-tauri/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@ mod vcore;
mod util;
mod toyops;
//mod lovense;
//mod bluetooth;
mod bluetooth;

fn main() {

//tracing_subscriber::fmt::init();

let vibecheck_state_pointer = Arc::new(
Mutex::new(
vcore::VibeCheckState::new(
Expand Down Expand Up @@ -87,6 +89,7 @@ fn main() {
frontend_native::vibecheck_stop_bt_scan,
frontend_native::get_toys,
frontend_native::alter_toy,
frontend_native::get_connection_modes,
]
)
.build(tauri::generate_context!())
Expand Down
18 changes: 15 additions & 3 deletions src-tauri/src/vcore.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ use std::fs;
use std::sync::Arc;
use std::sync::mpsc::{self, Receiver, Sender};
use buttplug::client::ButtplugClient;
use buttplug::util::in_process_client;
use serde::Serialize;
use tokio::runtime::Runtime;
use tokio::task::JoinHandle;
use parking_lot::Mutex;
use crate::bluetooth;
use crate::config::save_toy_config;
use crate::handling::HandlerErr;
use crate::toyops::{FrontendOutVCToyModel, AlterVCToyModel};
Expand Down Expand Up @@ -45,12 +45,20 @@ fn debug_out(s: &'static str) {
println!("{}", s);
}

#[derive(Debug, Clone, Serialize)]
pub struct ConnectionModes {
btle_enabled: bool,
lc_enabled: bool,
}

pub struct VCStateMutex(pub Arc<Mutex<VibeCheckState>>);

pub struct VibeCheckState {

pub config: VibeCheckConfig,

pub connection_modes: ConnectionModes,

pub bp_client: ButtplugClient,

pub running: RunningState,
Expand Down Expand Up @@ -95,10 +103,12 @@ impl VibeCheckState {
// Create async runtime for toy handling routines
let async_rt = Runtime::new().unwrap();

let mut connection_modes = ConnectionModes { btle_enabled: true, lc_enabled: true };

let bp_client = async_rt.block_on(async move {
in_process_client("VibeCheck", false).await
bluetooth::vc_toy_client_server_init("VibeCheck", &mut connection_modes.btle_enabled, false).await
});
println!("[*] Connected to process");
println!("[*] Buttplug Client Initialized.");
let event_stream = bp_client.event_stream();


Expand Down Expand Up @@ -130,6 +140,8 @@ impl VibeCheckState {
Self {
config,

connection_modes,

bp_client,

running: RunningState::Stopped,
Expand Down
2 changes: 1 addition & 1 deletion src-tauri/tauri.conf.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"build": {
"beforeBuildCommand": "yarn build",
"beforeDevCommand": "yarn dev",
"devPath": "http://localhost:1420",
"devPath": "http://localhost:5173",
"distDir": "../dist"
},
"package": {
Expand Down
42 changes: 31 additions & 11 deletions src/App.css
Original file line number Diff line number Diff line change
@@ -1,21 +1,41 @@
#root {
max-width: 1280px;
margin: 0 auto;
padding: 2rem;
text-align: center;
}

.logo {
padding: 1.5em !important;
height: 6em;
padding: 1.5em;
will-change: filter;
}
.logo:hover {
filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.react:hover {
filter: drop-shadow(0 0 2em #61dafbaa);
}

span.logos > a > span {
overflow: inherit !important;
@keyframes logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}

.logo.next:hover {
filter: drop-shadow(0 0 2em #36373f);
@media (prefers-reduced-motion: no-preference) {
a:nth-of-type(2) .logo {
animation: logo-spin infinite 20s linear;
}
}

.logo.react:hover {
filter: drop-shadow(0 0 2em #61dafb);
.card {
padding: 2em;
}

@media (prefers-color-scheme: dark) {
.logo.next:hover {
filter: drop-shadow(0 0 2em #ffff);
}
.read-the-docs {
color: #888;
}
34 changes: 34 additions & 0 deletions src/App.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import { useState } from 'react'
import reactLogo from './assets/react.svg'
import './App.css'

function App() {
const [count, setCount] = useState(0)

return (
<div className="App">
<div>
<a href="https://vitejs.dev" target="_blank">
<img src="/vite.svg" className="logo" alt="Vite logo" />
</a>
<a href="https://reactjs.org" target="_blank">
<img src={reactLogo} className="logo react" alt="React logo" />
</a>
</div>
<h1>Vite + React</h1>
<div className="card">
<button onClick={() => setCount((count) => count + 1)}>
count is {count}
</button>
<p>
Edit <code>src/App.tsx</code> and save to test HMR
</p>
</div>
<p className="read-the-docs">
Click on the Vite and React logos to learn more
</p>
</div>
)
}

export default App
Loading

0 comments on commit c3bd448

Please sign in to comment.