2022-03-26 23:06:08 -04:00
|
|
|
#[macro_use]
|
|
|
|
extern crate tracing;
|
|
|
|
|
2022-02-03 16:56:26 -05:00
|
|
|
use discord_rpc_client::java::*;
|
|
|
|
|
2022-03-26 23:06:08 -04:00
|
|
|
use jni::objects::{JClass, JObject, JString};
|
2022-02-03 16:56:26 -05:00
|
|
|
use jni::JNIEnv;
|
|
|
|
|
2022-03-26 23:06:08 -04:00
|
|
|
// can't just put these in src/java.rs and re-export because of some tree-shaking that the compiler does.
|
2022-02-03 16:56:26 -05:00
|
|
|
|
|
|
|
#[no_mangle]
|
2022-03-26 23:06:08 -04:00
|
|
|
pub extern "system" fn Java_com_discord_rpc_DiscordRPC_create<'a>(
|
|
|
|
env: JNIEnv<'a>,
|
|
|
|
class: JClass,
|
|
|
|
) -> JObject<'a> {
|
|
|
|
let _ = tracing_subscriber::fmt::try_init();
|
|
|
|
|
|
|
|
match jni_create(env, class) {
|
|
|
|
Ok(obj) => obj,
|
|
|
|
Err(e) => {
|
|
|
|
error!(
|
|
|
|
concat!("at ", file!(), ":", line!(), ":", column!(), ": {}"),
|
|
|
|
e
|
|
|
|
);
|
|
|
|
JObject::null()
|
|
|
|
}
|
|
|
|
}
|
2022-02-03 16:56:26 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
#[no_mangle]
|
2022-03-26 23:06:08 -04:00
|
|
|
pub extern "system" fn Java_com_discord_rpc_DiscordRPC_connect(
|
|
|
|
env: JNIEnv,
|
|
|
|
obj: JObject,
|
|
|
|
client_id: JString,
|
|
|
|
) -> bool {
|
|
|
|
match jni_connect(env, obj, client_id) {
|
|
|
|
Ok(_) => true,
|
|
|
|
Err(e) => {
|
2022-08-16 14:31:44 -04:00
|
|
|
match e.downcast::<std::io::Error>() {
|
|
|
|
Ok(e) => {
|
|
|
|
if e.kind() == std::io::ErrorKind::NotFound {
|
|
|
|
debug!(
|
|
|
|
concat!("at ", file!(), ":", line!(), ":", column!(), ": {}"),
|
|
|
|
e
|
|
|
|
);
|
|
|
|
return false;
|
|
|
|
} else {
|
|
|
|
error!(
|
|
|
|
concat!("at ", file!(), ":", line!(), ":", column!(), ": {}"),
|
|
|
|
e
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
Err(e) => {
|
|
|
|
error!(
|
|
|
|
concat!("at ", file!(), ":", line!(), ":", column!(), ": {}"),
|
|
|
|
e
|
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
2022-03-26 23:06:08 -04:00
|
|
|
false
|
|
|
|
}
|
|
|
|
}
|
2022-02-03 16:56:26 -05:00
|
|
|
}
|
|
|
|
|
2022-03-21 13:19:12 -04:00
|
|
|
#[no_mangle]
|
2022-03-26 23:06:08 -04:00
|
|
|
pub extern "system" fn Java_com_discord_rpc_DiscordRPC_disconnect(
|
|
|
|
env: JNIEnv,
|
|
|
|
obj: JObject,
|
|
|
|
) -> bool {
|
|
|
|
match jni_disconnect(env, obj) {
|
|
|
|
Ok(_) => true,
|
|
|
|
Err(e) => {
|
|
|
|
error!(
|
|
|
|
concat!("at ", file!(), ":", line!(), ":", column!(), ": {}"),
|
|
|
|
e
|
|
|
|
);
|
|
|
|
false
|
|
|
|
}
|
|
|
|
}
|
2022-03-21 13:19:12 -04:00
|
|
|
}
|
|
|
|
|
2022-02-03 16:56:26 -05:00
|
|
|
#[no_mangle]
|
2022-03-26 23:06:08 -04:00
|
|
|
pub extern "system" fn Java_com_discord_rpc_DiscordRPC_setActivity(
|
|
|
|
env: JNIEnv,
|
|
|
|
obj: JObject,
|
|
|
|
j_activity: JObject,
|
|
|
|
) -> bool {
|
|
|
|
match jni_set_activity(env, obj, j_activity) {
|
|
|
|
Ok(_) => true,
|
|
|
|
Err(e) => {
|
|
|
|
error!(
|
|
|
|
concat!("at ", file!(), ":", line!(), ":", column!(), ": {}"),
|
|
|
|
e
|
|
|
|
);
|
|
|
|
false
|
|
|
|
}
|
|
|
|
}
|
2022-02-03 16:56:26 -05:00
|
|
|
}
|
2022-03-21 13:19:12 -04:00
|
|
|
|
|
|
|
#[no_mangle]
|
2022-03-26 23:06:08 -04:00
|
|
|
pub extern "system" fn Java_com_discord_rpc_DiscordRPC_clearActivity(
|
|
|
|
env: JNIEnv,
|
|
|
|
obj: JObject,
|
|
|
|
) -> bool {
|
|
|
|
match jni_clear_activity(env, obj) {
|
|
|
|
Ok(_) => true,
|
|
|
|
Err(e) => {
|
|
|
|
error!(
|
|
|
|
concat!("at ", file!(), ":", line!(), ":", column!(), ": {}"),
|
|
|
|
e
|
|
|
|
);
|
|
|
|
false
|
|
|
|
}
|
|
|
|
}
|
2022-03-21 13:19:12 -04:00
|
|
|
}
|