Richer Slack Notifications

Scope


1. Clearer notifications

Put link to note over the note title and remove "See in Slite button". The link should also contain UTM parameters so we can track how much people are navigating to notes from Slack.
utm_source should be slack and utm_campaign should be the notification type like we do for email.
Replace Slite usernames in notification text by Slack usernames (use mention link) when possible. Otherwise, display Slite username.

2. Make some notifications richer

Add thread, reply to comment, add discussion, reply to discussion

Show comment content formatted with Slack markdown in a block looking like the Slack quote block. See resources bellow:
Format that should be kept: bold, italic, strikethrough, links, lists, code blocks, inline code, quotes.
Headers should be converted to simple bold.
Tables should not be displayed (because is just a nice to have).
Embeds and uploaded files should be displayed as plain links.
Convert hints to quote with emoji corresponding to type of hint
for info hint
for warning hint
for green hint
for red hint
Mentions to Slite users in comment content should be converted to Slack mentions when possible.
Add inline thread notification displays also the portion of text that was originally selected

Request access to channel or note

Add action buttons Allow and Deny to quickly allow or deny the request without having to go to Slite.
When clicking on Allow or Deny , edit the message to remove the action and add a line with the result of the action
Granted access
Denied access

Share channel or note

Option 1 - Show a preview (X first lines or blocks) of note content that was shared by using the same content conversion we do for comment content.
Smart tables, doc cards, separators, list of doc, etc should be ignored like tables.
Option 2 - Embed PDF export like we do with Share to Slack feature.
Option 3 - Plain text extract of the X first lines or blocks.

Automated doc creation

Show the message attached to the note creation
List users (with avatars) of people that were targeted for this doc creation
Action button to turn off the automation
Upon clicking the action button, replace with message " Automation turned off"

Flow


I tried to figure out how the UX could look like.
Sketches cannot currently be displayed in exports

Designs and assets


@Charley started adding some inspirations from Figma
Great to see that I can reply from here. If I know what she's talking about without having to open the doc, this saves a lot of time
It's also good that you see a preview, even if you can't really zoom in to see the details, you can remember or have an idea of what this is about

Open questions


Are there still unanswered questions? Any blind spots remaining?

Technical factoring


Current state of integration locking

frontend: isSlack // integration !== true
backend: mostly none

What we should do? — Use Organization.features

Like for permissions, we move increasingly complexe business logic to the backend. Instead of doing stuff like `if(isTrue) then` to handle feature locks: organization.features.

type OrganizationFeatures {
openId: Boolean!
enforcedOAuth: Boolean!
integrations: Boolean!
userGroups: Boolean!
granularPermissions: Boolean!
readerRole: Boolean!
restrictInviteFromMembers: Boolean!
editProtection: Boolean!
unlimitedHistory: Boolean!
automatedBackups: Boolean!
managePublicSharingNeededRole: Boolean!
teamInsights: Boolean!
publishedDocFooter: Boolean!
publishedDocCopyButton: Boolean!
sharedDocCountLimit: Boolean!
}

This assert function may resolve permissions based on complexe rules base on slack.product mixed with feature flags, user roles etc...

Resolving these permissions with combinations of flags and product allows us to easilly implement both Slack and Asana integrations:
- Slack is a simple integration check
- Asana is product integration + feature flag checks