diff --git a/src/router/friend.rs b/src/router/friend.rs index a0b2453..c248b30 100644 --- a/src/router/friend.rs +++ b/src/router/friend.rs @@ -22,9 +22,7 @@ pub fn friend(req: HttpRequest, body: String) -> HttpResponse { }; for (_i, uid) in rv_data.members().enumerate() { - let mut to_push = global::get_user(uid.as_i64().unwrap()); - to_push["status"] = body["status"].clone(); - rv.push(to_push).unwrap(); + rv.push(global::get_user(uid.as_i64().unwrap(), &friends)).unwrap(); } let resp = object!{ @@ -61,11 +59,13 @@ pub fn recommend(_req: HttpRequest, _body: String) -> HttpResponse { global::send(resp) } -pub fn search(_req: HttpRequest, body: String) -> HttpResponse { +pub fn search(req: HttpRequest, body: String) -> HttpResponse { + let key = global::get_login(req.headers(), &body); let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap(); + let friends = userdata::get_acc_friends(&key); let uid = body["user_id"].as_i64().unwrap(); - let user = global::get_user(uid); + let user = global::get_user(uid, &friends); let resp = object!{ "code": 0, diff --git a/src/router/global.rs b/src/router/global.rs index 433e8f0..b3cedef 100644 --- a/src/router/global.rs +++ b/src/router/global.rs @@ -160,7 +160,7 @@ fn get_cards(arr: JsonValue, user: &JsonValue) -> JsonValue { } return rv; } -pub fn get_user(id: i64) -> JsonValue { +pub fn get_user(id: i64, friends: &JsonValue) -> JsonValue { let user = userdata::get_acc_from_uid(id); if !user["error"].is_empty() { return object!{}; @@ -191,5 +191,15 @@ pub fn get_user(id: i64) -> JsonValue { rv["user"].remove("ss_user_id"); rv["user"].remove("birthday"); + rv["status"] = if friends["friend_user_id_list"].contains(id) { + 3 + } else if friends["pending_user_id_list"].contains(id) { + 2 + } else if friends["request_user_id_list"].contains(id) { + 1 + } else { + 0 + }.into(); + rv } diff --git a/src/router/live.rs b/src/router/live.rs index 8bccaff..4e0486b 100644 --- a/src/router/live.rs +++ b/src/router/live.rs @@ -1,6 +1,5 @@ use json; -use json::object; -use json::JsonValue; +use json::{object, array, JsonValue}; use crate::router::global; use crate::encryption; use actix_web::{HttpResponse, HttpRequest}; @@ -19,11 +18,72 @@ pub fn retire(_req: HttpRequest, _body: String) -> HttpResponse { global::send(resp) } -pub fn guest(_req: HttpRequest, _body: String) -> HttpResponse { +pub fn guest(req: HttpRequest, body: String) -> HttpResponse { + let key = global::get_login(req.headers(), &body); + let friends = userdata::get_acc_friends(&key); + + let mut guest_list = array![]; + if friends["friend_user_id_list"].len() == 0 { + guest_list.push(object!{ + "user": { + "name": "A Nice Guest","comment":"Enjoy your live show!", + "exp": 900, + "main_deck_slot": 1, + "favorite_master_card_id": 10010013, + "favorite_card_evolve": 0, + "guest_smile_master_card_id": 10010013, + "guest_cool_master_card_id": 10010013, + "guest_pure_master_card_id": 10010013, + "friend_request_disabled": 1, + "master_title_ids": [3000001,0], + "profile_settings": [1,2,3,4,5,6,7], + "last_login_time": 1708699449 + }, + "favorite_card": { + "id": 0, + "master_card_id": 10010013, + "exp": 1025, + "skill_exp": 0, + "evolve": [] + }, + "guest_smile_card": { + "id": 0, + "master_card_id": 10010013, + "exp": 1025, + "skill_exp": 0, + "evolve": [] + }, + "guest_cool_card": { + "id": 0, + "master_card_id": 10010013, + "exp": 1025, + "skill_exp": 0, + "evolve": [] + }, + "guest_pure_card": { + "id": 0, + "master_card_id": 10010013, + "exp": 1025, + "skill_exp": 0, + "evolve": [] + }, + "status":0 + }).unwrap(); + } else { + for (i, uid) in friends["friend_user_id_list"].members().enumerate() { + if i > 10 { + break; + } + guest_list.push(global::get_user(uid.as_i64().unwrap(), &friends)).unwrap(); + } + } + let resp = object!{ "code": 0, "server_time": global::timestamp(), - "data": {"guest_list":[{"user":{"name":"A Nice Guest","comment":"Enjoy your live show!","exp":900,"main_deck_slot":1,"favorite_master_card_id":10010013,"favorite_card_evolve":0,"guest_smile_master_card_id":10010013,"guest_cool_master_card_id":10010013,"guest_pure_master_card_id":10010013,"friend_request_disabled":1,"master_title_ids":[3000001,0],"profile_settings":[1,2,3,4,5,6,7],"last_login_time":1708699449},"favorite_card":{"id":0,"master_card_id":10010013,"exp":1025,"skill_exp":0,"evolve":[]},"guest_smile_card":{"id":0,"master_card_id":10010013,"exp":1025,"skill_exp":0,"evolve":[]},"guest_cool_card":{"id":0,"master_card_id":10010013,"exp":1025,"skill_exp":0,"evolve":[]},"guest_pure_card":{"id":0,"master_card_id":10010013,"exp":1025,"skill_exp":0,"evolve":[]},"status":0}]} + "data": { + "guest_list": guest_list + } }; global::send(resp) } diff --git a/src/router/user.rs b/src/router/user.rs index 4a1de97..0e93296 100644 --- a/src/router/user.rs +++ b/src/router/user.rs @@ -365,12 +365,15 @@ pub fn migration(_req: HttpRequest, body: String) -> HttpResponse { global::send(resp) } -pub fn detail(_req: HttpRequest, body: String) -> HttpResponse { +pub fn detail(req: HttpRequest, body: String) -> HttpResponse { + let key = global::get_login(req.headers(), &body); let body = json::parse(&encryption::decrypt_packet(&body).unwrap()).unwrap(); + let friends = userdata::get_acc_friends(&key); + let mut user_detail_list = array![]; for (_i, data) in body["user_ids"].members().enumerate() { let uid = data.as_i64().unwrap(); - let user = global::get_user(uid); + let user = global::get_user(uid, &friends); user_detail_list.push(user).unwrap(); } let resp = object!{