aboutsummaryrefslogtreecommitdiff
path: root/src/commands/thread.rs
blob: 57b410cb970486859e9da8b0d821ad4a094b2f56 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
use tw;
use ::Queryer;
use ::display;

use tw::TweetId;

use commands::Command;

use std::str::FromStr;

pub static FORGET_THREAD: Command = Command {
    keyword: "forget",
    params: 1,
    exec: forget
};

fn forget(line: String, tweeter: &mut tw::TwitterCache, _queryer: &mut Queryer) {
    tweeter.forget_thread(line.trim().to_string());
    println!("Ok! Forgot thread {}", line.trim().to_string());
}

pub static REMEMBER_THREAD: Command = Command {
    keyword: "remember",
    params: 2,
    exec: remember
};

fn remember(line: String, tweeter: &mut tw::TwitterCache, _queryer: &mut Queryer) {
    let mut text: String = line.trim().to_string();
    if let Some(id_end_idx) = text.find(" ") {
        let name_bare = text.split_off(id_end_idx + 1);
        let name = name_bare.trim();
        let id_str = text.trim();
        if name.len() > 0 {
            let maybe_id = TweetId::parse(line.to_owned());
            match maybe_id {
                Some(twid) => {
                    let twete = tweeter.retrieve_tweet(&twid).unwrap().clone();
                    tweeter.set_thread(name.to_string(), twete.internal_id);
                    println!("Ok! Recorded {:?} as thread {}", twid, name);
                }
                None => {
                    println!("Invalid id: {}", line);
                }
            }
        }
    }
}

pub static LIST_THREADS: Command = Command {
    keyword: "ls_threads",
    params: 0,
    exec: ls_threads
};

fn ls_threads(line: String, tweeter: &mut tw::TwitterCache, queryer: &mut Queryer) {
    println!("Threads: ");
    for k in tweeter.threads() {
        println!("Thread: {}", k);
        let latest_inner_id = tweeter.latest_in_thread(k.to_owned()).unwrap();
        if let Some(twete) = tweeter.retrieve_tweet(&TweetId::Bare(*latest_inner_id)) {
                                // gross..
            display::render_twete(&twete.id, tweeter);
            println!("");
        } else {
            println!("ERROR no tweet for remembered thread.");
        }
    }
}