From 015ff0da93913296926a9ef77bcaba144255d534 Mon Sep 17 00:00:00 2001 From: kleponijo <158453666+kleponijo@users.noreply.github.com> Date: Sun, 12 Apr 2026 16:58:22 +0700 Subject: [PATCH] josssssss --- .../lib/src/firebase_monitoring_repo.dart | 23 +++++++++++++++---- .../lib/src/models/models.dart | 2 ++ .../lib/src/models/pressure_sensor.dart | 0 .../lib/src/monitoring_repo.dart | 11 +++++++-- 4 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 packages/monitoring_repository/lib/src/models/pressure_sensor.dart diff --git a/packages/monitoring_repository/lib/src/firebase_monitoring_repo.dart b/packages/monitoring_repository/lib/src/firebase_monitoring_repo.dart index 465237d..142ed18 100644 --- a/packages/monitoring_repository/lib/src/firebase_monitoring_repo.dart +++ b/packages/monitoring_repository/lib/src/firebase_monitoring_repo.dart @@ -11,13 +11,28 @@ class FirebaseMonitoringRepo implements MonitoringRepository { // Satu fungsi untuk semua jenis sensor // Kamu cukup masukkan "path" database-nya saja @override - Stream getSensorStream(String path) { - return _db.ref(path).onValue; + Stream getSensorStream( + String path, + T Function(Map json) mapper, + ) { + /// === ambil data mentah dari firebase === /// + return _db.ref(path).onValue.map((event) { + /// == ambil value-nya dan pastikan tipenya map == /// + final data = event.snapshot.value as Map? ?? {}; + + /// == masukan ke dalam "pabrik" (mapper) agar jadi objek == /// + return mapper(data); + }); } @override // Jika ingin mengambil data sekali saja (bukan stream) - Future getSensorSnapshot(String path) async { - return await _db.ref(path).get(); + Future getSensorSnapshot( + String path, + T Function(Map json) mapper, + ) async { + final snapshot = await _db.ref(path).get(); + final data = snapshot.value as Map? ?? {}; + return mapper(data); } } diff --git a/packages/monitoring_repository/lib/src/models/models.dart b/packages/monitoring_repository/lib/src/models/models.dart index fd4175e..f4c6e66 100644 --- a/packages/monitoring_repository/lib/src/models/models.dart +++ b/packages/monitoring_repository/lib/src/models/models.dart @@ -1 +1,3 @@ export 'wind_speed.dart'; +export 'evaporasi.dart'; +export 'pressure_sensor.dart'; diff --git a/packages/monitoring_repository/lib/src/models/pressure_sensor.dart b/packages/monitoring_repository/lib/src/models/pressure_sensor.dart new file mode 100644 index 0000000..e69de29 diff --git a/packages/monitoring_repository/lib/src/monitoring_repo.dart b/packages/monitoring_repository/lib/src/monitoring_repo.dart index 83b7bba..74f922f 100644 --- a/packages/monitoring_repository/lib/src/monitoring_repo.dart +++ b/packages/monitoring_repository/lib/src/monitoring_repo.dart @@ -1,7 +1,14 @@ import 'package:firebase_database/firebase_database.dart'; +import 'models/models.dart'; abstract class MonitoringRepository { - Stream getSensorStream(String path); + Stream getSensorStream( + String path, + T Function(Map json) mapper, + ); - Future getSensorSnapshot(String path); + Future getSensorSnapshot( + String path, + T Function(Map json) mapper, + ); }