Forráskód Böngészése

Highlight Indeed in the sidebar when it is the active destination.

Co-authored-by: Cursor <cursoragent@cursor.com>
AhtashamShahzad1 2 hónapja
szülő
commit
654799023d
1 módosított fájl, 26 hozzáadás és 6 törlés
  1. 26 6
      App for Indeed/Views/DashboardView.swift

+ 26 - 6
App for Indeed/Views/DashboardView.swift

@@ -140,6 +140,8 @@ final class DashboardView: NSView, NSTextFieldDelegate, NSSharingServicePickerDe
 
     private var currentSidebarItems: [SidebarItem] = []
     private var selectedSidebarIndex: Int = 0
+    /// When true, the **Indeed** sidebar row is highlighted instead of `selectedSidebarIndex`.
+    private var isIndeedSidebarSelected = false
     /// All jobs that have been shown in the current chat session, oldest first. Used to deduplicate continuation searches so "show more" doesn't re-display the same listings.
     private var lastSearchResults: [JobListing] = []
     /// "Show more jobs" row under the latest assistant message that listed jobs; removed when a newer listing block replaces it.
@@ -952,6 +954,15 @@ final class DashboardView: NSView, NSTextFieldDelegate, NSSharingServicePickerDe
 
     private static let externalIndeedAppURLSchemes = ["indeed://", "indeedjobs://"]
 
+    private func selectIndeedSidebar() {
+        isIndeedSidebarSelected = true
+        if !isIndeedJobBrowserPresented {
+            openIndeedFromSidebar()
+        }
+        configureSidebar()
+        updateMainContentVisibility()
+    }
+
     /// Opens the installed Indeed app when a handler is registered; otherwise loads Indeed in the embedded browser.
     private func openIndeedFromSidebar() {
         for scheme in Self.externalIndeedAppURLSchemes {
@@ -983,6 +994,10 @@ final class DashboardView: NSView, NSTextFieldDelegate, NSSharingServicePickerDe
     private func dismissIndeedJobBrowserEmbedded() {
         guard isIndeedJobBrowserPresented else { return }
         isIndeedJobBrowserPresented = false
+        if isIndeedSidebarSelected {
+            isIndeedSidebarSelected = false
+            configureSidebar()
+        }
         updateMainContentVisibility()
     }
 
@@ -2397,16 +2412,19 @@ final class DashboardView: NSView, NSTextFieldDelegate, NSSharingServicePickerDe
     }
 
     private func addIndeedSidebarLaunchRow() {
+        let isSelected = isIndeedSidebarSelected
+
         let rowHost = SidebarNavRowView { [weak self] in
-            self?.openIndeedFromSidebar()
+            self?.selectIndeedSidebar()
         }
         rowHost.translatesAutoresizingMaskIntoConstraints = false
         rowHost.wantsLayer = true
         rowHost.layer?.cornerRadius = 8
-        rowHost.restingBackgroundColor = nil
-        rowHost.hoverBackgroundColor = Theme.sidebarRowHoverFill
+        rowHost.restingBackgroundColor = isSelected ? Theme.selectionFill : nil
+        rowHost.hoverBackgroundColor = isSelected ? Theme.selectionFillHover : Theme.sidebarRowHoverFill
         rowHost.setAccessibilityLabel("Indeed")
         rowHost.setAccessibilityRole(.button)
+        rowHost.setAccessibilitySelected(isSelected)
         rowHost.setAccessibilityHelp("Open Indeed to search and apply for jobs")
 
         let row = NSStackView()
@@ -2420,7 +2438,7 @@ final class DashboardView: NSView, NSTextFieldDelegate, NSSharingServicePickerDe
 
         let text = NSTextField(labelWithString: "Indeed")
         text.font = .systemFont(ofSize: 14, weight: .medium)
-        text.textColor = Theme.secondaryText
+        text.textColor = isSelected ? Theme.brandBlue : Theme.secondaryText
         text.refusesFirstResponder = true
 
         row.addArrangedSubview(logo)
@@ -2468,7 +2486,7 @@ final class DashboardView: NSView, NSTextFieldDelegate, NSSharingServicePickerDe
         addIndeedSidebarLaunchRow()
 
         items.enumerated().forEach { index, item in
-            let isSelected = index == selectedSidebarIndex
+            let isSelected = index == selectedSidebarIndex && !isIndeedSidebarSelected
 
             let rowHost = SidebarNavRowView { [weak self] in
                 self?.selectSidebarItem(at: index)
@@ -2656,10 +2674,12 @@ final class DashboardView: NSView, NSTextFieldDelegate, NSSharingServicePickerDe
     }
 
     private func selectSidebarItem(at index: Int) {
+        let leavingIndeedSelection = isIndeedSidebarSelected
+        isIndeedSidebarSelected = false
         dismissIndeedJobBrowserEmbedded()
         guard index >= 0, index < currentSidebarItems.count else { return }
         let selectingHome = isHomeSidebarIndex(index)
-        if index == selectedSidebarIndex {
+        if index == selectedSidebarIndex, !leavingIndeedSelection {
             if selectingHome {
                 applyHomeState()
             }