From e4f935781980c670604f7c1a4a8347b15d2acfe4 Mon Sep 17 00:00:00 2001
From: Daan Wynen
Date: Wed, 28 Sep 2022 18:52:49 +0200
Subject: [PATCH] rudimentary follow checker for debugging
something is off.
somehow unfollowing once doesn't make sbot return false on the next follow check
---
src/main.rs | 2 +-
src/routes.rs | 52 +++++++++++++++++++++++++++++++++++++++
src/sbot.rs | 4 +--
templates/about.html.tera | 35 ++++++++++++++++++++++++++
templates/base.html.tera | 9 ++++---
5 files changed, 95 insertions(+), 7 deletions(-)
create mode 100644 templates/about.html.tera
diff --git a/src/main.rs b/src/main.rs
index 2ee4a15..3521339 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -25,5 +25,5 @@ async fn rocket() -> _ {
rocket::build()
.manage(db)
.attach(Template::fairing())
- .mount("/", routes![home, subscribe_form, unsubscribe_form])
+ .mount("/", routes![home, subscribe_form, unsubscribe_form, about_start, about_form])
}
diff --git a/src/routes.rs b/src/routes.rs
index 2f7c0db..e5106ab 100644
--- a/src/routes.rs
+++ b/src/routes.rs
@@ -21,6 +21,58 @@ pub async fn home(flash: Option>) -> Template {
Template::render("base", context! { whoami, flash })
}
+#[get("/about")]
+pub async fn about_start() -> Template {
+ Template::render("about", context! {})
+}
+
+#[post("/about", data = "")]
+pub async fn about_form(peer: Form) -> Result> {
+ info!("Showing follow information about peer {}", &peer.public_key);
+
+ let whoami = match sbot::whoami().await {
+ Ok(value) => value,
+ Err(e) => return Err(Flash::error(Redirect::to(uri!(about_start)), e)),
+ };
+
+ if let Err(e) = utils::validate_public_key(&peer.public_key) {
+ let validation_err_msg = format!("Public key {} is invalid: {}", &peer.public_key, e);
+ warn!("{}", validation_err_msg);
+ return Err(Flash::error(Redirect::to(uri!(about_start)), validation_err_msg));
+ }
+ info!("Public key {} is valid.", &peer.public_key);
+
+ // let peer_name = match sbot::get_name(&peer.public_key).await {
+ // Ok(name) if name == peer.public_key => "".to_string(),
+ // Ok(name) => name,
+ // Err(e) => {
+ // warn!("Failed to fetch name for peer {}: {}", &peer.public_key, e);
+ // String::from("")
+ // }
+ // };
+ //
+ // info!("Peer name: {}", peer_name);
+
+ let follow_status = match sbot::is_following(&whoami, &peer.public_key).await {
+ Ok(status) => {
+ let success_msg = format!(
+ "Follow status for {} : '{}'",
+ &peer.public_key,
+ status,
+ );
+ info!("{}", success_msg);
+ status
+ },
+ Err(e) => {
+ warn!("{}", e);
+ return Err(Flash::error(Redirect::to(uri!(about_start)), e));
+ }
+ };
+
+ Ok(Template::render("about", context! { whoami, peer_pubkey: &peer.public_key, status: follow_status }))
+
+}
+
#[post("/subscribe", data = "")]
pub async fn subscribe_form(db: &State, peer: Form) -> Result> {
info!("Subscribing to peer {}", &peer.public_key);
diff --git a/src/sbot.rs b/src/sbot.rs
index 083b255..14be09b 100644
--- a/src/sbot.rs
+++ b/src/sbot.rs
@@ -87,12 +87,12 @@ pub async fn unfollow_if_not_following(remote_peer: &str) -> Result<(), String>
info!("Seeing whether we should unfollow {}", remote_peer);
if let Ok(whoami) = whoami().await {
match is_following(&whoami, remote_peer).await {
- Ok(status) if status.as_str() != "true" => {
+ Ok(status) if status != "true" => {
info!("Status: '{}'", status);
info!("Already not following peer {}. No further action taken", &remote_peer);
Ok(())
},
- Ok(status) if status.as_str() == "true" => {
+ Ok(status) if status == "true" => {
info!("Status: '{}'", status);
match unfollow_peer(remote_peer).await {
Ok(_) => {
diff --git a/templates/about.html.tera b/templates/about.html.tera
new file mode 100644
index 0000000..5eb640b
--- /dev/null
+++ b/templates/about.html.tera
@@ -0,0 +1,35 @@
+
+
+
+
+ lykin check
+
+
+
+ lykin follow
checker
+
+ {% if flash and flash.kind == "error" %}
+ [ {{ flash.message }} ]
+ {% endif %}
+
+ {% if peer_pubkey and whoami and status %}
+
+ me: {{ whoami }}
+ peer: {{ peer_pubkey }}
+ status: {{ status }}
+
+ {% endif %}
+
+
diff --git a/templates/base.html.tera b/templates/base.html.tera
index 47b6487..223f564 100644
--- a/templates/base.html.tera
+++ b/templates/base.html.tera
@@ -7,12 +7,13 @@
lykin
- {{ whoami }}
+ {{ whoami }}
{% if flash and flash.kind == "error" %}
[ {{ flash.message }} ]