diff --git a/src/main/java/org/sagebionetworks/web/client/FeatureFlagConfig.java b/src/main/java/org/sagebionetworks/web/client/FeatureFlagConfig.java index 20450c145c..c7f5b7c5e0 100644 --- a/src/main/java/org/sagebionetworks/web/client/FeatureFlagConfig.java +++ b/src/main/java/org/sagebionetworks/web/client/FeatureFlagConfig.java @@ -3,7 +3,6 @@ import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONParser; import com.google.gwt.json.client.JSONValue; -import org.sagebionetworks.web.client.cache.SessionStorage; import org.sagebionetworks.web.client.cookie.CookieProvider; public class FeatureFlagConfig { @@ -26,11 +25,11 @@ public FeatureFlagConfig(JSONObject config, CookieProvider cookieProvider) { this.cookieProvider = cookieProvider; } - public boolean isFeatureEnabled(String featureName) { + public boolean isFeatureEnabled(FeatureFlagKey feature) { try { return ( DisplayUtils.isInTestWebsite(cookieProvider) || - config.get(featureName).isBoolean().booleanValue() + config.get(feature.getKey()).isBoolean().booleanValue() ); } catch (Exception e) { return DisplayUtils.isInTestWebsite(cookieProvider); diff --git a/src/main/java/org/sagebionetworks/web/client/FeatureFlagKey.java b/src/main/java/org/sagebionetworks/web/client/FeatureFlagKey.java index e61f7aba26..f2882053b0 100644 --- a/src/main/java/org/sagebionetworks/web/client/FeatureFlagKey.java +++ b/src/main/java/org/sagebionetworks/web/client/FeatureFlagKey.java @@ -11,7 +11,10 @@ public enum FeatureFlagKey { CUSTOM_STORAGE_LOCATION_SETTINGS("CUSTOM_STORAGE_LOCATION_SETTINGS"), CHALLENGE_SUBMISSION_SETTINGS("CHALLENGE_SUBMISSION_SETTINGS"), SRC_BASED_AR_MODAL_WIZARD("SRC_BASED_AR_MODAL_WIZARD"), - HOMEPAGE_V2("HOMEPAGE_V2"); + HOMEPAGE_V2("HOMEPAGE_V2"), + REACT_ENTITY_ACL_EDITOR("REACT_ENTITY_ACL_EDITOR"), + // Last flag is used only for tests + TEST_FLAG_ONLY("TEST_FLAG_ONLY"); private final String key; diff --git a/src/main/java/org/sagebionetworks/web/client/PortalGinInjector.java b/src/main/java/org/sagebionetworks/web/client/PortalGinInjector.java index b53bd9aca5..158de35b01 100644 --- a/src/main/java/org/sagebionetworks/web/client/PortalGinInjector.java +++ b/src/main/java/org/sagebionetworks/web/client/PortalGinInjector.java @@ -193,6 +193,8 @@ import org.sagebionetworks.web.client.widget.refresh.ReplyCountAlert; import org.sagebionetworks.web.client.widget.sharing.AccessControlListModalWidget; import org.sagebionetworks.web.client.widget.sharing.AclAddPeoplePanel; +import org.sagebionetworks.web.client.widget.sharing.EntityAccessControlListModalWidget; +import org.sagebionetworks.web.client.widget.sharing.EntityAccessControlListModalWidgetImpl; import org.sagebionetworks.web.client.widget.sharing.SharingPermissionsGrid; import org.sagebionetworks.web.client.widget.statistics.StatisticsPlotWidget; import org.sagebionetworks.web.client.widget.table.TableEntityListGroupItem; @@ -692,6 +694,8 @@ public interface PortalGinInjector extends Ginjector { AccessControlListModalWidget getAccessControlListModalWidget(); + EntityAccessControlListModalWidget getEntityAccessControlListModalWidget(); + RenameEntityModalWidget getRenameEntityModalWidget(); EditFileMetadataModalWidget getEditFileMetadataModalWidget(); diff --git a/src/main/java/org/sagebionetworks/web/client/PortalGinModule.java b/src/main/java/org/sagebionetworks/web/client/PortalGinModule.java index db7ba706e6..25277db329 100644 --- a/src/main/java/org/sagebionetworks/web/client/PortalGinModule.java +++ b/src/main/java/org/sagebionetworks/web/client/PortalGinModule.java @@ -334,6 +334,8 @@ protected void configure() { .to(AccessControlListEditorViewImpl.class); bind(AccessControlListModalWidget.class) .to(AccessControlListModalWidgetImpl.class); + bind(EntityAccessControlListModalWidget.class) + .to(EntityAccessControlListModalWidgetImpl.class); bind(AccessControlListModalWidgetView.class) .to(AccessControlListModalWidgetViewImpl.class); diff --git a/src/main/java/org/sagebionetworks/web/client/jsinterop/DownloadCartPageProps.java b/src/main/java/org/sagebionetworks/web/client/jsinterop/DownloadCartPageProps.java deleted file mode 100644 index 94be51584b..0000000000 --- a/src/main/java/org/sagebionetworks/web/client/jsinterop/DownloadCartPageProps.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.sagebionetworks.web.client.jsinterop; - -import jsinterop.annotations.JsFunction; -import jsinterop.annotations.JsNullable; -import jsinterop.annotations.JsOverlay; -import jsinterop.annotations.JsPackage; -import jsinterop.annotations.JsType; - -@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object") -public class DownloadCartPageProps extends ReactComponentProps { - - @FunctionalInterface - @JsFunction - public interface OnViewSharingSettingsHandler { - void onViewSharingSettingsClicked(String benefactorEntityId); - } - - @JsNullable - OnViewSharingSettingsHandler onViewSharingSettingsClicked; - - @JsOverlay - public static DownloadCartPageProps create( - OnViewSharingSettingsHandler onViewSharingSettingsClicked - ) { - DownloadCartPageProps props = new DownloadCartPageProps(); - props.onViewSharingSettingsClicked = onViewSharingSettingsClicked; - return props; - } -} diff --git a/src/main/java/org/sagebionetworks/web/client/jsinterop/EntityAclEditorModalProps.java b/src/main/java/org/sagebionetworks/web/client/jsinterop/EntityAclEditorModalProps.java new file mode 100644 index 0000000000..f51b48428d --- /dev/null +++ b/src/main/java/org/sagebionetworks/web/client/jsinterop/EntityAclEditorModalProps.java @@ -0,0 +1,36 @@ +package org.sagebionetworks.web.client.jsinterop; + +import jsinterop.annotations.JsFunction; +import jsinterop.annotations.JsOverlay; +import jsinterop.annotations.JsPackage; +import jsinterop.annotations.JsType; + +@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Object") +public class EntityAclEditorModalProps extends ReactComponentProps { + + @JsFunction + public interface Callback { + void run(); + } + + public String entityId; + public boolean open; + public Callback onUpdateSuccess; + public Callback onClose; + + @JsOverlay + public static EntityAclEditorModalProps create( + String entityId, + boolean open, + Callback onUpdateSuccess, + Callback onClose + ) { + EntityAclEditorModalProps props = new EntityAclEditorModalProps(); + + props.entityId = entityId; + props.open = open; + props.onUpdateSuccess = onUpdateSuccess; + props.onClose = onClose; + return props; + } +} diff --git a/src/main/java/org/sagebionetworks/web/client/jsinterop/QueryWrapperPlotNavProps.java b/src/main/java/org/sagebionetworks/web/client/jsinterop/QueryWrapperPlotNavProps.java index 04a29a41f8..38b5551921 100644 --- a/src/main/java/org/sagebionetworks/web/client/jsinterop/QueryWrapperPlotNavProps.java +++ b/src/main/java/org/sagebionetworks/web/client/jsinterop/QueryWrapperPlotNavProps.java @@ -21,12 +21,6 @@ public interface OnQueryResultBundleCallback { void run(String newQueryResultBundleJson); } - @FunctionalInterface - @JsFunction - public interface OnViewSharingSettingsHandler { - void onViewSharingSettingsClicked(String benefactorEntityId); - } - String name; String initQueryJson; String sql; @@ -37,9 +31,6 @@ public interface OnViewSharingSettingsHandler { @JsNullable OnQueryResultBundleCallback onQueryResultBundleChange; - @JsNullable - OnViewSharingSettingsHandler onViewSharingSettingsClicked; - @JsNullable boolean shouldDeepLink; @@ -63,7 +54,6 @@ public static QueryWrapperPlotNavProps create( String initQueryJson, OnQueryCallback onQueryChange, OnQueryResultBundleCallback onQueryResultBundleChange, - OnViewSharingSettingsHandler onViewSharingSettingsClicked, boolean hideSqlEditorControl ) { QueryWrapperPlotNavProps props = new QueryWrapperPlotNavProps(); @@ -72,7 +62,6 @@ public static QueryWrapperPlotNavProps create( props.hideSqlEditorControl = hideSqlEditorControl; props.onQueryChange = onQueryChange; props.onQueryResultBundleChange = onQueryResultBundleChange; - props.onViewSharingSettingsClicked = onViewSharingSettingsClicked; props.tableConfiguration = SynapseTableProps.create(); props.shouldDeepLink = false; props.name = "Items"; diff --git a/src/main/java/org/sagebionetworks/web/client/jsinterop/SRC.java b/src/main/java/org/sagebionetworks/web/client/jsinterop/SRC.java index d09314e1e7..bb2a73e13b 100644 --- a/src/main/java/org/sagebionetworks/web/client/jsinterop/SRC.java +++ b/src/main/java/org/sagebionetworks/web/client/jsinterop/SRC.java @@ -24,7 +24,7 @@ public static class SynapseComponents { public static ReactComponentType< EvaluationEditorPageProps > EvaluationEditorPage; - public static ReactComponentType DownloadCartPage; + public static ReactComponentType DownloadCartPage; public static ReactComponentType< DownloadConfirmationProps > DownloadConfirmation; @@ -118,6 +118,9 @@ public static class SynapseComponents { public static ReactComponentType< CookieNotificationProps > CookiesNotification; + public static ReactComponentType< + EntityAclEditorModalProps + > EntityAclEditorModal; /** * Pushes a global toast message. In SWC, you should use {@link DisplayUtils#notify}, rather than calling this method directly. diff --git a/src/main/java/org/sagebionetworks/web/client/presenter/DownloadCartPresenter.java b/src/main/java/org/sagebionetworks/web/client/presenter/DownloadCartPresenter.java index baa2333bf6..70171bfc0b 100644 --- a/src/main/java/org/sagebionetworks/web/client/presenter/DownloadCartPresenter.java +++ b/src/main/java/org/sagebionetworks/web/client/presenter/DownloadCartPresenter.java @@ -2,36 +2,19 @@ import com.google.gwt.activity.shared.AbstractActivity; import com.google.gwt.event.shared.EventBus; -import com.google.gwt.user.client.rpc.AsyncCallback; import com.google.gwt.user.client.ui.AcceptsOneWidget; import com.google.inject.Inject; -import org.sagebionetworks.repo.model.Entity; -import org.sagebionetworks.web.client.PopupUtilsView; -import org.sagebionetworks.web.client.PortalGinInjector; import org.sagebionetworks.web.client.view.DownloadCartPageView; -import org.sagebionetworks.web.client.widget.sharing.AccessControlListModalWidget; public class DownloadCartPresenter extends AbstractActivity - implements - DownloadCartPageView.Presenter, - Presenter { + implements Presenter { - private DownloadCartPageView view; - private AccessControlListModalWidget aclModal; - private PortalGinInjector ginInjector; - private PopupUtilsView popupUtils; + private final DownloadCartPageView view; @Inject - public DownloadCartPresenter( - DownloadCartPageView view, - PortalGinInjector ginInjector, - PopupUtilsView popupUtils - ) { + public DownloadCartPresenter(DownloadCartPageView view) { this.view = view; - view.setPresenter(this); - this.ginInjector = ginInjector; - this.popupUtils = popupUtils; } @Override @@ -45,34 +28,4 @@ public void setPlace( ) { view.render(); } - - private AccessControlListModalWidget getAccessControlListModalWidget() { - if (aclModal == null) { - aclModal = ginInjector.getAccessControlListModalWidget(); - } - return aclModal; - } - - @Override - public void onViewSharingSettingsClicked(String benefactorEntityId) { - ginInjector - .getSynapseJavascriptClient() - .getEntity( - benefactorEntityId, - new AsyncCallback() { - @Override - public void onSuccess(Entity entity) { - boolean canChangePermission = false; - getAccessControlListModalWidget() - .configure(entity, canChangePermission); - getAccessControlListModalWidget().showSharing(() -> {}); - } - - @Override - public void onFailure(Throwable caught) { - popupUtils.showErrorMessage(caught.getMessage()); - } - } - ); - } } diff --git a/src/main/java/org/sagebionetworks/web/client/presenter/TeamPresenter.java b/src/main/java/org/sagebionetworks/web/client/presenter/TeamPresenter.java index 583efc5295..eaf96fbf52 100644 --- a/src/main/java/org/sagebionetworks/web/client/presenter/TeamPresenter.java +++ b/src/main/java/org/sagebionetworks/web/client/presenter/TeamPresenter.java @@ -109,7 +109,7 @@ public TeamPresenter( view.setMemberListWidget(memberListWidget.asWidget()); view.setMap(map.asWidget()); view.setShowMapVisible( - featureFlagConfig.isFeatureEnabled(FeatureFlagKey.GOOGLE_MAP.getKey()) + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.GOOGLE_MAP) ); inviteWidget.setRefreshCallback(refreshCallback); } diff --git a/src/main/java/org/sagebionetworks/web/client/view/DownloadCartPageView.java b/src/main/java/org/sagebionetworks/web/client/view/DownloadCartPageView.java index adec6a1716..835e92070d 100644 --- a/src/main/java/org/sagebionetworks/web/client/view/DownloadCartPageView.java +++ b/src/main/java/org/sagebionetworks/web/client/view/DownloadCartPageView.java @@ -7,10 +7,4 @@ public interface DownloadCartPageView extends IsWidget { * Renders the view */ public void render(); - - public void setPresenter(Presenter presenter); - - public interface Presenter { - void onViewSharingSettingsClicked(String benefactorEntityId); - } } diff --git a/src/main/java/org/sagebionetworks/web/client/view/DownloadCartPageViewImpl.java b/src/main/java/org/sagebionetworks/web/client/view/DownloadCartPageViewImpl.java index 99542a4e1c..dce475aa73 100644 --- a/src/main/java/org/sagebionetworks/web/client/view/DownloadCartPageViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/view/DownloadCartPageViewImpl.java @@ -4,7 +4,6 @@ import com.google.gwt.user.client.ui.Widget; import com.google.inject.Inject; import org.sagebionetworks.web.client.context.SynapseReactClientFullContextPropsProvider; -import org.sagebionetworks.web.client.jsinterop.DownloadCartPageProps; import org.sagebionetworks.web.client.jsinterop.React; import org.sagebionetworks.web.client.jsinterop.ReactNode; import org.sagebionetworks.web.client.jsinterop.SRC; @@ -18,11 +17,9 @@ public class DownloadCartPageViewImpl implements DownloadCartPageView { private Header headerWidget; private SynapseReactClientFullContextPropsProvider propsProvider; - private Presenter presenter; @Inject public DownloadCartPageViewImpl( - AuthenticationController authenticationController, Header headerWidget, SynapseReactClientFullContextPropsProvider propsProvider ) { @@ -31,21 +28,13 @@ public DownloadCartPageViewImpl( this.propsProvider = propsProvider; } - @Override - public void setPresenter(Presenter presenter) { - this.presenter = presenter; - } - @Override public void render() { Window.scrollTo(0, 0); // scroll user to top of page headerWidget.configure(); - DownloadCartPageProps props = DownloadCartPageProps.create(entityId -> { - presenter.onViewSharingSettingsClicked(entityId); - }); ReactNode component = React.createElementWithSynapseContext( SRC.SynapseComponents.DownloadCartPage, - props, + null, propsProvider.getJsInteropContextProps() ); container.render(component); diff --git a/src/main/java/org/sagebionetworks/web/client/view/TeamViewImpl.java b/src/main/java/org/sagebionetworks/web/client/view/TeamViewImpl.java index 0b703f05e3..592ccb65ad 100644 --- a/src/main/java/org/sagebionetworks/web/client/view/TeamViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/view/TeamViewImpl.java @@ -233,7 +233,7 @@ public void showMemberMenuItems() { // TODO: remove next line to take out of alpha mode teamProjectsItem.setVisible( featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.VIEW_ASSOCIATED_PROJECTS.getKey() + FeatureFlagKey.VIEW_ASSOCIATED_PROJECTS ) ); @@ -248,7 +248,7 @@ public void showAdminMenuItems() { // TODO: remove next line to take out of alpha mode teamProjectsItem.setVisible( featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.VIEW_ASSOCIATED_PROJECTS.getKey() + FeatureFlagKey.VIEW_ASSOCIATED_PROJECTS ) ); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/CreateAccessRequirementButton.java b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/CreateAccessRequirementButton.java index 3d7b53cc70..7a3445228c 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/CreateAccessRequirementButton.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/accessrequirements/CreateAccessRequirementButton.java @@ -98,7 +98,7 @@ public void invoke(Boolean isACTMember) { public void onClick() { if ( featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD.getKey() + FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD ) ) { useSrcWizard(); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/docker/DockerRepoWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/docker/DockerRepoWidget.java index 8c703330d0..048b93a405 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/docker/DockerRepoWidget.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/docker/DockerRepoWidget.java @@ -86,7 +86,7 @@ public void configure(EntityBundle bundle, EntityActionMenu actionMenu) { dockerCommitListWidget.configure(entity.getId(), false); view.setProvenanceWidgetVisible( featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.PROVENANCE_DOCKER_IMAGES.getKey() + FeatureFlagKey.PROVENANCE_DOCKER_IMAGES ) ); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/MarkdownEditorWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/MarkdownEditorWidget.java index 8db550e19f..023dc323a9 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/MarkdownEditorWidget.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/MarkdownEditorWidget.java @@ -155,9 +155,7 @@ public void configure(String markdown) { // clear view state view.clear(); view.setAlphaCommandsVisible( - featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.ADD_WIKI_WIDGETS.getKey() - ) + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.ADD_WIKI_WIDGETS) ); isACTMemberAsyncHandler.isACTMember(isACTMember -> view.setACTCommandsVisible(isACTMember) diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/RenameEntityModalWidgetImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/RenameEntityModalWidgetImpl.java index d35f24dd0b..2a929ec73e 100755 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/RenameEntityModalWidgetImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/RenameEntityModalWidgetImpl.java @@ -141,9 +141,7 @@ public void onRename(Entity toRename, Callback handler) { // Only surfacing description for Table types (behind feature flag for now) if ( toRename instanceof Table && - featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) { prompts.add("Description"); initialValues.add(toRename.getDescription()); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/SharingAndDataUseConditionWidgetViewImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/SharingAndDataUseConditionWidgetViewImpl.java index ed7eec3da1..e4789de880 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/SharingAndDataUseConditionWidgetViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/SharingAndDataUseConditionWidgetViewImpl.java @@ -17,7 +17,6 @@ import org.sagebionetworks.web.client.cookie.CookieProvider; import org.sagebionetworks.web.client.widget.HelpWidget; import org.sagebionetworks.web.client.widget.entity.restriction.v2.RestrictionWidget; -import org.sagebionetworks.web.client.widget.sharing.AccessControlListModalWidget; import org.sagebionetworks.web.client.widget.sharing.PublicPrivateBadge; import org.sagebionetworks.web.shared.WebConstants; @@ -31,7 +30,6 @@ public class SharingAndDataUseConditionWidgetViewImpl FlowPanel container; PublicPrivateBadge publicPrivateBadge; RestrictionWidget restrictionWidgetV2; - AccessControlListModalWidget accessControlListModalWidget; CookieProvider cookies; @Inject @@ -40,7 +38,6 @@ public SharingAndDataUseConditionWidgetViewImpl( GlobalApplicationState globalApplicationState, IconsImageBundle iconsImageBundle, PublicPrivateBadge publicPrivateBadge, - AccessControlListModalWidget accessControlListModalWidget, RestrictionWidget restrictionWidgetV2, CookieProvider cookies ) { @@ -52,7 +49,6 @@ public SharingAndDataUseConditionWidgetViewImpl( restrictionWidgetV2.setShowCurrentAccessUI(false); restrictionWidgetV2.showFolderRestrictionUI(); this.cookies = cookies; - this.accessControlListModalWidget = accessControlListModalWidget; this.addStyleName("sharingAndDataUseConditions"); container = new FlowPanel(); container.addStyleName("margin-top-left-10"); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/WikiPageWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/WikiPageWidget.java index bd700e5b0d..189079359f 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/WikiPageWidget.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/WikiPageWidget.java @@ -169,9 +169,7 @@ public void noWikiFound() {} } reloadWikiPage(); view.setWikiHistoryDiffToolButtonVisible( - featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.WIKI_DIFF_TOOL.getKey() - ), + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.WIKI_DIFF_TOOL), wikiKey ); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/controller/EntityActionControllerImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/controller/EntityActionControllerImpl.java index da207a184a..00e6a1531c 100755 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/controller/EntityActionControllerImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/controller/EntityActionControllerImpl.java @@ -127,6 +127,8 @@ import org.sagebionetworks.web.client.widget.entity.tabs.ChallengeTab; import org.sagebionetworks.web.client.widget.evaluation.EvaluationSubmitter; import org.sagebionetworks.web.client.widget.sharing.AccessControlListModalWidget; +import org.sagebionetworks.web.client.widget.sharing.AccessControlListModalWidgetImpl; +import org.sagebionetworks.web.client.widget.sharing.EntityAccessControlListModalWidget; import org.sagebionetworks.web.client.widget.statistics.StatisticsPlotWidget; import org.sagebionetworks.web.client.widget.table.modal.fileview.CreateTableViewWizard; import org.sagebionetworks.web.client.widget.table.modal.fileview.TableType; @@ -249,6 +251,7 @@ public class EntityActionControllerImpl FileClientsHelp fileClientsHelp; AuthenticationController authenticationController; AccessControlListModalWidget accessControlListModalWidget; + EntityAccessControlListModalWidget entityAccessControlListModalWidget; RenameEntityModalWidget renameEntityModalWidget; EntityFinderWidget.Builder entityFinderBuilder; EvaluationSubmitter submitter; @@ -449,6 +452,15 @@ private AccessControlListModalWidget getAccessControlListModalWidget() { return accessControlListModalWidget; } + private EntityAccessControlListModalWidget getEntityAccessControlListModalWidget() { + if (entityAccessControlListModalWidget == null) { + entityAccessControlListModalWidget = + ginInjector.getEntityAccessControlListModalWidget(); + this.view.addWidget(entityAccessControlListModalWidget); + } + return entityAccessControlListModalWidget; + } + private CreateTableViewWizard getCreateTableViewWizard() { if (createTableViewWizard == null) { createTableViewWizard = ginInjector.getCreateTableViewWizard(); @@ -1599,9 +1611,7 @@ private void configureRenameAction() { String text = RENAME_PREFIX + entityTypeDisplay; if ( entityBundle.getEntity() instanceof Table && - featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) { text = EDIT_NAME_AND_DESCRIPTION; } @@ -2923,12 +2933,18 @@ public Place createDeletePlace() { @Override public void onShare() { - getAccessControlListModalWidget() - .configure(entity, permissions.getCanChangePermissions()); - this.getAccessControlListModalWidget() - .showSharing(() -> { - fireEntityUpdatedEvent(); - }); + if ( + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.REACT_ENTITY_ACL_EDITOR) + ) { + getEntityAccessControlListModalWidget() + .configure(entity.getId(), this::fireEntityUpdatedEvent); + getEntityAccessControlListModalWidget().setOpen(true); + } else { + getAccessControlListModalWidget() + .configure(entity, permissions.getCanChangePermissions()); + this.getAccessControlListModalWidget() + .showSharing(this::fireEntityUpdatedEvent); + } } @Override diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/controller/StorageLocationWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/controller/StorageLocationWidget.java index 56cad110fd..f39410dfe2 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/controller/StorageLocationWidget.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/controller/StorageLocationWidget.java @@ -73,7 +73,7 @@ public void configure(EntityBundle entityBundle) { getStorageLocationSetting(); getMyLocationSettingBanners(); boolean isInAlpha = featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.CUSTOM_STORAGE_LOCATION_SETTINGS.getKey() + FeatureFlagKey.CUSTOM_STORAGE_LOCATION_SETTINGS ); view.setExternalObjectStoreVisible(isInAlpha); } @@ -112,7 +112,7 @@ public void onFailure(Throwable caught) { public void onSuccess(UploadDestination uploadDestination) { // if null, then still show the default UI boolean isInAlpha = featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.CUSTOM_STORAGE_LOCATION_SETTINGS.getKey() + FeatureFlagKey.CUSTOM_STORAGE_LOCATION_SETTINGS ); view.setS3StsVisible(isInAlpha); Long defaultStorageId = Long.parseLong( diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/editor/EvaluationSubmissionConfigViewImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/editor/EvaluationSubmissionConfigViewImpl.java index e0f65899ff..ee5cd4e647 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/editor/EvaluationSubmissionConfigViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/editor/EvaluationSubmissionConfigViewImpl.java @@ -193,7 +193,7 @@ public void initView() { public void configure(WikiPageKey wikiKey, Map descriptor) { submissionTypeOptions.setVisible( featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.CHALLENGE_SUBMISSION_SETTINGS.getKey() + FeatureFlagKey.CHALLENGE_SUBMISSION_SETTINGS ) ); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/registration/WidgetRegistrarImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/registration/WidgetRegistrarImpl.java index e08f302c4c..cd3cfe3c4f 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/registration/WidgetRegistrarImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/registration/WidgetRegistrarImpl.java @@ -332,7 +332,7 @@ public WidgetRendererPresenter getWidgetRendererForWidgetDescriptorAfterLazyLoad } else if (contentTypeKey.equals(PROVENANCE_CONTENT_TYPE)) { if ( featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.PROVENANCE_V2_VISUALIZATION.getKey() + FeatureFlagKey.PROVENANCE_V2_VISUALIZATION ) ) { presenter = ginInjector.getProvenanceRendererV2(); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/tabs/AbstractTablesTab.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/tabs/AbstractTablesTab.java index cc89c6d480..0e558502e1 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/tabs/AbstractTablesTab.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/tabs/AbstractTablesTab.java @@ -321,7 +321,7 @@ protected void updateVersionAndAreaToken( ); if ( featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.PROVENANCE_V2_VISUALIZATION.getKey() + FeatureFlagKey.PROVENANCE_V2_VISUALIZATION ) ) { ProvenanceWidget provWidget = ginInjector.getProvenanceRendererV2(); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/entity/tabs/FilesTab.java b/src/main/java/org/sagebionetworks/web/client/widget/entity/tabs/FilesTab.java index ed9966cdbc..6326b028f1 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/entity/tabs/FilesTab.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/entity/tabs/FilesTab.java @@ -321,7 +321,7 @@ public void setTargetBundle(EntityBundle bundle, final Long versionNumber) { if (isFile) { if ( featureFlagConfig.isFeatureEnabled( - FeatureFlagKey.PROVENANCE_V2_VISUALIZATION.getKey() + FeatureFlagKey.PROVENANCE_V2_VISUALIZATION ) ) { provWidget = ginInjector.getProvenanceRendererV2(); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/sharing/EntityAccessControlListModalWidget.java b/src/main/java/org/sagebionetworks/web/client/widget/sharing/EntityAccessControlListModalWidget.java new file mode 100644 index 0000000000..8ad84f0636 --- /dev/null +++ b/src/main/java/org/sagebionetworks/web/client/widget/sharing/EntityAccessControlListModalWidget.java @@ -0,0 +1,16 @@ +package org.sagebionetworks.web.client.widget.sharing; + +import com.google.gwt.user.client.ui.IsWidget; +import com.google.gwt.user.client.ui.Widget; +import org.sagebionetworks.repo.model.Entity; +import org.sagebionetworks.web.client.jsinterop.EntityAclEditorModalProps; +import org.sagebionetworks.web.client.utils.Callback; + +public interface EntityAccessControlListModalWidget extends IsWidget { + void configure( + String entityId, + EntityAclEditorModalProps.Callback onUpdateSuccess + ); + + void setOpen(boolean open); +} diff --git a/src/main/java/org/sagebionetworks/web/client/widget/sharing/EntityAccessControlListModalWidgetImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/sharing/EntityAccessControlListModalWidgetImpl.java new file mode 100644 index 0000000000..1248e5ba48 --- /dev/null +++ b/src/main/java/org/sagebionetworks/web/client/widget/sharing/EntityAccessControlListModalWidgetImpl.java @@ -0,0 +1,64 @@ +package org.sagebionetworks.web.client.widget.sharing; + +import static org.sagebionetworks.web.client.jsinterop.SRC.SynapseComponents.EntityAclEditorModal; + +import com.google.gwt.user.client.ui.Widget; +import com.google.inject.Inject; +import org.sagebionetworks.web.client.context.SynapseReactClientFullContextPropsProvider; +import org.sagebionetworks.web.client.jsinterop.EntityAclEditorModalProps; +import org.sagebionetworks.web.client.jsinterop.React; +import org.sagebionetworks.web.client.jsinterop.ReactNode; +import org.sagebionetworks.web.client.widget.ReactComponent; + +public class EntityAccessControlListModalWidgetImpl + implements EntityAccessControlListModalWidget { + + private final ReactComponent reactComponent; + private final SynapseReactClientFullContextPropsProvider propsProvider; + + private EntityAclEditorModalProps componentProps; + + @Inject + EntityAccessControlListModalWidgetImpl( + ReactComponent reactComponent, + SynapseReactClientFullContextPropsProvider propsProvider + ) { + this.reactComponent = reactComponent; + this.propsProvider = propsProvider; + } + + @Override + public void configure( + String entityId, + EntityAclEditorModalProps.Callback onUpdateSuccess + ) { + componentProps = + EntityAclEditorModalProps.create( + entityId, + false, + onUpdateSuccess, + () -> setOpen(false) + ); + renderComponent(); + } + + @Override + public void setOpen(boolean open) { + componentProps.open = open; + renderComponent(); + } + + @Override + public Widget asWidget() { + return reactComponent.asWidget(); + } + + private void renderComponent() { + ReactNode node = React.createElementWithSynapseContext( + EntityAclEditorModal, + componentProps, + propsProvider.getJsInteropContextProps() + ); + reactComponent.render(node); + } +} diff --git a/src/main/java/org/sagebionetworks/web/client/widget/table/explore/QueryWrapperPlotNav.java b/src/main/java/org/sagebionetworks/web/client/widget/table/explore/QueryWrapperPlotNav.java index 609811226b..dd7c413234 100644 --- a/src/main/java/org/sagebionetworks/web/client/widget/table/explore/QueryWrapperPlotNav.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/table/explore/QueryWrapperPlotNav.java @@ -4,7 +4,6 @@ import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryCallback; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryResultBundleCallback; -import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnViewSharingSettingsHandler; import org.sagebionetworks.web.client.jsinterop.React; import org.sagebionetworks.web.client.jsinterop.ReactNode; import org.sagebionetworks.web.client.jsinterop.SRC; @@ -18,7 +17,6 @@ public QueryWrapperPlotNav( String initQueryJson, OnQueryCallback onQueryChange, OnQueryResultBundleCallback onQueryResultBundleChange, - OnViewSharingSettingsHandler onViewSharingSettingsHandler, boolean hideSqlEditorControl ) { QueryWrapperPlotNavProps props = QueryWrapperPlotNavProps.create( @@ -26,7 +24,6 @@ public QueryWrapperPlotNav( initQueryJson, onQueryChange, onQueryResultBundleChange, - onViewSharingSettingsHandler, hideSqlEditorControl ); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/table/explore/TableEntityWidgetV2.java b/src/main/java/org/sagebionetworks/web/client/widget/table/explore/TableEntityWidgetV2.java index 704ecd8196..0a099e2dc6 100755 --- a/src/main/java/org/sagebionetworks/web/client/widget/table/explore/TableEntityWidgetV2.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/table/explore/TableEntityWidgetV2.java @@ -38,7 +38,6 @@ import org.sagebionetworks.web.client.jsinterop.DatasetEditorProps; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryCallback; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryResultBundleCallback; -import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnViewSharingSettingsHandler; import org.sagebionetworks.web.client.jsinterop.ToastMessageOptions; import org.sagebionetworks.web.client.utils.Callback; import org.sagebionetworks.web.client.widget.CopyTextModal; @@ -431,10 +430,6 @@ private void setQuery(Query query, boolean isFromResults) { } }; - OnViewSharingSettingsHandler onViewSharingSettingsHandler = - entityId -> { - onViewSharingSettingsClicked(entityId); - }; JSONObjectAdapter adapter = ginInjector .getJSONObjectAdapter() .createNew(); @@ -446,7 +441,6 @@ private void setQuery(Query query, boolean isFromResults) { adapter.toJSONString(), onQueryChange, onQueryResultBundleChange, - onViewSharingSettingsHandler, hideSqlEditorControl ); } catch (JSONObjectAdapterException e) { @@ -728,6 +722,7 @@ public QueryResultBundle getCurrentQueryResultBundle() { } private AccessControlListModalWidget getAccessControlListModalWidget() { + // TODO: just show it in SRC :) if (aclModal == null) { aclModal = ginInjector.getAccessControlListModalWidget(); } diff --git a/src/main/java/org/sagebionetworks/web/client/widget/table/v2/TableEntityWidgetView.java b/src/main/java/org/sagebionetworks/web/client/widget/table/v2/TableEntityWidgetView.java index 7fe4207a1a..b3c8b921dd 100755 --- a/src/main/java/org/sagebionetworks/web/client/widget/table/v2/TableEntityWidgetView.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/table/v2/TableEntityWidgetView.java @@ -6,7 +6,6 @@ import org.sagebionetworks.web.client.jsinterop.DatasetEditorProps; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryCallback; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryResultBundleCallback; -import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnViewSharingSettingsHandler; import org.sagebionetworks.web.client.utils.Callback; /** @@ -92,7 +91,6 @@ void configureQueryWrapperPlotNav( String initQueryJson, OnQueryCallback onQueryBundleRequestChange, OnQueryResultBundleCallback onQueryResultBundleChange, - OnViewSharingSettingsHandler onViewSharingSettingsHandler, boolean hideSqlEditorControl ); diff --git a/src/main/java/org/sagebionetworks/web/client/widget/table/v2/TableEntityWidgetViewImpl.java b/src/main/java/org/sagebionetworks/web/client/widget/table/v2/TableEntityWidgetViewImpl.java index b23b246d51..c3dfe493fe 100755 --- a/src/main/java/org/sagebionetworks/web/client/widget/table/v2/TableEntityWidgetViewImpl.java +++ b/src/main/java/org/sagebionetworks/web/client/widget/table/v2/TableEntityWidgetViewImpl.java @@ -17,7 +17,6 @@ import org.sagebionetworks.web.client.context.SynapseReactClientFullContextPropsProvider; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryCallback; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryResultBundleCallback; -import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnViewSharingSettingsHandler; import org.sagebionetworks.web.client.jsinterop.React; import org.sagebionetworks.web.client.jsinterop.ReactNode; import org.sagebionetworks.web.client.jsinterop.SRC; @@ -215,7 +214,6 @@ public void configureQueryWrapperPlotNav( String initQueryJson, OnQueryCallback onQueryChange, OnQueryResultBundleCallback onQueryResultBundleChange, - OnViewSharingSettingsHandler onViewSharingSettingsHandler, boolean hideSqlEditorControl ) { QueryWrapperPlotNav plotNav = new QueryWrapperPlotNav( @@ -224,7 +222,6 @@ public void configureQueryWrapperPlotNav( initQueryJson, onQueryChange, onQueryResultBundleChange, - onViewSharingSettingsHandler, hideSqlEditorControl ); plotNavContainer.clear(); diff --git a/src/test/java/org/sagebionetworks/web/client/FeatureFlagConfigTest.java b/src/test/java/org/sagebionetworks/web/client/FeatureFlagConfigTest.java index 96bb75faad..f11eb4e5e3 100644 --- a/src/test/java/org/sagebionetworks/web/client/FeatureFlagConfigTest.java +++ b/src/test/java/org/sagebionetworks/web/client/FeatureFlagConfigTest.java @@ -20,7 +20,6 @@ public class FeatureFlagConfigTest { JSONObject mockJsonObject; private FeatureFlagConfig featureFlagConfig; - private static final String FEATURE_NAME = "testFeature"; @Before public void setUp() { @@ -29,45 +28,53 @@ public void setUp() { @Test public void testFeatureEnabled() { - when(mockJsonObject.get(FEATURE_NAME)) + when(mockJsonObject.get(FeatureFlagKey.TEST_FLAG_ONLY.getKey())) .thenReturn(JSONBoolean.getInstance(true)); featureFlagConfig = new FeatureFlagConfig(mockJsonObject, mockCookieProvider); - assertTrue(featureFlagConfig.isFeatureEnabled(FEATURE_NAME)); + assertTrue( + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.TEST_FLAG_ONLY) + ); } @Test public void testFeatureDisabled() { - when(mockJsonObject.get(FEATURE_NAME)) + when(mockJsonObject.get(FeatureFlagKey.TEST_FLAG_ONLY.getKey())) .thenReturn(JSONBoolean.getInstance(false)); featureFlagConfig = new FeatureFlagConfig(mockJsonObject, mockCookieProvider); - assertFalse(featureFlagConfig.isFeatureEnabled(FEATURE_NAME)); + assertFalse( + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.TEST_FLAG_ONLY) + ); } @Test public void testFeatureDisabledButExperimentalModeEnabled() { when(mockCookieProvider.getCookie(eq("SynapseTestWebsite"))) .thenReturn("true"); - when(mockJsonObject.get(FEATURE_NAME)) + when(mockJsonObject.get(FeatureFlagKey.TEST_FLAG_ONLY.getKey())) .thenReturn(JSONBoolean.getInstance(false)); featureFlagConfig = new FeatureFlagConfig(mockJsonObject, mockCookieProvider); - assertTrue(featureFlagConfig.isFeatureEnabled(FEATURE_NAME)); + assertTrue( + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.TEST_FLAG_ONLY) + ); } @Test public void testExperimentalModeValueReturnedOnException() { - when(mockJsonObject.get(FEATURE_NAME)) + when(mockJsonObject.get(FeatureFlagKey.TEST_FLAG_ONLY.getKey())) .thenThrow(new RuntimeException("Test exception")); when(mockCookieProvider.getCookie(eq("SynapseTestWebsite"))) .thenReturn("true"); featureFlagConfig = new FeatureFlagConfig(mockJsonObject, mockCookieProvider); - assertTrue(featureFlagConfig.isFeatureEnabled(FEATURE_NAME)); + assertTrue( + featureFlagConfig.isFeatureEnabled(FeatureFlagKey.TEST_FLAG_ONLY) + ); } } diff --git a/src/test/java/org/sagebionetworks/web/unitclient/presenter/DownloadCartPresenterTest.java b/src/test/java/org/sagebionetworks/web/unitclient/presenter/DownloadCartPresenterTest.java index 22fcf92809..68f15a3a25 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/presenter/DownloadCartPresenterTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/presenter/DownloadCartPresenterTest.java @@ -1,53 +1,15 @@ package org.sagebionetworks.web.unitclient.presenter; -import static org.junit.Assert.*; -import static org.junit.Assert.assertEquals; -import static org.mockito.Matchers.*; -import static org.mockito.Matchers.any; -import static org.mockito.Mockito.reset; -import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; -import com.google.gwt.place.shared.Place; -import com.google.gwt.user.client.rpc.AsyncCallback; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; -import org.mockito.Mockito; import org.mockito.runners.MockitoJUnitRunner; -import org.sagebionetworks.repo.model.Entity; -import org.sagebionetworks.repo.model.search.query.KeyRange; -import org.sagebionetworks.repo.model.search.query.KeyValue; -import org.sagebionetworks.repo.model.search.query.SearchQuery; -import org.sagebionetworks.schema.adapter.JSONObjectAdapter; -import org.sagebionetworks.schema.adapter.org.json.JSONObjectAdapterImpl; -import org.sagebionetworks.web.client.ClientProperties; -import org.sagebionetworks.web.client.GlobalApplicationState; -import org.sagebionetworks.web.client.PlaceChanger; -import org.sagebionetworks.web.client.PopupUtilsView; -import org.sagebionetworks.web.client.PortalGinInjector; -import org.sagebionetworks.web.client.SynapseJavascriptClient; import org.sagebionetworks.web.client.place.DownloadCartPlace; -import org.sagebionetworks.web.client.place.PeopleSearch; -import org.sagebionetworks.web.client.place.Search; -import org.sagebionetworks.web.client.place.Synapse; import org.sagebionetworks.web.client.presenter.DownloadCartPresenter; -import org.sagebionetworks.web.client.presenter.SearchPresenter; -import org.sagebionetworks.web.client.presenter.SearchUtil; -import org.sagebionetworks.web.client.security.AuthenticationController; -import org.sagebionetworks.web.client.utils.Callback; import org.sagebionetworks.web.client.view.DownloadCartPageView; -import org.sagebionetworks.web.client.view.SearchView; -import org.sagebionetworks.web.client.widget.LoadMoreWidgetContainer; -import org.sagebionetworks.web.client.widget.entity.controller.SynapseAlert; -import org.sagebionetworks.web.client.widget.sharing.AccessControlListModalWidget; -import org.sagebionetworks.web.shared.SearchQueryUtils; -import org.sagebionetworks.web.test.helper.AsyncMockStubber; @RunWith(MockitoJUnitRunner.class) public class DownloadCartPresenterTest { @@ -57,37 +19,9 @@ public class DownloadCartPresenterTest { @Mock DownloadCartPageView mockView; - @Mock - PortalGinInjector mockGinInjector; - - @Mock - PopupUtilsView mockPopupUtilsView; - - @Mock - SynapseJavascriptClient mockJsClient; - - @Mock - AccessControlListModalWidget mockACLModalWidget; - - @Mock - Entity mockEntity; - @Before public void setup() throws Exception { - presenter = - new DownloadCartPresenter(mockView, mockGinInjector, mockPopupUtilsView); - when(mockGinInjector.getAccessControlListModalWidget()) - .thenReturn(mockACLModalWidget); - when(mockGinInjector.getSynapseJavascriptClient()).thenReturn(mockJsClient); - AsyncMockStubber - .callSuccessWith(mockEntity) - .when(mockJsClient) - .getEntity(anyString(), any(AsyncCallback.class)); - } - - @Test - public void testConstructor() { - verify(mockView).setPresenter(presenter); + presenter = new DownloadCartPresenter(mockView); } @Test @@ -96,30 +30,4 @@ public void testSetPlace() { verify(mockView).render(); } - - @Test - public void testOnViewSharingSettingsClicked() { - String testEntityId = "syn1"; - - presenter.onViewSharingSettingsClicked(testEntityId); - - verify(mockJsClient).getEntity(eq(testEntityId), any(AsyncCallback.class)); - verify(mockACLModalWidget).configure(mockEntity, false); - verify(mockACLModalWidget).showSharing(any(Callback.class)); - } - - @Test - public void testOnViewSharingSettingsClickedFailure() { - String testEntityId = "syn1"; - String errorMessage = "unable to get the benefactor entity"; - AsyncMockStubber - .callFailureWith(new Exception(errorMessage)) - .when(mockJsClient) - .getEntity(anyString(), any(AsyncCallback.class)); - - presenter.onViewSharingSettingsClicked(testEntityId); - - verify(mockJsClient).getEntity(eq(testEntityId), any(AsyncCallback.class)); - verify(mockPopupUtilsView).showErrorMessage(errorMessage); - } } diff --git a/src/test/java/org/sagebionetworks/web/unitclient/presenter/TeamPresenterTest.java b/src/test/java/org/sagebionetworks/web/unitclient/presenter/TeamPresenterTest.java index b213914ce8..f36bb442c8 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/presenter/TeamPresenterTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/presenter/TeamPresenterTest.java @@ -193,9 +193,7 @@ public void setup() { when(mockTeam.getCanPublicJoin()).thenReturn(canPublicJoin); when(mockTeam.getId()).thenReturn(teamId); when(mockTeam.getIcon()).thenReturn(teamIcon); - when( - mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.GOOGLE_MAP.getKey()) - ) + when(mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.GOOGLE_MAP)) .thenReturn(true); } diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/CreateAccessRequirementButtonTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/CreateAccessRequirementButtonTest.java index 8e4fb8c829..255dcd995d 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/CreateAccessRequirementButtonTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/accessrequirements/CreateAccessRequirementButtonTest.java @@ -139,7 +139,7 @@ public void testConfigureWithAR() { // configured with an AR, when clicked it should pop up the wizard with the existing AR when( mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD.getKey() + FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD ) ) .thenReturn(false); @@ -166,7 +166,7 @@ public void testConfigureWithSubject() { // configured with a subject, when clicked it should pop up the wizard pointing to the new subject when( mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD.getKey() + FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD ) ) .thenReturn(false); @@ -182,7 +182,7 @@ public void testOnCancelRefreshPage() { widget.configure(mockAccessRequirement, mockRefreshCallback); when( mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD.getKey() + FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD ) ) .thenReturn(false); @@ -213,7 +213,7 @@ public void testConfigureWithARInExperimentalMode() { // feature flag -- use SRC wizard when( mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD.getKey() + FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD ) ) .thenReturn(true); @@ -259,7 +259,7 @@ public void testConfigureWithSubjectInExperimentalMode() { // feature flag -- use SRC wizard when( mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD.getKey() + FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD ) ) .thenReturn(true); @@ -297,7 +297,7 @@ public void testOnCancelRefreshPageInExperimentalMode() { widget.configure(mockAccessRequirement, mockRefreshCallback); when( mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD.getKey() + FeatureFlagKey.SRC_BASED_AR_MODAL_WIZARD ) ) .thenReturn(true); diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/RenameEntityModalWidgetTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/RenameEntityModalWidgetTest.java index 6cd09d8acb..063835e748 100755 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/RenameEntityModalWidgetTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/RenameEntityModalWidgetTest.java @@ -220,9 +220,7 @@ public void testRenameFailed() { public void testOnlyShowDescriptionForTables() { // Currently behind feature flag when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); AsyncMockStubber @@ -269,9 +267,7 @@ public void testNullDescriptionWithNoUpdate() { // Currently behind feature flag when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/WikiPageWidgetTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/WikiPageWidgetTest.java index fb7f21cfcd..8aea41824a 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/WikiPageWidgetTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/WikiPageWidgetTest.java @@ -172,11 +172,7 @@ public void before() throws Exception { any(WikiPage.class), any(AsyncCallback.class) ); - when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.WIKI_DIFF_TOOL.getKey() - ) - ) + when(mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.WIKI_DIFF_TOOL)) .thenReturn(true); } @@ -247,11 +243,7 @@ public void testConfigure() throws JSONObjectAdapterException { // TODO: remove if exposing this outside of alpha mode @Test public void testDiffToolHiddenInNormalMode() { - when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.WIKI_DIFF_TOOL.getKey() - ) - ) + when(mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.WIKI_DIFF_TOOL)) .thenReturn(false); WikiPageKey key = new WikiPageKey( diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/controller/EntityActionControllerImplTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/controller/EntityActionControllerImplTest.java index 4655a3acee..81064c6a42 100755 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/controller/EntityActionControllerImplTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/controller/EntityActionControllerImplTest.java @@ -605,9 +605,7 @@ public Void answer(InvocationOnMock invocation) throws Throwable { @Test public void testConfigureWithTableEntity() { when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -672,9 +670,7 @@ public void testConfigureWithTableEntityNoPermission() { permissions.setCanChangePermissions(canChangePermission); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -722,9 +718,7 @@ public void testConfigureWithDataset() { permissions.setCanCertifiedUserEdit(canCertifiedUserEdit); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -789,9 +783,7 @@ public void testConfigureWithDatasetNoPermission() { permissions.setCanChangePermissions(canChangePermission); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -850,9 +842,7 @@ public void testConfigureWithDatasetSnapshot() { permissions.setCanCertifiedUserEdit(canCertifiedUserEdit); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -911,9 +901,7 @@ public void testConfigureWithDatasetCollection() { permissions.setCanCertifiedUserEdit(canCertifiedUserEdit); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -979,9 +967,7 @@ public void testConfigureWithDatasetCollectionNoPermission() { permissions.setCanChangePermissions(canChangePermission); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -1041,9 +1027,7 @@ public void testConfigureWithDatasetCollectionSnapshot() { permissions.setCanCertifiedUserEdit(canCertifiedUserEdit); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -1101,9 +1085,7 @@ public void testConfigureWithEntityView() { permissions.setCanCertifiedUserEdit(canCertifiedUserEdit); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -1158,9 +1140,7 @@ public void testConfigureWithSubmissionView() { permissions.setCanCertifiedUserEdit(canCertifiedUserEdit); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -1211,9 +1191,7 @@ public void testConfigureWithMaterializedView() { boolean canCertifiedUserEdit = true; permissions.setCanCertifiedUserEdit(canCertifiedUserEdit); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -1273,9 +1251,7 @@ public void testConfigureWithMaterializedViewNoPermission() { permissions.setCanChangePermissions(canChangePermission); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -1328,9 +1304,7 @@ public void testConfigureWithVirtualTable() { boolean canCertifiedUserEdit = true; permissions.setCanCertifiedUserEdit(canCertifiedUserEdit); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -1390,9 +1364,7 @@ public void testConfigureWithVirtualTableNoPermission() { permissions.setCanChangePermissions(canChangePermission); when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); @@ -1442,9 +1414,7 @@ public void testConfigureWithVirtualTableNoPermission() { @Test public void testDisableFullTextSearch() { when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); ((TableEntity) entityBundle.getEntity()).setIsSearchEnabled(true); @@ -1496,9 +1466,7 @@ private void setPublicCanRead() { @Test public void testConfigureProjectLevelTableCommandsCanEdit() { when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); entityBundle.setEntity(new Project()); @@ -1565,9 +1533,7 @@ public void testConfigureProjectLevelTableCommandsCanEditNotOnTablesTab() { @Test public void testConfigureProjectLevelDatasetCommandsCanEdit() { when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); entityBundle.setEntity(new Project()); @@ -4281,9 +4247,7 @@ public void testConfigureCreateChallengeActionWikiArea() throws Exception { // in alpha mode) currentEntityArea = EntityArea.WIKI; when( - mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.DESCRIPTION_FIELD.getKey() - ) + mockFeatureFlagConfig.isFeatureEnabled(FeatureFlagKey.DESCRIPTION_FIELD) ) .thenReturn(true); entityBundle.setEntity(new Project()); diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/controller/StorageLocationWidgetTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/controller/StorageLocationWidgetTest.java index 64b794f6ee..269fa0ca12 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/controller/StorageLocationWidgetTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/controller/StorageLocationWidgetTest.java @@ -91,7 +91,7 @@ public class StorageLocationWidgetTest { public void setup() { when( mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.CUSTOM_STORAGE_LOCATION_SETTINGS.getKey() + FeatureFlagKey.CUSTOM_STORAGE_LOCATION_SETTINGS ) ) .thenReturn(false); @@ -213,7 +213,7 @@ public void testNullBanner() { public void testGetStorageLocationSettingExternalS3() { when( mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.CUSTOM_STORAGE_LOCATION_SETTINGS.getKey() + FeatureFlagKey.CUSTOM_STORAGE_LOCATION_SETTINGS ) ) .thenReturn(true); diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/registration/WidgetRegistrarImplTest.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/registration/WidgetRegistrarImplTest.java index f77e30f98c..0423e5e155 100644 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/registration/WidgetRegistrarImplTest.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/entity/registration/WidgetRegistrarImplTest.java @@ -91,7 +91,7 @@ public void testCreateWidgets() { when( mockFeatureFlagConfig.isFeatureEnabled( - FeatureFlagKey.PROVENANCE_V2_VISUALIZATION.getKey() + FeatureFlagKey.PROVENANCE_V2_VISUALIZATION ) ) .thenReturn(true); diff --git a/src/test/java/org/sagebionetworks/web/unitclient/widget/table/explore/TableEntityWidgetV2Test.java b/src/test/java/org/sagebionetworks/web/unitclient/widget/table/explore/TableEntityWidgetV2Test.java index 1303af4e36..301f3b15ba 100755 --- a/src/test/java/org/sagebionetworks/web/unitclient/widget/table/explore/TableEntityWidgetV2Test.java +++ b/src/test/java/org/sagebionetworks/web/unitclient/widget/table/explore/TableEntityWidgetV2Test.java @@ -54,7 +54,6 @@ import org.sagebionetworks.web.client.cookie.CookieProvider; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryCallback; import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnQueryResultBundleCallback; -import org.sagebionetworks.web.client.jsinterop.QueryWrapperPlotNavProps.OnViewSharingSettingsHandler; import org.sagebionetworks.web.client.security.AuthenticationController; import org.sagebionetworks.web.client.utils.Callback; import org.sagebionetworks.web.client.widget.CopyTextModal; @@ -173,11 +172,6 @@ public class TableEntityWidgetV2Test { @Captor ArgumentCaptor onQueryResultBundleCallbackCaptor; - @Captor - ArgumentCaptor< - OnViewSharingSettingsHandler - > onViewSharingSettingsHandlerCaptor; - @Mock GlobalApplicationState mockGlobalState; @@ -538,7 +532,6 @@ public void testOnExecuteQuery() throws JSONObjectAdapterException { eq(adapter.toJSONString()), onQueryCallbackCaptor.capture(), onQueryResultBundleCallbackCaptor.capture(), - onViewSharingSettingsHandlerCaptor.capture(), eq(expectedHideSqlEditorControl) ); @@ -572,16 +565,6 @@ public void testOnExecuteQuery() throws JSONObjectAdapterException { expectedQueryCount, widget.getCurrentQueryResultBundle().getQueryCount() ); - - // test OnViewSharingSettingsHandler - OnViewSharingSettingsHandler onViewSharingSettingsHandler = - onViewSharingSettingsHandlerCaptor.getValue(); - String testEntityId = "syn0000001"; - onViewSharingSettingsHandler.onViewSharingSettingsClicked(testEntityId); - - verify(mockJsClient).getEntity(eq(testEntityId), any(AsyncCallback.class)); - verify(mockACLModalWidget).configure(mockEntity, false); - verify(mockACLModalWidget).showSharing(any(Callback.class)); } @Test