diff --git a/client/src/components/LibraryFolder/LibraryFolderPermissions/LibraryFolderDatasetPermissions.vue b/client/src/components/LibraryFolder/LibraryFolderPermissions/LibraryFolderDatasetPermissions.vue
index ebe78365d38..c7f5b2050d8 100644
--- a/client/src/components/LibraryFolder/LibraryFolderPermissions/LibraryFolderDatasetPermissions.vue
+++ b/client/src/components/LibraryFolder/LibraryFolderPermissions/LibraryFolderDatasetPermissions.vue
@@ -60,20 +60,21 @@
You can
-
- remove all access restrictions
- on this dataset.
+
+ make this dataset private
+
+ to you.
You can
-
- make this dataset private
- to you.
+
+ remove all access restrictions
+
+ on this dataset.
{
- this.access_dataset_roles = extractRoles(fetched_permissions.access_dataset_roles);
- this.modify_item_roles = extractRoles(fetched_permissions.modify_item_roles);
- this.manage_dataset_roles = extractRoles(fetched_permissions.manage_dataset_roles);
- });
+ this.services
+ .getDatasetPermissions(this.dataset_id)
+ .then((fetched_permissions) => this.assignFetchedPermissions(fetched_permissions));
this.services.getDataset(this.dataset_id).then((response) => {
this.dataset = response;
});
@@ -181,12 +180,26 @@ export default {
},
},
methods: {
- makeDatasetPrivate() {
- this.services.makeDatasetPrivate(
+ assignFetchedPermissions(fetched_permissions) {
+ this.access_dataset_roles = extractRoles(fetched_permissions.access_dataset_roles);
+ this.modify_item_roles = extractRoles(fetched_permissions.modify_item_roles);
+ this.manage_dataset_roles = extractRoles(fetched_permissions.manage_dataset_roles);
+ console.log(this.access_dataset_roles);
+ },
+ toggleDatasetPrivacy(isMakePrivate) {
+ this.services.toggleDatasetPrivacy(
this.dataset_id,
+ isMakePrivate,
(fetched_permissions) => {
- Toast.success("Permissions saved.");
- this.permissions = fetched_permissions;
+ Toast.success(
+ `${
+ isMakePrivate
+ ? "The dataset is now private to you."
+ : "Access to this dataset is now unrestricted."
+ }`
+ );
+ this.assignFetchedPermissions(fetched_permissions);
+ this.$refs.access_field.assignValue(this.access_dataset_roles);
},
(error) => {
Toast.error("An error occurred while attempting to set folder permissions.");
@@ -211,7 +224,7 @@ export default {
],
(fetched_permissions) => {
Toast.success("Permissions saved.");
- this.permissions = fetched_permissions;
+ this.assignFetchedPermissions(fetched_permissions);
},
(error) => {
Toast.error("An error occurred while attempting to set folder permissions.");
diff --git a/client/src/components/LibraryFolder/LibraryFolderPermissions/PermissionsInputField.vue b/client/src/components/LibraryFolder/LibraryFolderPermissions/PermissionsInputField.vue
index f2dcfa8a9ff..c5125c8061d 100644
--- a/client/src/components/LibraryFolder/LibraryFolderPermissions/PermissionsInputField.vue
+++ b/client/src/components/LibraryFolder/LibraryFolderPermissions/PermissionsInputField.vue
@@ -90,7 +90,7 @@ export default {
created() {
this.services = new Services({ root: this.root });
// Avoid mutating a prop directly
- this.value = this.initial_value;
+ this.assignValue(this.initial_value);
this.getSelectOptions();
},
computed: {
@@ -122,6 +122,9 @@ export default {
this.searchValue = searchValue;
this.getSelectOptions(true);
},
+ assignValue(value) {
+ this.value = value;
+ },
},
};
diff --git a/client/src/components/LibraryFolder/LibraryFolderPermissions/services.js b/client/src/components/LibraryFolder/LibraryFolderPermissions/services.js
index a173b3fc4a4..98659dd7935 100644
--- a/client/src/components/LibraryFolder/LibraryFolderPermissions/services.js
+++ b/client/src/components/LibraryFolder/LibraryFolderPermissions/services.js
@@ -1,6 +1,7 @@
import axios from "axios";
import { rethrowSimple } from "utils/simple-error";
import { getAppRoot } from "onload/loadConfig";
+import $ from "jquery";
export class Services {
constructor(options = {}) {
@@ -76,11 +77,15 @@ export class Services {
onError(response);
});
}
- async makeDatasetPrivate(id, onSuccess, onError) {
+ async toggleDatasetPrivacy(id, isMakePrivate, onSuccess, onError) {
await axios
- .get(`${getAppRoot()}api/libraries/datasets/${id}/permissions?action=make_private`)
+ .post(
+ `${getAppRoot()}api/libraries/datasets/${id}/permissions?action=${
+ isMakePrivate ? "make_private" : "remove_restrictions"
+ }`
+ )
.then((fetched_permissions) => {
- onSuccess(fetched_permissions);
+ onSuccess(fetched_permissions.data);
})
.catch((response) => {
onError(response);