1717package org.obd.graphs.preferences.trips
1818
1919import android.annotation.SuppressLint
20+ import android.content.BroadcastReceiver
21+ import android.content.Context
22+ import android.content.Intent
2023import android.os.Bundle
2124import android.util.Log
2225import android.view.LayoutInflater
@@ -33,11 +36,13 @@ import org.obd.graphs.R
3336import org.obd.graphs.SCREEN_LOCK_PROGRESS_EVENT
3437import org.obd.graphs.SCREEN_UNLOCK_PROGRESS_EVENT
3538import org.obd.graphs.TRIPS_UPLOAD_NO_FILES_SELECTED
39+ import org.obd.graphs.TRIPS_UPLOAD_SUCCESSFUL
3640import org.obd.graphs.activity.navigateToScreen
3741import org.obd.graphs.bl.trip.TripFileDesc
3842import org.obd.graphs.bl.trip.tripManager
3943import org.obd.graphs.integrations.gcp.gdrive.TripLogDriveManager
4044import org.obd.graphs.preferences.CoreDialogFragment
45+ import org.obd.graphs.registerReceiver
4146import org.obd.graphs.sendBroadcastEvent
4247import java.io.File
4348
@@ -52,6 +57,39 @@ class TripLogListDialogFragment(
5257) : CoreDialogFragment() {
5358 private lateinit var tripLogDriveManager: TripLogDriveManager
5459
60+ private lateinit var adapter: TripViewAdapter
61+
62+ private var broadcastReceiver =
63+ object : BroadcastReceiver () {
64+ @SuppressLint(" NotifyDataSetChanged" )
65+ override fun onReceive (
66+ context : Context ? ,
67+ intent : Intent ?
68+ ) {
69+ when (intent?.action) {
70+ TRIPS_UPLOAD_SUCCESSFUL -> {
71+ if (isAdded && isVisible) {
72+ adapter.data = tripManager.findAllTripsBy().map { TripLogDetails (source = it) }.toMutableList()
73+ adapter.notifyDataSetChanged()
74+ }
75+ }
76+ }
77+ }
78+ }
79+
80+ override fun onPause () {
81+ super .onPause()
82+ requireContext().unregisterReceiver(broadcastReceiver)
83+ }
84+
85+ override fun onResume () {
86+ super .onResume()
87+
88+ registerReceiver(activity, broadcastReceiver) {
89+ it.addAction(TRIPS_UPLOAD_SUCCESSFUL )
90+ }
91+ }
92+
5593 override fun onCreate (savedInstanceState : Bundle ? ) {
5694 super .onCreate(savedInstanceState)
5795 tripLogDriveManager = TripLogDriveManager .instance(getString(R .string.ANDROID_WEB_CLIENT_ID ), requireActivity(), this )
@@ -66,12 +104,13 @@ class TripLogListDialogFragment(
66104 requestWindowFeatures()
67105
68106 val root = inflater.inflate(R .layout.dialog_trip, container, false )
69- val adapter =
107+ adapter =
70108 TripViewAdapter (
71109 context,
72110 tripManager.findAllTripsBy().map { TripLogDetails (source = it) }.toMutableList(),
73111 enableDeleteButtons
74112 )
113+
75114 val recyclerView: RecyclerView = root.findViewById(R .id.recycler_view)
76115 recyclerView.layoutManager = GridLayoutManager (context, 1 )
77116 recyclerView.adapter = adapter
@@ -131,7 +170,7 @@ class TripLogListDialogFragment(
131170 sendBroadcastEvent(TRIPS_UPLOAD_NO_FILES_SELECTED )
132171 } else {
133172 lifecycleScope.launch {
134- tripLogDriveManager.exportTrips (files)
173+ tripLogDriveManager.uploadTrips (files)
135174 }
136175 }
137176 }.setNegativeButton(no) { dialog, _ ->
0 commit comments