You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by pa...@apache.org on 2023/06/21 15:36:28 UTC
[beam] branch master updated: Fix not sharing code from a duplicate tab (#27127) (#27128)
This is an automated email from the ASF dual-hosted git repository.
pabloem pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/beam.git
The following commit(s) were added to refs/heads/master by this push:
new 5f7c967d074 Fix not sharing code from a duplicate tab (#27127) (#27128)
5f7c967d074 is described below
commit 5f7c967d07412fa335e8ae45aa020d17fb778eb7
Author: alexeyinkin <al...@akvelon.com>
AuthorDate: Wed Jun 21 19:36:22 2023 +0400
Fix not sharing code from a duplicate tab (#27127) (#27128)
---
.../components/share_dropdown/share_tabs/share_tabs.dart | 5 ++---
.../no_url_example_loading_descriptor.dart | 3 +++
.../lib/src/controllers/snippet_editing_controller.dart | 12 ++++++++++++
.../catalog_default_example_loading_descriptor.dart | 3 +++
.../content_example_loading_descriptor.dart | 3 +++
.../empty_example_loading_descriptor.dart | 3 +++
.../example_loading_descriptor.dart | 5 +++++
.../hive_example_loading_descriptor.dart | 3 +++
.../http_example_loading_descriptor.dart | 3 +++
.../standard_example_loading_descriptor.dart | 3 +++
.../user_shared_example_loading_descriptor.dart | 3 +++
.../test/src/controllers/example_loaders/common.dart | 5 +++++
.../example_loaders/example_loader_factory_test.dart | 3 +++
13 files changed, 51 insertions(+), 3 deletions(-)
diff --git a/playground/frontend/lib/modules/editor/components/share_dropdown/share_tabs/share_tabs.dart b/playground/frontend/lib/modules/editor/components/share_dropdown/share_tabs/share_tabs.dart
index 33e42342208..18ad44b4f58 100644
--- a/playground/frontend/lib/modules/editor/components/share_dropdown/share_tabs/share_tabs.dart
+++ b/playground/frontend/lib/modules/editor/components/share_dropdown/share_tabs/share_tabs.dart
@@ -48,9 +48,8 @@ class ShareTabs extends StatelessWidget {
builder: (context, playgroundController, _) {
final controller =
playgroundController.requireSnippetEditingController();
- final descriptor = controller.descriptor;
- if (descriptor == null || controller.isChanged) {
+ if (controller.shouldSaveBeforeSharing()) {
return SnippetSaveAndShareTabs(
eventSnippetContext: eventSnippetContext,
onError: onError,
@@ -61,7 +60,7 @@ class ShareTabs extends StatelessWidget {
}
return ExampleShareTabs(
- descriptor: descriptor,
+ descriptor: controller.descriptor!,
eventSnippetContext: eventSnippetContext,
sdk: controller.sdk,
tabController: tabController,
diff --git a/playground/frontend/lib/modules/examples/models/example_loading_descriptors/no_url_example_loading_descriptor.dart b/playground/frontend/lib/modules/examples/models/example_loading_descriptors/no_url_example_loading_descriptor.dart
index e315201f76a..b187352f89e 100644
--- a/playground/frontend/lib/modules/examples/models/example_loading_descriptors/no_url_example_loading_descriptor.dart
+++ b/playground/frontend/lib/modules/examples/models/example_loading_descriptors/no_url_example_loading_descriptor.dart
@@ -31,4 +31,7 @@ class NoUrlExampleLoadingDescriptor extends ExampleLoadingDescriptor {
@override
Map<String, dynamic> toJson() => {};
+
+ @override
+ bool get isSerializableToUrl => true;
}
diff --git a/playground/frontend/playground_components/lib/src/controllers/snippet_editing_controller.dart b/playground/frontend/playground_components/lib/src/controllers/snippet_editing_controller.dart
index 92d53197562..090ab1018f1 100644
--- a/playground/frontend/playground_components/lib/src/controllers/snippet_editing_controller.dart
+++ b/playground/frontend/playground_components/lib/src/controllers/snippet_editing_controller.dart
@@ -265,4 +265,16 @@ class SnippetEditingController extends ChangeNotifier {
snippet: descriptor.token,
);
}
+
+ bool shouldSaveBeforeSharing() {
+ if (!(descriptor?.isSerializableToUrl ?? false)) {
+ return true;
+ }
+
+ if (isChanged) {
+ return true;
+ }
+
+ return false;
+ }
}
diff --git a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/catalog_default_example_loading_descriptor.dart b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/catalog_default_example_loading_descriptor.dart
index 4eb63ba3eb6..383373e9676 100644
--- a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/catalog_default_example_loading_descriptor.dart
+++ b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/catalog_default_example_loading_descriptor.dart
@@ -63,4 +63,7 @@ class CatalogDefaultExampleLoadingDescriptor extends ExampleLoadingDescriptor {
viewOptions: ExampleViewOptions.fromShortMap(map),
);
}
+
+ @override
+ bool get isSerializableToUrl => true;
}
diff --git a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/content_example_loading_descriptor.dart b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/content_example_loading_descriptor.dart
index a4415935c08..3ffab8577b2 100644
--- a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/content_example_loading_descriptor.dart
+++ b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/content_example_loading_descriptor.dart
@@ -116,4 +116,7 @@ class ContentExampleLoadingDescriptor extends ExampleLoadingDescriptor {
'sdk': sdk.id,
...viewOptions.toShortMap(),
};
+
+ @override
+ bool get isSerializableToUrl => false;
}
diff --git a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/empty_example_loading_descriptor.dart b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/empty_example_loading_descriptor.dart
index f17d991bc42..f92bd176293 100644
--- a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/empty_example_loading_descriptor.dart
+++ b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/empty_example_loading_descriptor.dart
@@ -53,4 +53,7 @@ class EmptyExampleLoadingDescriptor extends ExampleLoadingDescriptor {
sdk: Sdk.parseOrCreate(map['sdk']),
);
}
+
+ @override
+ bool get isSerializableToUrl => true;
}
diff --git a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/example_loading_descriptor.dart b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/example_loading_descriptor.dart
index 5fbbf54375d..eb48aee667a 100644
--- a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/example_loading_descriptor.dart
+++ b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/example_loading_descriptor.dart
@@ -40,4 +40,9 @@ abstract class ExampleLoadingDescriptor with EquatableMixin {
ExampleLoadingDescriptor copyWithoutViewOptions();
Map<String, dynamic> toJson();
+
+ /// Whether this descriptor can be serialized to a URL.
+ ///
+ /// If false, the code must be saved at the backend before sharing.
+ bool get isSerializableToUrl;
}
diff --git a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/hive_example_loading_descriptor.dart b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/hive_example_loading_descriptor.dart
index f69a9e50591..9b729a527d3 100644
--- a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/hive_example_loading_descriptor.dart
+++ b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/hive_example_loading_descriptor.dart
@@ -75,4 +75,7 @@ class HiveExampleLoadingDescriptor extends ExampleLoadingDescriptor {
viewOptions: ExampleViewOptions.fromShortMap(map),
);
}
+
+ @override
+ bool get isSerializableToUrl => false;
}
diff --git a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/http_example_loading_descriptor.dart b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/http_example_loading_descriptor.dart
index dfc45c7162c..323a7475c71 100644
--- a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/http_example_loading_descriptor.dart
+++ b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/http_example_loading_descriptor.dart
@@ -79,4 +79,7 @@ class HttpExampleLoadingDescriptor extends ExampleLoadingDescriptor {
viewOptions: ExampleViewOptions.fromShortMap(map),
);
}
+
+ @override
+ bool get isSerializableToUrl => true;
}
diff --git a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/standard_example_loading_descriptor.dart b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/standard_example_loading_descriptor.dart
index 72d7a539dd4..aaca54e3f41 100644
--- a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/standard_example_loading_descriptor.dart
+++ b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/standard_example_loading_descriptor.dart
@@ -72,4 +72,7 @@ class StandardExampleLoadingDescriptor extends ExampleLoadingDescriptor {
viewOptions: ExampleViewOptions.fromShortMap(map),
);
}
+
+ @override
+ bool get isSerializableToUrl => true;
}
diff --git a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/user_shared_example_loading_descriptor.dart b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/user_shared_example_loading_descriptor.dart
index 29984d3caa0..4f757e8ec87 100644
--- a/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/user_shared_example_loading_descriptor.dart
+++ b/playground/frontend/playground_components/lib/src/models/example_loading_descriptors/user_shared_example_loading_descriptor.dart
@@ -73,4 +73,7 @@ class UserSharedExampleLoadingDescriptor extends ExampleLoadingDescriptor {
viewOptions: ExampleViewOptions.fromShortMap(map),
);
}
+
+ @override
+ bool get isSerializableToUrl => true;
}
diff --git a/playground/frontend/playground_components/test/src/controllers/example_loaders/common.dart b/playground/frontend/playground_components/test/src/controllers/example_loaders/common.dart
index 42c0eec3010..714bea3c3c9 100644
--- a/playground/frontend/playground_components/test/src/controllers/example_loaders/common.dart
+++ b/playground/frontend/playground_components/test/src/controllers/example_loaders/common.dart
@@ -21,7 +21,9 @@ import 'package:playground_components/src/controllers/example_loaders/example_lo
import 'package:playground_components/src/controllers/example_loaders/example_loader_factory.dart';
class TestExampleLoadingDescriptor extends ExampleLoadingDescriptor {
+ @override
final Sdk? sdk;
+
final bool succeed;
const TestExampleLoadingDescriptor(
@@ -37,6 +39,9 @@ class TestExampleLoadingDescriptor extends ExampleLoadingDescriptor {
@override
Map<String, dynamic> toJson() => throw UnimplementedError();
+
+ @override
+ bool get isSerializableToUrl => true;
}
class TestExampleLoader extends ExampleLoader {
diff --git a/playground/frontend/playground_components/test/src/controllers/example_loaders/example_loader_factory_test.dart b/playground/frontend/playground_components/test/src/controllers/example_loaders/example_loader_factory_test.dart
index a0d046b1aa9..4d698333cec 100644
--- a/playground/frontend/playground_components/test/src/controllers/example_loaders/example_loader_factory_test.dart
+++ b/playground/frontend/playground_components/test/src/controllers/example_loaders/example_loader_factory_test.dart
@@ -60,4 +60,7 @@ class _UnregisteredDescriptor extends ExampleLoadingDescriptor {
@override
Map<String, dynamic> toJson() => throw UnimplementedError();
+
+ @override
+ bool get isSerializableToUrl => true;
}