diff --git a/client/src/components/Upload/DefaultBox.vue b/client/src/components/Upload/DefaultBox.vue index 31722c9184a0..cba474744251 100644 --- a/client/src/components/Upload/DefaultBox.vue +++ b/client/src/components/Upload/DefaultBox.vue @@ -113,15 +113,15 @@ const queue = new UploadQueue({ }); /** Add files to queue */ -function addFiles(files) { +function addFiles(files, immediate = false) { if (!isRunning.value) { + if (immediate || !props.multiple) { + eventReset(); + } if (props.multiple) { queue.add(files); - } else { - eventReset(); - if (files.length > 0) { - queue.add([files[0]]); - } + } else if (files.length > 0) { + queue.add([files[0]]); } } } diff --git a/client/src/components/Upload/UploadContainer.vue b/client/src/components/Upload/UploadContainer.vue index ba4fa08dbcc6..9c7fe5a742dc 100644 --- a/client/src/components/Upload/UploadContainer.vue +++ b/client/src/components/Upload/UploadContainer.vue @@ -112,7 +112,7 @@ const showRegular = computed(() => !props.formats || hasRegularExtension); const showRules = computed(() => !props.formats || props.multiple); function immediateUpload(files) { - regular.value?.addFiles(files); + regular.value?.addFiles(files, true); } function toData(items, history_id, composite = false) { diff --git a/client/src/components/Upload/UploadModal.vue b/client/src/components/Upload/UploadModal.vue index 8aca0acde0dc..762abcc9afc0 100644 --- a/client/src/components/Upload/UploadModal.vue +++ b/client/src/components/Upload/UploadModal.vue @@ -86,7 +86,6 @@ defineExpose({ { loadingNotifications.value = true; await broadcastsStore.loadBroadcasts(); await loadNotifications(); + updateUnreadCount(); } else { const data = await loadNotificationsStatus(lastNotificationUpdate.value); totalUnreadCount.value = data.total_unread_count; @@ -72,6 +73,10 @@ export const useNotificationsStore = defineStore("notificationsStore", () => { return updateBatchNotification({ notification_ids: [notification.id], changes }); } + function updateUnreadCount() { + totalUnreadCount.value = notifications.value.filter((n) => !n.seen_time).length; + } + return { notifications, totalUnreadCount, diff --git a/lib/galaxy/webapps/galaxy/services/history_contents.py b/lib/galaxy/webapps/galaxy/services/history_contents.py index c0d99167baa8..985dc06387b6 100644 --- a/lib/galaxy/webapps/galaxy/services/history_contents.py +++ b/lib/galaxy/webapps/galaxy/services/history_contents.py @@ -496,7 +496,9 @@ def prepare_collection_download(self, trans, id: DecodedDatabaseIdField) -> Asyn def __stream_dataset_collection(self, trans, dataset_collection_instance): archive = hdcas.stream_dataset_collection( - dataset_collection_instance=dataset_collection_instance, upstream_mod_zip=trans.app.config.upstream_mod_zip + dataset_collection_instance=dataset_collection_instance, + upstream_mod_zip=trans.app.config.upstream_mod_zip, + upstream_gzip=trans.app.config.upstream_gzip, ) return archive diff --git a/lib/galaxy_test/selenium/test_uploads.py b/lib/galaxy_test/selenium/test_uploads.py index cad193f97f6e..6ce9607ea02e 100644 --- a/lib/galaxy_test/selenium/test_uploads.py +++ b/lib/galaxy_test/selenium/test_uploads.py @@ -174,6 +174,36 @@ def test_upload_paired_list(self): self.history_panel_wait_for_hid_hidden(3) self.history_panel_wait_for_hid_hidden(4) + @selenium_test + def test_upload_modal_retains_content(self): + self.home() + + # initialize 2 uploads and close modal + self.upload_start_click() + self.upload_queue_local_file(self.get_filename("1.sam")) + self.upload_paste_data("some pasted data") + self.wait_for_and_click_selector("button#btn-close") + + # reopen modal and check that the files are still there + self.upload_start_click() + self.wait_for_selector_visible("#upload-row-0.upload-init") + self.wait_for_selector_visible("#upload-row-1.upload-init") + + # perform upload and close modal + self.upload_start() + self.wait_for_and_click_selector("button#btn-close") + + # add another pasted file, but don't upload it + self.upload_start_click() + self.upload_paste_data("some more pasted data") + self.wait_for_and_click_selector("button#btn-close") + + # reopen modal and see 2 uploaded, 1 yet to upload + self.upload_start_click() + self.wait_for_selector_visible("#upload-row-0.upload-success") + self.wait_for_selector_visible("#upload-row-1.upload-success") + self.wait_for_selector_visible("#upload-row-2.upload-init") + @selenium_test @pytest.mark.gtn_screenshot @pytest.mark.local diff --git a/packages/build_packages.sh b/packages/build_packages.sh index 249b9143df5c..dde18ce11324 100755 --- a/packages/build_packages.sh +++ b/packages/build_packages.sh @@ -10,14 +10,18 @@ cd "$(dirname "$0")" # ensure ordered by dependency dag while read -r package_dir; do - printf "\n========= RELEASING PACKAGE ${package_dir} =========\n\n" - + if [ -z "$package_dir" ]; then + # Skip empty lines + continue + fi + printf "\n========= RELEASING PACKAGE %s =========\n\n" "$package_dir" + cd "$package_dir" - + make clean make commit-version make dist make new-version - + cd .. done < packages_by_dep_dag.txt