summaryrefslogtreecommitdiff
path: root/src/data
diff options
context:
space:
mode:
Diffstat (limited to 'src/data')
-rw-r--r--src/data/ipaddress_history.rs34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/data/ipaddress_history.rs b/src/data/ipaddress_history.rs
new file mode 100644
index 0000000..3d2bb5b
--- /dev/null
+++ b/src/data/ipaddress_history.rs
@@ -0,0 +1,34 @@
+use just_enough_vcs::vcs::current::current_doc_dir;
+
+const IP_HISTORY_NAME: &str = "ip_history.txt";
+
+pub struct IpAddressHistory {
+ pub recent_ip_address: Vec<String>,
+}
+
+pub async fn get_recent_ip_address() -> Vec<String> {
+ if let Some(local) = current_doc_dir() {
+ let path = local.join(IP_HISTORY_NAME);
+ match tokio::fs::read_to_string(path).await {
+ Ok(content) => content.lines().map(String::from).collect(),
+ Err(_) => Vec::new(),
+ }
+ } else {
+ Vec::new()
+ }
+}
+
+pub async fn insert_recent_ip_address(ip: impl Into<String>) {
+ let ip = ip.into();
+ if let Some(local) = current_doc_dir() {
+ let path = local.join(IP_HISTORY_NAME);
+ let mut recent_ips = get_recent_ip_address().await;
+ recent_ips.retain(|existing_ip| existing_ip != &ip);
+ recent_ips.insert(0, ip);
+ if recent_ips.len() > 8 {
+ recent_ips.truncate(8);
+ }
+ let content = recent_ips.join("\n");
+ let _ = tokio::fs::write(path, content).await;
+ }
+}