mirror of
https://github.com/FranP-code/ChatGPT.git
synced 2025-10-13 00:13:25 +00:00
101 lines
2.5 KiB
Rust
101 lines
2.5 KiB
Rust
use crate::{conf::ChatConfJson, utils};
|
|
use std::{fs, path::PathBuf};
|
|
use tauri::{api, command, AppHandle, Manager};
|
|
|
|
#[command]
|
|
pub fn drag_window(app: AppHandle) {
|
|
app.get_window("core").unwrap().start_dragging().unwrap();
|
|
}
|
|
|
|
#[command]
|
|
pub fn fullscreen(app: AppHandle) {
|
|
let win = app.get_window("core").unwrap();
|
|
if win.is_fullscreen().unwrap() {
|
|
win.set_fullscreen(false).unwrap();
|
|
} else {
|
|
win.set_fullscreen(true).unwrap();
|
|
}
|
|
}
|
|
|
|
#[command]
|
|
pub fn download(_app: AppHandle, name: String, blob: Vec<u8>) {
|
|
let path = api::path::download_dir().unwrap().join(name);
|
|
fs::write(&path, blob).unwrap();
|
|
utils::open_file(path);
|
|
}
|
|
|
|
#[command]
|
|
pub fn open_link(app: AppHandle, url: String) {
|
|
api::shell::open(&app.shell_scope(), url, None).unwrap();
|
|
}
|
|
|
|
#[command]
|
|
pub fn get_chat_conf() -> ChatConfJson {
|
|
ChatConfJson::get_chat_conf()
|
|
}
|
|
|
|
#[command]
|
|
pub fn form_confirm(_app: AppHandle, data: serde_json::Value) {
|
|
ChatConfJson::amend(&serde_json::json!(data), None).unwrap();
|
|
}
|
|
|
|
#[command]
|
|
pub fn form_cancel(app: AppHandle, label: &str, title: &str, msg: &str) {
|
|
let win = app.app_handle().get_window(label).unwrap();
|
|
tauri::api::dialog::ask(
|
|
app.app_handle().get_window(label).as_ref(),
|
|
title,
|
|
msg,
|
|
move |is_cancel| {
|
|
if is_cancel {
|
|
win.close().unwrap();
|
|
}
|
|
},
|
|
);
|
|
}
|
|
|
|
#[command]
|
|
pub fn form_msg(app: AppHandle, label: &str, title: &str, msg: &str) {
|
|
let win = app.app_handle().get_window(label);
|
|
tauri::api::dialog::message(win.as_ref(), title, msg);
|
|
}
|
|
|
|
#[command]
|
|
pub fn open_file(path: PathBuf) {
|
|
utils::open_file(path);
|
|
}
|
|
|
|
#[command]
|
|
pub fn get_chat_model() -> serde_json::Value {
|
|
let path = utils::chat_root().join("chat.model.json");
|
|
let content = fs::read_to_string(path).unwrap_or_else(|_| r#"{"data":[]}"#.to_string());
|
|
serde_json::from_str(&content).unwrap()
|
|
}
|
|
|
|
#[derive(Debug, serde::Serialize, serde::Deserialize)]
|
|
pub struct PromptRecord {
|
|
pub cmd: Option<String>,
|
|
pub act: String,
|
|
pub prompt: String,
|
|
}
|
|
|
|
#[command]
|
|
pub fn parse_prompt(data: String) -> Vec<PromptRecord> {
|
|
let mut rdr = csv::Reader::from_reader(data.as_bytes());
|
|
let mut list = vec![];
|
|
for result in rdr.deserialize() {
|
|
let record: PromptRecord = result.unwrap();
|
|
list.push(record);
|
|
}
|
|
list
|
|
}
|
|
|
|
#[command]
|
|
pub fn window_reload(app: AppHandle, label: &str) {
|
|
app.app_handle()
|
|
.get_window(label)
|
|
.unwrap()
|
|
.eval("window.location.reload()")
|
|
.unwrap();
|
|
}
|