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;
 }