@@ -70,8 +70,8 @@ pub use wallet::{
|
|||||||
WalletUIState, ZapWallet,
|
WalletUIState, ZapWallet,
|
||||||
};
|
};
|
||||||
pub use zaps::{
|
pub use zaps::{
|
||||||
AnyZapState, DefaultZapError, DefaultZapMsats, NoteZapTarget, NoteZapTargetOwned,
|
get_current_default_msats, AnyZapState, DefaultZapError, DefaultZapMsats, NoteZapTarget,
|
||||||
PendingDefaultZapState, ZapTarget, ZapTargetOwned, ZappingError,
|
NoteZapTargetOwned, PendingDefaultZapState, ZapTarget, ZapTargetOwned, ZappingError,
|
||||||
};
|
};
|
||||||
|
|
||||||
// export libs
|
// export libs
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ pub enum NoteAction {
|
|||||||
#[derive(Debug, Eq, PartialEq, Clone)]
|
#[derive(Debug, Eq, PartialEq, Clone)]
|
||||||
pub enum ZapAction {
|
pub enum ZapAction {
|
||||||
Send(ZapTargetAmount),
|
Send(ZapTargetAmount),
|
||||||
|
CustomizeAmount(NoteZapTargetOwned),
|
||||||
ClearError(NoteZapTargetOwned),
|
ClearError(NoteZapTargetOwned),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,4 +7,7 @@ pub use cache::{
|
|||||||
AnyZapState, NoteZapTarget, NoteZapTargetOwned, ZapTarget, ZapTargetOwned, ZappingError, Zaps,
|
AnyZapState, NoteZapTarget, NoteZapTargetOwned, ZapTarget, ZapTargetOwned, ZappingError, Zaps,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub use default_zap::{DefaultZapError, DefaultZapMsats, PendingDefaultZapState, UserZapMsats};
|
pub use default_zap::{
|
||||||
|
get_current_default_msats, DefaultZapError, DefaultZapMsats, PendingDefaultZapState,
|
||||||
|
UserZapMsats,
|
||||||
|
};
|
||||||
|
|||||||
@@ -97,6 +97,9 @@ fn execute_note_action(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
ZapAction::ClearError(target) => clear_zap_error(&sender, zaps, target),
|
ZapAction::ClearError(target) => clear_zap_error(&sender, zaps, target),
|
||||||
|
ZapAction::CustomizeAmount(target) => {
|
||||||
|
router.route_to(Route::CustomizeZapAmount(target.to_owned()))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
None
|
None
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ use crate::{
|
|||||||
column::NavTitle,
|
column::NavTitle,
|
||||||
configure_deck::ConfigureDeckView,
|
configure_deck::ConfigureDeckView,
|
||||||
edit_deck::{EditDeckResponse, EditDeckView},
|
edit_deck::{EditDeckResponse, EditDeckView},
|
||||||
note::{NewPostAction, PostAction, PostType},
|
note::{custom_zap::CustomZapView, NewPostAction, PostAction, PostType},
|
||||||
profile::EditProfileView,
|
profile::EditProfileView,
|
||||||
search::{FocusState, SearchView},
|
search::{FocusState, SearchView},
|
||||||
support::SupportView,
|
support::SupportView,
|
||||||
@@ -27,7 +27,10 @@ use crate::{
|
|||||||
|
|
||||||
use egui_nav::{Nav, NavAction, NavResponse, NavUiType};
|
use egui_nav::{Nav, NavAction, NavResponse, NavUiType};
|
||||||
use nostrdb::Transaction;
|
use nostrdb::Transaction;
|
||||||
use notedeck::{get_current_wallet, AccountsAction, AppContext, NoteAction, NoteContext};
|
use notedeck::{
|
||||||
|
get_current_default_msats, get_current_wallet, AccountsAction, AppContext, NoteAction,
|
||||||
|
NoteContext,
|
||||||
|
};
|
||||||
use notedeck_ui::View;
|
use notedeck_ui::View;
|
||||||
use tracing::error;
|
use tracing::error;
|
||||||
|
|
||||||
@@ -292,7 +295,6 @@ fn render_nav_body(
|
|||||||
&mut note_context,
|
&mut note_context,
|
||||||
&mut app.jobs,
|
&mut app.jobs,
|
||||||
),
|
),
|
||||||
|
|
||||||
Route::Accounts(amr) => {
|
Route::Accounts(amr) => {
|
||||||
let mut action = render_accounts_route(
|
let mut action = render_accounts_route(
|
||||||
ui,
|
ui,
|
||||||
@@ -310,13 +312,11 @@ fn render_nav_body(
|
|||||||
.accounts_action
|
.accounts_action
|
||||||
.map(|f| RenderNavAction::SwitchingAction(SwitchingAction::Accounts(f)))
|
.map(|f| RenderNavAction::SwitchingAction(SwitchingAction::Accounts(f)))
|
||||||
}
|
}
|
||||||
|
|
||||||
Route::Relays => {
|
Route::Relays => {
|
||||||
let manager = RelayPoolManager::new(ctx.pool);
|
let manager = RelayPoolManager::new(ctx.pool);
|
||||||
RelayView::new(ctx.accounts, manager, &mut app.view_state.id_string_map).ui(ui);
|
RelayView::new(ctx.accounts, manager, &mut app.view_state.id_string_map).ui(ui);
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
Route::Reply(id) => {
|
Route::Reply(id) => {
|
||||||
let txn = if let Ok(txn) = Transaction::new(ctx.ndb) {
|
let txn = if let Ok(txn) = Transaction::new(ctx.ndb) {
|
||||||
txn
|
txn
|
||||||
@@ -359,7 +359,6 @@ fn render_nav_body(
|
|||||||
|
|
||||||
action.map(Into::into)
|
action.map(Into::into)
|
||||||
}
|
}
|
||||||
|
|
||||||
Route::Quote(id) => {
|
Route::Quote(id) => {
|
||||||
let txn = Transaction::new(ctx.ndb).expect("txn");
|
let txn = Transaction::new(ctx.ndb).expect("txn");
|
||||||
|
|
||||||
@@ -393,7 +392,6 @@ fn render_nav_body(
|
|||||||
|
|
||||||
response.action.map(Into::into)
|
response.action.map(Into::into)
|
||||||
}
|
}
|
||||||
|
|
||||||
Route::ComposeNote => {
|
Route::ComposeNote => {
|
||||||
let kp = ctx.accounts.get_selected_account()?.key.to_full()?;
|
let kp = ctx.accounts.get_selected_account()?.key.to_full()?;
|
||||||
let draft = app.drafts.compose_mut();
|
let draft = app.drafts.compose_mut();
|
||||||
@@ -412,18 +410,15 @@ fn render_nav_body(
|
|||||||
|
|
||||||
post_response.action.map(Into::into)
|
post_response.action.map(Into::into)
|
||||||
}
|
}
|
||||||
|
|
||||||
Route::AddColumn(route) => {
|
Route::AddColumn(route) => {
|
||||||
render_add_column_routes(ui, app, ctx, col, route);
|
render_add_column_routes(ui, app, ctx, col, route);
|
||||||
|
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
Route::Support => {
|
Route::Support => {
|
||||||
SupportView::new(&mut app.support).show(ui);
|
SupportView::new(&mut app.support).show(ui);
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
Route::Search => {
|
Route::Search => {
|
||||||
let id = ui.id().with(("search", depth, col));
|
let id = ui.id().with(("search", depth, col));
|
||||||
let navigating = get_active_columns_mut(ctx.accounts, &mut app.decks_cache)
|
let navigating = get_active_columns_mut(ctx.accounts, &mut app.decks_cache)
|
||||||
@@ -454,7 +449,6 @@ fn render_nav_body(
|
|||||||
.show(ui, ctx.clipboard)
|
.show(ui, ctx.clipboard)
|
||||||
.map(RenderNavAction::NoteAction)
|
.map(RenderNavAction::NoteAction)
|
||||||
}
|
}
|
||||||
|
|
||||||
Route::NewDeck => {
|
Route::NewDeck => {
|
||||||
let id = ui.id().with("new-deck");
|
let id = ui.id().with("new-deck");
|
||||||
let new_deck_state = app.view_state.id_to_deck_state.entry(id).or_default();
|
let new_deck_state = app.view_state.id_to_deck_state.entry(id).or_default();
|
||||||
@@ -597,6 +591,30 @@ fn render_nav_body(
|
|||||||
.ui(ui)
|
.ui(ui)
|
||||||
.map(RenderNavAction::WalletAction)
|
.map(RenderNavAction::WalletAction)
|
||||||
}
|
}
|
||||||
|
Route::CustomizeZapAmount(target) => {
|
||||||
|
let txn = Transaction::new(ctx.ndb).expect("txn");
|
||||||
|
let default_msats = get_current_default_msats(ctx.accounts, ctx.global_wallet);
|
||||||
|
CustomZapView::new(
|
||||||
|
ctx.img_cache,
|
||||||
|
ctx.ndb,
|
||||||
|
&txn,
|
||||||
|
&target.zap_recipient,
|
||||||
|
default_msats,
|
||||||
|
)
|
||||||
|
.ui(ui)
|
||||||
|
.map(|msats| {
|
||||||
|
get_active_columns_mut(ctx.accounts, &mut app.decks_cache)
|
||||||
|
.column_mut(col)
|
||||||
|
.router_mut()
|
||||||
|
.go_back();
|
||||||
|
RenderNavAction::NoteAction(NoteAction::Zap(notedeck::ZapAction::Send(
|
||||||
|
notedeck::note::ZapTargetAmount {
|
||||||
|
target: target.clone(),
|
||||||
|
specified_msats: Some(msats),
|
||||||
|
},
|
||||||
|
)))
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
use enostr::{NoteId, Pubkey};
|
use enostr::{NoteId, Pubkey};
|
||||||
use notedeck::WalletType;
|
use notedeck::{NoteZapTargetOwned, WalletType};
|
||||||
use std::fmt::{self};
|
use std::fmt::{self};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
@@ -29,6 +29,7 @@ pub enum Route {
|
|||||||
Search,
|
Search,
|
||||||
EditDeck(usize),
|
EditDeck(usize),
|
||||||
Wallet(WalletType),
|
Wallet(WalletType),
|
||||||
|
CustomizeZapAmount(NoteZapTargetOwned),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Route {
|
impl Route {
|
||||||
@@ -112,6 +113,7 @@ impl Route {
|
|||||||
Route::Wallet(_) => {
|
Route::Wallet(_) => {
|
||||||
writer.write_token("wallet");
|
writer.write_token("wallet");
|
||||||
}
|
}
|
||||||
|
Route::CustomizeZapAmount(_) => writer.write_token("customize zap amount"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,12 +203,9 @@ impl Route {
|
|||||||
pub fn title(&self) -> ColumnTitle<'_> {
|
pub fn title(&self) -> ColumnTitle<'_> {
|
||||||
match self {
|
match self {
|
||||||
Route::Timeline(kind) => kind.to_title(),
|
Route::Timeline(kind) => kind.to_title(),
|
||||||
|
|
||||||
Route::Reply(_id) => ColumnTitle::simple("Reply"),
|
Route::Reply(_id) => ColumnTitle::simple("Reply"),
|
||||||
Route::Quote(_id) => ColumnTitle::simple("Quote"),
|
Route::Quote(_id) => ColumnTitle::simple("Quote"),
|
||||||
|
|
||||||
Route::Relays => ColumnTitle::simple("Relays"),
|
Route::Relays => ColumnTitle::simple("Relays"),
|
||||||
|
|
||||||
Route::Accounts(amr) => match amr {
|
Route::Accounts(amr) => match amr {
|
||||||
AccountsRoute::Accounts => ColumnTitle::simple("Accounts"),
|
AccountsRoute::Accounts => ColumnTitle::simple("Accounts"),
|
||||||
AccountsRoute::AddAccount => ColumnTitle::simple("Add Account"),
|
AccountsRoute::AddAccount => ColumnTitle::simple("Add Account"),
|
||||||
@@ -238,6 +237,7 @@ impl Route {
|
|||||||
Route::EditProfile(_) => ColumnTitle::simple("Edit Profile"),
|
Route::EditProfile(_) => ColumnTitle::simple("Edit Profile"),
|
||||||
Route::Search => ColumnTitle::simple("Search"),
|
Route::Search => ColumnTitle::simple("Search"),
|
||||||
Route::Wallet(_) => ColumnTitle::simple("Wallet"),
|
Route::Wallet(_) => ColumnTitle::simple("Wallet"),
|
||||||
|
Route::CustomizeZapAmount(_) => ColumnTitle::simple("Customize Zap Amount"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -342,18 +342,14 @@ impl fmt::Display for Route {
|
|||||||
TimelineKind::Thread(_id) => write!(f, "Thread"),
|
TimelineKind::Thread(_id) => write!(f, "Thread"),
|
||||||
TimelineKind::Profile(_id) => write!(f, "Profile"),
|
TimelineKind::Profile(_id) => write!(f, "Profile"),
|
||||||
},
|
},
|
||||||
|
|
||||||
Route::Reply(_id) => write!(f, "Reply"),
|
Route::Reply(_id) => write!(f, "Reply"),
|
||||||
Route::Quote(_id) => write!(f, "Quote"),
|
Route::Quote(_id) => write!(f, "Quote"),
|
||||||
|
|
||||||
Route::Relays => write!(f, "Relays"),
|
Route::Relays => write!(f, "Relays"),
|
||||||
|
|
||||||
Route::Accounts(amr) => match amr {
|
Route::Accounts(amr) => match amr {
|
||||||
AccountsRoute::Accounts => write!(f, "Accounts"),
|
AccountsRoute::Accounts => write!(f, "Accounts"),
|
||||||
AccountsRoute::AddAccount => write!(f, "Add Account"),
|
AccountsRoute::AddAccount => write!(f, "Add Account"),
|
||||||
},
|
},
|
||||||
Route::ComposeNote => write!(f, "Compose Note"),
|
Route::ComposeNote => write!(f, "Compose Note"),
|
||||||
|
|
||||||
Route::AddColumn(_) => write!(f, "Add Column"),
|
Route::AddColumn(_) => write!(f, "Add Column"),
|
||||||
Route::Support => write!(f, "Support"),
|
Route::Support => write!(f, "Support"),
|
||||||
Route::NewDeck => write!(f, "Add Deck"),
|
Route::NewDeck => write!(f, "Add Deck"),
|
||||||
@@ -361,6 +357,7 @@ impl fmt::Display for Route {
|
|||||||
Route::EditProfile(_) => write!(f, "Edit Profile"),
|
Route::EditProfile(_) => write!(f, "Edit Profile"),
|
||||||
Route::Search => write!(f, "Search"),
|
Route::Search => write!(f, "Search"),
|
||||||
Route::Wallet(_) => write!(f, "Wallet"),
|
Route::Wallet(_) => write!(f, "Wallet"),
|
||||||
|
Route::CustomizeZapAmount(_) => write!(f, "Customize Zap Amount"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -447,7 +447,6 @@ impl<'a> NavTitle<'a> {
|
|||||||
self.timeline_pfp(ui, kind, pfp_size);
|
self.timeline_pfp(ui, kind, pfp_size);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
Route::Reply(_) => {}
|
Route::Reply(_) => {}
|
||||||
Route::Quote(_) => {}
|
Route::Quote(_) => {}
|
||||||
Route::Accounts(_as) => {}
|
Route::Accounts(_as) => {}
|
||||||
@@ -464,6 +463,7 @@ impl<'a> NavTitle<'a> {
|
|||||||
ui.add(ui::side_panel::search_button());
|
ui.add(ui::side_panel::search_button());
|
||||||
}
|
}
|
||||||
Route::Wallet(_) => {}
|
Route::Wallet(_) => {}
|
||||||
|
Route::CustomizeZapAmount(_) => {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -728,6 +728,10 @@ fn render_note_actionbar(
|
|||||||
crate::show_pointer(ui);
|
crate::show_pointer(ui);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if zap_resp.secondary_clicked() {
|
||||||
|
break 's Some(NoteAction::Zap(ZapAction::CustomizeAmount(target)));
|
||||||
|
}
|
||||||
|
|
||||||
if !zap_resp.clicked() {
|
if !zap_resp.clicked() {
|
||||||
break 's None;
|
break 's None;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user