Add disconnect and clearActivity
This commit is contained in:
parent
49f58f2623
commit
5d0243df9a
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"files.watcherExclude": {
|
||||
"**/target": true
|
||||
}
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
[package]
|
||||
name = "discord-rpc-client"
|
||||
version = "0.5.1"
|
||||
version = "0.5.2"
|
||||
description = "A Rust client for Discord RPC."
|
||||
authors = [
|
||||
"Patrick Auernig <dev.patrick.auernig@gmail.com>",
|
||||
|
|
|
@ -15,7 +15,17 @@ pub extern "system" fn Java_com_discord_rpc_DiscordRPC_connect(env: JNIEnv, obj:
|
|||
Java_com_discord_rpc_DiscordRPC_connect0(env, obj, client_id).is_ok()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "system" fn Java_com_discord_rpc_DiscordRPC_disconnect(env: JNIEnv, obj: JObject) -> bool {
|
||||
Java_com_discord_rpc_DiscordRPC_disconnect0(env, obj).is_ok()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "system" fn Java_com_discord_rpc_DiscordRPC_setActivity(env: JNIEnv, obj: JObject, j_activity: JObject) -> bool {
|
||||
Java_com_discord_rpc_DiscordRPC_setActivity0(env, obj, j_activity).is_ok()
|
||||
}
|
||||
|
||||
#[no_mangle]
|
||||
pub extern "system" fn Java_com_discord_rpc_DiscordRPC_clearActivity(env: JNIEnv, obj: JObject) -> bool {
|
||||
Java_com_discord_rpc_DiscordRPC_clearActivity0(env, obj).is_ok()
|
||||
}
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
ThisBuild / organization := "com.discord"
|
||||
ThisBuild / version := "0.2.0"
|
||||
ThisBuild / version := "0.2.1"
|
||||
|
||||
lazy val hello = (project in file("."))
|
||||
lazy val root = (project in file("."))
|
||||
.settings(
|
||||
name := "discord-rpc"
|
||||
)
|
||||
|
||||
//libraryDependencies += "org.scalactic" %% "scalactic" % "3.2.10"
|
||||
//libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % "test"
|
||||
libraryDependencies += "org.scalatest" %% "scalatest" % "3.2.10" % Test
|
||||
|
|
|
@ -16,8 +16,12 @@ public final class DiscordRPC {
|
|||
|
||||
public native boolean connect(String clientId);
|
||||
|
||||
public native boolean disconnect();
|
||||
|
||||
public native boolean setActivity(Activity activity);
|
||||
|
||||
public native boolean clearActivity();
|
||||
|
||||
static {
|
||||
final var dir = System.getProperty("com.discord.librarypath");
|
||||
if (dir != null) {
|
||||
|
@ -26,5 +30,10 @@ public final class DiscordRPC {
|
|||
System.loadLibrary("discord_rpc");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method does nothing, but ensures that the native library will be loaded.
|
||||
*/
|
||||
public static void initialize() {
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
import org.scalatest._
|
||||
import flatspec._
|
||||
import matchers._
|
||||
import com.discord.rpc.DiscordRPC
|
||||
|
||||
class DiscordRPCSpec extends AnyFlatSpec with should.Matchers {
|
||||
"DiscordRPC.initialize()" should "load library and bind native methods" in {
|
||||
// FIXME: this test fails because the lib isn't in the java.library.path and com.discord.librarypath is not set.
|
||||
DiscordRPC.initialize()
|
||||
}
|
||||
}
|
16
src/java.rs
16
src/java.rs
|
@ -74,6 +74,14 @@ pub fn Java_com_discord_rpc_DiscordRPC_connect0(env: JNIEnv, obj: JObject, clien
|
|||
Ok(())
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn Java_com_discord_rpc_DiscordRPC_disconnect0(env: JNIEnv, obj: JObject) -> Result<(), ()> {
|
||||
let client = get_client(&env, obj)?;
|
||||
|
||||
RUNTIME.block_on(async { client.disconnect().await });
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn Java_com_discord_rpc_DiscordRPC_setActivity0(env: JNIEnv, obj: JObject, j_activity: JObject) -> Result<(), ()> {
|
||||
let client = get_client(&env, obj)?;
|
||||
|
@ -83,6 +91,14 @@ pub fn Java_com_discord_rpc_DiscordRPC_setActivity0(env: JNIEnv, obj: JObject, j
|
|||
Ok(())
|
||||
}
|
||||
|
||||
#[inline(always)]
|
||||
pub fn Java_com_discord_rpc_DiscordRPC_clearActivity0(env: JNIEnv, obj: JObject) -> Result<(), ()> {
|
||||
let client = get_client(&env, obj)?;
|
||||
|
||||
debug_and_discard_err(RUNTIME.block_on(async { client.clear_activity().await }))?;
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn jobject_to_activity(env: JNIEnv, jobject: JObject) -> Result<drpc::models::Activity, ()> {
|
||||
let j_state = env.get_field(jobject, "state", SIG_STRING).map_err(|_| ())?;
|
||||
let j_details = env.get_field(jobject, "details", SIG_STRING).map_err(|_| ())?;
|
||||
|
|
Loading…
Reference in New Issue