diff --git a/app/src/main/java/ani/dantotsu/connections/discord/Discord.kt b/app/src/main/java/ani/dantotsu/connections/discord/Discord.kt
index 44865b88..6d5e3fb1 100644
--- a/app/src/main/java/ani/dantotsu/connections/discord/Discord.kt
+++ b/app/src/main/java/ani/dantotsu/connections/discord/Discord.kt
@@ -61,16 +61,6 @@ object Discord {
}
private var rpc : RPC? = null
- /*suspend fun getUserData() = tryWithSuspend(true) {
- if(rpc==null) {
- val rpc = RPC(token!!, Dispatchers.IO).also { rpc = it }
- val user: User = rpc.getUserData()
- userid = user.username
- avatar = user.userAvatar()
- rpc.close()
- true
- } else true
- } ?: false*/
fun warning(context: Context) = CustomBottomDialog().apply {
diff --git a/app/src/main/java/ani/dantotsu/connections/discord/RPC.kt b/app/src/main/java/ani/dantotsu/connections/discord/RPC.kt
index 800276d4..6961282e 100644
--- a/app/src/main/java/ani/dantotsu/connections/discord/RPC.kt
+++ b/app/src/main/java/ani/dantotsu/connections/discord/RPC.kt
@@ -41,201 +41,6 @@ open class RPC(val token: String, val coroutineContext: CoroutineContext) {
}
data class Link(val label: String, val url: String)
-/*
- private val client = OkHttpClient.Builder()
- .connectTimeout(10, SECONDS)
- .readTimeout(10, SECONDS)
- .writeTimeout(10, SECONDS)
- .build()
-
- private val request = Request.Builder()
- .url("wss://gateway.discord.gg/?encoding=json&v=10")
- .build()
-
- private var webSocket = client.newWebSocket(request, Listener())
-
- var applicationId: String? = null
- var type: Type? = null
- var activityName: String? = null
- var details: String? = null
- var state: String? = null
- var largeImage: Link? = null
- var smallImage: Link? = null
- var status: String? = null
- var startTimestamp: Long? = null
- var stopTimestamp: Long? = null
-
- var buttons = mutableListOf()
-
-
- private suspend fun createPresence(): String {
- val j = json.encodeToString(Presence.Response(
- 3,
- Presence(
- activities = listOf(
- Activity(
- name = activityName,
- state = state,
- details = details,
- type = type?.ordinal,
- timestamps = if (startTimestamp != null)
- Activity.Timestamps(startTimestamp, stopTimestamp)
- else null,
- assets = Activity.Assets(
- largeImage = largeImage?.url?.discordUrl(),
- largeText = largeImage?.label,
- smallImage = smallImage?.url?.discordUrl(),
- smallText = smallImage?.label
- ),
- buttons = buttons.map { it.label },
- metadata = Activity.Metadata(
- buttonUrls = buttons.map { it.url }
- ),
- applicationId = applicationId,
- )
- ),
- afk = true,
- since = startTimestamp,
- status = status
- )
- ))
- logger("Presence: $j")
- return j
- }
-
-
-
-
- private fun sendIdentify() {
- val response = Identity.Response(
- op = 2,
- d = Identity(
- token = token,
- properties = Identity.Properties(
- os = "windows",
- browser = "Chrome",
- device = "disco"
- ),
- compress = false,
- intents = 0
- )
- )
- webSocket.send(json.encodeToString(response))
- }
-
- fun send(block: RPC.() -> Unit) {
- block.invoke(this)
- send()
- }
-
- var started = false
- var whenStarted: ((User) -> Unit)? = null
-
- fun send() {
- val send = {
- CoroutineScope(coroutineContext).launch {
- webSocket.send(createPresence())
- }
- }
- if (!started) whenStarted = {
- snackString("Discord message sent")
- send.invoke()
- whenStarted = null
- }
- else send.invoke()
- }
-
- fun close() {
- webSocket.send(
- json.encodeToString(
- Presence.Response(
- 3,
- Presence(status = "offline")
- )
- )
- )
- webSocket.close(4000, "Interrupt")
- }
-
- //I kinda hate this
- suspend fun getUserData(): User = suspendCancellableCoroutine { continuation ->
- whenStarted = {
- continuation.resume(it, onCancellation = null)
- whenStarted = null
- }
- continuation.invokeOnCancellation {
- whenStarted = null
- }
- }
-
- var onReceiveUserData: ((User) -> Deferred)? = null
-
- inner class Listener : WebSocketListener() {
- private var seq: Int? = null
- private var heartbeatInterval: Long? = null
-
- var scope = CoroutineScope(coroutineContext)
-
- private fun sendHeartBeat() {
- scope.cancel()
- scope = CoroutineScope(coroutineContext)
- scope.launch {
- delay(heartbeatInterval!!)
- webSocket.send("{\"op\":1, \"d\":$seq}")
- }
- }
-
- override fun onMessage(webSocket: WebSocket, text: String) {
-
- val map = json.decodeFromString(text)
- seq = map.s
- when (map.op) {
- 10 -> {
- map.d as JsonObject
- heartbeatInterval = map.d["heartbeat_interval"]!!.jsonPrimitive.long
- sendHeartBeat()
- sendIdentify()
- snackString(map.t)
- }
-
- 0 -> if (map.t == "READY") {
- val user = json.decodeFromString(text).d.user
- snackString(map.t)
- started = true
- whenStarted?.invoke(user)
- }
-
- 1 -> {
- if (scope.isActive) scope.cancel()
- webSocket.send("{\"op\":1, \"d\":$seq}")
- snackString(map.t)
- }
-
- 11 -> sendHeartBeat()
- 7 -> webSocket.close(400, "Reconnect")
- 9 -> {
- sendHeartBeat()
- sendIdentify()
- snackString(map.t)
- }
- }
- }
-
- override fun onClosed(webSocket: WebSocket, code: Int, reason: String) {
- println("Server Closed : $code $reason")
- if (code == 4000) {
- scope.cancel()
- }
- }
-
- override fun onFailure(webSocket: WebSocket, t: Throwable, response: Response?) {
- println("Failure : ${t.message}")
- if (t.message != "Interrupt") {
- this@RPC.webSocket = client.newWebSocket(request, Listener())
- }
- }
- }
-*/
companion object {
data class RPCData(