mirror of
https://github.com/divkit/divkit.git
synced 2026-06-06 20:07:59 +00:00
Add public DTO entities
0d05d58ccdd3542b81e5ad7284f5bc8d9fdb0912
This commit is contained in:
@@ -1,15 +1,21 @@
|
||||
## 0.3.0-pre
|
||||
## 0.3.0-pre+1
|
||||
|
||||
* Fix object parsing in DTO
|
||||
* Add ranges in div-text
|
||||
* Open access to the classes DivAction, DivTimer, DivVariable, DivPatch, DivDownloadCallbacks and
|
||||
converters in the public api
|
||||
|
||||
## Migration 0.2 → 0.3
|
||||
## Migration 0.2 → 0.3.0-pre+1
|
||||
|
||||
* Now we have fixed the error and extract the value of dict type values when parsing.
|
||||
This change affected the following structures: dict_value, dict_variable, div_action, div_custom,
|
||||
div_disappear_action, div_extension, div_video, div_visibility_action.
|
||||
`-action.payload['payload']`
|
||||
`+action.payload`
|
||||
* The naming of the classes of the public api was changed so as not to conflict with the dto
|
||||
classes:
|
||||
`-DivAction, DivTimer, DivVariable, DivPatch, DivDownloadCallbacks`
|
||||
`+DivActionModel, DivTimerModel, DivVariableModel, DivPatchModel, DivDownloadCallbacksModel`
|
||||
|
||||
## 0.2.0
|
||||
|
||||
@@ -26,7 +32,8 @@
|
||||
|
||||
## Migration 0.1 → 0.2
|
||||
|
||||
* Now DivContext specified in div-customs protocol, you need to change signature of function if it was used.
|
||||
* Now DivContext specified in div-customs protocol, you need to change signature of function if it
|
||||
was used.
|
||||
`-Widget createCustom(DivCustom div);`
|
||||
`+Widget createCustom(DivCustom div, DivContext context)`
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ class PlaygroundActionHandler implements DivActionHandler {
|
||||
}) : _navigator = navigator;
|
||||
|
||||
@override
|
||||
bool canHandle(DivContext context, DivAction action) {
|
||||
bool canHandle(DivContext context, DivActionModel action) {
|
||||
final uri = action.url;
|
||||
if (uri != null) {
|
||||
if (uri.scheme == _schemeDivAction &&
|
||||
@@ -47,7 +47,7 @@ class PlaygroundActionHandler implements DivActionHandler {
|
||||
@override
|
||||
FutureOr<bool> handleAction(
|
||||
DivContext context,
|
||||
DivAction action,
|
||||
DivActionModel action,
|
||||
) async {
|
||||
final uri = action.url;
|
||||
if (uri == null) {
|
||||
|
||||
+12
-17
@@ -76,28 +76,23 @@ class PlaygroundAppCustomHandler implements DivCustomHandler {
|
||||
|
||||
/// An example of using variables and actions inside a custom
|
||||
Widget _createRefreshIndicator(DivCustom div, DivContext context) {
|
||||
final props = div.customProps?['custom_props'];
|
||||
|
||||
final valueName = props['var'] as String;
|
||||
final value = context.variableManager.context.current[valueName] as bool;
|
||||
|
||||
final actions = props['actions'] as List;
|
||||
final actionList = actions
|
||||
.map(
|
||||
(action) => DivAction(
|
||||
enabled: true,
|
||||
url: Uri.parse(
|
||||
action['url'].toString() + (!value).toString(),
|
||||
),
|
||||
),
|
||||
)
|
||||
.toList();
|
||||
final props = div.customProps;
|
||||
final actions = props?['actions'] as List;
|
||||
final actionList = <Future<DivActionModel>>[];
|
||||
for (var action in actions) {
|
||||
final actionModel = DivAction.fromJson(action)?.resolve(
|
||||
context: context.variableManager.context,
|
||||
);
|
||||
if (actionModel != null) {
|
||||
actionList.add(actionModel);
|
||||
}
|
||||
}
|
||||
return RefreshIndicator(
|
||||
onRefresh: () async {
|
||||
for (final action in actionList) {
|
||||
context.actionHandler.handleAction(
|
||||
context,
|
||||
action,
|
||||
await action,
|
||||
);
|
||||
}
|
||||
},
|
||||
|
||||
+2
-2
@@ -27,7 +27,7 @@ class PlaygroundAppRootActionHandler implements DivActionHandler {
|
||||
}) : _navigator = navigator;
|
||||
|
||||
@override
|
||||
bool canHandle(DivContext context, DivAction action) {
|
||||
bool canHandle(DivContext context, DivActionModel action) {
|
||||
if (_typedHandler.canHandle(context, action)) {
|
||||
return true;
|
||||
}
|
||||
@@ -52,7 +52,7 @@ class PlaygroundAppRootActionHandler implements DivActionHandler {
|
||||
@override
|
||||
FutureOr<bool> handleAction(
|
||||
DivContext context,
|
||||
DivAction action,
|
||||
DivActionModel action,
|
||||
) async {
|
||||
if (_typedHandler.canHandle(context, action)) {
|
||||
return _typedHandler.handleAction(context, action);
|
||||
|
||||
@@ -22,7 +22,7 @@ class _PlaygroundPage extends State<PlaygroundPage> {
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
variableStorage.put(DivVariable(name: demoInputVariable, value: ''));
|
||||
variableStorage.put(DivVariableModel(name: demoInputVariable, value: ''));
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> loadJson() async {
|
||||
@@ -57,7 +57,7 @@ class _PlaygroundPage extends State<PlaygroundPage> {
|
||||
icon: const Icon(Icons.clear),
|
||||
onPressed: () {
|
||||
variableStorage
|
||||
.update(DivVariable(name: demoInputVariable, value: ''));
|
||||
.update(DivVariableModel(name: demoInputVariable, value: ''));
|
||||
},
|
||||
),
|
||||
],
|
||||
|
||||
@@ -1,22 +1,30 @@
|
||||
# Generated by pub
|
||||
# See https://dart.dev/tools/pub/glossary#lockfile
|
||||
packages:
|
||||
archive:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: archive
|
||||
sha256: "80e5141fafcb3361653ce308776cfd7d45e6e9fbb429e14eec571382c0c5fecb"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.2"
|
||||
args:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: args
|
||||
sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a"
|
||||
sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.0"
|
||||
version: "2.4.2"
|
||||
async:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: async
|
||||
sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c"
|
||||
sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.11.0"
|
||||
version: "2.10.0"
|
||||
boolean_selector:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -29,34 +37,34 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image
|
||||
sha256: "28ea9690a8207179c319965c13cd8df184d5ee721ae2ce60f398ced1219cea1f"
|
||||
sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.1"
|
||||
version: "3.2.3"
|
||||
cached_network_image_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image_platform_interface
|
||||
sha256: "9e90e78ae72caa874a323d78fa6301b3fb8fa7ea76a8f96dc5b5bf79f283bf2f"
|
||||
sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.0.0"
|
||||
version: "2.0.0"
|
||||
cached_network_image_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: cached_network_image_web
|
||||
sha256: "205d6a9f1862de34b93184f22b9d2d94586b2f05c581d546695e3d8f6a805cd7"
|
||||
sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.0"
|
||||
version: "1.0.2"
|
||||
characters:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: characters
|
||||
sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605"
|
||||
sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.0"
|
||||
version: "1.2.1"
|
||||
clock:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -69,26 +77,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: collection
|
||||
sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a
|
||||
sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.18.0"
|
||||
version: "1.17.0"
|
||||
crypto:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: crypto
|
||||
sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab
|
||||
sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.3"
|
||||
version: "3.0.2"
|
||||
cupertino_icons:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: cupertino_icons
|
||||
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
|
||||
sha256: d57953e10f9f8327ce64a508a355f0b1ec902193f66288e8cb5070e7c47eeb2d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.8"
|
||||
version: "1.0.6"
|
||||
div_expressions_resolver:
|
||||
dependency: "direct overridden"
|
||||
description:
|
||||
@@ -102,7 +110,7 @@ packages:
|
||||
path: ".."
|
||||
relative: true
|
||||
source: path
|
||||
version: "0.3.0-pre"
|
||||
version: "0.3.0-pre+1"
|
||||
equatable:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@@ -123,39 +131,39 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: ffi
|
||||
sha256: "493f37e7df1804778ff3a53bd691d8692ddf69702cf4c1c1096a2e41b4779e21"
|
||||
sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.0.2"
|
||||
file:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file
|
||||
sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c"
|
||||
sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.0.0"
|
||||
fixnum:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: fixnum
|
||||
sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.0"
|
||||
version: "6.1.4"
|
||||
flutter:
|
||||
dependency: "direct main"
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
flutter_blurhash:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_blurhash
|
||||
sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.0"
|
||||
flutter_cache_manager:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_cache_manager
|
||||
sha256: "395d6b7831f21f3b989ebedbb785545932adb9afe2622c1ffacf7f4b53a7e544"
|
||||
sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.3.2"
|
||||
version: "3.3.1"
|
||||
flutter_driver:
|
||||
dependency: transitive
|
||||
description: flutter
|
||||
@@ -173,18 +181,18 @@ packages:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
name: flutter_riverpod
|
||||
sha256: "0f1974eff5bbe774bf1d870e406fc6f29e3d6f1c46bd9c58e7172ff68a785d7d"
|
||||
sha256: b6cb0041c6c11cefb2dcb97ef436eba43c6d41287ac6d8ca93e02a497f53a4f3
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.1"
|
||||
version: "2.3.7"
|
||||
flutter_svg:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_svg
|
||||
sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2"
|
||||
sha256: f991fdb1533c3caeee0cdc14b04f50f0c3916f0dbcbc05237ccbe4e3c6b93f3f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.10+1"
|
||||
version: "2.0.5"
|
||||
flutter_test:
|
||||
dependency: "direct dev"
|
||||
description: flutter
|
||||
@@ -199,10 +207,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: http
|
||||
sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
|
||||
sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.2.1"
|
||||
version: "0.13.6"
|
||||
http_parser:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -216,38 +224,22 @@ packages:
|
||||
description: flutter
|
||||
source: sdk
|
||||
version: "0.0.0"
|
||||
leak_tracker:
|
||||
js:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "78eb209deea09858f5269f5a5b02be4049535f568c07b275096836f01ea323fa"
|
||||
name: js
|
||||
sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "10.0.0"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: b46c5e37c19120a8a01918cfaf293547f47269f7cb4b0058f21531c2465d6ef0
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
leak_tracker_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_testing
|
||||
sha256: a597f72a664dbd293f3bfc51f9ba69816f84dcd403cdac7066cb3f6003f3ab47
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.1"
|
||||
version: "0.6.5"
|
||||
lints:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: lints
|
||||
sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452"
|
||||
sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.1"
|
||||
version: "2.0.1"
|
||||
logging:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -260,42 +252,42 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: matcher
|
||||
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
|
||||
sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.12.16+1"
|
||||
version: "0.12.13"
|
||||
material_color_utilities:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: material_color_utilities
|
||||
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
|
||||
sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.0"
|
||||
version: "0.2.0"
|
||||
meta:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: meta
|
||||
sha256: d584fa6707a52763a52446f02cc621b077888fb63b93bbcb1143a7be5a0c0c04
|
||||
sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.0"
|
||||
version: "1.8.0"
|
||||
octo_image:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: octo_image
|
||||
sha256: "45b40f99622f11901238e18d48f5f12ea36426d8eced9f4cbf58479c7aa2430d"
|
||||
sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.0"
|
||||
version: "1.0.2"
|
||||
path:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path
|
||||
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
|
||||
sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.9.0"
|
||||
version: "1.8.2"
|
||||
path_parsing:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -308,26 +300,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider
|
||||
sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161
|
||||
sha256: a1aa8aaa2542a6bc57e381f132af822420216c80d4781f7aa085ca3229208aaa
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.3"
|
||||
version: "2.1.1"
|
||||
path_provider_android:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d
|
||||
sha256: e595b98692943b4881b219f0a9e3945118d3c16bd7e2813f98ec6e532d905f72
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.4"
|
||||
version: "2.2.1"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_foundation
|
||||
sha256: f234384a3fdd67f989b4d54a5d73ca2a6c422fa55ae694381ae0f4375cd1ea16
|
||||
sha256: "19314d595120f82aca0ba62787d58dde2cc6b5df7d2f0daf72489e38d1b57f2d"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.0"
|
||||
version: "2.3.1"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -340,10 +332,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_platform_interface
|
||||
sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334"
|
||||
sha256: "94b1e0dd80970c1ce43d5d4e050a9918fce4f4a775e6142424c30a29a363265c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.1"
|
||||
path_provider_windows:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -356,42 +348,42 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: petitparser
|
||||
sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27
|
||||
sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.0.2"
|
||||
version: "5.1.0"
|
||||
platform:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: platform
|
||||
sha256: "12220bb4b65720483f8fa9450b4332347737cf8213dd2840d8b2c823e47243ec"
|
||||
sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.4"
|
||||
version: "3.1.0"
|
||||
plugin_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: plugin_platform_interface
|
||||
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
|
||||
sha256: da3fdfeccc4d4ff2da8f8c556704c08f912542c5fb3cf2233ed75372384a034d
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.8"
|
||||
version: "2.1.6"
|
||||
process:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: process
|
||||
sha256: "21e54fd2faf1b5bdd5102afd25012184a6793927648ea81eea80552ac9405b32"
|
||||
sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.0.2"
|
||||
version: "4.2.4"
|
||||
riverpod:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: riverpod
|
||||
sha256: f21b32ffd26a36555e501b04f4a5dca43ed59e16343f1a30c13632b2351dfa4d
|
||||
sha256: b0657b5b30c81a3184bdaab353045f0a403ebd60bb381591a8b7ad77dcade793
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.1"
|
||||
version: "2.3.7"
|
||||
rxdart:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -409,10 +401,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: source_span
|
||||
sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c"
|
||||
sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.10.0"
|
||||
version: "1.9.1"
|
||||
sprintf:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -425,26 +417,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite
|
||||
sha256: a43e5a27235518c03ca238e7b4732cf35eabe863a369ceba6cbefa537a66f16d
|
||||
sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.3.3+1"
|
||||
version: "2.2.8+4"
|
||||
sqflite_common:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: sqflite_common
|
||||
sha256: "3da423ce7baf868be70e2c0976c28a1bb2f73644268b7ffa7d2e08eab71f16a4"
|
||||
sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.4"
|
||||
version: "2.4.5+1"
|
||||
stack_trace:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: stack_trace
|
||||
sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b"
|
||||
sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.11.1"
|
||||
version: "1.11.0"
|
||||
state_notifier:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -457,10 +449,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: stream_channel
|
||||
sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7
|
||||
sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.1.2"
|
||||
version: "2.1.1"
|
||||
string_scanner:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -481,10 +473,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: synchronized
|
||||
sha256: "539ef412b170d65ecdafd780f924e5be3f60032a1128df156adad6c5b373d558"
|
||||
sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.1.0+1"
|
||||
version: "3.1.0"
|
||||
term_glyph:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -497,50 +489,50 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b"
|
||||
sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.6.1"
|
||||
version: "0.4.16"
|
||||
typed_data:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: typed_data
|
||||
sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c
|
||||
sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.3.2"
|
||||
version: "1.3.1"
|
||||
uuid:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: uuid
|
||||
sha256: "814e9e88f21a176ae1359149021870e87f7cddaf633ab678a5d2b0bff7fd1ba8"
|
||||
sha256: b715b8d3858b6fa9f68f87d20d98830283628014750c2b09b6f516c1da4af2a7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "4.4.0"
|
||||
version: "4.1.0"
|
||||
vector_graphics:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics
|
||||
sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3"
|
||||
sha256: ea8d3fc7b2e0f35de38a7465063ecfcf03d8217f7962aa2a6717132cb5d43a79
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.11+1"
|
||||
version: "1.1.5"
|
||||
vector_graphics_codec:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics_codec
|
||||
sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da
|
||||
sha256: a5eaa5d19e123ad4f61c3718ca1ed921c4e6254238d9145f82aa214955d9aced
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.11+1"
|
||||
version: "1.1.5"
|
||||
vector_graphics_compiler:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_graphics_compiler
|
||||
sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81"
|
||||
sha256: "15edc42f7eaa478ce854eaf1fbb9062a899c0e4e56e775dd73b7f4709c97c4ca"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.1.11+1"
|
||||
version: "1.1.5"
|
||||
vector_math:
|
||||
dependency: transitive
|
||||
description:
|
||||
@@ -553,50 +545,42 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: b3d56ff4341b8f182b96aceb2fa20e3dcb336b9f867bc0eafc0de10f1048e957
|
||||
sha256: e7fb6c2282f7631712b69c19d1bff82f3767eea33a2321c14fa59ad67ea391c7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "13.0.0"
|
||||
web:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: web
|
||||
sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.5.1"
|
||||
version: "9.4.0"
|
||||
webdriver:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: webdriver
|
||||
sha256: "003d7da9519e1e5f329422b36c4dcdf18d7d2978d1ba099ea4e45ba490ed845e"
|
||||
sha256: ef67178f0cc7e32c1494645b11639dd1335f1d18814aa8435113a92e9ef9d841
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.3"
|
||||
version: "3.0.1"
|
||||
win32:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: win32
|
||||
sha256: "0eaf06e3446824099858367950a813472af675116bf63f008a4c2a75ae13e9cb"
|
||||
sha256: "5a751eddf9db89b3e5f9d50c20ab8612296e4e8db69009788d6c8b060a84191c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "5.5.0"
|
||||
version: "4.1.4"
|
||||
xdg_directories:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xdg_directories
|
||||
sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d
|
||||
sha256: "589ada45ba9e39405c198fe34eb0f607cddb2108527e658136120892beac46d2"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "1.0.4"
|
||||
version: "1.0.3"
|
||||
xml:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: xml
|
||||
sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226
|
||||
sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.5.0"
|
||||
version: "6.2.2"
|
||||
sdks:
|
||||
dart: ">=3.3.0 <4.0.0"
|
||||
flutter: ">=3.16.6"
|
||||
dart: ">=2.19.0 <4.0.0"
|
||||
flutter: ">=3.7.0"
|
||||
|
||||
@@ -4,6 +4,12 @@ export 'src/core/data/data.dart';
|
||||
export 'src/core/timer/timer.dart';
|
||||
export 'src/core/patch/patch.dart';
|
||||
export 'src/core/action/action.dart';
|
||||
export 'src/core/action/action_converter.dart';
|
||||
export 'src/core/patch/patch_converter.dart';
|
||||
export 'src/core/timer/timer_converter.dart';
|
||||
export 'src/core/trigger/trigger_converter.dart';
|
||||
export 'src/utils/converters.dart';
|
||||
export 'src/utils/size_converters.dart';
|
||||
export 'src/core/action/handler/default_div_action_handler.dart';
|
||||
export 'src/core/action/handler/div_action_handler_typed.dart';
|
||||
export 'src/core/action/handler/div_action_handler_url.dart';
|
||||
@@ -15,5 +21,4 @@ export 'src/core/template/templates_resolver.dart';
|
||||
export 'src/core/variable/variable.dart';
|
||||
export 'src/core/variable/variable_storage.dart';
|
||||
export 'src/core/widgets/widgets.dart';
|
||||
export 'src/generated_sources/generated_sources.dart'
|
||||
hide DivAction, DivTimer, DivVariable, DivPatch, DivDownloadCallbacks;
|
||||
export 'src/generated_sources/generated_sources.dart';
|
||||
|
||||
@@ -2,14 +2,14 @@ import 'package:divkit/src/core/protocol/div_context.dart';
|
||||
import 'package:divkit/src/generated_sources/div_action_typed.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class DivAction with EquatableMixin {
|
||||
class DivActionModel with EquatableMixin {
|
||||
final Uri? url;
|
||||
final bool enabled;
|
||||
final DivActionTyped? typedAction;
|
||||
final Map<String, dynamic>? payload;
|
||||
final DivDownloadCallbacks? downloadCallbacks;
|
||||
final DivDownloadCallbacksModel? downloadCallbacks;
|
||||
|
||||
const DivAction({
|
||||
const DivActionModel({
|
||||
required this.enabled,
|
||||
this.url,
|
||||
this.typedAction,
|
||||
@@ -38,15 +38,15 @@ class DivAction with EquatableMixin {
|
||||
}
|
||||
}
|
||||
|
||||
class DivDownloadCallbacks with EquatableMixin {
|
||||
const DivDownloadCallbacks({
|
||||
class DivDownloadCallbacksModel with EquatableMixin {
|
||||
const DivDownloadCallbacksModel({
|
||||
this.onFailActions,
|
||||
this.onSuccessActions,
|
||||
});
|
||||
|
||||
final List<DivAction>? onFailActions;
|
||||
final List<DivActionModel>? onFailActions;
|
||||
|
||||
final List<DivAction>? onSuccessActions;
|
||||
final List<DivActionModel>? onSuccessActions;
|
||||
|
||||
@override
|
||||
List<Object?> get props => [
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import 'package:divkit/src/core/action/action.dart';
|
||||
import 'package:divkit/src/core/protocol/div_variable.dart';
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart' as dto;
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart';
|
||||
|
||||
extension PassDivAction on dto.DivAction {
|
||||
Future<DivAction> resolve({
|
||||
extension PassDivAction on DivAction {
|
||||
Future<DivActionModel> resolve({
|
||||
required DivVariableContext context,
|
||||
}) async =>
|
||||
DivAction(
|
||||
DivActionModel(
|
||||
url: await url?.resolveValue(context: context),
|
||||
enabled: await isEnabled.resolveValue(context: context),
|
||||
typedAction: typed,
|
||||
@@ -15,11 +15,11 @@ extension PassDivAction on dto.DivAction {
|
||||
);
|
||||
}
|
||||
|
||||
extension PassDivDownloadCallbacks on dto.DivDownloadCallbacks {
|
||||
Future<DivDownloadCallbacks> resolve({
|
||||
extension PassDivDownloadCallbacks on DivDownloadCallbacks {
|
||||
Future<DivDownloadCallbacksModel> resolve({
|
||||
required DivVariableContext context,
|
||||
}) async {
|
||||
List<DivAction>? success;
|
||||
List<DivActionModel>? success;
|
||||
if (onSuccessActions != null) {
|
||||
success = [];
|
||||
for (final a in onSuccessActions!) {
|
||||
@@ -27,7 +27,7 @@ extension PassDivDownloadCallbacks on dto.DivDownloadCallbacks {
|
||||
}
|
||||
}
|
||||
|
||||
List<DivAction>? fail;
|
||||
List<DivActionModel>? fail;
|
||||
if (onFailActions != null) {
|
||||
fail = [];
|
||||
for (final a in onFailActions!) {
|
||||
@@ -35,7 +35,7 @@ extension PassDivDownloadCallbacks on dto.DivDownloadCallbacks {
|
||||
}
|
||||
}
|
||||
|
||||
return DivDownloadCallbacks(
|
||||
return DivDownloadCallbacksModel(
|
||||
onSuccessActions: success,
|
||||
onFailActions: fail,
|
||||
);
|
||||
|
||||
@@ -12,7 +12,7 @@ class DefaultDivActionHandler implements DivActionHandler {
|
||||
final urlHandler = DefaultDivActionHandlerUrl();
|
||||
|
||||
@override
|
||||
bool canHandle(DivContext context, DivAction action) {
|
||||
bool canHandle(DivContext context, DivActionModel action) {
|
||||
try {
|
||||
if (typedHandler.canHandle(context, action)) {
|
||||
return true;
|
||||
@@ -29,7 +29,7 @@ class DefaultDivActionHandler implements DivActionHandler {
|
||||
}
|
||||
|
||||
@override
|
||||
FutureOr<bool> handleAction(DivContext context, DivAction action) async {
|
||||
FutureOr<bool> handleAction(DivContext context, DivActionModel action) async {
|
||||
try {
|
||||
if (typedHandler.canHandle(context, action)) {
|
||||
return typedHandler.handleAction(context, action);
|
||||
|
||||
@@ -12,11 +12,11 @@ class DefaultDivActionHandlerTyped implements DivActionHandler {
|
||||
final setVariableHandler = DivSetVariableHandlerTyped();
|
||||
|
||||
@override
|
||||
bool canHandle(DivContext context, DivAction action) =>
|
||||
bool canHandle(DivContext context, DivActionModel action) =>
|
||||
action.typedAction != null;
|
||||
|
||||
@override
|
||||
FutureOr<bool> handleAction(DivContext context, DivAction action) {
|
||||
FutureOr<bool> handleAction(DivContext context, DivActionModel action) {
|
||||
final typedAction = action.typedAction;
|
||||
if (typedAction != null) {
|
||||
return typedAction.maybeMap(
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'package:divkit/src/generated_sources/div_patch.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class DivPatch with EquatableMixin {
|
||||
const DivPatch({
|
||||
class DivPatchModel with EquatableMixin {
|
||||
const DivPatchModel({
|
||||
required this.changes,
|
||||
this.mode = DivPatchMode.partial,
|
||||
});
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
import 'package:divkit/src/core/patch/patch.dart';
|
||||
import 'package:divkit/src/core/protocol/div_variable.dart';
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart' as dto;
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart';
|
||||
|
||||
extension PassDivPatch on dto.DivPatch {
|
||||
Future<DivPatch> resolve({
|
||||
extension PassDivPatch on DivPatch {
|
||||
Future<DivPatchModel> resolve({
|
||||
required DivVariableContext context,
|
||||
}) async =>
|
||||
DivPatch(
|
||||
DivPatchModel(
|
||||
changes: changes,
|
||||
mode: await mode.resolveValue(context: context),
|
||||
);
|
||||
|
||||
@@ -13,7 +13,7 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
const DefaultDivPatchManager(this.dataProvider);
|
||||
|
||||
@override
|
||||
Future<bool> applyPatch(DivPatch patch) async {
|
||||
Future<bool> applyPatch(DivPatchModel patch) async {
|
||||
final current = dataProvider.value;
|
||||
final states = <DivDataState>[];
|
||||
for (final state in current.states) {
|
||||
@@ -33,7 +33,7 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
|
||||
/// Apply [patch] changes to single [div], throws Exception if try change to multiple items.
|
||||
/// [root] - If true, not support deletion via null.
|
||||
Div? _updateSingle(Div div, DivPatch patch, [bool root = false]) {
|
||||
Div? _updateSingle(Div div, DivPatchModel patch, [bool root = false]) {
|
||||
for (var change in patch.changes) {
|
||||
if (div.value.id == change.id) {
|
||||
if (!root && change.items == null) {
|
||||
@@ -57,7 +57,7 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
static List<T>? _toList<T>(T? obj) => obj == null ? null : [obj];
|
||||
|
||||
/// Replace [div] to items form [patch] changes in parent witch support multiple items.
|
||||
List<Div>? _updateMultiple(Div div, DivPatch patch) {
|
||||
List<Div>? _updateMultiple(Div div, DivPatchModel patch) {
|
||||
for (var change in patch.changes) {
|
||||
if (div.value.id == change.id) {
|
||||
return change.items;
|
||||
@@ -67,7 +67,8 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
}
|
||||
|
||||
/// Distribution of updates strategy depending on the type of div.
|
||||
Div? _update(Div div, DivPatch patch, [bool root = false]) => _updateSingle(
|
||||
Div? _update(Div div, DivPatchModel patch, [bool root = false]) =>
|
||||
_updateSingle(
|
||||
div.maybeMap(
|
||||
divContainer: (v) => Div.divContainer(_updateContainer(v, patch)),
|
||||
divGallery: (v) => Div.divGallery(_updateGallery(v, patch)),
|
||||
@@ -81,7 +82,7 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
root,
|
||||
);
|
||||
|
||||
DivContainer _updateContainer(DivContainer div, DivPatch patch) =>
|
||||
DivContainer _updateContainer(DivContainer div, DivPatchModel patch) =>
|
||||
div.copyWith(
|
||||
items: () =>
|
||||
div.items
|
||||
@@ -92,7 +93,8 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
[],
|
||||
);
|
||||
|
||||
DivGallery _updateGallery(DivGallery div, DivPatch patch) => div.copyWith(
|
||||
DivGallery _updateGallery(DivGallery div, DivPatchModel patch) =>
|
||||
div.copyWith(
|
||||
items: () =>
|
||||
div.items
|
||||
?.map((e) => _updateMultiple(e, patch))
|
||||
@@ -102,7 +104,7 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
[],
|
||||
);
|
||||
|
||||
DivGrid _updateGrid(DivGrid div, DivPatch patch) => div.copyWith(
|
||||
DivGrid _updateGrid(DivGrid div, DivPatchModel patch) => div.copyWith(
|
||||
items: () =>
|
||||
div.items
|
||||
?.map((e) => _updateMultiple(e, patch))
|
||||
@@ -112,7 +114,7 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
[],
|
||||
);
|
||||
|
||||
DivPager _updatePager(DivPager div, DivPatch patch) => div.copyWith(
|
||||
DivPager _updatePager(DivPager div, DivPatchModel patch) => div.copyWith(
|
||||
items: () =>
|
||||
div.items
|
||||
?.map((e) => _updateMultiple(e, patch))
|
||||
@@ -122,7 +124,7 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
[],
|
||||
);
|
||||
|
||||
DivState _updateState(DivState div, DivPatch patch) => div.copyWith(
|
||||
DivState _updateState(DivState div, DivPatchModel patch) => div.copyWith(
|
||||
states: div.states
|
||||
.map(
|
||||
(e) => e.div != null
|
||||
@@ -132,7 +134,7 @@ class DefaultDivPatchManager with EquatableMixin implements DivPatchManager {
|
||||
.toList(),
|
||||
);
|
||||
|
||||
DivTabs _updateTabs(DivTabs div, DivPatch patch) => div.copyWith(
|
||||
DivTabs _updateTabs(DivTabs div, DivPatchModel patch) => div.copyWith(
|
||||
items: div.items
|
||||
.map((e) => e.copyWith(div: _update(e.div, patch)))
|
||||
.toList(),
|
||||
|
||||
@@ -10,10 +10,10 @@ abstract class DivActionHandler {
|
||||
/// Returns TRUE if action can be handled.
|
||||
/// [action] — Action to handle. Maybe typed or contain a non-null url
|
||||
/// [context] — DivContext to use variables and access stateManager
|
||||
bool canHandle(DivContext context, DivAction action);
|
||||
bool canHandle(DivContext context, DivActionModel action);
|
||||
|
||||
/// Returns TRUE if action was handled.
|
||||
/// [action] — Action to handle. Maybe typed or contain a non-null url
|
||||
/// [context] — DivContext to use variables and access stateManager
|
||||
FutureOr<bool> handleAction(DivContext context, DivAction action);
|
||||
FutureOr<bool> handleAction(DivContext context, DivActionModel action);
|
||||
}
|
||||
|
||||
@@ -8,5 +8,5 @@ abstract class DivPatchManager {
|
||||
/// Applies changes in the patch format to the [DivData].
|
||||
///
|
||||
/// Replaces the [div]s of the root structure with new ones by id.
|
||||
Future<bool> applyPatch(DivPatch patch);
|
||||
Future<bool> applyPatch(DivPatchModel patch);
|
||||
}
|
||||
|
||||
@@ -110,16 +110,16 @@ abstract class DivVariableStorage {
|
||||
|
||||
/// Update an existing variable.
|
||||
/// If successful, it will return true
|
||||
bool update(DivVariable variable);
|
||||
bool update(DivVariableModel variable);
|
||||
|
||||
/// Update if it exists and will create otherwise.
|
||||
void put(DivVariable variable);
|
||||
void put(DivVariableModel variable);
|
||||
|
||||
/// The current snapshot of the raw representation of the storage.
|
||||
Map<String, DivVariable> get value;
|
||||
Map<String, DivVariableModel> get value;
|
||||
|
||||
/// The raw data stream of storage changes.
|
||||
Stream<Map<String, DivVariable>> get stream;
|
||||
Stream<Map<String, DivVariableModel>> get stream;
|
||||
|
||||
/// Safely destroy storage.
|
||||
Future<void> dispose();
|
||||
|
||||
@@ -4,19 +4,19 @@ import 'package:divkit/src/core/action/action_converter.dart';
|
||||
import 'package:divkit/src/core/protocol/div_context.dart';
|
||||
import 'package:divkit/src/core/protocol/div_variable.dart';
|
||||
import 'package:divkit/src/core/expression/expression.dart';
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart' as dto;
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart';
|
||||
import 'package:divkit/src/utils/clockwork.dart';
|
||||
import 'package:divkit/src/utils/duration_helper.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class DivTimer with EquatableMixin {
|
||||
class DivTimerModel with EquatableMixin {
|
||||
final String id;
|
||||
|
||||
final Expression<int> duration;
|
||||
final Expression<int>? tickInterval;
|
||||
|
||||
final List<dto.DivAction>? tickActions;
|
||||
final List<dto.DivAction>? endActions;
|
||||
final List<DivAction>? tickActions;
|
||||
final List<DivAction>? endActions;
|
||||
|
||||
final String? valueVariable;
|
||||
|
||||
@@ -25,7 +25,7 @@ class DivTimer with EquatableMixin {
|
||||
|
||||
Clockwork get clockwork => _clockwork!;
|
||||
|
||||
DivTimer({
|
||||
DivTimerModel({
|
||||
required this.id,
|
||||
required this.duration,
|
||||
this.endActions,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'package:divkit/src/core/timer/timer.dart';
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart' as dto;
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart';
|
||||
|
||||
extension PassDivTimer on dto.DivTimer {
|
||||
DivTimer get pass => DivTimer(
|
||||
extension PassDivTimer on DivTimer {
|
||||
DivTimerModel get pass => DivTimerModel(
|
||||
id: id,
|
||||
duration: duration,
|
||||
tickInterval: tickInterval,
|
||||
|
||||
@@ -12,7 +12,7 @@ class DefaultDivTimerManager extends DivTimerManager {
|
||||
});
|
||||
|
||||
Future<void> init({
|
||||
Iterable<DivTimer>? timers,
|
||||
Iterable<DivTimerModel>? timers,
|
||||
void Function()? onEnd,
|
||||
}) async {
|
||||
if (timers != null) {
|
||||
|
||||
@@ -2,15 +2,15 @@ import 'package:divkit/src/core/protocol/div_logger.dart';
|
||||
import 'package:divkit/src/core/timer/timer.dart';
|
||||
|
||||
/// Empty storage, important for initialization.
|
||||
final _empty = <String, DivTimer>{};
|
||||
final _empty = <String, DivTimerModel>{};
|
||||
|
||||
class DivTimerScheduler {
|
||||
final Map<String, DivTimer> _timers;
|
||||
final Map<String, DivTimerModel> _timers;
|
||||
|
||||
Iterable<DivTimer> get timers => _timers.values;
|
||||
Iterable<DivTimerModel> get timers => _timers.values;
|
||||
|
||||
DivTimerScheduler({
|
||||
required Iterable<DivTimer>? timers,
|
||||
required Iterable<DivTimerModel>? timers,
|
||||
}) : _timers = timers != null
|
||||
? Map.fromIterable(timers, key: (v) => v.id)
|
||||
: _empty;
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
import 'package:divkit/src/core/expression/expression.dart';
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart' as dto;
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class DivTrigger with EquatableMixin {
|
||||
final List<dto.DivAction> actions;
|
||||
class DivTriggerModel with EquatableMixin {
|
||||
final List<DivAction> actions;
|
||||
|
||||
final Expression<bool> condition;
|
||||
|
||||
bool prevConditionResult = false;
|
||||
|
||||
final Expression<dto.DivTriggerMode> mode;
|
||||
final Expression<DivTriggerMode> mode;
|
||||
|
||||
DivTrigger({
|
||||
DivTriggerModel({
|
||||
required this.actions,
|
||||
required this.condition,
|
||||
required this.mode,
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'package:divkit/src/core/trigger/trigger.dart';
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart' as dto;
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart';
|
||||
|
||||
extension PassDivTrigger on dto.DivTrigger {
|
||||
DivTrigger get pass => DivTrigger(
|
||||
extension PassDivTrigger on DivTrigger {
|
||||
DivTriggerModel get pass => DivTriggerModel(
|
||||
actions: actions,
|
||||
condition: condition,
|
||||
mode: mode,
|
||||
|
||||
@@ -8,7 +8,7 @@ import 'package:divkit/src/core/protocol/div_variable.dart';
|
||||
import 'package:divkit/src/core/trigger/trigger.dart';
|
||||
|
||||
class DefaultDivTriggerManager extends DivTriggerManager {
|
||||
final List<DivTrigger>? triggers;
|
||||
final List<DivTriggerModel>? triggers;
|
||||
|
||||
DefaultDivTriggerManager({
|
||||
required super.divContext,
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import 'package:equatable/equatable.dart';
|
||||
|
||||
class DivVariable<T> with EquatableMixin {
|
||||
class DivVariableModel<T> with EquatableMixin {
|
||||
final String name;
|
||||
T value;
|
||||
|
||||
// An auxiliary function, since we do not have reliability by type.
|
||||
final T? Function(String raw)? safeParse;
|
||||
|
||||
DivVariable({
|
||||
DivVariableModel({
|
||||
required this.name,
|
||||
required this.value,
|
||||
this.safeParse,
|
||||
|
||||
@@ -1,46 +1,46 @@
|
||||
import 'package:divkit/src/core/variable/variable.dart';
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart' as dto;
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart';
|
||||
import 'package:divkit/src/utils/parsing_utils.dart';
|
||||
|
||||
extension PassDivVariable on dto.DivVariable {
|
||||
extension PassDivVariable on DivVariable {
|
||||
/// Creating a reactive variable from raw data.
|
||||
DivVariable get pass => map(
|
||||
booleanVariable: (data) => DivVariable(
|
||||
DivVariableModel get pass => map(
|
||||
booleanVariable: (data) => DivVariableModel(
|
||||
name: data.name,
|
||||
value: data.value,
|
||||
safeParse: safeParseBool,
|
||||
),
|
||||
colorVariable: (data) => DivVariable(
|
||||
colorVariable: (data) => DivVariableModel(
|
||||
name: data.name,
|
||||
value: data.value,
|
||||
safeParse: safeParseColor,
|
||||
),
|
||||
integerVariable: (data) => DivVariable(
|
||||
integerVariable: (data) => DivVariableModel(
|
||||
name: data.name,
|
||||
value: data.value,
|
||||
safeParse: safeParseInt,
|
||||
),
|
||||
numberVariable: (data) => DivVariable(
|
||||
numberVariable: (data) => DivVariableModel(
|
||||
name: data.name,
|
||||
value: data.value,
|
||||
safeParse: safeParseDouble,
|
||||
),
|
||||
stringVariable: (data) => DivVariable(
|
||||
stringVariable: (data) => DivVariableModel(
|
||||
name: data.name,
|
||||
value: data.value,
|
||||
safeParse: safeParseStr,
|
||||
),
|
||||
urlVariable: (data) => DivVariable(
|
||||
urlVariable: (data) => DivVariableModel(
|
||||
name: data.name,
|
||||
value: data.value,
|
||||
safeParse: safeParseUri,
|
||||
),
|
||||
arrayVariable: (data) => DivVariable(
|
||||
arrayVariable: (data) => DivVariableModel(
|
||||
name: data.name,
|
||||
value: data.value,
|
||||
safeParse: safeParseList,
|
||||
),
|
||||
dictVariable: (data) => DivVariable(
|
||||
dictVariable: (data) => DivVariableModel(
|
||||
name: data.name,
|
||||
value: data.value,
|
||||
safeParse: safeParseMap,
|
||||
|
||||
@@ -6,7 +6,7 @@ import 'package:equatable/equatable.dart';
|
||||
import 'package:rxdart/rxdart.dart';
|
||||
|
||||
class DefaultDivVariableStorage extends DivVariableStorage with EquatableMixin {
|
||||
final _storage = BehaviorSubject<Map<String, DivVariable>>();
|
||||
final _storage = BehaviorSubject<Map<String, DivVariableModel>>();
|
||||
|
||||
/// Inherited storage of reactive variables. Not managed by local storage.
|
||||
@override
|
||||
@@ -17,13 +17,13 @@ class DefaultDivVariableStorage extends DivVariableStorage with EquatableMixin {
|
||||
|
||||
DefaultDivVariableStorage({
|
||||
this.inheritedStorage,
|
||||
List<DivVariable>? variables,
|
||||
List<DivVariableModel>? variables,
|
||||
}) {
|
||||
_storage.add(Map.fromIterable(variables ?? [], key: (v) => v.name));
|
||||
}
|
||||
|
||||
@override
|
||||
bool update(DivVariable variable) {
|
||||
bool update(DivVariableModel variable) {
|
||||
final isLocal = names.contains(variable.name);
|
||||
final isInherited =
|
||||
inheritedStorage?.names.contains(variable.name) ?? false;
|
||||
@@ -39,14 +39,14 @@ class DefaultDivVariableStorage extends DivVariableStorage with EquatableMixin {
|
||||
}
|
||||
|
||||
@override
|
||||
void put(DivVariable variable) {
|
||||
void put(DivVariableModel variable) {
|
||||
if (!update(variable)) {
|
||||
_storage.add(Map.of(_storage.value)..addAll({variable.name: variable}));
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, DivVariable> get value => _storage.isClosed
|
||||
Map<String, DivVariableModel> get value => _storage.isClosed
|
||||
? {}
|
||||
: {
|
||||
...?inheritedStorage?.value,
|
||||
@@ -54,21 +54,22 @@ class DefaultDivVariableStorage extends DivVariableStorage with EquatableMixin {
|
||||
};
|
||||
|
||||
/// Caching the combined contextStream.
|
||||
BehaviorSubject<Map<String, DivVariable>>? _contextStreamSubject;
|
||||
StreamSubscription<Map<String, DivVariable>>? _contextStreamSubscription;
|
||||
BehaviorSubject<Map<String, DivVariableModel>>? _contextStreamSubject;
|
||||
StreamSubscription<Map<String, DivVariableModel>>? _contextStreamSubscription;
|
||||
|
||||
@override
|
||||
Stream<Map<String, DivVariable>> get stream {
|
||||
Stream<Map<String, DivVariableModel>> get stream {
|
||||
if (_contextStreamSubject == null) {
|
||||
final inheritedStream = inheritedStorage?.stream;
|
||||
if (inheritedStream != null) {
|
||||
_contextStreamSubject = BehaviorSubject<Map<String, DivVariable>>();
|
||||
_contextStreamSubject =
|
||||
BehaviorSubject<Map<String, DivVariableModel>>();
|
||||
_contextStreamSubscription ??= CombineLatestStream.combine2(
|
||||
inheritedStream,
|
||||
_storage.stream,
|
||||
(
|
||||
Map<String, DivVariable> inherited,
|
||||
Map<String, DivVariable> local,
|
||||
Map<String, DivVariableModel> inherited,
|
||||
Map<String, DivVariableModel> local,
|
||||
) =>
|
||||
{
|
||||
...inherited,
|
||||
|
||||
@@ -118,7 +118,7 @@ class DefaultDivVariableManager extends DivVariableManager with EquatableMixin {
|
||||
} else {
|
||||
// Create new variable
|
||||
storage.put(
|
||||
DivVariable(
|
||||
DivVariableModel(
|
||||
name: name,
|
||||
value: value,
|
||||
safeParse: safeParseTyped(value.runtimeType),
|
||||
|
||||
@@ -1,16 +1,15 @@
|
||||
import 'package:divkit/src/core/action/action.dart';
|
||||
import 'package:divkit/src/core/action/action_converter.dart';
|
||||
import 'package:divkit/src/core/protocol/div_context.dart';
|
||||
import 'package:divkit/src/generated_sources/div_animation.dart';
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart' as dto;
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart';
|
||||
import 'package:divkit/src/utils/provider.dart';
|
||||
import 'package:divkit/src/utils/tap_builder.dart';
|
||||
import 'package:equatable/equatable.dart';
|
||||
import 'package:flutter/widgets.dart';
|
||||
|
||||
class DivTapActionModel with EquatableMixin {
|
||||
final List<DivAction> actions;
|
||||
final List<DivAction> longtapActions;
|
||||
final List<DivActionModel> actions;
|
||||
final List<DivActionModel> longtapActions;
|
||||
final bool enabled;
|
||||
final bool enabledAnimation;
|
||||
|
||||
@@ -23,15 +22,15 @@ class DivTapActionModel with EquatableMixin {
|
||||
|
||||
static Stream<DivTapActionModel> from(
|
||||
BuildContext context,
|
||||
List<dto.DivAction> actions,
|
||||
List<dto.DivAction> longtapActions,
|
||||
dto.DivAnimation? divAnimation,
|
||||
List<DivAction> actions,
|
||||
List<DivAction> longtapActions,
|
||||
DivAnimation? divAnimation,
|
||||
) {
|
||||
final variables =
|
||||
DivKitProvider.watch<DivContext>(context)!.variableManager;
|
||||
|
||||
return variables.watch<DivTapActionModel>((context) async {
|
||||
List<DivAction> a = [];
|
||||
List<DivActionModel> a = [];
|
||||
for (final action in actions) {
|
||||
final rAction = await action.resolve(
|
||||
context: context,
|
||||
@@ -41,7 +40,7 @@ class DivTapActionModel with EquatableMixin {
|
||||
}
|
||||
}
|
||||
|
||||
List<DivAction> la = [];
|
||||
List<DivActionModel> la = [];
|
||||
for (final action in longtapActions) {
|
||||
final rAction = await action.resolve(
|
||||
context: context,
|
||||
@@ -73,8 +72,8 @@ class DivTapActionModel with EquatableMixin {
|
||||
|
||||
/// A wrapper for sending actions.
|
||||
class DivTapActionEmitter extends StatefulWidget {
|
||||
final List<dto.DivAction> actions;
|
||||
final List<dto.DivAction> longtapActions;
|
||||
final List<DivAction> actions;
|
||||
final List<DivAction> longtapActions;
|
||||
final DivAnimation? actionAnimation;
|
||||
|
||||
final Widget child;
|
||||
|
||||
@@ -16,8 +16,8 @@ class DivInputModel with EquatableMixin {
|
||||
final int? maxLines;
|
||||
final bool obscureText;
|
||||
final void Function()? onForwardFocus;
|
||||
final List<DivAction> onBlurActions;
|
||||
final List<DivAction> onFocusActions;
|
||||
final List<DivActionModel> onBlurActions;
|
||||
final List<DivActionModel> onFocusActions;
|
||||
final TextAlign textAlign;
|
||||
final TextAlignVertical textAlignVertical;
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ class _DivTextWidgetState extends State<DivTextWidget> {
|
||||
);
|
||||
if (divContext != null) {
|
||||
final actions = item.optionModel.actions;
|
||||
for (DivAction action in actions) {
|
||||
for (DivActionModel action in actions) {
|
||||
await action.execute(divContext);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import 'package:divkit/src/generated_sources/div_text.dart';
|
||||
import 'package:divkit/src/utils/converters.dart';
|
||||
import 'package:divkit/src/generated_sources/div_line_style.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart' as dto;
|
||||
import 'package:divkit/src/generated_sources/generated_sources.dart';
|
||||
import 'package:divkit/src/core/action/action_converter.dart';
|
||||
import 'package:divkit/src/core/action/action.dart';
|
||||
|
||||
@@ -105,8 +105,8 @@ class DivRangeHelper {
|
||||
context: context,
|
||||
);
|
||||
|
||||
List<DivAction> actions = [];
|
||||
List<dto.DivAction>? actionsDto = [...?divTextRange.actions];
|
||||
List<DivActionModel> actions = [];
|
||||
List<DivAction>? actionsDto = [...?divTextRange.actions];
|
||||
for (final action in actionsDto) {
|
||||
final resAction = await action.resolve(
|
||||
context: context,
|
||||
|
||||
@@ -22,7 +22,7 @@ class DivTextRangeModel with EquatableMixin {
|
||||
class DivTextRangeOptionModel with EquatableMixin {
|
||||
final TextStyle? style;
|
||||
|
||||
final List<DivAction> actions;
|
||||
final List<DivActionModel> actions;
|
||||
|
||||
final int? topOffset;
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'dart:math' as math;
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:divkit/src/core/action/action.dart' as resolved_action;
|
||||
import 'package:divkit/src/core/action/action.dart';
|
||||
import 'package:divkit/src/core/action/action_converter.dart';
|
||||
import 'package:divkit/src/core/expression/expression.dart';
|
||||
import 'package:divkit/src/core/expression/resolver.dart';
|
||||
@@ -683,10 +683,10 @@ extension PassDivBlendMode on DivBlendMode {
|
||||
}
|
||||
|
||||
extension PassActions on DivFocus {
|
||||
Future<List<resolved_action.DivAction>> resolveOnBlurActions({
|
||||
Future<List<DivActionModel>> resolveOnBlurActions({
|
||||
required DivVariableContext context,
|
||||
}) async {
|
||||
List<resolved_action.DivAction> result = [];
|
||||
List<DivActionModel> result = [];
|
||||
final blurAction = onBlur;
|
||||
if (blurAction != null) {
|
||||
for (final action in blurAction) {
|
||||
@@ -699,10 +699,10 @@ extension PassActions on DivFocus {
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<List<resolved_action.DivAction>> resolveOnFocusActions({
|
||||
Future<List<DivActionModel>> resolveOnFocusActions({
|
||||
required DivVariableContext context,
|
||||
}) async {
|
||||
List<resolved_action.DivAction> result = [];
|
||||
List<DivActionModel> result = [];
|
||||
final blurAction = onFocus;
|
||||
if (blurAction != null) {
|
||||
for (final action in blurAction) {
|
||||
|
||||
@@ -3,7 +3,7 @@ description: Open source SDUI framework for server-driven app updates, rapid UI
|
||||
homepage: https://github.com/divkit/divkit
|
||||
repository: https://github.com/divkit/divkit
|
||||
publish_to: 'https://dart-unpub.taxi.yandex-team.ru/'
|
||||
version: 0.3.0-pre
|
||||
version: 0.3.0-pre+1
|
||||
|
||||
environment:
|
||||
sdk: '>=2.17.0 <4.0.0'
|
||||
|
||||
@@ -12,7 +12,7 @@ void main() {
|
||||
[divWithId('some_div')],
|
||||
),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -30,7 +30,7 @@ void main() {
|
||||
});
|
||||
test('When replacing root div replaces div', () {
|
||||
final original = data(divWithId('div_to_replace'));
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -48,7 +48,7 @@ void main() {
|
||||
});
|
||||
test('When replacing div with different type replaces div', () {
|
||||
final original = data(divWithId('div_to_replace'));
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -67,7 +67,7 @@ void main() {
|
||||
// Why don't we allow the structure to be patched from the base?
|
||||
test('When deleting root div does nothing', () {
|
||||
final original = data(divWithId('div_to_delete'));
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_delete",
|
||||
@@ -85,7 +85,7 @@ void main() {
|
||||
});
|
||||
test('When replacing root div with multiple divs does nothing', () {
|
||||
final original = data(divWithId('div_to_replace'));
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -109,7 +109,7 @@ void main() {
|
||||
separator,
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -139,7 +139,7 @@ void main() {
|
||||
separator,
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -170,7 +170,7 @@ void main() {
|
||||
separator,
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_delete",
|
||||
@@ -200,7 +200,7 @@ void main() {
|
||||
separator,
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -235,7 +235,7 @@ void main() {
|
||||
separator,
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -266,7 +266,7 @@ void main() {
|
||||
separator,
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_delete",
|
||||
@@ -296,7 +296,7 @@ void main() {
|
||||
separator,
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -332,7 +332,7 @@ void main() {
|
||||
separator,
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -365,7 +365,7 @@ void main() {
|
||||
divWithId('div_to_replace'),
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -391,7 +391,7 @@ void main() {
|
||||
divWithId('div_to_delete'),
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_delete",
|
||||
@@ -418,7 +418,7 @@ void main() {
|
||||
divWithId('div_to_replace'),
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -440,7 +440,7 @@ void main() {
|
||||
divWithId('div_to_replace'),
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_replace",
|
||||
@@ -466,7 +466,7 @@ void main() {
|
||||
divWithId('div_to_delete'),
|
||||
]),
|
||||
);
|
||||
const patch = DivPatch(
|
||||
const patch = DivPatchModel(
|
||||
changes: [
|
||||
DivPatchChange(
|
||||
id: "div_to_delete",
|
||||
|
||||
@@ -14,7 +14,7 @@ void main() {
|
||||
);
|
||||
|
||||
test("clockwork can not sync init", () async {
|
||||
final timer = DivTimer(
|
||||
final timer = DivTimerModel(
|
||||
id: 'Test',
|
||||
duration: const ValueExpression(1000),
|
||||
endActions: [
|
||||
@@ -37,7 +37,7 @@ void main() {
|
||||
});
|
||||
|
||||
test("clockwork has async init", () async {
|
||||
final timer = DivTimer(
|
||||
final timer = DivTimerModel(
|
||||
id: 'Test',
|
||||
duration: const ValueExpression(1000),
|
||||
endActions: [
|
||||
|
||||
@@ -28,41 +28,41 @@ Map<String, dynamic> afterUpdateOuter(Map<String, dynamic>? update) => {
|
||||
...(update ?? {}),
|
||||
};
|
||||
|
||||
List<DivVariable> createNewVars() => [
|
||||
DivVariable(
|
||||
List<DivVariableModel> createNewVars() => [
|
||||
DivVariableModel(
|
||||
name: "string_var",
|
||||
value: "value",
|
||||
safeParse: safeParseStr,
|
||||
),
|
||||
DivVariable(
|
||||
DivVariableModel(
|
||||
name: "int_var",
|
||||
value: 100,
|
||||
safeParse: safeParseInt,
|
||||
),
|
||||
DivVariable(
|
||||
DivVariableModel(
|
||||
name: "number_var",
|
||||
value: 123.34,
|
||||
safeParse: safeParseDouble,
|
||||
),
|
||||
DivVariable(
|
||||
DivVariableModel(
|
||||
name: "bool_var",
|
||||
value: true,
|
||||
safeParse: safeParseBool,
|
||||
),
|
||||
DivVariable(
|
||||
DivVariableModel(
|
||||
name: "url_var",
|
||||
value: safeParseUri("https://test.url"),
|
||||
safeParse: safeParseUri,
|
||||
),
|
||||
];
|
||||
|
||||
List<DivVariable> createNewVarsOuter() => [
|
||||
DivVariable(
|
||||
List<DivVariableModel> createNewVarsOuter() => [
|
||||
DivVariableModel(
|
||||
name: "outer_string_var",
|
||||
value: "outer value",
|
||||
safeParse: safeParseStr,
|
||||
),
|
||||
DivVariable(
|
||||
DivVariableModel(
|
||||
name: "outer_int_var",
|
||||
value: 200,
|
||||
safeParse: safeParseInt,
|
||||
@@ -225,7 +225,7 @@ void main() {
|
||||
() async {
|
||||
final outerStorage = DefaultDivVariableStorage(
|
||||
variables: [
|
||||
DivVariable(
|
||||
DivVariableModel(
|
||||
name: "string_var",
|
||||
value: "outer value",
|
||||
safeParse: safeParseStr,
|
||||
@@ -318,7 +318,7 @@ void main() {
|
||||
|
||||
final variables = DefaultDivVariableManager(storage: storage);
|
||||
|
||||
outerStorage.put(DivVariable(name: "global", value: 0));
|
||||
outerStorage.put(DivVariableModel(name: "global", value: 0));
|
||||
|
||||
expect(afterUpdateOuter({"global": 0}), variables.context.current);
|
||||
|
||||
@@ -346,7 +346,8 @@ void main() {
|
||||
final first = await stream.first;
|
||||
expect(afterUpdateOuter(null), first);
|
||||
|
||||
outerStorage.update(DivVariable(name: "outer_int_var", value: 0));
|
||||
outerStorage
|
||||
.update(DivVariableModel(name: "outer_int_var", value: 0));
|
||||
|
||||
final second = await stream.first;
|
||||
expect(afterUpdateOuter({"outer_int_var": 0}), second);
|
||||
@@ -404,7 +405,7 @@ void main() {
|
||||
final first = await stream.first;
|
||||
expect(afterUpdateOuter(null), first);
|
||||
|
||||
outerStorage.put(DivVariable(name: "new_int_var", value: 0));
|
||||
outerStorage.put(DivVariableModel(name: "new_int_var", value: 0));
|
||||
|
||||
final second = await stream.first;
|
||||
expect(afterUpdateOuter({"new_int_var": 0}), second);
|
||||
|
||||
Reference in New Issue
Block a user