From 4a3bc15b517b9b3cf1ad2783444418deeacd1608 Mon Sep 17 00:00:00 2001 From: Jop Schaap <59020232+JopSchaap@users.noreply.github.com> Date: Wed, 6 Mar 2024 13:42:15 +0100 Subject: [PATCH] Add a vote tracker to the app that can be used as a basis for maintaining votes. (#23) --- .../tudelft/trustchain/foc/MainActivityFOC.kt | 6 ++++- .../trustchain/foc/community/FOCVote.kt | 19 +++++++++++++++ .../foc/community/FOCVoteTracker.kt | 23 +++++++++++++++++++ 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/community/FOCVote.kt create mode 100644 freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/community/FOCVoteTracker.kt diff --git a/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/MainActivityFOC.kt b/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/MainActivityFOC.kt index deb656f72..680b434e1 100644 --- a/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/MainActivityFOC.kt +++ b/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/MainActivityFOC.kt @@ -35,6 +35,7 @@ import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import nl.tudelft.ipv8.android.IPv8Android import nl.tudelft.trustchain.foc.community.FOCCommunity +import nl.tudelft.trustchain.foc.community.FOCVoteTracker import nl.tudelft.trustchain.foc.databinding.ActivityMainFocBinding import nl.tudelft.trustchain.foc.util.ExtensionUtils.Companion.APK_DOT_EXTENSION import nl.tudelft.trustchain.foc.util.ExtensionUtils.Companion.TORRENT_DOT_EXTENSION @@ -63,7 +64,7 @@ open class MainActivityFOC : AppCompatActivity() { private var bufferSize = 1024 * 5 private val s = SessionManager() private var torrentAmount = 0 - + private val voteTracker: FOCVoteTracker = FOCVoteTracker() private var appGossiper: AppGossiper? = null override fun onCreate(savedInstanceState: Bundle?) { @@ -106,6 +107,8 @@ open class MainActivityFOC : AppCompatActivity() { } catch (e: Exception) { printToast(e.toString()) } + + voteTracker.loadState() } // TODO: Remove hacky fix. @@ -155,6 +158,7 @@ open class MainActivityFOC : AppCompatActivity() { override fun onPause() { super.onPause() appGossiper?.pause() + voteTracker.storeState() } private fun showAllFiles() { diff --git a/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/community/FOCVote.kt b/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/community/FOCVote.kt new file mode 100644 index 000000000..c71abca29 --- /dev/null +++ b/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/community/FOCVote.kt @@ -0,0 +1,19 @@ +package nl.tudelft.trustchain.foc.community + +import nl.tudelft.ipv8.messaging.Deserializable + +data class FOCVote(val memberId: String) : nl.tudelft.ipv8.messaging.Serializable { + override fun serialize(): ByteArray { + return memberId.toByteArray() + } + + companion object Deserializer : Deserializable { + override fun deserialize( + buffer: ByteArray, + offset: Int + ): Pair { + val toReturn = buffer.toString(Charsets.UTF_8) + return Pair(FOCMessage(toReturn), buffer.size) + } + } +} diff --git a/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/community/FOCVoteTracker.kt b/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/community/FOCVoteTracker.kt new file mode 100644 index 000000000..35a1a0ee7 --- /dev/null +++ b/freedomOfComputing/src/main/java/nl/tudelft/trustchain/foc/community/FOCVoteTracker.kt @@ -0,0 +1,23 @@ +package nl.tudelft.trustchain.foc.community + +import android.util.Log + +class FOCVoteTracker { + // Stores the votes for all apks + private val voteMap: MutableMap> = mutableMapOf() + get() = field + + /** + * Gets called on pause (or shutdown) of the app to persist state + */ + fun storeState() { + Log.w("vote-tracker", "storestate") + } + + /** + * Gets called on start up to load the state from disk + */ + fun loadState() { + Log.w("vote-tracker", "load state") + } +}