From dbd0da17ace5cfc3ed28ca13369db438da07ed0a Mon Sep 17 00:00:00 2001 From: Florent CHAMPIGNY Date: Thu, 16 Oct 2025 22:56:47 +0200 Subject: [PATCH] refact: [ANDROID] classes visibility (#358) Co-authored-by: Florent Champigny --- .../database/InitializeDatabases.kt | 1 + .../io/github/openflocon/flocon/FloconApp.kt | 4 +-- .../flocon/model/FloconMessageFromServer.kt | 7 ----- .../analytics/FloconAnalyticsPlugin.kt | 3 +-- .../dashboard/FloconDashboardPlugin.kt | 3 +-- .../plugins/database/FloconDatabasePlugin.kt | 5 +--- .../deeplinks/FloconDeeplinksPlugin.kt | 3 +-- .../plugins/device/FloconDevicePlugin.kt | 4 +-- .../flocon/plugins/files/FloconFilesPlugin.kt | 4 +-- .../plugins/network/FloconNetworkPlugin.kt | 3 +-- .../sharedprefs/FloconSharedPrefsPlugin.kt | 6 ++--- .../plugins/tables/FloconTablesPlugin.kt | 3 +-- .../flocon/client/FloconClientImpl.kt | 19 +++++--------- .../flocon/core/FloconFileSender.kt | 2 +- .../flocon/core/FloconMessageSender.kt | 5 ++-- .../openflocon/flocon/core/FloconPlugin.kt | 10 +++---- .../openflocon/flocon/model/FloconFileInfo.kt | 2 +- .../flocon/model/FloconMessageFromServer.kt | 8 +++++- .../analytics/FloconAnalyticsPlugin.kt | 6 ++--- .../dashboard/FloconDashboardPlugin.kt | 6 ++--- .../plugins/database/FloconDatabasePlugin.kt | 6 ++--- .../deeplinks/FloconDeeplinksPlugin.kt | 6 ++--- .../plugins/device/FloconDevicePluginImpl.kt | 6 ++--- .../flocon/plugins/files/FloconFilesPlugin.kt | 10 +++---- .../network/FloconNetworkPluginImpl.kt | 6 ++--- .../sharedprefs/FloconSharedPrefsPlugin.kt | 26 +++++-------------- .../plugins/tables/FloconTablesPlugin.kt | 6 ++--- .../flocon/websocket/FloconHttpClient.kt | 2 +- .../flocon/websocket/FloconHttpClientImpl.kt | 2 +- 29 files changed, 65 insertions(+), 109 deletions(-) delete mode 100644 FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/model/FloconMessageFromServer.kt rename FloconAndroid/{flocon-base => flocon}/src/main/java/io/github/openflocon/flocon/core/FloconFileSender.kt (81%) rename FloconAndroid/{flocon-base => flocon}/src/main/java/io/github/openflocon/flocon/core/FloconMessageSender.kt (75%) rename FloconAndroid/{flocon-base => flocon}/src/main/java/io/github/openflocon/flocon/core/FloconPlugin.kt (58%) rename FloconAndroid/{flocon-base => flocon}/src/main/java/io/github/openflocon/flocon/model/FloconFileInfo.kt (71%) diff --git a/FloconAndroid/app/src/main/java/io/github/openflocon/flocon/myapplication/database/InitializeDatabases.kt b/FloconAndroid/app/src/main/java/io/github/openflocon/flocon/myapplication/database/InitializeDatabases.kt index 7dfe2f5c..58eb0f2f 100644 --- a/FloconAndroid/app/src/main/java/io/github/openflocon/flocon/myapplication/database/InitializeDatabases.kt +++ b/FloconAndroid/app/src/main/java/io/github/openflocon/flocon/myapplication/database/InitializeDatabases.kt @@ -11,6 +11,7 @@ import kotlinx.coroutines.launch fun initializeDatabases(context: Context) { val dogDatabase = DogDatabase.getDatabase(context) val foodDatabase = FoodDatabase.getDatabase(context) + GlobalScope.launch { dogDatabase.dogDao().insertDog( DogEntity( diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/FloconApp.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/FloconApp.kt index de9855ea..6a0e0493 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/FloconApp.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/FloconApp.kt @@ -1,14 +1,12 @@ package io.github.openflocon.flocon import android.content.Context -import io.github.openflocon.flocon.core.FloconMessageSender import io.github.openflocon.flocon.plugins.analytics.FloconAnalyticsPlugin import io.github.openflocon.flocon.plugins.dashboard.FloconDashboardPlugin import io.github.openflocon.flocon.plugins.deeplinks.FloconDeeplinksPlugin import io.github.openflocon.flocon.plugins.device.FloconDevicePlugin import io.github.openflocon.flocon.plugins.network.FloconNetworkPlugin import io.github.openflocon.flocon.plugins.tables.FloconTablePlugin -import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.StateFlow abstract class FloconApp { @@ -18,7 +16,7 @@ abstract class FloconApp { private set } - interface Client : FloconMessageSender { + interface Client { @Throws(Throwable::class) suspend fun connect(onClosed: () -> Unit) diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/model/FloconMessageFromServer.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/model/FloconMessageFromServer.kt deleted file mode 100644 index 3cd9651c..00000000 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/model/FloconMessageFromServer.kt +++ /dev/null @@ -1,7 +0,0 @@ -package io.github.openflocon.flocon.model - -data class FloconMessageFromServer( - val plugin: String, - val method: String, - val body: String, -) \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/analytics/FloconAnalyticsPlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/analytics/FloconAnalyticsPlugin.kt index e663c09c..12967c81 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/analytics/FloconAnalyticsPlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/analytics/FloconAnalyticsPlugin.kt @@ -1,7 +1,6 @@ package io.github.openflocon.flocon.plugins.analytics import io.github.openflocon.flocon.FloconApp -import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.plugins.analytics.builder.AnalyticsBuilder import io.github.openflocon.flocon.plugins.analytics.model.AnalyticsItem @@ -12,6 +11,6 @@ fun FloconApp.analytics(analyticsName: String): AnalyticsBuilder { ) } -interface FloconAnalyticsPlugin : FloconPlugin { +interface FloconAnalyticsPlugin { fun registerAnalytics(analyticsItems: List) } \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/dashboard/FloconDashboardPlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/dashboard/FloconDashboardPlugin.kt index e533db15..811b282b 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/dashboard/FloconDashboardPlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/dashboard/FloconDashboardPlugin.kt @@ -1,7 +1,6 @@ package io.github.openflocon.flocon.plugins.dashboard import io.github.openflocon.flocon.FloconApp -import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.plugins.dashboard.builder.DashboardBuilder import io.github.openflocon.flocon.plugins.dashboard.dsl.dashboardConfig import io.github.openflocon.flocon.plugins.dashboard.model.DashboardConfig @@ -15,6 +14,6 @@ fun FloconApp.dashboard(id: String, block: DashboardBuilder.() -> Unit) { } } -interface FloconDashboardPlugin : FloconPlugin { +interface FloconDashboardPlugin { fun registerDashboard(dashboardConfig: DashboardConfig) } \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/database/FloconDatabasePlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/database/FloconDatabasePlugin.kt index ce9c64f0..cba4fadc 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/database/FloconDatabasePlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/database/FloconDatabasePlugin.kt @@ -1,6 +1,3 @@ package io.github.openflocon.flocon.plugins.database -import io.github.openflocon.flocon.core.FloconPlugin - - -interface FloconDatabasePlugin : FloconPlugin \ No newline at end of file +interface FloconDatabasePlugin \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/deeplinks/FloconDeeplinksPlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/deeplinks/FloconDeeplinksPlugin.kt index ef3b2302..60d61a80 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/deeplinks/FloconDeeplinksPlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/deeplinks/FloconDeeplinksPlugin.kt @@ -1,7 +1,6 @@ package io.github.openflocon.flocon.plugins.deeplinks import io.github.openflocon.flocon.FloconApp -import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.plugins.deeplinks.model.DeeplinkModel class ParameterBuilder { @@ -46,6 +45,6 @@ fun FloconApp.deeplinks(deeplinksBlock: DeeplinkBuilder.() -> Unit) { } } -interface FloconDeeplinksPlugin : FloconPlugin { +interface FloconDeeplinksPlugin { fun registerDeeplinks(deeplinks: List) } \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/device/FloconDevicePlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/device/FloconDevicePlugin.kt index 080b285f..37beaf2a 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/device/FloconDevicePlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/device/FloconDevicePlugin.kt @@ -1,7 +1,5 @@ package io.github.openflocon.flocon.plugins.device -import io.github.openflocon.flocon.core.FloconPlugin - -interface FloconDevicePlugin : FloconPlugin { +interface FloconDevicePlugin { fun registerWithSerial(serial: String) } \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/files/FloconFilesPlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/files/FloconFilesPlugin.kt index 348ebc6d..34f3cf44 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/files/FloconFilesPlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/files/FloconFilesPlugin.kt @@ -1,5 +1,3 @@ package io.github.openflocon.flocon.plugins.files -import io.github.openflocon.flocon.core.FloconPlugin - -interface FloconFilesPlugin : FloconPlugin \ No newline at end of file +interface FloconFilesPlugin \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPlugin.kt index 8f64548d..76daf51f 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPlugin.kt @@ -1,7 +1,6 @@ package io.github.openflocon.flocon.plugins.network import io.github.openflocon.flocon.FloconApp -import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.plugins.network.model.BadQualityConfig import io.github.openflocon.flocon.plugins.network.model.FloconNetworkCallRequest import io.github.openflocon.flocon.plugins.network.model.FloconNetworkCallResponse @@ -13,7 +12,7 @@ fun floconLogWebSocketEvent(event: FloconWebSocketEvent) { FloconApp.instance?.client?.networkPlugin?.logWebSocket(event) } -interface FloconNetworkPlugin : FloconPlugin { +interface FloconNetworkPlugin { val mocks: Collection val badQualityConfig: BadQualityConfig? diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/sharedprefs/FloconSharedPrefsPlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/sharedprefs/FloconSharedPrefsPlugin.kt index b251c9c2..3d8b92c4 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/sharedprefs/FloconSharedPrefsPlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/sharedprefs/FloconSharedPrefsPlugin.kt @@ -1,5 +1,3 @@ -package io.github.openflocon.flocon.plugins.SharedPreferences +package io.github.openflocon.flocon.plugins.sharedprefs -import io.github.openflocon.flocon.core.FloconPlugin - -interface FloconSharedPreferencesPlugin : FloconPlugin \ No newline at end of file +interface FloconSharedPreferencesPlugin \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/tables/FloconTablesPlugin.kt b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/tables/FloconTablesPlugin.kt index 2b3d05c1..cd839f87 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/tables/FloconTablesPlugin.kt +++ b/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/plugins/tables/FloconTablesPlugin.kt @@ -1,7 +1,6 @@ package io.github.openflocon.flocon.plugins.tables import io.github.openflocon.flocon.FloconApp -import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.plugins.tables.builder.TableBuilder import io.github.openflocon.flocon.plugins.tables.model.TableItem @@ -12,6 +11,6 @@ fun FloconApp.table(tableName: String): TableBuilder { ) } -interface FloconTablePlugin : FloconPlugin { +interface FloconTablePlugin { fun registerTable(tableItem: TableItem) } \ No newline at end of file diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/client/FloconClientImpl.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/client/FloconClientImpl.kt index 07b09fa6..c328cb9b 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/client/FloconClientImpl.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/client/FloconClientImpl.kt @@ -8,6 +8,7 @@ import android.widget.Toast import io.github.openflocon.flocon.FloconApp import io.github.openflocon.flocon.Protocol import io.github.openflocon.flocon.core.FloconFileSender +import io.github.openflocon.flocon.core.FloconMessageSender import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.model.FloconFileInfo import io.github.openflocon.flocon.model.floconMessageFromServerFromJson @@ -35,7 +36,7 @@ import java.io.File internal class FloconClientImpl( private val appContext: Context, -) : FloconApp.Client, FloconFileSender { +) : FloconApp.Client, FloconMessageSender, FloconFileSender { private val FLOCON_WEBSOCKET_PORT = 9023 private val FLOCON_HTTP_PORT = 9024 @@ -63,9 +64,9 @@ internal class FloconClientImpl( private val coroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob()) // region plugins - private val databasePlugin = FloconDatabasePluginImpl(context = appContext) - private val filesPlugin = FloconFilesPluginImpl(context = appContext, floconFileSender = this) - private val sharedPrefsPlugin = FloconSharedPreferencesPluginImpl(context = appContext) + private val databasePlugin = FloconDatabasePluginImpl(context = appContext, sender = this) + private val filesPlugin = FloconFilesPluginImpl(context = appContext, sender = this, floconFileSender = this) + private val sharedPrefsPlugin = FloconSharedPreferencesPluginImpl(context = appContext, sender = this) override val dashboardPlugin = FloconDashboardPluginImpl(sender = this) override val tablePlugin = FloconTablePluginImpl(sender = this) override val deeplinksPlugin = FloconDeeplinksPluginImpl(sender = this) @@ -100,7 +101,7 @@ internal class FloconClientImpl( onClosed = onClosed, ) allPlugins.forEach { - it.onConnectedToServer(sender = this) + it.onConnectedToServer() } } @@ -115,56 +116,48 @@ internal class FloconClientImpl( Protocol.ToDevice.Database.Plugin -> { databasePlugin.onMessageReceived( messageFromServer = messageFromServer, - sender = this@FloconClientImpl, ) } Protocol.ToDevice.Files.Plugin -> { filesPlugin.onMessageReceived( messageFromServer = messageFromServer, - sender = this@FloconClientImpl, ) } Protocol.ToDevice.SharedPreferences.Plugin -> { sharedPrefsPlugin.onMessageReceived( messageFromServer = messageFromServer, - sender = this@FloconClientImpl, ) } Protocol.ToDevice.Device.Plugin -> { devicePlugin.onMessageReceived( messageFromServer = messageFromServer, - sender = this@FloconClientImpl, ) } Protocol.ToDevice.Dashboard.Plugin -> { dashboardPlugin.onMessageReceived( messageFromServer = messageFromServer, - sender = this@FloconClientImpl, ) } Protocol.ToDevice.Table.Plugin -> { tablePlugin.onMessageReceived( messageFromServer = messageFromServer, - sender = this@FloconClientImpl, ) } Protocol.ToDevice.Analytics.Plugin -> { analyticsPlugin.onMessageReceived( messageFromServer = messageFromServer, - sender = this@FloconClientImpl, ) } Protocol.ToDevice.Network.Plugin -> { networkPlugin.onMessageReceived( messageFromServer = messageFromServer, - sender = this@FloconClientImpl, ) } } diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/core/FloconFileSender.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/core/FloconFileSender.kt similarity index 81% rename from FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/core/FloconFileSender.kt rename to FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/core/FloconFileSender.kt index ea93924d..d219c8a3 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/core/FloconFileSender.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/core/FloconFileSender.kt @@ -3,6 +3,6 @@ package io.github.openflocon.flocon.core import io.github.openflocon.flocon.model.FloconFileInfo import java.io.File -interface FloconFileSender { +internal interface FloconFileSender { fun send(file: File, infos: FloconFileInfo) } \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/core/FloconMessageSender.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/core/FloconMessageSender.kt similarity index 75% rename from FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/core/FloconMessageSender.kt rename to FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/core/FloconMessageSender.kt index ce1c8d14..723802cb 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/core/FloconMessageSender.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/core/FloconMessageSender.kt @@ -1,10 +1,9 @@ package io.github.openflocon.flocon.core -interface FloconMessageSender { +internal interface FloconMessageSender { fun send( plugin: String, method: String, body: String, ) -} - +} \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/core/FloconPlugin.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/core/FloconPlugin.kt similarity index 58% rename from FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/core/FloconPlugin.kt rename to FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/core/FloconPlugin.kt index c8cc0a8e..dd50d5c1 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/core/FloconPlugin.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/core/FloconPlugin.kt @@ -2,13 +2,9 @@ package io.github.openflocon.flocon.core import io.github.openflocon.flocon.model.FloconMessageFromServer -interface FloconPlugin { +internal interface FloconPlugin { fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender, ) - fun onConnectedToServer( - sender: FloconMessageSender, - ) -} - + fun onConnectedToServer() +} \ No newline at end of file diff --git a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/model/FloconFileInfo.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/model/FloconFileInfo.kt similarity index 71% rename from FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/model/FloconFileInfo.kt rename to FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/model/FloconFileInfo.kt index 5bb32c69..1bd6f4eb 100644 --- a/FloconAndroid/flocon-base/src/main/java/io/github/openflocon/flocon/model/FloconFileInfo.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/model/FloconFileInfo.kt @@ -1,6 +1,6 @@ package io.github.openflocon.flocon.model -data class FloconFileInfo( +internal data class FloconFileInfo( val path: String, val requestId: String, ) \ No newline at end of file diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/model/FloconMessageFromServer.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/model/FloconMessageFromServer.kt index 9bc11ddb..ae4323d6 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/model/FloconMessageFromServer.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/model/FloconMessageFromServer.kt @@ -18,4 +18,10 @@ internal fun floconMessageFromServerFromJson( FloconLogger.logError("parsing issue", t) null } -} \ No newline at end of file +} + +internal data class FloconMessageFromServer( + val plugin: String, + val method: String, + val body: String, +) \ No newline at end of file diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/analytics/FloconAnalyticsPlugin.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/analytics/FloconAnalyticsPlugin.kt index 08a7e7bf..6b50f80e 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/analytics/FloconAnalyticsPlugin.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/analytics/FloconAnalyticsPlugin.kt @@ -3,22 +3,22 @@ package io.github.openflocon.flocon.plugins.analytics import io.github.openflocon.flocon.FloconLogger import io.github.openflocon.flocon.Protocol import io.github.openflocon.flocon.core.FloconMessageSender +import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.model.FloconMessageFromServer import io.github.openflocon.flocon.plugins.analytics.model.AnalyticsItem import io.github.openflocon.flocon.plugins.analytics.mapper.analyticsItemsToJson internal class FloconAnalyticsPluginImpl( private val sender: FloconMessageSender, -) : FloconAnalyticsPlugin { +) : FloconPlugin, FloconAnalyticsPlugin { override fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender, ) { // no op } - override fun onConnectedToServer(sender: FloconMessageSender) { + override fun onConnectedToServer() { // no op } diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/dashboard/FloconDashboardPlugin.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/dashboard/FloconDashboardPlugin.kt index 46516bff..bfe8e49c 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/dashboard/FloconDashboardPlugin.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/dashboard/FloconDashboardPlugin.kt @@ -3,6 +3,7 @@ package io.github.openflocon.flocon.plugins.dashboard import io.github.openflocon.flocon.FloconLogger import io.github.openflocon.flocon.Protocol import io.github.openflocon.flocon.core.FloconMessageSender +import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.model.FloconMessageFromServer import io.github.openflocon.flocon.plugins.dashboard.mapper.toJson import io.github.openflocon.flocon.plugins.dashboard.model.DashboardCallback @@ -14,14 +15,13 @@ import java.util.concurrent.ConcurrentHashMap internal class FloconDashboardPluginImpl( private val sender: FloconMessageSender, -) : FloconDashboardPlugin { +) : FloconPlugin, FloconDashboardPlugin { private val dashboards = ConcurrentHashMap() private val callbackMap: MutableMap = ConcurrentHashMap() override fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender, ) { when (messageFromServer.method) { Protocol.ToDevice.Dashboard.Method.OnClick -> { @@ -56,7 +56,7 @@ internal class FloconDashboardPluginImpl( } } - override fun onConnectedToServer(sender: FloconMessageSender) { + override fun onConnectedToServer() { // on connected, send known dashboards dashboards.values.takeIf { it.isNotEmpty() }?.forEach { dashboardConfig -> registerDashboard(dashboardConfig) diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/database/FloconDatabasePlugin.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/database/FloconDatabasePlugin.kt index fed4abc9..1e5ad07a 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/database/FloconDatabasePlugin.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/database/FloconDatabasePlugin.kt @@ -18,14 +18,14 @@ import java.io.File import java.util.Locale internal class FloconDatabasePluginImpl( + private var sender: FloconMessageSender, private val context: Context, -) : FloconDatabasePlugin { +) : FloconPlugin, FloconDatabasePlugin { private val MAX_DEPTH = 7 override fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender, ) { when (messageFromServer.method) { Protocol.ToDevice.Database.Method.GetDatabases -> { @@ -55,7 +55,7 @@ internal class FloconDatabasePluginImpl( } } - override fun onConnectedToServer(sender: FloconMessageSender) { + override fun onConnectedToServer() { sendAllDatabases(sender) } diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/deeplinks/FloconDeeplinksPlugin.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/deeplinks/FloconDeeplinksPlugin.kt index 8499974d..15dfd676 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/deeplinks/FloconDeeplinksPlugin.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/deeplinks/FloconDeeplinksPlugin.kt @@ -3,6 +3,7 @@ package io.github.openflocon.flocon.plugins.deeplinks import io.github.openflocon.flocon.FloconLogger import io.github.openflocon.flocon.Protocol import io.github.openflocon.flocon.core.FloconMessageSender +import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.model.FloconMessageFromServer import io.github.openflocon.flocon.plugins.deeplinks.model.DeeplinkModel import org.json.JSONArray @@ -10,18 +11,17 @@ import org.json.JSONObject internal class FloconDeeplinksPluginImpl( private val sender: FloconMessageSender, -) : FloconDeeplinksPlugin { +) : FloconPlugin, FloconDeeplinksPlugin { private val deeplinks = java.util.concurrent.atomic.AtomicReference?>(null) override fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender, ) { } - override fun onConnectedToServer(sender: FloconMessageSender) { + override fun onConnectedToServer() { // on connected, send known dashboard deeplinks.get()?.let { registerDeeplinks(it) diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/device/FloconDevicePluginImpl.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/device/FloconDevicePluginImpl.kt index 218a514b..fc6b9292 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/device/FloconDevicePluginImpl.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/device/FloconDevicePluginImpl.kt @@ -5,13 +5,14 @@ import com.jakewharton.processphoenix.ProcessPhoenix import io.github.openflocon.flocon.FloconLogger import io.github.openflocon.flocon.Protocol import io.github.openflocon.flocon.core.FloconMessageSender +import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.model.FloconMessageFromServer import io.github.openflocon.flocon.plugins.device.model.fromdevice.RegisterDeviceDataModel internal class FloconDevicePluginImpl( private var sender: FloconMessageSender, private val context: Context, -) : FloconDevicePlugin { +) : FloconPlugin, FloconDevicePlugin { override fun registerWithSerial(serial: String) { try { @@ -27,7 +28,6 @@ internal class FloconDevicePluginImpl( override fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender ) { when (messageFromServer.method) { Protocol.ToDevice.Device.Method.GetAppIcon -> { @@ -47,7 +47,7 @@ internal class FloconDevicePluginImpl( } } - override fun onConnectedToServer(sender: FloconMessageSender) { + override fun onConnectedToServer() { // no op } } \ No newline at end of file diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/files/FloconFilesPlugin.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/files/FloconFilesPlugin.kt index ef3eb0f6..8f8873bc 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/files/FloconFilesPlugin.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/files/FloconFilesPlugin.kt @@ -19,11 +19,11 @@ import java.io.File internal class FloconFilesPluginImpl( private val context: Context, private val floconFileSender: FloconFileSender, -) : FloconFilesPlugin { + private val sender: FloconMessageSender, +) : FloconPlugin, FloconFilesPlugin { override fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender, ) { when (messageFromServer.method) { Protocol.ToDevice.Files.Method.ListFiles -> { @@ -34,7 +34,6 @@ internal class FloconFilesPluginImpl( path = listFilesMessage.path, isConstantPath = listFilesMessage.isConstantPath, requestId = listFilesMessage.requestId, - sender = sender, ) } @@ -65,7 +64,6 @@ internal class FloconFilesPluginImpl( path = deleteFilesMessage.parentPath, isConstantPath = deleteFilesMessage.isConstantParentPath, requestId = deleteFilesMessage.requestId, - sender = sender, ) } @@ -85,7 +83,6 @@ internal class FloconFilesPluginImpl( path = deleteFolderContentMessage.path, isConstantPath = deleteFolderContentMessage.isConstantPath, requestId = deleteFolderContentMessage.requestId, - sender = sender, ) } } @@ -119,7 +116,6 @@ internal class FloconFilesPluginImpl( path: String, isConstantPath: Boolean, requestId: String, - sender: FloconMessageSender ) { val files = getFolderContent( path = path, @@ -140,7 +136,7 @@ internal class FloconFilesPluginImpl( } } - override fun onConnectedToServer(sender: FloconMessageSender) { + override fun onConnectedToServer() { // no op } diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPluginImpl.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPluginImpl.kt index d18cc03b..2c5e8fcd 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPluginImpl.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/network/FloconNetworkPluginImpl.kt @@ -4,6 +4,7 @@ import android.content.Context import io.github.openflocon.flocon.FloconLogger import io.github.openflocon.flocon.Protocol import io.github.openflocon.flocon.core.FloconMessageSender +import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.model.FloconMessageFromServer import io.github.openflocon.flocon.plugins.network.mapper.floconNetworkCallRequestToJson import io.github.openflocon.flocon.plugins.network.mapper.floconNetworkCallResponseToJson @@ -38,7 +39,7 @@ internal class FloconNetworkPluginImpl( private val context: Context, private var sender: FloconMessageSender, private val coroutineScope: CoroutineScope, -) : FloconNetworkPlugin { +) : FloconPlugin, FloconNetworkPlugin { private val websocketListeners = ConcurrentHashMap() @@ -93,7 +94,6 @@ internal class FloconNetworkPluginImpl( override fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender ) { when (messageFromServer.method) { Protocol.ToDevice.Network.Method.SetupMocks -> { @@ -118,7 +118,7 @@ internal class FloconNetworkPluginImpl( } } - override fun onConnectedToServer(sender: FloconMessageSender) { + override fun onConnectedToServer() { updateWebSocketIds() } diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/sharedprefs/FloconSharedPrefsPlugin.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/sharedprefs/FloconSharedPrefsPlugin.kt index 15491284..d526e874 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/sharedprefs/FloconSharedPrefsPlugin.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/sharedprefs/FloconSharedPrefsPlugin.kt @@ -6,8 +6,8 @@ import android.content.SharedPreferences.OnSharedPreferenceChangeListener import io.github.openflocon.flocon.FloconLogger import io.github.openflocon.flocon.Protocol import io.github.openflocon.flocon.core.FloconMessageSender +import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.model.FloconMessageFromServer -import io.github.openflocon.flocon.plugins.SharedPreferences.FloconSharedPreferencesPlugin import io.github.openflocon.flocon.plugins.sharedprefs.model.SharedPreferencesDescriptor import io.github.openflocon.flocon.plugins.sharedprefs.model.fromdevice.SharedPreferenceRowDataModel import io.github.openflocon.flocon.plugins.sharedprefs.model.fromdevice.SharedPreferenceValueResultDataModel @@ -21,9 +21,8 @@ import io.github.openflocon.flocon.plugins.sharedprefs.model.todevice.ToDeviceGe internal class FloconSharedPreferencesPluginImpl( private val context: Context, -) : FloconSharedPreferencesPlugin { - - private var sender: FloconMessageSender? = null + private var sender: FloconMessageSender, +) : FloconPlugin, FloconSharedPreferencesPlugin { private val mSharedPreferences: MutableMap = mutableMapOf() @@ -36,9 +35,6 @@ internal class FloconSharedPreferencesPluginImpl( sharedPreferences: SharedPreferences, key: String? ) { - if (sender == null) { - return - } val descriptor: SharedPreferencesDescriptor? = mSharedPreferencesDescriptors[sharedPreferences] if (descriptor == null) { @@ -59,14 +55,10 @@ internal class FloconSharedPreferencesPluginImpl( override fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender, ) { - this.sender = sender when (messageFromServer.method) { Protocol.ToDevice.SharedPreferences.Method.GetSharedPreferences -> { - sendAllSharedPrefs( - sender = sender, - ) + sendAllSharedPrefs() } Protocol.ToDevice.SharedPreferences.Method.GetSharedPreferenceValue -> { @@ -133,15 +125,11 @@ internal class FloconSharedPreferencesPluginImpl( } // on connected, send all shared prefs - override fun onConnectedToServer(sender: FloconMessageSender) { - sendAllSharedPrefs( - sender = sender, - ) + override fun onConnectedToServer() { + sendAllSharedPrefs() } - private fun sendAllSharedPrefs( - sender: FloconMessageSender, - ) { + private fun sendAllSharedPrefs() { val allPrefs = getAllSharedPreferences() try { sender.send( diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/tables/FloconTablesPlugin.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/tables/FloconTablesPlugin.kt index f7f6291b..e2d6a7ec 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/tables/FloconTablesPlugin.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/plugins/tables/FloconTablesPlugin.kt @@ -3,22 +3,22 @@ package io.github.openflocon.flocon.plugins.tables import io.github.openflocon.flocon.FloconLogger import io.github.openflocon.flocon.Protocol import io.github.openflocon.flocon.core.FloconMessageSender +import io.github.openflocon.flocon.core.FloconPlugin import io.github.openflocon.flocon.model.FloconMessageFromServer import io.github.openflocon.flocon.plugins.tables.model.TableItem import io.github.openflocon.flocon.plugins.tables.model.tableItemListToJson internal class FloconTablePluginImpl( private val sender: FloconMessageSender, -) : FloconTablePlugin { +) : FloconPlugin, FloconTablePlugin { override fun onMessageReceived( messageFromServer: FloconMessageFromServer, - sender: FloconMessageSender, ) { // no op } - override fun onConnectedToServer(sender: FloconMessageSender) { + override fun onConnectedToServer() { // no op } diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/websocket/FloconHttpClient.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/websocket/FloconHttpClient.kt index 92673e25..587c16c4 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/websocket/FloconHttpClient.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/websocket/FloconHttpClient.kt @@ -3,7 +3,7 @@ package io.github.openflocon.flocon.websocket import io.github.openflocon.flocon.model.FloconFileInfo import java.io.File -interface FloconHttpClient { +internal interface FloconHttpClient { suspend fun send( file: File, infos: FloconFileInfo, diff --git a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/websocket/FloconHttpClientImpl.kt b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/websocket/FloconHttpClientImpl.kt index cc4adabc..ecc32b52 100644 --- a/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/websocket/FloconHttpClientImpl.kt +++ b/FloconAndroid/flocon/src/main/java/io/github/openflocon/flocon/websocket/FloconHttpClientImpl.kt @@ -8,7 +8,7 @@ import okhttp3.Request import okhttp3.RequestBody.Companion.asRequestBody import java.io.File -class FloconHttpClientImpl : FloconHttpClient { +internal class FloconHttpClientImpl : FloconHttpClient { private val client by lazy { OkHttpClient()