From f74e930d1cc6a6b50396192777e9cdd64e479cf7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Daniel=20G=C3=B6bel?= <dgoebel@techfak.uni-bielefeld.de>
Date: Thu, 13 Apr 2023 12:04:19 +0200
Subject: [PATCH] Display a new folder not as file

#58
---
 .../object-storage/modals/CreateFolderModal.vue        |  2 +-
 .../form-mode/ParameterStringInput.vue                 |  4 +---
 .../workflows/modals/ArbitraryWorkflowModal.vue        |  2 +-
 src/stores/buckets.ts                                  | 10 ++++++----
 src/views/object-storage/S3KeyView.vue                 |  3 +++
 5 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/components/object-storage/modals/CreateFolderModal.vue b/src/components/object-storage/modals/CreateFolderModal.vue
index 7b0400c..cff38a4 100644
--- a/src/components/object-storage/modals/CreateFolderModal.vue
+++ b/src/components/object-storage/modals/CreateFolderModal.vue
@@ -62,7 +62,7 @@ function uploadFolder() {
       uploadModal?.hide();
       successToast?.show();
       emit("folder-created", {
-        key: key,
+        key: realKey,
         bucket: props.bucketName,
         size: 0,
         last_modified: dayjs().toISOString(),
diff --git a/src/components/parameter-schema/form-mode/ParameterStringInput.vue b/src/components/parameter-schema/form-mode/ParameterStringInput.vue
index 1bd3299..d9a59f8 100644
--- a/src/components/parameter-schema/form-mode/ParameterStringInput.vue
+++ b/src/components/parameter-schema/form-mode/ParameterStringInput.vue
@@ -72,9 +72,7 @@ const stringInput = ref<HTMLInputElement | undefined>(undefined);
 const format = computed<string | undefined>(() => props.parameter["format"]);
 
 const filesInBucket = computed<string[]>(() =>
-  keysInBucket.value.filter(
-    (obj) => !obj.endsWith("/") && !obj.endsWith(".s3keep")
-  )
+  keysInBucket.value.filter((obj) => !obj.endsWith("/"))
 );
 
 const foldersInBucket = computed<string[]>(() =>
diff --git a/src/components/workflows/modals/ArbitraryWorkflowModal.vue b/src/components/workflows/modals/ArbitraryWorkflowModal.vue
index 7280c07..ef89670 100644
--- a/src/components/workflows/modals/ArbitraryWorkflowModal.vue
+++ b/src/components/workflows/modals/ArbitraryWorkflowModal.vue
@@ -210,7 +210,7 @@ onMounted(() => {
           role="status"
           aria-hidden="true"
         ></span>
-        Save
+        View
       </button>
     </template>
   </bootstrap-modal>
diff --git a/src/stores/buckets.ts b/src/stores/buckets.ts
index ec2f3b3..a884d9f 100644
--- a/src/stores/buckets.ts
+++ b/src/stores/buckets.ts
@@ -20,16 +20,18 @@ export const useBucketStore = defineStore({
       buckets: [],
       ownPermissions: {},
       _lastFetchBucketPromise: undefined,
-      _bla: 0,
+      _lastFetchBucketPromiseTimestamp: 0,
     } as {
       buckets: BucketOut[];
       ownPermissions: Record<string, BucketPermissionOut>;
       _lastFetchBucketPromise?: CancelablePromise<never>;
-      _bla: number;
+      _lastFetchBucketPromiseTimestamp: number;
     }),
   getters: {
     ownBucketsAndFullPermissions(): string[] {
+      const authStore = useAuthStore();
       const names = this.buckets
+        .filter((bucket) => bucket.owner === authStore.currentUID)
         .map((bucket) => bucket.name)
         .concat(
           Object.values(this.ownPermissions)
@@ -153,8 +155,8 @@ export const useBucketStore = defineStore({
        * then no API call will be made and the last one reused
        */
       const currentTime = new Date().getTime();
-      if (currentTime - this._bla > 5000) {
-        this._bla = currentTime;
+      if (currentTime - this._lastFetchBucketPromiseTimestamp > 5000) {
+        this._lastFetchBucketPromiseTimestamp = currentTime;
         const authStore = useAuthStore();
         if (this.buckets.length > 0) {
           onFinally?.();
diff --git a/src/views/object-storage/S3KeyView.vue b/src/views/object-storage/S3KeyView.vue
index accd651..ed77ed0 100644
--- a/src/views/object-storage/S3KeyView.vue
+++ b/src/views/object-storage/S3KeyView.vue
@@ -3,6 +3,7 @@ import type { S3Key } from "@/client/s3proxy";
 import { ref, watch } from "vue";
 import FontAwesomeIcon from "@/components/FontAwesomeIcon.vue";
 import DeleteModal from "@/components/modals/DeleteModal.vue";
+import { environment } from "../../environment";
 
 const props = defineProps<{
   s3key: S3Key;
@@ -37,6 +38,8 @@ function deleteKeyTrigger() {
     :back-modal-id="undefined"
     @confirm-delete="deleteKeyTrigger"
   />
+  <h3>S3 Endpoint:</h3>
+  <div class="fs-4 mb-4">{{ environment.S3_URL }}</div>
   <h3>Access Key:</h3>
   <div v-if="props.loading" class="placeholder-glow">
     <span class="placeholder col-5 mt-3 mb-2 fs-4"></span><br />
-- 
GitLab