refactor and fix

This commit is contained in:
rustdesk 2021-10-08 00:16:10 +08:00
parent c0459b8f94
commit c0db2e6da4
2 changed files with 23 additions and 17 deletions

View File

@ -333,9 +333,21 @@ impl UI {
} }
} }
} }
*self.2.lock().unwrap() = m.clone();
ipc::set_options(m).ok(); ipc::set_options(m).ok();
} }
fn set_option(&self, key: String, value: String) {
let mut options = self.2.lock().unwrap();
if value.is_empty() {
options.remove(&key);
} else {
options.insert(key, value);
}
ipc::set_options(options.clone()).ok();
}
fn install_path(&mut self) -> String { fn install_path(&mut self) -> String {
#[cfg(windows)] #[cfg(windows)]
return crate::platform::windows::get_install_info().1; return crate::platform::windows::get_install_info().1;
@ -587,6 +599,7 @@ impl sciter::EventHandler for UI {
fn test_if_valid_server(String); fn test_if_valid_server(String);
fn get_sound_inputs(); fn get_sound_inputs();
fn set_options(Value); fn set_options(Value);
fn set_option(String, String);
fn get_software_update_url(); fn get_software_update_url();
fn get_new_version(); fn get_new_version();
fn get_version(); fn get_version();

View File

@ -40,9 +40,7 @@ class ConnectStatus: Reactor.Component {
} }
event click $(.connect-status .link) () { event click $(.connect-status .link) () {
var options = handler.get_options(); handler.set_option("stop-service", "");
options["stop-service"] = "";
handler.set_options(options);
} }
} }
@ -138,7 +136,6 @@ function createNewConnect(id, type) {
var myIdMenu; var myIdMenu;
var audioInputMenu; var audioInputMenu;
var configOptions = {};
class AudioInputs: Reactor.Component { class AudioInputs: Reactor.Component {
function this() { function this() {
audioInputMenu = this; audioInputMenu = this;
@ -167,7 +164,7 @@ class AudioInputs: Reactor.Component {
} }
function get_value() { function get_value() {
return configOptions["audio-input"] || this.get_default(); return handler.get_option("audio-input") || this.get_default();
} }
function toggleMenuState() { function toggleMenuState() {
@ -182,8 +179,7 @@ class AudioInputs: Reactor.Component {
var v = me.id; var v = me.id;
if (v == this.get_value()) return; if (v == this.get_value()) return;
if (v == this.get_default()) v = ""; if (v == this.get_default()) v = "";
configOptions["audio-input"] = v; handler.set_option("audio-input", v);
handler.set_options(configOptions);
this.toggleMenuState(); this.toggleMenuState();
} }
} }
@ -223,7 +219,6 @@ class MyIdMenu: Reactor.Component {
event click $(svg#menu) (_, me) { event click $(svg#menu) (_, me) {
audioInputMenu.update({ show: true }); audioInputMenu.update({ show: true });
configOptions = handler.get_options();
this.toggleMenuState(); this.toggleMenuState();
var menu = $(menu#config-options); var menu = $(menu#config-options);
me.popup(menu); me.popup(menu);
@ -232,7 +227,7 @@ class MyIdMenu: Reactor.Component {
function toggleMenuState() { function toggleMenuState() {
for (var el in $$(menu#config-options>li)) { for (var el in $$(menu#config-options>li)) {
if (el.id && el.id.indexOf("enable-") == 0) { if (el.id && el.id.indexOf("enable-") == 0) {
var enabled = configOptions[el.id] != "N"; var enabled = handler.get_option(el.id) != "N";
el.attributes.toggleClass("selected", enabled); el.attributes.toggleClass("selected", enabled);
el.attributes.toggleClass("line-through", !enabled); el.attributes.toggleClass("line-through", !enabled);
} }
@ -241,11 +236,10 @@ class MyIdMenu: Reactor.Component {
event click $(menu#config-options>li) (_, me) { event click $(menu#config-options>li) (_, me) {
if (me.id && me.id.indexOf("enable-") == 0) { if (me.id && me.id.indexOf("enable-") == 0) {
configOptions[me.id] = configOptions[me.id] == "N" ? "" : "N"; handler.set_option(me.id, handler.get_option(me.id) == "N" ? "" : "N");
handler.set_options(configOptions);
} }
if (me.id == "whitelist") { if (me.id == "whitelist") {
var old_value = (configOptions["whitelist"] || "").split(",").join("\n"); var old_value = handler.get_option("whitelist").split(",").join("\n");
handler.msgbox("custom-whitelist", "IP Whitelisting", "<div .form> \ handler.msgbox("custom-whitelist", "IP Whitelisting", "<div .form> \
<textarea spellcheck=\"false\" name=\"text\" novalue=\"0.0.0.0\" style=\"overflow: scroll-indicator; height: 160px; font-size: 1.2em; padding: 0.5em;\">" + old_value + "</textarea>\ <textarea spellcheck=\"false\" name=\"text\" novalue=\"0.0.0.0\" style=\"overflow: scroll-indicator; height: 160px; font-size: 1.2em; padding: 0.5em;\">" + old_value + "</textarea>\
</div> \ </div> \
@ -253,7 +247,7 @@ class MyIdMenu: Reactor.Component {
if (!res) return; if (!res) return;
var value = (res.text || "").trim(); var value = (res.text || "").trim();
if (value) { if (value) {
var values = value.split(/[\s,;]+/g); var values = value.split(/[\s,;\n]+/g);
for (var ip in values) { for (var ip in values) {
if (!ip.match(/^\d+\.\d+\.\d+\.\d+$/)) { if (!ip.match(/^\d+\.\d+\.\d+\.\d+$/)) {
return "Invalid ip: " + ip; return "Invalid ip: " + ip;
@ -262,11 +256,11 @@ class MyIdMenu: Reactor.Component {
value = values.join("\n"); value = values.join("\n");
} }
if (value == old_value) return; if (value == old_value) return;
configOptions["whitelist"] = value.replace("\n", ",");
stdout.println("whitelist updated"); stdout.println("whitelist updated");
handler.set_options(configOptions); handler.set_option("whitelist", value.replace("\n", ","));
}, 300); }, 300);
} else if (me.id == "custom-server") { } else if (me.id == "custom-server") {
var configOptions = handler.get_options();
var old_relay = configOptions["relay-server"] || ""; var old_relay = configOptions["relay-server"] || "";
var old_id = configOptions["custom-rendezvous-server"] || ""; var old_id = configOptions["custom-rendezvous-server"] || "";
handler.msgbox("custom-server", "ID/Relay Server", "<div .form> \ handler.msgbox("custom-server", "ID/Relay Server", "<div .form> \
@ -293,8 +287,7 @@ class MyIdMenu: Reactor.Component {
} else if (me.id == "forum") { } else if (me.id == "forum") {
handler.open_url("https:://forum.rustdesk.com"); handler.open_url("https:://forum.rustdesk.com");
} else if (me.id == "stop-service") { } else if (me.id == "stop-service") {
configOptions["stop-service"] = service_stopped ? "" : "Y"; handler.set_option("stop-service", service_stopped ? "" : "Y");
handler.set_options(configOptions);
} else if (me.id == "about") { } else if (me.id == "about") {
var name = handler.get_app_name(); var name = handler.get_app_name();
handler.msgbox("custom-nocancel-nook-hasclose", "About " + name, "<div style='line-height: 2em'> \ handler.msgbox("custom-nocancel-nook-hasclose", "About " + name, "<div style='line-height: 2em'> \