mirror of
https://github.com/creating2morrow/neveko.git
synced 2025-01-03 09:29:39 +00:00
market and gui patches
This commit is contained in:
parent
e245c1d160
commit
543f2befde
11 changed files with 82 additions and 2 deletions
1
neveko-auth/Cargo.lock
generated
1
neveko-auth/Cargo.lock
generated
|
@ -1209,6 +1209,7 @@ dependencies = [
|
|||
"hex",
|
||||
"hmac",
|
||||
"jwt",
|
||||
"lazy_static 1.4.0",
|
||||
"lmdb-rs",
|
||||
"log 0.4.17",
|
||||
"rand",
|
||||
|
|
1
neveko-contact/Cargo.lock
generated
1
neveko-contact/Cargo.lock
generated
|
@ -1209,6 +1209,7 @@ dependencies = [
|
|||
"hex",
|
||||
"hmac",
|
||||
"jwt",
|
||||
"lazy_static 1.4.0",
|
||||
"lmdb-rs",
|
||||
"log 0.4.17",
|
||||
"rand",
|
||||
|
|
1
neveko-core/Cargo.lock
generated
1
neveko-core/Cargo.lock
generated
|
@ -1199,6 +1199,7 @@ dependencies = [
|
|||
"hex",
|
||||
"hmac",
|
||||
"jwt",
|
||||
"lazy_static 1.4.0",
|
||||
"lmdb-rs",
|
||||
"log 0.4.17",
|
||||
"rand",
|
||||
|
|
|
@ -1225,3 +1225,16 @@ impl Default for FinalizeOrderResponse {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// Response for the vendor mode
|
||||
#[derive(Serialize, Deserialize, Debug)]
|
||||
#[serde(crate = "rocket::serde")]
|
||||
pub struct VendorModeResponse {
|
||||
pub mode: bool,
|
||||
}
|
||||
|
||||
impl Default for VendorModeResponse {
|
||||
fn default() -> Self {
|
||||
VendorModeResponse { mode: false }
|
||||
}
|
||||
}
|
||||
|
|
|
@ -212,7 +212,7 @@ pub fn get_app_contact_port() -> u16 {
|
|||
args.contact_port
|
||||
}
|
||||
|
||||
/// app message port
|
||||
/// app market port
|
||||
pub fn get_app_market_port() -> u16 {
|
||||
let args = args::Args::parse();
|
||||
args.marketplace_port
|
||||
|
@ -417,7 +417,7 @@ fn start_micro_servers() {
|
|||
.expect("failed to start contact server");
|
||||
debug!("{:?}", c_output.stdout);
|
||||
info!("starting marketplace admin server");
|
||||
let mut market_path = "neveko-contact/target/debug/neveko_market";
|
||||
let mut market_path = "neveko-market/target/debug/neveko_market";
|
||||
if env == ReleaseEnvironment::Production {
|
||||
market_path = "neveko_market";
|
||||
}
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
#![forbid(unsafe_code)]
|
||||
|
||||
use eframe::egui;
|
||||
use image::Luma;
|
||||
use neveko_core::*;
|
||||
use qrcode::QrCode;
|
||||
use std::{
|
||||
sync::mpsc::{
|
||||
Receiver,
|
||||
|
@ -23,8 +25,10 @@ pub struct HomeApp {
|
|||
is_editing_connections: bool,
|
||||
is_init: bool,
|
||||
is_installing: bool,
|
||||
is_qr_set: bool,
|
||||
is_loading: bool,
|
||||
is_timeout: bool,
|
||||
is_showing_qr: bool,
|
||||
is_updated: bool,
|
||||
// Sender/Receiver for async notifications.
|
||||
i2p_status_tx: Sender<i2p::ProxyStatus>,
|
||||
|
@ -39,6 +43,7 @@ pub struct HomeApp {
|
|||
xmr_rpc_ver_rx: Receiver<reqres::XmrRpcVersionResponse>,
|
||||
can_refresh_tx: Sender<bool>,
|
||||
can_refresh_rx: Receiver<bool>,
|
||||
pub qr: egui_extras::RetainedImage,
|
||||
// application state set
|
||||
s_xmr_address: reqres::XmrRpcAddressResponse,
|
||||
s_xmr_balance: reqres::XmrRpcBalanceResponse,
|
||||
|
@ -61,6 +66,8 @@ impl Default for HomeApp {
|
|||
let is_init = true;
|
||||
let is_installing = false;
|
||||
let is_loading = false;
|
||||
let is_qr_set = false;
|
||||
let is_showing_qr = false;
|
||||
let is_timeout = false;
|
||||
let is_updated = false;
|
||||
let (core_timeout_tx, core_timeout_rx) = std::sync::mpsc::channel();
|
||||
|
@ -71,6 +78,7 @@ impl Default for HomeApp {
|
|||
let (can_refresh_tx, can_refresh_rx) = std::sync::mpsc::channel();
|
||||
let (i2p_status_tx, i2p_status_rx) = std::sync::mpsc::channel();
|
||||
let (installation_tx, installation_rx) = std::sync::mpsc::channel();
|
||||
let contents = std::fs::read("./assets/qr.png").unwrap_or(Vec::new());
|
||||
let s_xmr_rpc_ver = Default::default();
|
||||
let s_xmr_address = Default::default();
|
||||
let s_xmr_balance = Default::default();
|
||||
|
@ -96,6 +104,8 @@ impl Default for HomeApp {
|
|||
is_init,
|
||||
is_installing,
|
||||
is_loading,
|
||||
is_qr_set,
|
||||
is_showing_qr,
|
||||
is_timeout,
|
||||
is_updated,
|
||||
xmrd_get_info_tx,
|
||||
|
@ -110,6 +120,7 @@ impl Default for HomeApp {
|
|||
i2p_status_rx,
|
||||
can_refresh_rx,
|
||||
can_refresh_tx,
|
||||
qr: egui_extras::RetainedImage::from_image_bytes("qr.png", &contents).unwrap(),
|
||||
// state of self defaults
|
||||
s_xmr_address,
|
||||
s_xmr_balance,
|
||||
|
@ -161,6 +172,38 @@ impl eframe::App for HomeApp {
|
|||
}
|
||||
}
|
||||
|
||||
// I2P Address QR
|
||||
//-----------------------------------------------------------------------------------
|
||||
let mut is_showing_qr = self.is_showing_qr;
|
||||
egui::Window::new("")
|
||||
.open(&mut is_showing_qr)
|
||||
.vscroll(true)
|
||||
.show(ctx, |ui| {
|
||||
let mut i2p_address = i2p::get_destination(None);
|
||||
if !self.is_qr_set && i2p_address != utils::empty_string() {
|
||||
let code = QrCode::new(&i2p_address).unwrap();
|
||||
let image = code.render::<Luma<u8>>().build();
|
||||
let file_path = format!(
|
||||
"/home/{}/.neveko/i2p-qr.png",
|
||||
std::env::var("USER").unwrap_or(String::from("user"))
|
||||
);
|
||||
image.save(&file_path).unwrap();
|
||||
self.is_qr_set = true;
|
||||
let contents = std::fs::read(&file_path).unwrap_or(Vec::new());
|
||||
self.qr = egui_extras::RetainedImage::from_image_bytes("i2p-qr.png", &contents)
|
||||
.unwrap();
|
||||
ctx.request_repaint();
|
||||
}
|
||||
self.qr.show(ui);
|
||||
let address_label = ui.label("copy: \t");
|
||||
ui.text_edit_singleline(&mut i2p_address)
|
||||
.labelled_by(address_label.id);
|
||||
ui.label("\n");
|
||||
if ui.button("Exit").clicked() {
|
||||
self.is_showing_qr = false;
|
||||
}
|
||||
});
|
||||
|
||||
// Installation Error window
|
||||
//-----------------------------------------------------------------------------------
|
||||
let mut has_install_failed = self.has_install_failed;
|
||||
|
@ -302,6 +345,11 @@ impl eframe::App for HomeApp {
|
|||
ui.label(format!("- status: {}\n- address: {}", str_i2p_status, i2p_address));
|
||||
});
|
||||
});
|
||||
ui.horizontal(|ui| {
|
||||
if ui.button("Show QR").clicked() {
|
||||
self.is_showing_qr = true;
|
||||
}
|
||||
});
|
||||
ui.label("____________________________________________________________________\n");
|
||||
ui.label("\n\n");
|
||||
ui.horizontal(|ui| {
|
||||
|
|
|
@ -98,6 +98,10 @@ impl eframe::App for WalletApp {
|
|||
ctx.request_repaint();
|
||||
}
|
||||
self.qr.show(ui);
|
||||
let address_label = ui.label("copy: \t");
|
||||
ui.text_edit_singleline(&mut self.s_xmr_address)
|
||||
.labelled_by(address_label.id);
|
||||
ui.label("\n");
|
||||
if ui.button("Exit").clicked() {
|
||||
self.is_showing_qr = false;
|
||||
}
|
||||
|
|
1
neveko-market/Cargo.lock
generated
1
neveko-market/Cargo.lock
generated
|
@ -1248,6 +1248,7 @@ dependencies = [
|
|||
"hex",
|
||||
"hmac",
|
||||
"jwt",
|
||||
"lazy_static 1.4.0",
|
||||
"lmdb-rs",
|
||||
"log 0.4.17",
|
||||
"rand",
|
||||
|
|
|
@ -99,4 +99,13 @@ pub async fn sign_and_submit_multisig(
|
|||
}
|
||||
Custom(Status::Ok, Json(Default::default()))
|
||||
}
|
||||
|
||||
/// toggle vendor mode
|
||||
#[get("/")]
|
||||
pub async fn toggle_vendor_mode(
|
||||
_token: auth::BearerToken,
|
||||
) -> Custom<Json<reqres::VendorModeResponse>> {
|
||||
let mode = utils::toggle_vendor_enabled();
|
||||
Custom(Status::Ok, Json(reqres::VendorModeResponse { mode }))
|
||||
}
|
||||
// END JSON APIs
|
||||
|
|
|
@ -37,4 +37,5 @@ async fn rocket() -> _ {
|
|||
controller::update_product
|
||||
],
|
||||
)
|
||||
.mount("/vendor/mode", routes![controller::toggle_vendor_mode])
|
||||
}
|
||||
|
|
1
neveko-message/Cargo.lock
generated
1
neveko-message/Cargo.lock
generated
|
@ -1199,6 +1199,7 @@ dependencies = [
|
|||
"hex",
|
||||
"hmac",
|
||||
"jwt",
|
||||
"lazy_static 1.4.0",
|
||||
"lmdb-rs",
|
||||
"log 0.4.17",
|
||||
"rand",
|
||||
|
|
Loading…
Reference in a new issue