Skip to content

android: device pins/favorites and match iOS long push menu - #856

Merged
hiimtmac merged 1 commit into
mainfrom
tm/support-local-pins
Sep 23, 2026
Merged

hiimtmac merged 1 commit into
mainfrom
tm/support-local-pins

Conversation

@hiimtmac

@hiimtmac hiimtmac commented Sep 4, 2026 •

Copy link
Copy Markdown
Contributor

Adds support for device pinning - from device list and from peer detail
Match iOS long push menu - ipv4/ipv6/magic DNS, update icon and reorder

Fixes https://github.com/tailscale/corp/issues/47581
Fixes https://github.com/tailscale/corp/issues/47582

Screen_Recording_20260904_110411.mp4

@hiimtmac
hiimtmac requested review from barnstar and kari-ts September 4, 2026 16:09
@hiimtmac
hiimtmac force-pushed the tm/support-local-pins branch from c59f7b6 to fd845fe Compare September 9, 2026 20:36
Comment thread android/src/main/java/com/tailscale/ipn/ui/notifier/FavoritesManager.kt Outdated
Comment thread android/src/main/java/com/tailscale/ipn/ui/notifier/FavoritesManager.kt Outdated
@hiimtmac
hiimtmac force-pushed the tm/support-local-pins branch from fd845fe to 8c53571 Compare September 11, 2026 14:45
@hiimtmac
hiimtmac requested a review from kari-ts September 11, 2026 14:51
@hiimtmac
hiimtmac force-pushed the tm/support-local-pins branch from 8c53571 to ed0eaf8 Compare September 11, 2026 15:14

@barnstar barnstar left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good - just one small issue with the write serialization. I think we should also add the long press gesture the the search results if that's possible - though we can do that in a follow-up.

Comment thread android/src/main/java/com/tailscale/ipn/ui/notifier/FavoritesManager.kt Outdated
Comment thread android/src/main/java/com/tailscale/ipn/ui/notifier/FavoritesManager.kt Outdated
@hiimtmac
hiimtmac force-pushed the tm/support-local-pins branch 10 times, most recently from 0d785f1 to 7b279e6 Compare September 16, 2026 20:09
@hiimtmac
hiimtmac requested a review from barnstar September 16, 2026 20:12
Comment thread android/src/main/java/com/tailscale/ipn/ui/notifier/FavoritesManager.kt Outdated
@hiimtmac
hiimtmac force-pushed the tm/support-local-pins branch from 7b279e6 to 1bf8f1e Compare September 19, 2026 16:47
Fixes tailscale/corp#47581
Fixes tailscale/corp#47582

Signed-off-by: Taylor McIntyre <taylorm@tailscale.com>
@hiimtmac
hiimtmac force-pushed the tm/support-local-pins branch from 1bf8f1e to f22f96f Compare September 19, 2026 16:49
@hiimtmac
hiimtmac requested a review from kari-ts September 19, 2026 16:49
@kari-ts

kari-ts commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator

thanks! this mostly looks good. I'm curious about what happens if a profile switch happens if there is an in-flight write. iiuc, the LocalAPI write doesn't get canceled. in a profile switch, could e.store be switched to that of the new profile before an older pins request under the previous profile is completed?

@hiimtmac

Copy link
Copy Markdown
Contributor Author

thanks! this mostly looks good. I'm curious about what happens if a profile switch happens if there is an in-flight write. iiuc, the LocalAPI write doesn't get canceled. in a profile switch, could e.store be switched to that of the new profile before an older pins request under the previous profile is completed?

I couldn't find any other coordination between inflight LocalAPI writes and switching profiles in android. I agree that this is a valid concern but I think it should probably be addressed at the project level (rather than a custom implementation for favourites alone). AFAICT the iOS/macOS impl also lack the coordination so potentially this could be solved at the shared go/LocalAPI level instead? Id propose a project-wide follow up for shoring up this pattern everywhere it can be applied to - wdyt?

@kari-ts

kari-ts commented Sep 23, 2026

Copy link
Copy Markdown
Collaborator

thanks! this mostly looks good. I'm curious about what happens if a profile switch happens if there is an in-flight write. iiuc, the LocalAPI write doesn't get canceled. in a profile switch, could e.store be switched to that of the new profile before an older pins request under the previous profile is completed?

I couldn't find any other coordination between inflight LocalAPI writes and switching profiles in android. I agree that this is a valid concern but I think it should probably be addressed at the project level (rather than a custom implementation for favourites alone). AFAICT the iOS/macOS impl also lack the coordination so potentially this could be solved at the shared go/LocalAPI level instead? Id propose a project-wide follow up for shoring up this pattern everywhere it can be applied to - wdyt?

yep, I agree with this!

@hiimtmac
hiimtmac dismissed barnstar’s stale review September 23, 2026 18:25

Addressed feedback

@hiimtmac
hiimtmac merged commit 0349929 into main Sep 23, 2026
5 checks passed
@hiimtmac
hiimtmac deleted the tm/support-local-pins branch September 23, 2026 18:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants