diff --git a/app/src/main/java/com/futo/platformplayer/activities/SyncHomeActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/SyncHomeActivity.kt index cde05c0d..2d9e51da 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/SyncHomeActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/SyncHomeActivity.kt @@ -12,8 +12,8 @@ import com.futo.platformplayer.R import com.futo.platformplayer.setNavigationBarColorAndIcons import com.futo.platformplayer.states.StateApp import com.futo.platformplayer.states.StateSync -import com.futo.platformplayer.sync.LinkType -import com.futo.platformplayer.sync.SyncSession +import com.futo.platformplayer.sync.internal.LinkType +import com.futo.platformplayer.sync.internal.SyncSession import com.futo.platformplayer.views.sync.SyncDeviceView import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/app/src/main/java/com/futo/platformplayer/activities/SyncPairActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/SyncPairActivity.kt index ca3ce443..acc49aa5 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/SyncPairActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/SyncPairActivity.kt @@ -3,7 +3,6 @@ package com.futo.platformplayer.activities import android.content.Context import android.os.Bundle import android.util.Base64 -import android.util.Log import android.view.View import android.widget.EditText import android.widget.ImageButton @@ -17,17 +16,12 @@ import com.futo.platformplayer.logging.Logger import com.futo.platformplayer.setNavigationBarColorAndIcons import com.futo.platformplayer.states.StateApp import com.futo.platformplayer.states.StateSync -import com.futo.platformplayer.sync.SyncDeviceInfo -import com.futo.platformplayer.sync.SyncSocketSession +import com.futo.platformplayer.sync.internal.SyncDeviceInfo import com.google.zxing.integration.android.IntentIntegrator import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.delay -import kotlinx.coroutines.isActive import kotlinx.coroutines.launch import kotlinx.coroutines.withContext import kotlinx.serialization.json.Json -import java.nio.ByteBuffer -import java.util.Random class SyncPairActivity : AppCompatActivity() { private lateinit var _editCode: EditText diff --git a/app/src/main/java/com/futo/platformplayer/activities/SyncShowPairingCodeActivity.kt b/app/src/main/java/com/futo/platformplayer/activities/SyncShowPairingCodeActivity.kt index 748d47e8..2fbb4b97 100644 --- a/app/src/main/java/com/futo/platformplayer/activities/SyncShowPairingCodeActivity.kt +++ b/app/src/main/java/com/futo/platformplayer/activities/SyncShowPairingCodeActivity.kt @@ -7,7 +7,6 @@ import android.graphics.Bitmap import android.graphics.Color import android.os.Bundle import android.util.Base64 -import android.util.Log import android.util.TypedValue import android.view.View import android.widget.ImageButton @@ -21,7 +20,7 @@ import com.futo.platformplayer.logging.Logger import com.futo.platformplayer.setNavigationBarColorAndIcons import com.futo.platformplayer.states.StateApp import com.futo.platformplayer.states.StateSync -import com.futo.platformplayer.sync.SyncDeviceInfo +import com.futo.platformplayer.sync.internal.SyncDeviceInfo import com.google.zxing.BarcodeFormat import com.google.zxing.MultiFormatWriter import com.google.zxing.common.BitMatrix diff --git a/app/src/main/java/com/futo/platformplayer/states/StateSync.kt b/app/src/main/java/com/futo/platformplayer/states/StateSync.kt index 82c67ab2..9b805aad 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StateSync.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StateSync.kt @@ -20,10 +20,10 @@ import com.futo.platformplayer.stores.FragmentedStorage import com.futo.platformplayer.stores.StringStringMapStorage import com.futo.platformplayer.stores.StringArrayStorage import com.futo.platformplayer.stores.StringStorage -import com.futo.platformplayer.sync.SyncDeviceInfo -import com.futo.platformplayer.sync.SyncKeyPair -import com.futo.platformplayer.sync.SyncSession -import com.futo.platformplayer.sync.SyncSocketSession +import com.futo.platformplayer.sync.internal.SyncDeviceInfo +import com.futo.platformplayer.sync.internal.SyncKeyPair +import com.futo.platformplayer.sync.internal.SyncSession +import com.futo.platformplayer.sync.internal.SyncSocketSession import com.futo.polycentric.core.base64ToByteArray import com.futo.polycentric.core.toBase64 import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/com/futo/platformplayer/sync/LinkType.java b/app/src/main/java/com/futo/platformplayer/sync/internal/LinkType.java similarity index 55% rename from app/src/main/java/com/futo/platformplayer/sync/LinkType.java rename to app/src/main/java/com/futo/platformplayer/sync/internal/LinkType.java index a0ae426e..a3fe431c 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/LinkType.java +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/LinkType.java @@ -1,4 +1,4 @@ -package com.futo.platformplayer.sync; +package com.futo.platformplayer.sync.internal; public enum LinkType { None, diff --git a/app/src/main/java/com/futo/platformplayer/sync/SyncDeviceInfo.kt b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncDeviceInfo.kt similarity index 87% rename from app/src/main/java/com/futo/platformplayer/sync/SyncDeviceInfo.kt rename to app/src/main/java/com/futo/platformplayer/sync/internal/SyncDeviceInfo.kt index 8164cefb..17a70860 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/SyncDeviceInfo.kt +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncDeviceInfo.kt @@ -1,4 +1,4 @@ -package com.futo.platformplayer.sync +package com.futo.platformplayer.sync.internal @kotlinx.serialization.Serializable class SyncDeviceInfo { diff --git a/app/src/main/java/com/futo/platformplayer/sync/SyncKeyPair.kt b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncKeyPair.kt similarity index 87% rename from app/src/main/java/com/futo/platformplayer/sync/SyncKeyPair.kt rename to app/src/main/java/com/futo/platformplayer/sync/internal/SyncKeyPair.kt index c4126683..c5115cf8 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/SyncKeyPair.kt +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncKeyPair.kt @@ -1,4 +1,4 @@ -package com.futo.platformplayer.sync +package com.futo.platformplayer.sync.internal @kotlinx.serialization.Serializable class SyncKeyPair { diff --git a/app/src/main/java/com/futo/platformplayer/sync/SyncSession.kt b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt similarity index 78% rename from app/src/main/java/com/futo/platformplayer/sync/SyncSession.kt rename to app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt index 95c96b9a..7f52b564 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/SyncSession.kt +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt @@ -1,7 +1,13 @@ -package com.futo.platformplayer.sync +package com.futo.platformplayer.sync.internal +import com.futo.platformplayer.UIDialogs +import com.futo.platformplayer.activities.MainActivity import com.futo.platformplayer.logging.Logger -import com.futo.platformplayer.sync.SyncSocketSession.Opcode +import com.futo.platformplayer.states.StateApp +import com.futo.platformplayer.states.StatePlayer +import com.futo.platformplayer.sync.internal.SyncSocketSession.Opcode +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch import java.nio.ByteBuffer interface IAuthorizable { @@ -110,6 +116,19 @@ class SyncSession : IAuthorizable { } Logger.i(TAG, "Received ${opcode} (${data.remaining()} bytes)") + //TODO: Abstract this out + when(opcode) { + GJSyncOpcodes.sendToDevices -> { + StateApp.instance.scopeOrNull?.launch(Dispatchers.Main) { + val context = StateApp.instance.contextOrNull; + if(context != null && context is MainActivity) { + val url = String(data.array(), Charsets.UTF_8); + UIDialogs.appToast("Received url from device [${socketSession.remotePublicKey}]:\n{$url}"); + context.handleUrl(url); + } + }; + } + } } private companion object { diff --git a/app/src/main/java/com/futo/platformplayer/sync/SyncSocketSession.kt b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSocketSession.kt similarity index 99% rename from app/src/main/java/com/futo/platformplayer/sync/SyncSocketSession.kt rename to app/src/main/java/com/futo/platformplayer/sync/internal/SyncSocketSession.kt index f6b0507b..b7b5ab79 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/SyncSocketSession.kt +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSocketSession.kt @@ -1,4 +1,4 @@ -package com.futo.platformplayer.sync +package com.futo.platformplayer.sync.internal import com.futo.platformplayer.LittleEndianDataInputStream import com.futo.platformplayer.LittleEndianDataOutputStream @@ -95,7 +95,7 @@ class SyncSocketSession { try { val messageSize = _inputStream.readInt() if (messageSize > MAXIMUM_PACKET_SIZE_ENCRYPTED) { - throw Exception("Message size (${messageSize}) cannot exceed MAXIMUM_PACKET_SIZE (${MAXIMUM_PACKET_SIZE_ENCRYPTED})") + throw Exception("Message size (${messageSize}) cannot exceed MAXIMUM_PACKET_SIZE ($MAXIMUM_PACKET_SIZE_ENCRYPTED)") } //Logger.i(TAG, "Receiving message (size = ${messageSize})") diff --git a/app/src/main/java/com/futo/platformplayer/sync/SyncStream.kt b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncStream.kt similarity index 96% rename from app/src/main/java/com/futo/platformplayer/sync/SyncStream.kt rename to app/src/main/java/com/futo/platformplayer/sync/internal/SyncStream.kt index 339616e8..5a60e295 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/SyncStream.kt +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncStream.kt @@ -1,4 +1,4 @@ -package com.futo.platformplayer.sync +package com.futo.platformplayer.sync.internal class SyncStream(expectedSize: Int, val opcode: UByte) { companion object { diff --git a/app/src/main/java/com/futo/platformplayer/views/sync/SyncDeviceView.kt b/app/src/main/java/com/futo/platformplayer/views/sync/SyncDeviceView.kt index e0133c1b..6bdcd3ed 100644 --- a/app/src/main/java/com/futo/platformplayer/views/sync/SyncDeviceView.kt +++ b/app/src/main/java/com/futo/platformplayer/views/sync/SyncDeviceView.kt @@ -9,7 +9,7 @@ import android.widget.TextView import androidx.constraintlayout.widget.ConstraintLayout import com.futo.platformplayer.R import com.futo.platformplayer.constructs.Event0 -import com.futo.platformplayer.sync.LinkType +import com.futo.platformplayer.sync.internal.LinkType class SyncDeviceView : ConstraintLayout { val _imageLinkType: ImageView diff --git a/app/src/test/java/com/futo/platformplayer/NoiseProtocolTests.kt b/app/src/test/java/com/futo/platformplayer/NoiseProtocolTests.kt index cf6e9290..1597fd64 100644 --- a/app/src/test/java/com/futo/platformplayer/NoiseProtocolTests.kt +++ b/app/src/test/java/com/futo/platformplayer/NoiseProtocolTests.kt @@ -8,9 +8,9 @@ import com.futo.platformplayer.noise.protocol.CipherStatePair import com.futo.platformplayer.noise.protocol.HandshakeState import com.futo.platformplayer.noise.protocol.Noise import com.futo.platformplayer.states.StateSync -import com.futo.platformplayer.sync.IAuthorizable -import com.futo.platformplayer.sync.SyncSocketSession -import com.futo.platformplayer.sync.SyncStream +import com.futo.platformplayer.sync.internal.IAuthorizable +import com.futo.platformplayer.sync.internal.SyncSocketSession +import com.futo.platformplayer.sync.internal.SyncStream import junit.framework.TestCase.assertEquals import org.junit.Assert.assertArrayEquals import org.junit.Test @@ -24,7 +24,6 @@ import java.util.Base64 import java.util.Random import java.util.concurrent.CountDownLatch import java.util.concurrent.TimeUnit -import kotlin.math.exp class NoiseProtocolTest {