From 88aab16b5222fbed432c46e3ebb8ba6e6c00f6a1 Mon Sep 17 00:00:00 2001 From: Ian VanSchooten Date: Wed, 30 Oct 2024 08:05:32 -0400 Subject: [PATCH] Fix ID used when listening to updates on new sites (#193) This should avoid the errors we've been seeing in Sentry of: ``` MissingPluginException(No implementation found for method listen on channel net.defined.nebula/null) ``` To test, start up the mobile app in an android phone or emulator, tap the plus button to add a new site, and verify that no error log is shown. Note: we still get a similar error when tapping the "Good Site" or "Bad Site" in debug, but I believe that is because it's being created too quickly before the EventChannel has a chance to be set up. Adding a site manually does not trigger the error. --- .../main/kotlin/net/defined/mobile_nebula/MainActivity.kt | 7 +++---- lib/models/Site.dart | 2 +- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/android/app/src/main/kotlin/net/defined/mobile_nebula/MainActivity.kt b/android/app/src/main/kotlin/net/defined/mobile_nebula/MainActivity.kt index 29b4dda..a78be8d 100644 --- a/android/app/src/main/kotlin/net/defined/mobile_nebula/MainActivity.kt +++ b/android/app/src/main/kotlin/net/defined/mobile_nebula/MainActivity.kt @@ -54,12 +54,11 @@ class MainActivity: FlutterActivity() { } override fun configureFlutterEngine(flutterEngine: FlutterEngine) { + super.configureFlutterEngine(flutterEngine) appContext = context //TODO: Initializing in the constructor leads to a context lacking info we need, figure out the right way to do this sites = Sites(flutterEngine) - - GeneratedPluginRegistrant.registerWith(flutterEngine) - + ui = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL) ui!!.setMethodCallHandler { call, result -> when(call.method) { @@ -99,7 +98,7 @@ class MainActivity: FlutterActivity() { apiClient = APIClient(context) - ContextCompat.registerReceiver(context, refreshReceiver, IntentFilter(ACTION_REFRESH_SITES), RECEIVER_NOT_EXPORTED) + ContextCompat.registerReceiver(context, refreshReceiver, IntentFilter(ACTION_REFRESH_SITES), ContextCompat.RECEIVER_NOT_EXPORTED) enqueueDNUpdater() } diff --git a/lib/models/Site.dart b/lib/models/Site.dart index 46ee231..df98dfc 100644 --- a/lib/models/Site.dart +++ b/lib/models/Site.dart @@ -93,7 +93,7 @@ class Site { this.rawConfig = rawConfig; this.lastManagedUpdate = lastManagedUpdate; - _updates = EventChannel('net.defined.nebula/$id'); + _updates = EventChannel('net.defined.nebula/${this.id}'); _updates.receiveBroadcastStream().listen((d) { try { _updateFromJson(d);