Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add wasm support #167

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 13 additions & 21 deletions example/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -72,30 +72,22 @@ packages:
description: flutter
source: sdk
version: "0.0.0"
js:
dependency: transitive
description:
name: js
sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf
url: "https://pub.dev"
source: hosted
version: "0.7.1"
leak_tracker:
dependency: transitive
description:
name: leak_tracker
sha256: "7f0df31977cb2c0b88585095d168e689669a2cc9b97c309665e3386f3e9d341a"
sha256: "3f87a60e8c63aecc975dda1ceedbc8f24de75f09e4856ea27daf8958f2f0ce05"
url: "https://pub.dev"
source: hosted
version: "10.0.4"
version: "10.0.5"
leak_tracker_flutter_testing:
dependency: transitive
description:
name: leak_tracker_flutter_testing
sha256: "06e98f569d004c1315b991ded39924b21af84cf14cc94791b8aea337d25b57f8"
sha256: "932549fb305594d82d7183ecd9fa93463e9914e1b67cacc34bc40906594a1806"
url: "https://pub.dev"
source: hosted
version: "3.0.3"
version: "3.0.5"
leak_tracker_testing:
dependency: transitive
description:
Expand All @@ -116,25 +108,25 @@ packages:
dependency: transitive
description:
name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.dev"
source: hosted
version: "0.8.0"
version: "0.11.1"
meta:
dependency: transitive
description:
name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.15.0"
mixpanel_flutter:
dependency: "direct main"
description:
path: ".."
relative: true
source: path
version: "2.3.1"
version: "2.3.3"
path:
dependency: transitive
description:
Expand Down Expand Up @@ -192,10 +184,10 @@ packages:
dependency: transitive
description:
name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
sha256: "5b8a98dafc4d5c4c9c72d8b31ab2b23fc13422348d2997120294d3bac86b4ddb"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
version: "0.7.2"
vector_math:
dependency: transitive
description:
Expand All @@ -208,10 +200,10 @@ packages:
dependency: transitive
description:
name: vm_service
sha256: "3923c89304b715fb1eb6423f017651664a03bf5f4b29983627c4da791f74a4ec"
sha256: "5c5f338a667b4c644744b661f309fb8080bb94b18a7e91ef1dbd343bed00ed6d"
url: "https://pub.dev"
source: hosted
version: "14.2.1"
version: "14.2.5"
sdks:
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
2 changes: 1 addition & 1 deletion lib/codec/mixpanel_message_codec.dart
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,4 @@ class MixpanelMessageCodec extends StandardMessageCodec {
return super.readValueOfType(type, buffer);
}
}
}
}
53 changes: 26 additions & 27 deletions lib/mixpanel_flutter_web.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import 'dart:async';
import 'dart:js_interop';

import 'package:flutter/services.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
import 'package:mixpanel_flutter/web/mixpanel_js_bindings.dart';
import 'package:js/js_util.dart' as js;

/// A web implementation of the MixpanelFlutter plugin.
class MixpanelFlutterPlugin {
Expand Down Expand Up @@ -138,13 +138,13 @@ class MixpanelFlutterPlugin {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
String token = args['token'] as String;
dynamic config = args['config'];
init(token, js.jsify(config ?? {}));
init(token, config?.jsify() ?? {});
}

void handleSetServerURL(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
String serverURL = args['serverURL'] as String;
set_config(js.jsify({'api_host': serverURL}));
set_config({'api_host': serverURL}.jsify());
}

void handleTrack(MethodCall call) {
Expand All @@ -155,7 +155,7 @@ class MixpanelFlutterPlugin {
..._mixpanelProperties,
...(properties ?? {})
};
track(eventName, js.jsify(props));
track(eventName, props.jsify());
}

void handleAlias(MethodCall call) {
Expand All @@ -180,7 +180,7 @@ class MixpanelFlutterPlugin {
...(properties ?? {})
};
dynamic groups = args["groups"];
track_with_groups(eventName, js.jsify(props), js.jsify(groups));
track_with_groups(eventName, props.jsify(), groups.jsify());
}

void handleSetGroup(MethodCall call) {
Expand All @@ -189,7 +189,7 @@ class MixpanelFlutterPlugin {
dynamic groupID = args["groupID"];
if (groupID != null) {
set_group(groupKey,
(groupID is Map || groupID is List) ? js.jsify(groupID) : groupID);
(groupID is Map || groupID is List) ? groupID.jsify() : groupID);
}
}

Expand All @@ -200,7 +200,7 @@ class MixpanelFlutterPlugin {

if (groupID != null) {
add_group(groupKey,
(groupID is Map || groupID is List) ? js.jsify(groupID) : groupID);
(groupID is Map || groupID is List) ? groupID.jsify() : groupID);
}
}

Expand All @@ -210,20 +210,20 @@ class MixpanelFlutterPlugin {
dynamic groupID = args["groupID"];
if (groupID != null) {
remove_group(groupKey,
(groupID is Map || groupID is List) ? js.jsify(groupID) : groupID);
(groupID is Map || groupID is List) ? groupID.jsify() : groupID);
}
}

void handleRegisterSuperProperties(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
register(js.jsify(properties));
register(properties.jsify());
}

void handleRegisterSuperPropertiesOnce(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
register_once(js.jsify(properties));
register_once(properties.jsify());
}

void handleUnregisterSuperProperty(MethodCall call) {
Expand All @@ -250,51 +250,51 @@ class MixpanelFlutterPlugin {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
Map<String, dynamic> props = {..._mixpanelProperties, ...properties};
people_set(js.jsify(props));
people_set(props.jsify());
}

void handleSetOnce(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
Map<String, dynamic> props = {..._mixpanelProperties, ...properties};
people_set_once(js.jsify(props));
people_set_once(props.jsify());
}

void handlePeopleIncrement(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
people_increment(js.jsify(properties));
people_increment(properties.jsify());
}

void handlePeopleAppend(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
people_append(js.jsify(properties));
people_append(properties.jsify());
}

void handlePeopleUnion(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
people_union(js.jsify(properties));
people_union(properties.jsify());
}

void handlePeopleRemove(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
people_remove(js.jsify(properties));
people_remove(properties.jsify());
}

void handlePeopleUnset(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
people_unset(js.jsify(properties));
people_unset(properties.jsify());
}

void handleTrackCharge(MethodCall call) {
Map<Object?, Object?> args = call.arguments as Map<Object?, Object?>;
dynamic properties = args['properties'];
double amount = args['amount'] as double;
people_track_charge(amount, js.jsify(properties ?? {}));
people_track_charge(amount, properties?.jsify() ?? {});
}

void handleClearCharge() {
Expand All @@ -312,8 +312,8 @@ class MixpanelFlutterPlugin {

dynamic properties = args['properties'];
get_group(groupKey,
(groupID is Map || groupID is List) ? js.jsify(groupID) : groupID)
.set(js.jsify(properties));
(groupID is Map || groupID is List) ? groupID.jsify() : groupID)
.set(properties.jsify());
}

void handleGroupSetPropertyOnce(MethodCall call) {
Expand All @@ -324,7 +324,7 @@ class MixpanelFlutterPlugin {
dynamic properties = args['properties'];

get_group(groupKey,
(groupID is Map || groupID is List) ? js.jsify(groupID) : groupID)
(groupID is Map || groupID is List) ? groupID.jsify() : groupID)
.set_once(properties.keys.first, properties[properties.keys.first]);
}

Expand All @@ -335,7 +335,7 @@ class MixpanelFlutterPlugin {

String propertyName = args['propertyName'] as String;
get_group(groupKey,
(groupID is Map || groupID is List) ? js.jsify(groupID) : groupID)
(groupID is Map || groupID is List) ? groupID.jsify() : groupID)
.unset(propertyName);
}

Expand All @@ -347,9 +347,8 @@ class MixpanelFlutterPlugin {
String name = args['name'] as String;
dynamic value = args['value'];
get_group(groupKey,
(groupID is Map || groupID is List) ? js.jsify(groupID) : groupID)
.remove(
name, (value is Map || value is List) ? js.jsify(value) : value);
(groupID is Map || groupID is List) ? groupID.jsify() : groupID)
.remove(name, (value is Map || value is List) ? value.jsify() : value);
}

void handleGroupUnion(MethodCall call) {
Expand All @@ -360,8 +359,8 @@ class MixpanelFlutterPlugin {
String name = args['name'] as String;
dynamic value = args['value'] as dynamic;
get_group(groupKey,
(groupID is Map || groupID is List) ? js.jsify(groupID) : groupID)
.union(name, js.jsify(value));
(groupID is Map || groupID is List) ? groupID.jsify() : groupID)
.union(name, value.jsify());
}

bool handleHasOptedOutTracking() {
Expand Down
Loading