Skip to content

Commit c04fe66

Browse files
committed
Add goset replication progressbar to frontend
1 parent 8ed4c58 commit c04fe66

6 files changed

Lines changed: 61 additions & 12 deletions

File tree

android/tinySSB/app/src/main/assets/web/tremola.html

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -252,16 +252,27 @@
252252

253253
<div id='connection-overlay' class='qr-overlay'>
254254
<div style='font-size:18px; padding-bottom: 10px;'><b>Replication Status</b></div>
255-
<div style="position: relative; margin-bottom: 10px;">
256-
<img src='img/fountain.png' alt="Icon" class="progress-icon">
257-
<progress id='connection-overlay-progressbar-gift' class='connection-overlay-progressbar' value="0" max="100"></progress>
258-
<div id='connection-overlay-progressbar-label-gift' class="connection-overlay-progressbar-label"></div>
255+
<div id='progress-container'>
256+
<div style="position: relative; margin-bottom: 10px;">
257+
<img src='img/fountain.png' alt="Icon" class="progress-icon">
258+
<progress id='connection-overlay-progressbar-gift' class='connection-overlay-progressbar' value="0" max="100"></progress>
259+
<div id='connection-overlay-progressbar-label-gift' class="connection-overlay-progressbar-label"></div>
260+
</div>
261+
<div style="position: relative; margin-bottom: 10px;">
262+
<img src='img/receive.png' alt="Icon" class="progress-icon">
263+
<progress id='connection-overlay-progressbar-want' class='connection-overlay-progressbar' value="0" max="100"></progress>
264+
<div id='connection-overlay-progressbar-label-want' class="connection-overlay-progressbar-label"></div>
265+
</div>
259266
</div>
260-
<div style="position: relative; margin-bottom: 10px;">
261-
<img src='img/receive.png' alt="Icon" class="progress-icon">
262-
<progress id='connection-overlay-progressbar-want' class='connection-overlay-progressbar' value="0" max="100"></progress>
263-
<div id='connection-overlay-progressbar-label-want' class="connection-overlay-progressbar-label"></div>
267+
268+
<div id='goset-progress-container' style="display: none;">
269+
<div style="position: relative; margin-bottom: 10px;">
270+
<img src='img/fountain.png' alt="Icon" class="progress-icon">
271+
<progress id='connection-overlay-progressbar-goset' class='connection-overlay-progressbar' value="0" max="100"></progress>
272+
<div id='connection-overlay-progressbar-label-goset' class="connection-overlay-progressbar-label"></div>
273+
</div>
264274
</div>
275+
265276
<div id='connection-overlay-hdr' style='font-size:18px; padding-bottom: 10px;'><b>Connected Devices</b></div>
266277
<div id='connection-overlay-content'></div>
267278
</div>

android/tinySSB/app/src/main/assets/web/tremola.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,8 @@ function save_content_alias() {
543543
var val = document.getElementById('old_contact_alias').value;
544544
var deleteAlias = false
545545

546+
val.trim()
547+
546548
if (val == '') {
547549
deleteAlias = true
548550
if (c.iam != "" && new_contact_id != myId) {

android/tinySSB/app/src/main/assets/web/tremola_ui.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,6 +452,25 @@ function refresh_connection_entry(id) {
452452

453453
}
454454

455+
function refresh_goset_progressbar(curr, max) {
456+
457+
console.log("refresh_goset_progressbar", curr, max)
458+
459+
var delta = max - curr
460+
461+
document.getElementById('connection-overlay-progressbar-goset').value = (curr / max) * 100
462+
document.getElementById('connection-overlay-progressbar-label-goset').textContent = delta + " key" + (delta > 1 ? "s" : "") + " left"
463+
if (delta > 0) {
464+
console.log("display progress")
465+
document.getElementById('goset-progress-container').style.display = "initial"
466+
document.getElementById('progress-container').style.display = "none"
467+
} else {
468+
document.getElementById('goset-progress-container').style.display = "none"
469+
document.getElementById('progress-container').style.display = "initial"
470+
}
471+
472+
}
473+
455474
function refresh_connection_progressbar(min_entries, old_min_entries, old_want_entries, curr_want_entries, max_entries) {
456475

457476
console.log("min:", min_entries)

android/tinySSB/app/src/main/java/nz/scuttlebutt/tremolavossbol/tssb/GOset.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,11 @@ class GOset(val context: MainActivity) {
9191
if (buf.size != CLAIM_LEN || buf[0] != 'c'.toByte())
9292
return;
9393
val cl = mkClaim(buf)
94+
9495
if (cl.sz > largest_claim_span)
9596
largest_claim_span = cl.sz
97+
if (context.tinyRepo.isLoaded())
98+
context.wai.eval("refresh_goset_progressbar(${keys.size}, ${largest_claim_span})") // notify frontend
9699
// Log.d("rx", "state = ${state.toHex()}, cl.sz=${cl.sz}, k.sz=${keys.size}")
97100
if (cl.sz == keys.size && byteArrayCmp(state, cl.xo) == 0) {
98101
Log.d("goset", "seems we are synced (with at least someone), |GOset|=${keys.size}")
@@ -138,7 +141,7 @@ class GOset(val context: MainActivity) {
138141
}
139142
*/
140143
// Log.d("GOset", "beacon")
141-
if (keys.size == 0) return
144+
if (keys.size == 0 || !context.tinyRepo.isLoaded()) return
142145
while (novelty_credit-- > 0 && pending_novelty.size > 0)
143146
context.tinyIO.enqueue(pending_novelty.removeFirst().wire, goset_dmx, null)
144147
novelty_credit = NOVELTY_PER_ROUND

android/tinySSB/app/src/main/java/nz/scuttlebutt/tremolavossbol/tssb/Node.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ class Node(val context: MainActivity) {
175175
var old_min: List<Int>? = null
176176
var old_min_from: String? = null
177177

178+
179+
178180
// calculates current replication progress and sends update to frontend
179181
fun update_progress(want_vector: List<Int>, from: String) {
180182

android/tinySSB/app/src/main/java/nz/scuttlebutt/tremolavossbol/tssb/Repo.kt

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package nz.scuttlebutt.tremolavossbol.tssb
22

33
import android.content.Context.MODE_PRIVATE
4+
import android.util.Log
45
import nz.scuttlebutt.tremolavossbol.MainActivity
56
import nz.scuttlebutt.tremolavossbol.crypto.SodiumAPI.Companion.sha256
67
import nz.scuttlebutt.tremolavossbol.utils.Bipf
@@ -21,6 +22,7 @@ import kotlin.random.Random
2122
class Repo(val context: MainActivity) {
2223
val TINYSSB_DIR = "tinyssb"
2324
val FEED_DIR = "feeds"
25+
private var loadingFinished = false // indicates whether all replicas have already been loaded into the repo.
2426
private val replicas = ArrayList<Replica>()
2527
private var want_is_valid = false
2628
private var chnk_is_valid = false
@@ -50,8 +52,11 @@ class Repo(val context: MainActivity) {
5052

5153
for (f in fdir.listFiles { file -> file.isDirectory && file.name.length == 2 * FID_LEN} ?: emptyArray()) {
5254
add_replica(f.name.decodeHex())
55+
context.tinyGoset._add_key(f.name.decodeHex())
5356
}
5457

58+
loadingFinished = true
59+
5560
}
5661

5762
fun add_replica(fid: ByteArray) {
@@ -71,6 +76,8 @@ class Repo(val context: MainActivity) {
7176
context.tinyDemux.arm_blb(p.hptr, chunk_fct,fid,seq, p.cnr)
7277
}
7378

79+
80+
7481
if (context.tinyGoset.keys.size > 1) {
7582
want_offs = Random.nextInt(0, context.tinyGoset.keys.size - 1)
7683
chnk_offs = Random.nextInt(0, context.tinyGoset.keys.size - 1)
@@ -159,10 +166,11 @@ class Repo(val context: MainActivity) {
159166

160167

161168
if(lst.size > 1) {
169+
// notify frontend
162170
var vec = lst.slice(1 .. lst.lastIndex) // want_vector without offset
163-
vec = vec.mapIndexed { index, i ->
164-
val new_idx =(index + want_offs) % vec.size
165-
lst.slice(1 .. lst.lastIndex)[new_idx]}
171+
val front = vec.subList(vec.size - lst[0], vec.size)
172+
val back = vec.subList(0, vec.size - lst[0])
173+
vec = front + back
166174
context.tinyNode.update_progress(vec, "me")
167175

168176
return Bipf.encode(Bipf.mkList(lst))
@@ -322,4 +330,8 @@ class Repo(val context: MainActivity) {
322330

323331
}
324332

333+
fun isLoaded(): Boolean {
334+
return loadingFinished
335+
}
336+
325337
}

0 commit comments

Comments
 (0)