Skip to content

Commit f144497

Browse files
author
Daniel Kononov
committed
REL-4262: migrate to Federated
1 parent 6e6203e commit f144497

13 files changed

+208
-70
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
##
12
## 0.1.1
23
* Fix plugin crashes in background on Android.
34
## 0.1.0
File renamed without changes.
File renamed without changes.

example/pubspec.lock

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ packages:
8181
path: ".."
8282
relative: true
8383
source: path
84-
version: "0.1.1"
84+
version: "0.1.2"
8585
matcher:
8686
dependency: transitive
8787
description:
@@ -114,6 +114,14 @@ packages:
114114
url: "https://pub.dev"
115115
source: hosted
116116
version: "1.8.3"
117+
plugin_platform_interface:
118+
dependency: transitive
119+
description:
120+
name: plugin_platform_interface
121+
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
122+
url: "https://pub.dev"
123+
source: hosted
124+
version: "2.1.8"
117125
sky_engine:
118126
dependency: transitive
119127
description: flutter
@@ -176,5 +184,5 @@ packages:
176184
source: hosted
177185
version: "2.1.4"
178186
sdks:
179-
dart: ">=3.0.0-0 <4.0.0"
180-
flutter: ">=1.20.0"
187+
dart: ">=3.0.0 <4.0.0"
188+
flutter: ">=3.10.6"

lib/managed_configurations.dart

Lines changed: 10 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
import 'dart:async';
2-
import 'dart:convert';
3-
import 'dart:io';
4-
5-
import 'package:flutter/services.dart';
6-
7-
const String getManagedConfiguration = "getManagedConfigurations";
8-
const String reportKeyedAppState = "reportKeyedAppState";
1+
import 'managed_configurations_platform_interface.dart';
92

103
enum Severity { SEVERITY_INFO, SEVERITY_ERROR }
114

@@ -21,48 +14,16 @@ extension SeverityExtensions on Severity {
2114
}
2215

2316
class ManagedConfigurations {
24-
static const MethodChannel _managedConfigurationMethodChannel =
25-
const MethodChannel('managed_configurations_method');
26-
static const EventChannel _managedConfigurationEventChannel =
27-
const EventChannel('managed_configurations_event');
28-
29-
static StreamController<Map<String, dynamic>?>
30-
_mangedConfigurationsController =
31-
StreamController<Map<String, dynamic>?>.broadcast();
32-
33-
static Stream<Map<String, dynamic>?> _managedConfigurationsStream =
34-
_mangedConfigurationsController.stream.asBroadcastStream();
17+
Future<String?> getPlatformVersion() {
18+
return ManagedConfigurationsPlatform.instance.getPlatformVersion();
19+
}
3520

36-
/// Returns a broadcast stream which calls on managed app configuration changes
37-
/// Json will be returned
38-
/// Call [dispose] when stream is not more necessary
3921
static Stream<Map<String, dynamic>?> get mangedConfigurationsStream {
40-
if (_actionApplicationRestrictionsChangedSubscription == null) {
41-
_actionApplicationRestrictionsChangedSubscription =
42-
_managedConfigurationEventChannel
43-
.receiveBroadcastStream()
44-
.listen((newManagedConfigurations) {
45-
if (newManagedConfigurations != null) {
46-
_mangedConfigurationsController
47-
.add(json.decode(newManagedConfigurations));
48-
}
49-
});
50-
}
51-
return _managedConfigurationsStream;
22+
return ManagedConfigurationsPlatform.mangedConfigurationsStream;
5223
}
5324

54-
static StreamSubscription<dynamic>?
55-
_actionApplicationRestrictionsChangedSubscription;
56-
57-
/// Returns managed app configurations as Json
5825
static Future<Map<String, dynamic>?> get getManagedConfigurations async {
59-
final String? rawJson = await _managedConfigurationMethodChannel
60-
.invokeMethod(getManagedConfiguration);
61-
if (rawJson != null) {
62-
return json.decode(rawJson);
63-
} else {
64-
return null;
65-
}
26+
return ManagedConfigurationsPlatform.getManagedConfigurations;
6627
}
6728

6829
/// This method is only supported on Android Platform
@@ -72,20 +33,11 @@ class ManagedConfigurations {
7233
String? message,
7334
String? data,
7435
) async {
75-
if (Platform.isAndroid) {
76-
await _managedConfigurationMethodChannel.invokeMethod(
77-
reportKeyedAppState,
78-
{
79-
'key': key,
80-
'severity': severity.toInteger(),
81-
'message': message,
82-
'data': data,
83-
},
84-
);
85-
}
36+
return ManagedConfigurationsPlatform.reportKeyedAppStates(
37+
key, severity, message, data);
8638
}
8739

88-
static dispose() {
89-
_actionApplicationRestrictionsChangedSubscription?.cancel();
40+
static void dispose() {
41+
return ManagedConfigurationsPlatform.dispose();
9042
}
9143
}
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import 'dart:async';
2+
import 'dart:convert';
3+
import 'dart:io';
4+
5+
import 'package:flutter/foundation.dart';
6+
import 'package:flutter/services.dart';
7+
import 'package:managed_configurations/managed_configurations.dart';
8+
import 'package:managed_configurations/managed_configurations_platform_interface.dart';
9+
10+
const String getManagedConfiguration = "getManagedConfigurations";
11+
const String reportKeyedAppState = "reportKeyedAppState";
12+
13+
/// An implementation of [ManagedConfigurationsPlatform] that uses method channels.
14+
class MethodChannelManagedConfigurations extends ManagedConfigurationsPlatform {
15+
/// The method channel used to interact with the native platform.
16+
@visibleForTesting
17+
final methodChannel = const MethodChannel('managed_configurations');
18+
19+
static const MethodChannel _managedConfigurationMethodChannel =
20+
const MethodChannel('managed_configurations_method');
21+
static const EventChannel _managedConfigurationEventChannel =
22+
const EventChannel('managed_configurations_event');
23+
24+
static StreamController<Map<String, dynamic>?>
25+
_mangedConfigurationsController =
26+
StreamController<Map<String, dynamic>?>.broadcast();
27+
28+
static Stream<Map<String, dynamic>?> _managedConfigurationsStream =
29+
_mangedConfigurationsController.stream.asBroadcastStream();
30+
31+
/// Returns a broadcast stream which calls on managed app configuration changes
32+
/// Json will be returned
33+
/// Call [dispose] when stream is not more necessary
34+
static Stream<Map<String, dynamic>?> get mangedConfigurationsStream {
35+
if (_actionApplicationRestrictionsChangedSubscription == null) {
36+
_actionApplicationRestrictionsChangedSubscription =
37+
_managedConfigurationEventChannel
38+
.receiveBroadcastStream()
39+
.listen((newManagedConfigurations) {
40+
if (newManagedConfigurations != null) {
41+
_mangedConfigurationsController
42+
.add(json.decode(newManagedConfigurations));
43+
}
44+
});
45+
}
46+
return _managedConfigurationsStream;
47+
}
48+
49+
static StreamSubscription<dynamic>?
50+
_actionApplicationRestrictionsChangedSubscription;
51+
52+
/// Returns managed app configurations as Json
53+
static Future<Map<String, dynamic>?> get getManagedConfigurations async {
54+
final String? rawJson = await _managedConfigurationMethodChannel
55+
.invokeMethod(getManagedConfiguration);
56+
if (rawJson != null) {
57+
return json.decode(rawJson);
58+
} else {
59+
return null;
60+
}
61+
}
62+
63+
/// This method is only supported on Android Platform
64+
static Future<void> reportKeyedAppStates(
65+
String key,
66+
Severity severity,
67+
String? message,
68+
String? data,
69+
) async {
70+
if (Platform.isAndroid) {
71+
await _managedConfigurationMethodChannel.invokeMethod(
72+
reportKeyedAppState,
73+
{
74+
'key': key,
75+
'severity': severity.toInteger(),
76+
'message': message,
77+
'data': data,
78+
},
79+
);
80+
}
81+
}
82+
83+
static dispose() {
84+
_actionApplicationRestrictionsChangedSubscription?.cancel();
85+
}
86+
}

0 commit comments

Comments
 (0)