11package com.nervosnetwork.ckblightclient.fragments
22
33import android.os.Bundle
4+ import android.os.Handler
5+ import android.os.Looper
46import android.view.LayoutInflater
57import android.view.View
68import android.view.ViewGroup
79import android.widget.TextView
810import androidx.fragment.app.Fragment
11+ import com.nervosnetwork.ckblightclient.LightClientService
912import com.nervosnetwork.ckblightclient.R
1013
1114class LogsFragment : Fragment () {
1215 private lateinit var logsText: TextView
16+ private val handler = Handler (Looper .getMainLooper())
17+ private val updateInterval = 1000L
18+
19+ private val updateRunnable = object : Runnable {
20+ override fun run () {
21+ updateLogs()
22+ handler.postDelayed(this , updateInterval)
23+ }
24+ }
1325
1426 override fun onCreateView (
1527 inflater : LayoutInflater ,
@@ -24,9 +36,31 @@ class LogsFragment : Fragment() {
2436 override fun onViewCreated (view : View , savedInstanceState : Bundle ? ) {
2537 super .onViewCreated(view, savedInstanceState)
2638 updateLogs()
39+
40+ // Set up live log updates
41+ LightClientService .logCallback = { logLine ->
42+ activity?.runOnUiThread {
43+ updateLogs()
44+ }
45+ }
46+ }
47+
48+ override fun onResume () {
49+ super .onResume()
50+ handler.post(updateRunnable)
51+ }
52+
53+ override fun onPause () {
54+ super .onPause()
55+ handler.removeCallbacks(updateRunnable)
2756 }
2857
2958 private fun updateLogs () {
30- logsText.text = " CKB Light Client logs will appear here..."
59+ val logs = LightClientService .getAllLogs()
60+ if (logs.isEmpty()) {
61+ logsText.text = " Waiting for logs...\n "
62+ } else {
63+ logsText.text = logs.joinToString(" \n " )
64+ }
3165 }
3266}
0 commit comments