Minor refactor, handle simple sendToDevice packet

This commit is contained in:
Kelvin 2024-09-26 23:26:52 +02:00
parent 12ac4d6b6f
commit c4061cc6ac
12 changed files with 39 additions and 28 deletions

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -1,4 +1,4 @@
package com.futo.platformplayer.sync;
package com.futo.platformplayer.sync.internal;
public enum LinkType {
None,

View file

@ -1,4 +1,4 @@
package com.futo.platformplayer.sync
package com.futo.platformplayer.sync.internal
@kotlinx.serialization.Serializable
class SyncDeviceInfo {

View file

@ -1,4 +1,4 @@
package com.futo.platformplayer.sync
package com.futo.platformplayer.sync.internal
@kotlinx.serialization.Serializable
class SyncKeyPair {

View file

@ -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 {

View file

@ -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})")

View file

@ -1,4 +1,4 @@
package com.futo.platformplayer.sync
package com.futo.platformplayer.sync.internal
class SyncStream(expectedSize: Int, val opcode: UByte) {
companion object {

View file

@ -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

View file

@ -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 {