Skip to content

Commit cc01c74

Browse files
committed
Add chunk replication progressbar to frontend
1 parent c04fe66 commit cc01c74

5 files changed

Lines changed: 42 additions & 0 deletions

File tree

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -263,6 +263,11 @@
263263
<progress id='connection-overlay-progressbar-want' class='connection-overlay-progressbar' value="0" max="100"></progress>
264264
<div id='connection-overlay-progressbar-label-want' class="connection-overlay-progressbar-label"></div>
265265
</div>
266+
<div style="position: relative; margin-bottom: 10px;">
267+
<img src='img/receive.png' alt="Icon" class="progress-icon">
268+
<progress id='connection-overlay-progressbar-chnk' class='connection-overlay-progressbar' value="0" max="100"></progress>
269+
<div id='connection-overlay-progressbar-label-chnk' class="connection-overlay-progressbar-label"></div>
270+
</div>
266271
</div>
267272

268273
<div id='goset-progress-container' style="display: none;">

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

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,29 @@ function refresh_goset_progressbar(curr, max) {
471471

472472
}
473473

474+
var max_chnks = 0
475+
function refresh_chunk_progressbar(remaining) {
476+
477+
if(remaining != 0) {
478+
max_chnks = Math.max(max_chnks, remaining)
479+
} else {
480+
max_chnks = 0 // reset
481+
}
482+
483+
console.log("refresh_chunk_progressbar", remaining, max_chnks)
484+
485+
486+
if(remaining > 0) {
487+
var percentage = (1 - ((remaining - 0) / (max_chnks - 0))) * 100
488+
document.getElementById('connection-overlay-progressbar-chnk').value = percentage
489+
document.getElementById('connection-overlay-progressbar-label-chnk').textContent = remaining + " Chunks left"
490+
} else {
491+
document.getElementById('connection-overlay-progressbar-chnk').value = 100
492+
document.getElementById('connection-overlay-progressbar-label-chnk').textContent = "Chunks — Synchronized"
493+
}
494+
495+
}
496+
474497
function refresh_connection_progressbar(min_entries, old_min_entries, old_want_entries, curr_want_entries, max_entries) {
475498

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

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class WebAppInterface(val act: MainActivity, val webView: WebView) {
4343
"ready" -> {
4444
eval("b2f_initialize(\"${act.idStore.identity.toRef()}\")")
4545
frontend_ready = true
46+
act.tinyRepo.addNumberOfPendingChunks(0) // initialize chunk progress bar
4647
act.tinyNode.beacon()
4748
}
4849
"reset" -> { // UI reset

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,7 @@ class Replica(val context: MainActivity, val datapath: File, val fid: ByteArray)
168168
if (chunk_cnt > 0) {
169169
val ptr = pkt.sliceArray(36 until 56)
170170
state.pend_sc[seq] = Pending(0, chunk_cnt, ptr, state.max_pos + TINYSSB_PKT_LEN)
171+
context.tinyRepo.addNumberOfPendingChunks(chunk_cnt)
171172
val chunk_fct = { chunk: ByteArray, fid: ByteArray?, seq: Int -> context.tinyNode.incoming_chunk(chunk,fid,seq) }
172173
context.tinyDemux.arm_blb(ptr, chunk_fct, fid, seq, 0)
173174
} else { // no sidechain, entry is complete
@@ -225,6 +226,7 @@ class Replica(val context: MainActivity, val datapath: File, val fid: ByteArray)
225226
val chunk_fct = { chunk: ByteArray, fid: ByteArray?, seq: Int -> context.tinyNode.incoming_chunk(chunk,fid,seq) }
226227
context.tinyDemux.arm_blb(pend.hptr, chunk_fct, fid, seq, pend.cnr)
227228
}
229+
context.tinyRepo.addNumberOfPendingChunks(-1)
228230
val f = fnt.startWrite()
229231
f.write(state.toWire())
230232
fnt.finishWrite(f)

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class Repo(val context: MainActivity) {
2828
private var chnk_is_valid = false
2929
private var want_offs = 0
3030
private var chnk_offs = 0
31+
private var numberOfPendingChunks = 0
3132

3233
private fun clean(dir: File) {
3334
for (f in dir.listFiles() ?: emptyArray()) {
@@ -74,6 +75,7 @@ class Repo(val context: MainActivity) {
7475
val chunk_fct = { chunk: ByteArray, fid: ByteArray?, seq: Int -> context.tinyNode.incoming_chunk(chunk,fid,seq) }
7576
for ((seq, p) in chains) {
7677
context.tinyDemux.arm_blb(p.hptr, chunk_fct,fid,seq, p.cnr)
78+
addNumberOfPendingChunks(p.rem)
7779
}
7880

7981

@@ -334,4 +336,13 @@ class Repo(val context: MainActivity) {
334336
return loadingFinished
335337
}
336338

339+
fun addNumberOfPendingChunks(amount: Int) {
340+
numberOfPendingChunks += amount
341+
context.wai.eval("refresh_chunk_progressbar($numberOfPendingChunks)")
342+
}
343+
344+
fun getNumberOfPendingCHunks(): Int {
345+
return numberOfPendingChunks
346+
}
347+
337348
}

0 commit comments

Comments
 (0)