From 2b836f10cb835ab8b1fc6670cac0db4f847a49ad Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Fri, 9 Jan 2026 11:11:29 +0100 Subject: [PATCH] :bug: Do not show deleted files on search (#8036) * :bug: Do not show deleted files on search * :lipstick: Add cosmetic changes to dashboard deleted files page --- backend/src/app/rpc/commands/search.clj | 6 +-- .../src/app/main/ui/dashboard/deleted.cljs | 47 ++++++++++++------- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/backend/src/app/rpc/commands/search.clj b/backend/src/app/rpc/commands/search.clj index 801ff555b0..3830731f78 100644 --- a/backend/src/app/rpc/commands/search.clj +++ b/backend/src/app/rpc/commands/search.clj @@ -19,7 +19,7 @@ inner join team_profile_rel as tpr on (tpr.team_id = p.team_id) where tpr.profile_id = ? and p.team_id = ? - and (p.deleted_at is null or p.deleted_at > now()) + and (p.deleted_at is null) and (tpr.is_admin = true or tpr.is_owner = true or tpr.can_edit = true) @@ -29,7 +29,7 @@ inner join project_profile_rel as ppr on (ppr.project_id = p.id) where ppr.profile_id = ? and p.team_id = ? - and (p.deleted_at is null or p.deleted_at > now()) + and (p.deleted_at is null) and (ppr.is_admin = true or ppr.is_owner = true or ppr.can_edit = true) @@ -47,7 +47,7 @@ left join file_thumbnail as ft on (ft.file_id = f.id and ft.revn = f.revn) inner join projects as pr on (f.project_id = pr.id) where f.name ilike ('%' || ? || '%') - and (f.deleted_at is null or f.deleted_at > now()) + and (f.deleted_at is null) order by f.created_at asc") (defn search-files diff --git a/frontend/src/app/main/ui/dashboard/deleted.cljs b/frontend/src/app/main/ui/dashboard/deleted.cljs index 6116d8230b..cd261fe748 100644 --- a/frontend/src/app/main/ui/dashboard/deleted.cljs +++ b/frontend/src/app/main/ui/dashboard/deleted.cljs @@ -32,6 +32,27 @@ (def ^:private menu-icon (deprecated-icon/icon-xref :menu (stl/css :menu-icon))) +(defn- on-restore-project + [project] + (let [on-accept #(st/emit! (dd/restore-project-immediately project))] + (st/emit! (modal/show + {:type :confirm + :title (tr "dashboard.restore-project-confirmation.title") + :message (tr "dashboard.restore-project-confirmation.description" (:name project)) + :accept-style :primary + :accept-label (tr "labels.continue") + :on-accept on-accept})))) + +(defn- on-delete-project + [project] + (let [accept-fn #(st/emit! (dd/delete-project-immediately project))] + (st/emit! (modal/show + {:type :confirm + :title (tr "dashboard.delete-forever-confirmation.title") + :message (tr "dashboard.delete-project-forever-confirmation.description" (:name project)) + :accept-label (tr "dashboard.delete-forever-confirmation.title") + :on-accept accept-fn})))) + (mf/defc header* {::mf/props :obj ::mf/private true} @@ -41,6 +62,7 @@ [:h1 (tr "dashboard.projects-title")]]]) (mf/defc deleted-project-menu* + {::mf/private true} [{:keys [project show on-close top left]}] (let [top (d/nilv top 0) left (d/nilv left 0) @@ -48,25 +70,13 @@ on-restore-project (mf/use-fn (mf/deps project) - (fn [] - (let [on-accept #(st/emit! (dd/restore-project-immediately project))] - (st/emit! (modal/show {:type :confirm - :title (tr "dashboard.restore-project-confirmation.title") - :message (tr "dashboard.restore-project-confirmation.description" (:name project)) - :accept-style :primary - :accept-label (tr "labels.continue") - :on-accept on-accept}))))) + (partial on-restore-project project)) on-delete-project (mf/use-fn (mf/deps project) - (fn [] - (let [accept-fn #(st/emit! (dd/delete-project-immediately project))] - (st/emit! (modal/show {:type :confirm - :title (tr "dashboard.delete-forever-confirmation.title") - :message (tr "dashboard.delete-project-forever-confirmation.description" (:name project)) - :accept-label (tr "dashboard.delete-forever-confirmation.title") - :on-accept accept-fn}))))) + (partial on-delete-project project)) + options (mf/with-memo [on-restore-project on-delete-project] [{:name (tr "dashboard.restore-project-button") @@ -174,8 +184,8 @@ :limit limit :selected-files selected-files}])]])) - (mf/defc menu* + {::mf/private true} [{:keys [team-id section]}] (let [on-recent-click (mf/use-fn @@ -222,7 +232,8 @@ (some #(= (:id project) (:project-id %)) (vals deleted-map))))) (sort-by :modified-at) - (reverse))) + (reverse) + (not-empty))) team-id (get team :id) @@ -298,7 +309,7 @@ :on-click on-delete-all} (tr "dashboard.clear-trash-button")]]] - (when (seq projects) + (when projects (for [{:keys [id] :as project} projects] (let [files (when deleted-map (->> (vals deleted-map)