|  | 
| 21 | 21 |   export let modeSelectorProps: IModeSelector | undefined = undefined | 
| 22 | 22 | 
 | 
| 23 | 23 |   let viewlet: WithLookup<Viewlet> | undefined = undefined | 
| 24 |  | -  let viewlets: Array<WithLookup<Viewlet>> | undefined = undefined; | 
|  | 24 | +  const viewlets: Array<WithLookup<Viewlet>> = [] | 
|  | 25 | +  let viewletsReady: boolean = false | 
| 25 | 26 |   let viewOptions: ViewOptions | undefined | 
| 26 | 27 | 
 | 
| 27 | 28 |   let currentTabId: Ref<WorkbenchTab> | undefined = get(tabIdStore) | 
| 28 |  | -  let indicatorElement: HTMLElement | null = null; | 
|  | 29 | +  const indicatorElement: HTMLElement | null = null | 
| 29 | 30 | 
 | 
| 30 | 31 |   let search = '' | 
| 31 | 32 |   let searchQuery: DocumentQuery<Issue> = { ...query } | 
|  | 
| 71 | 72 |         savedFilterBarQuery | 
| 72 | 73 |       ) | 
| 73 | 74 | 
 | 
|  | 75 | +      if (!viewletsReady) { | 
|  | 76 | +        console.log('[DEBUG_STATE_ISSUES] Restore State: Viewlets not yet marked as ready. Exiting to re-trigger.') | 
|  | 77 | +        return | 
|  | 78 | +      } | 
|  | 79 | +
 | 
| 74 | 80 |       if (savedViewletId && viewlets && viewlets.length > 0) { | 
| 75 | 81 |         const foundViewlet = viewlets.find((v) => v._id === savedViewletId) | 
| 76 | 82 |         if (foundViewlet) { | 
|  | 
| 118 | 124 |   } | 
| 119 | 125 | 
 | 
| 120 | 126 |   $: { | 
| 121 |  | -    console.log('[DEBUG_STATE_ISSUES] Reactive: Viewlet change detection triggered.') | 
| 122 |  | -    if (currentTabId && viewlet) { | 
|  | 127 | +    if (viewlets && viewlets.length > 0 && !viewletsReady) { | 
|  | 128 | +      viewletsReady = true | 
|  | 129 | +      console.log( | 
|  | 130 | +        '[DEBUG_STATE_ISSUES] Reactive: Viewlets just became available (viewletsReady = true). Attempting restore.' | 
|  | 131 | +      ) | 
|  | 132 | +      void restoreTrackerIssueState() | 
|  | 133 | +    } else if (!viewlets || viewlets.length === 0) { | 
|  | 134 | +      viewletsReady = false | 
|  | 135 | +    } | 
|  | 136 | +
 | 
|  | 137 | +    if (currentTabId && viewlet && viewletsReady) { | 
| 123 | 138 |       console.log( | 
| 124 | 139 |         '[DEBUG_STATE_ISSUES] Reactive: Viewlet changed or initialized, saving state. Viewlet ID:', | 
| 125 | 140 |         viewlet._id | 
| 126 | 141 |       ) | 
| 127 | 142 |       saveTrackerIssueState() | 
|  | 143 | +    } else if (currentTabId && !viewlet && viewletsReady) { | 
|  | 144 | +      console.log('[DEBUG_STATE_ISSUES] Reactive: Viewlet became undefined but viewlets are ready. Saving state.') | 
|  | 145 | +      saveTrackerIssueState() | 
| 128 | 146 |     } else { | 
| 129 |  | -      console.log('[DEBUG_STATE_ISSUES] Reactive: Viewlet or currentTabId not ready for saving Viewlet state.') | 
|  | 147 | +      console.log( | 
|  | 148 | +        '[DEBUG_STATE_ISSUES] Reactive: Viewlet or currentTabId/viewletsReady not ready for saving Viewlet state.' | 
|  | 149 | +      ) | 
| 130 | 150 |     } | 
| 131 | 151 |   } | 
| 132 | 152 | 
 | 
|  | 
| 171 | 191 |   {label} | 
| 172 | 192 |   {space} | 
| 173 | 193 |   {modeSelectorProps} | 
| 174 |  | -  currentTabId={currentTabId} | 
|  | 194 | +  {currentTabId} | 
| 175 | 195 | > | 
| 176 | 196 |   <svelte:fragment slot="header-tools"> | 
| 177 | 197 |     <ViewletSettingButton bind:viewOptions bind:viewlet /> | 
|  | 
0 commit comments