Skip to content
This repository has been archived by the owner on Sep 6, 2024. It is now read-only.

Commit

Permalink
[*] Fix bug
Browse files Browse the repository at this point in the history
  • Loading branch information
heng30 committed Sep 23, 2023
1 parent da63557 commit 977b5ff
Show file tree
Hide file tree
Showing 9 changed files with 116 additions and 145 deletions.
13 changes: 6 additions & 7 deletions chatbox/src/audio/azure.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
use super::data::{AzureTextItem, TextType};
use super::play;
use crate::{config, util::http};
use crate::slint_generatedAppWindow::{AppWindow, Logic};
use crate::util::qbox::QBox;
use crate::util::translator::tr;
use crate::{config, util::http};
use log::warn;
use reqwest::header::{HeaderMap, HeaderValue};
use slint::ComponentHandle;
Expand All @@ -15,7 +15,6 @@ use tokio::fs::OpenOptions;
use tokio::io::AsyncWriteExt;
use tokio::task::spawn;


pub fn stop_play() {
play::stop_play();
}
Expand All @@ -34,10 +33,10 @@ pub fn play(ui_box: QBox<AppWindow>, audio_file: String, text: String) {
play::audio_local(&audio_filepath)
} else if !text.is_empty() {
if let Err(err) = slint::invoke_from_event_loop(move || {
ui_box.borrow().global::<Logic>().invoke_show_message(
slint::format!("{}", tr("正在将文本转为音频...")),
"info".into(),
);
ui_box
.borrow()
.global::<Logic>()
.invoke_show_message(tr("正在将文本转为音频...").into(), "info".into());
}) {
warn!("{:?}", err);
}
Expand All @@ -50,7 +49,7 @@ pub fn play(ui_box: QBox<AppWindow>, audio_file: String, text: String) {
let estr = e.to_string();
if let Err(err) = slint::invoke_from_event_loop(move || {
ui_box.borrow().global::<Logic>().invoke_show_message(
slint::format!("{}: {}", tr("播放音频失败") + "!" + &tr("原因"), estr),
slint::format!("{}. {}: {}", tr("播放音频失败"), tr("原因"), estr),
"warning".into(),
);
}) {
Expand Down
58 changes: 26 additions & 32 deletions chatbox/src/logic/archive.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ use crate::slint_generatedAppWindow::{AppWindow, ArchiveChatItem, ChatItem, Logi
use crate::util::translator::tr;
use log::warn;
use slint::Timer;
use slint::{ComponentHandle, Model, SortModel, VecModel};
use std::rc::Rc;
use slint::{ComponentHandle, Model, ModelRc, SortModel, VecModel};
use std::time::Duration;
use uuid::Uuid;

Expand Down Expand Up @@ -34,14 +33,12 @@ pub fn init(ui: &AppWindow) {
});

ui.global::<Store>()
.set_session_archive_datas(Rc::new(VecModel::from(datas)).into());
.set_session_archive_datas(ModelRc::new(VecModel::from(datas)));

let chats: Vec<ChatItem> = ui.global::<Store>().get_session_datas().iter().collect();
if chats.is_empty() {
ui.global::<Logic>().invoke_show_message(
slint::format!("{}", tr("没有可归档的对话") + "!"),
"info".into(),
);
ui.global::<Logic>()
.invoke_show_message(tr("没有可归档的对话").into(), "info".into());
}

match serde_json::to_string::<SessionChats>(&SessionChats::from(&chats)) {
Expand All @@ -64,17 +61,17 @@ pub fn init(ui: &AppWindow) {
},
} {
ui.global::<Logic>().invoke_show_message(
slint::format!("{}: {:?}", tr("保存失败") + "!" + &tr("原因"), e),
slint::format!("{}, {}: {:?}", tr("保存失败"), tr("原因"), e),
"warning".into(),
);
} else {
ui.global::<Logic>()
.invoke_show_message((tr("保存成功") + "!").into(), "success".into());
.invoke_show_message(tr("保存成功").into(), "success".into());
}
}
Err(e) => {
ui.global::<Logic>().invoke_show_message(
slint::format!("{}: {:?}", tr("保存失败") + "!" + &tr("原因"), e),
slint::format!("{}. {}: {:?}", tr("保存失败"), tr("原因"), e),
"warning".into(),
);
}
Expand All @@ -92,16 +89,16 @@ pub fn init(ui: &AppWindow) {
.collect();

ui.global::<Store>()
.set_session_archive_datas(Rc::new(VecModel::from(datas)).into());
.set_session_archive_datas(ModelRc::new(VecModel::from(datas)));

match db::archive::delete(suuid.as_str(), uuid.as_str()) {
Err(e) => ui.global::<Logic>().invoke_show_message(
slint::format!("{}: {:?}", tr("删除失败") + "!" + &tr("原因"), e),
slint::format!("{}. {}: {:?}", tr("删除失败"), tr("原因"), e),
"warning".into(),
),
_ => ui
.global::<Logic>()
.invoke_show_message((tr("删除成功") + "!").into(), "success".into()),
.invoke_show_message(tr("删除成功").into(), "success".into()),
}
});

Expand All @@ -127,12 +124,13 @@ pub fn init(ui: &AppWindow) {
let mut row_item = row_item.unwrap();
row_item.name = name.clone();

ui.global::<Store>().get_session_archive_datas()
ui.global::<Store>()
.get_session_archive_datas()
.set_row_data(row.unwrap(), row_item);

if let Err(e) = db::archive::update(suuid.as_str(), uuid.as_str(), name.as_str()) {
ui.global::<Logic>().invoke_show_message(
slint::format!("{}: {:?}", tr("编辑失败") + "!" + &tr("原因"), e),
slint::format!("{}. {}: {:?}", tr("编辑失败"), tr("原因"), e),
"warning".into(),
);
return;
Expand All @@ -144,16 +142,16 @@ pub fn init(ui: &AppWindow) {
let ui = ui_delete_session_archives_handle.unwrap();

ui.global::<Store>()
.set_session_archive_datas(Rc::new(VecModel::default()).into());
.set_session_archive_datas(ModelRc::new(VecModel::default()));

match db::archive::drop_table(suuid.as_str()) {
Err(e) => ui.global::<Logic>().invoke_show_message(
slint::format!("{}: {:?}", tr("删除失败") + "!" + &tr("原因"), e),
slint::format!("{}. {}: {:?}", tr("删除失败"), tr("原因"), e),
"warning".into(),
),
_ => ui
.global::<Logic>()
.invoke_show_message((tr("删除成功") + "!").into(), "success".into()),
.invoke_show_message(tr("删除成功").into(), "success".into()),
}
});

Expand All @@ -165,7 +163,7 @@ pub fn init(ui: &AppWindow) {
Ok(false) => return,
Err(e) => {
ui.global::<Logic>().invoke_show_message(
slint::format!("{}: {:?}", tr("获取归档文件失败") + "!" + &tr("原因"), e),
slint::format!("{}. {}: {:?}", tr("获取归档文件失败"), tr("原因"), e),
"warning".into(),
);
return;
Expand All @@ -192,13 +190,13 @@ pub fn init(ui: &AppWindow) {
etext: "".into(),
is_mark: citem.is_mark,
is_hide: false,
utext_items: chat::parse_chat_text(citem.utext.as_str()).into(),
btext_items: chat::parse_chat_text(citem.btext.as_str()).into(),
utext_items: chat::parse_chat_text(citem.utext.as_str()),
btext_items: chat::parse_chat_text(citem.btext.as_str()),
})
}

ui.global::<Store>()
.set_session_datas(Rc::new(chat_items).into());
.set_session_datas(ModelRc::new(chat_items));

for i in 1..=3 {
let ui_handle = ui.as_weak();
Expand All @@ -212,18 +210,14 @@ pub fn init(ui: &AppWindow) {
}

Err(e) => ui.global::<Logic>().invoke_show_message(
slint::format!(
"{}: {:?}",
tr("获取归档文件失败") + "!" + &tr("原因"),
e
),
slint::format!("{}. {}: {:?}", tr("获取归档文件失败"), tr("原因"), e),
"warning".into(),
),
}
}
Ok(_) => (),
Err(e) => ui.global::<Logic>().invoke_show_message(
slint::format!("{}: {:?}", tr("获取归档文件失败") + "!" + &tr("原因"), e),
slint::format!("{}. {}: {:?}", tr("获取归档文件失败"), tr("原因"), e),
"warning".into(),
),
}
Expand All @@ -237,13 +231,13 @@ pub fn init(ui: &AppWindow) {
Ok(true) => (),
Err(e) => {
ui.global::<Store>()
.set_session_archive_datas(Rc::new(VecModel::default()).into());
.set_session_archive_datas(ModelRc::new(VecModel::default()));
warn!("{:?}", e);
return;
}
_ => {
ui.global::<Store>()
.set_session_archive_datas(Rc::new(VecModel::default()).into());
.set_session_archive_datas(ModelRc::new(VecModel::default()));
return;
}
}
Expand All @@ -266,10 +260,10 @@ pub fn init(ui: &AppWindow) {
});

ui.global::<Store>()
.set_session_archive_datas(Rc::new(aitems).into());
.set_session_archive_datas(ModelRc::new(aitems));
}
Err(e) => ui.global::<Logic>().invoke_show_message(
slint::format!("{}: {:?}", tr("获取归档文件失败") + "!" + &tr("原因"), e),
slint::format!("{}. {}: {:?}", tr("获取归档文件失败"), tr("原因"), e),
"warning".into(),
),
}
Expand Down
29 changes: 14 additions & 15 deletions chatbox/src/logic/chat.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@ use crate::{audio, azureai, config, openai, session, util};
use log::{debug, warn};
use rand::Rng;
use slint::Timer;
use slint::{ComponentHandle, Model, VecModel};
use slint::{ComponentHandle, ModelRc, Model, VecModel};
use std::cell::RefCell;
use std::collections::HashMap;
use std::rc::Rc;
use std::sync::Mutex;
use std::time::Duration;
use tokio::task::spawn;
Expand Down Expand Up @@ -178,7 +177,7 @@ fn stream_text(ui_box: QBox<AppWindow>, sitem: StreamTextItem) {
current_row,
ChatItem {
btext: btext.clone(),
btext_items: parse_chat_text(btext.as_str()).into(),
btext_items: parse_chat_text(btext.as_str()),
..item
},
);
Expand Down Expand Up @@ -221,8 +220,8 @@ pub fn init(ui: &AppWindow) {
btext: LOADING_STRING.into(),
uuid: uuid.into(),
timestamp: util::time::local_now("%Y-%m-%d %H:%M:%S").into(),
utext_items: parse_chat_text(value.as_str()).into(),
btext_items: parse_chat_text(LOADING_STRING).into(),
utext_items: parse_chat_text(value.as_str()),
btext_items: parse_chat_text(LOADING_STRING),
..Default::default()
});

Expand All @@ -232,7 +231,7 @@ pub fn init(ui: &AppWindow) {
let chat_datas = HistoryChat::from(&datas);

ui.global::<Store>()
.set_session_datas(Rc::new(VecModel::from(datas)).into());
.set_session_datas(ModelRc::new(VecModel::from(datas)));

if !datas_is_empty {
for i in 1..=2 {
Expand Down Expand Up @@ -302,10 +301,10 @@ pub fn init(ui: &AppWindow) {
.collect();

ui.global::<Store>()
.set_session_datas(Rc::new(VecModel::from(datas)).into());
.set_session_datas(ModelRc::new(VecModel::from(datas)));

ui.global::<Logic>()
.invoke_show_message((tr("删除成功") + "!").into(), "success".into());
.invoke_show_message(tr("删除成功").into(), "success".into());
});

ui.global::<Logic>().on_toggle_mark_chat_item(move |uuid| {
Expand All @@ -330,7 +329,7 @@ pub fn init(ui: &AppWindow) {
.collect();

ui.global::<Store>()
.set_session_datas(Rc::new(VecModel::from(datas)).into());
.set_session_datas(ModelRc::new(VecModel::from(datas)));
});

let ui_handle = ui.as_weak();
Expand Down Expand Up @@ -370,7 +369,7 @@ pub fn init(ui: &AppWindow) {

if config.region.is_empty() || config.api_key.is_empty() {
ui.global::<Logic>()
.invoke_show_message((tr("请进行音频配置") + "!").into(), "info".into());
.invoke_show_message(tr("请进行音频配置").into(), "info".into());
return;
}

Expand All @@ -389,7 +388,7 @@ pub fn init(ui: &AppWindow) {
if model.row_count() > 0 {
model.remove(0);
ui.global::<Store>()
.set_session_datas(Rc::new(model).into());
.set_session_datas(ModelRc::new(model));
}
});

Expand All @@ -405,7 +404,7 @@ pub fn init(ui: &AppWindow) {
if model.row_count() > 0 {
model.remove(model.row_count() - 1);
ui.global::<Store>()
.set_session_datas(Rc::new(model).into());
.set_session_datas(ModelRc::new(model));
}
});

Expand Down Expand Up @@ -434,11 +433,11 @@ pub fn init(ui: &AppWindow) {
model.set_row_data(to, from_item);

ui.global::<Store>()
.set_session_datas(Rc::new(model).into());
.set_session_datas(ModelRc::new(model));
});
}

pub fn parse_chat_text(data: &str) -> Rc<VecModel<MDItem>> {
pub fn parse_chat_text(data: &str) -> ModelRc<MDItem> {
let items = VecModel::default();
let mut cur_item = MDItem::default();
let mut in_code_block = false;
Expand Down Expand Up @@ -536,5 +535,5 @@ pub fn parse_chat_text(data: &str) -> Rc<VecModel<MDItem>> {
items.push(cur_item.clone());
}

Rc::new(items)
ModelRc::new(items)
}
6 changes: 3 additions & 3 deletions chatbox/src/logic/clipboard.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@ pub fn init(ui: &AppWindow) {
match ctx {
Ok(mut ctx) => match ctx.set_contents(msg.to_string()) {
Err(e) => ui.global::<Logic>().invoke_show_message(
slint::format!("{}{:?}", tr("复制失败") + "!", e),
slint::format!("{}. {}: {:?}", tr("复制失败"), tr("原因"), e),
"warning".into(),
),
_ => ui
.global::<Logic>()
.invoke_show_message((tr("复制成功") + "!").into(), "success".into()),
.invoke_show_message(tr("复制成功").into(), "success".into()),
},
Err(e) => ui.global::<Logic>().invoke_show_message(
slint::format!("{}{:?}", tr("复制失败") + "!", e),
slint::format!("{}. {}: {:?}", tr("复制失败"), tr("原因"), e),
"warning".into(),
),
}
Expand Down
Loading

0 comments on commit 977b5ff

Please sign in to comment.