diff --git a/client/src/components/ActivityBar/Items/UploadItem.vue b/client/src/components/ActivityBar/Items/UploadItem.vue
index 32f9b0a106e..e5c2b357d0e 100644
--- a/client/src/components/ActivityBar/Items/UploadItem.vue
+++ b/client/src/components/ActivityBar/Items/UploadItem.vue
@@ -1,14 +1,13 @@
diff --git a/client/src/components/Upload/UploadButton.vue b/client/src/components/Upload/UploadButton.vue
index 9a11228adc8..110335858d5 100644
--- a/client/src/components/Upload/UploadButton.vue
+++ b/client/src/components/Upload/UploadButton.vue
@@ -2,10 +2,11 @@
import { library } from "@fortawesome/fontawesome-svg-core";
import { faUpload } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
-import { computed, onMounted, onUnmounted, ref } from "vue";
+import { storeToRefs } from "pinia";
+import { computed, onMounted } from "vue";
-import { eventHub } from "@/components/plugins/eventHub.js";
import { useGlobalUploadModal } from "@/composables/globalUploadModal";
+import { useUploadStore } from "@/stores/uploadStore";
import localize from "@/utils/localization";
import Query from "@/utils/query-string-parsing";
@@ -21,34 +22,17 @@ const props = withDefaults(
);
const { openGlobalUploadModal } = useGlobalUploadModal();
-
-const status = ref("");
-const percentage = ref(0);
+const { percentage, status } = storeToRefs(useUploadStore());
onMounted(() => {
- eventHub.$on("upload:status", setStatus);
- eventHub.$on("upload:percentage", setPercentage);
if (Query.get("tool_id") == "upload1") {
openGlobalUploadModal();
}
});
-onUnmounted(() => {
- eventHub.$off("upload:status", setStatus);
- eventHub.$off("upload:percentage", setPercentage);
-});
-
const localizedTitle = computed(() => {
return localize(props.title);
});
-function setStatus(val: string) {
- status.value = val;
-}
-
-function setPercentage(val: number) {
- percentage.value = val;
-}
-
function showUploadDialog() {
openGlobalUploadModal();
}
diff --git a/client/src/components/Upload/UploadContainer.vue b/client/src/components/Upload/UploadContainer.vue
index 194705b4e57..ba4fa08dbcc 100644
--- a/client/src/components/Upload/UploadContainer.vue
+++ b/client/src/components/Upload/UploadContainer.vue
@@ -9,9 +9,10 @@ import {
getUploadDatatypes,
getUploadDbKeys,
} from "components/Upload/utils";
+import { storeToRefs } from "pinia";
import { computed, onMounted, ref } from "vue";
-import { eventHub } from "@/components/plugins/eventHub.js";
+import { useUploadStore } from "@/stores/uploadStore";
import { uploadPayload } from "@/utils/upload-payload.js";
import CompositeBox from "./CompositeBox";
@@ -79,6 +80,8 @@ const listExtensions = ref([]);
const listDbKeys = ref([]);
const regular = ref(null);
+const { percentage, status } = storeToRefs(useUploadStore());
+
const effectiveExtensions = computed(() => {
if (props.formats === null || !datatypesMapperReady.value) {
return listExtensions.value;
@@ -133,12 +136,12 @@ async function loadMappers() {
datatypesMapperReady.value = true;
}
-function progress(percentage, status = null) {
- if (percentage !== null) {
- eventHub.$emit(`upload:percentage`, percentage);
+function progress(newPercentage, newStatus = null) {
+ if (newPercentage !== null) {
+ percentage.value = newPercentage;
}
- if (status !== null) {
- eventHub.$emit(`upload:status`, status);
+ if (newStatus !== null) {
+ status.value = newStatus;
}
}
diff --git a/client/src/stores/uploadStore.ts b/client/src/stores/uploadStore.ts
new file mode 100644
index 00000000000..e6229b438ca
--- /dev/null
+++ b/client/src/stores/uploadStore.ts
@@ -0,0 +1,9 @@
+import { defineStore } from "pinia";
+import { ref } from "vue";
+
+export const useUploadStore = defineStore("upload", () => {
+ const percentage = ref(0);
+ const status = ref("");
+
+ return { percentage, status };
+});