From 3c376696f69467139724875bc81b13b670dfcb27 Mon Sep 17 00:00:00 2001
From: Vyacheslav Tumanov <me@slavatumanov.me>
Date: Tue, 1 Aug 2023 17:40:40 +0500
Subject: [PATCH] UBER-646: clear the class when view is changed to prevent
 using old one (#3541)

Signed-off-by: Vyacheslav Tumanov <me@slavatumanov.me>
---
 .../view-resources/src/components/filter/FilterButton.svelte | 5 +++++
 plugins/workbench-resources/src/components/SavedView.svelte  | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/plugins/view-resources/src/components/filter/FilterButton.svelte b/plugins/view-resources/src/components/filter/FilterButton.svelte
index 136d630369..e3f0593153 100644
--- a/plugins/view-resources/src/components/filter/FilterButton.svelte
+++ b/plugins/view-resources/src/components/filter/FilterButton.svelte
@@ -21,6 +21,7 @@
   import view from '../../plugin'
   import FilterTypePopup from './FilterTypePopup.svelte'
   import IconClose from '../icons/Close.svelte'
+  import { onDestroy } from 'svelte'
 
   export let _class: Ref<Class<Doc>> | undefined
   export let space: Ref<Space> | undefined = undefined
@@ -51,6 +52,10 @@
     if (e !== undefined) setFilters([e])
   }
 
+  onDestroy(() => {
+    _class = undefined
+  })
+
   function add (e: MouseEvent) {
     const target = eventToHTMLElement(e)
     showPopup(
diff --git a/plugins/workbench-resources/src/components/SavedView.svelte b/plugins/workbench-resources/src/components/SavedView.svelte
index a89588a1c0..bb4c520f2a 100644
--- a/plugins/workbench-resources/src/components/SavedView.svelte
+++ b/plugins/workbench-resources/src/components/SavedView.svelte
@@ -110,7 +110,6 @@
       query: fv.location.query ?? undefined,
       fragment: fv.location.fragment ?? undefined
     })
-    setFilters(JSON.parse(fv.filters))
     if (fv.viewletId !== undefined && fv.viewletId !== null) {
       const viewlet = await client.findOne(view.class.Viewlet, { _id: fv.viewletId })
       setActiveViewletId(fv.viewletId, fv.location)
@@ -118,6 +117,7 @@
         setViewOptions(viewlet, copy(fv.viewOptions))
       }
     }
+    setFilters(JSON.parse(fv.filters))
   }
 
   const clearSelection = () => {