Skip to content

Device: Settings screen adapts to AirPods connection state#551

Merged
d4rken merged 1 commit into
mainfrom
feat/device-settings-connection-states
Apr 25, 2026
Merged

Device: Settings screen adapts to AirPods connection state#551
d4rken merged 1 commit into
mainfrom
feat/device-settings-connection-states

Conversation

@d4rken

@d4rken d4rken commented Apr 25, 2026

Copy link
Copy Markdown
Member

What changed

The device settings screen now adapts to your AirPods' current state instead of showing every section at once.

  • Out of range: only device info + a "bring AirPods nearby" hint.
  • Nearby but not connected: only device info + the existing connect prompt.
  • Profile has no paired Bluetooth device: a banner appears with a one-tap shortcut to fix the profile (same banner the dashboard already uses).
  • The "advanced settings unavailable" card (shown on phones whose Bluetooth stack can't do AAP) was moved to the bottom — it no longer dominates the page on incompatible phones.
  • The "changes apply when AirPods are in ear" hint is now a snackbar that fires after you change a setting, instead of a passive banner above all settings.

Technical Context

  • Reactions are now gated on state.isClassicallyConnected. They assume this phone is the audio target (auto-pause / sleep-pause / CA), so showing them in BLE-visible-only state was misleading — NotConnectedCard already covers that prompt.
  • Missing-paired-device case reuses MissingPairedDeviceBanner from the overview cards. New navToEditProfile() on the viewmodel routes to Nav.Main.DeviceProfileCreation. Every other state card is gated on device.hasSelectedPairedDevice to avoid double-messaging.
  • Pending snackbar fires on the false→true transition of hasPendingSettings, with null initial state to avoid firing on screen entry when something was already pending. No new strings — device_settings_pending_info is reused.

Review checklist

  • Out of range → DeviceInfo + "Device not nearby" infobox only.
  • BLE-visible / not classically connected → DeviceInfo + NotConnected only (no Reactions).
  • Classic only (no AAP) → DeviceInfo + Reactions + AapUnavailable at bottom.
  • Fully connected → all setting cards.
  • Profile with no paired Bluetooth device → DeviceInfo + missing-paired banner; tap → profile editor.
  • Change a setting while AirPods are in case → snackbar fires once.

- Hide reactions and AAP sections unless device is classically connected

- Move advanced-settings-unavailable card to the bottom of the list

- Show 'device not nearby' infobox when out of range

- Show missing-paired-device banner with edit-profile action

- Replace pending banner with snackbar on user-initiated change
@d4rken d4rken added the enhancement Add a new feature of improve an existing feature label Apr 25, 2026
@d4rken d4rken merged commit a40599c into main Apr 25, 2026
10 checks passed
@d4rken d4rken deleted the feat/device-settings-connection-states branch April 25, 2026 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Add a new feature of improve an existing feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant