subconsciousnetwork / subconscious

Apache License 2.0
8 stars 0 forks source link

Toast notifications for confirmation of background actions #618

Open bfollington opened 1 year ago

bfollington commented 1 year ago

There are a number of cul de sacs in the app right now where after a key operation there is no feedback to the user. This is particularly noticeable during:

  1. Note Rename
  2. Follow/Unfolow
  3. Manual Sync

We need some kind of notification / toast / snackbar system to present information to the user:

image

This gives us a useful hook for undo and will be important to surface sync conflicts when multiple clients are involved.

bfollington commented 1 year ago

From discussion with @gordonbrander:

bfollington commented 1 year ago

Spent some time exploring possible designs for this. I'm unsure whether we will need or want support for displaying an action button in our notifications.

Concept A

As simple as possible. Straight out of the Google playbook, where it would cover the FAB the snackbar is moved up according to: https://m2.material.io/components/snackbars#usage

Frame 1 Frame 2

Concept B

Echoing the pattern of the omnibar. This restricts the amount of space we have and it's hard to fit an action (like "Undo" into the space.

The omnibar could become the "home" of the UI showing location, loading status (by animating the border etc.) and notifications. You can imagine notifications popping in with a nice animation, it has elements of the Dynamic Island.

Frame 3 Frame 4

Concept C

Roll the FAB into the toast notification, definitely comes off a bit tacky / old-school skeumorphic but it makes good use of space and is within a thumb's reach for any actions.

Frame 7 Frame 8

bfollington commented 1 year ago

Another round of mockups after chatting to @gordonbrander.

Screenshot 2023-06-01 at 5 25 09 pm Screenshot 2023-06-01 at 5 24 58 pm

Screenshot 2023-06-01 at 5 24 32 pm Screenshot 2023-06-01 at 5 24 04 pm

bfollington commented 1 year ago

Worth considering how ActivityKit fits with notifications like these. For gateway provisioning we might use a live activity: https://developer.apple.com/documentation/activitykit