(core) Comments

Summary:
First iteration for comments system for Grist.
- Comments are stored in a generic metatable `_grist_Cells`
- Each comment is connected to a particular cell (hence the generic name of the table)
- Access level works naturally for records stored in this table
-- User can add/read comments for cells he can see
-- User can't update/remove comments that he doesn't own, but he can delete them by removing cells (rows/columns)
-- Anonymous users can't see comments at all.
- Each comment can have replies (but replies can't have more replies)

Comments are hidden by default, they can be enabled by COMMENTS=true env variable.
Some things for follow-up
- Avatars, currently the user's profile image is not shown or retrieved from the server
- Virtual rendering for comments list in creator panel. Currently, there is a limit of 200 comments.

Test Plan: New and existing tests

Reviewers: georgegevoian, paulfitz

Reviewed By: georgegevoian

Subscribers: paulfitz

Differential Revision: https://phab.getgrist.com/D3509
This commit is contained in:
Jarosław Sadziński
2022-10-17 11:47:16 +02:00
parent 8be920dd25
commit bfd7243fe2
41 changed files with 2621 additions and 77 deletions

View File

@@ -39,6 +39,7 @@ export type IconName = "ChartArea" |
"BarcodeQR" |
"BarcodeQR2" |
"CenterAlign" |
"Chat" |
"Code" |
"Collapse" |
"Convert" |
@@ -75,6 +76,7 @@ export type IconName = "ChartArea" |
"Lock" |
"Log" |
"Mail" |
"Message" |
"Minus" |
"MobileChat" |
"MobileChat2" |
@@ -90,6 +92,7 @@ export type IconName = "ChartArea" |
"Pivot" |
"PivotLight" |
"Plus" |
"Popup" |
"Public" |
"PublicColor" |
"PublicFilled" |
@@ -165,6 +168,7 @@ export const IconList: IconName[] = ["ChartArea",
"BarcodeQR",
"BarcodeQR2",
"CenterAlign",
"Chat",
"Code",
"Collapse",
"Convert",
@@ -201,6 +205,7 @@ export const IconList: IconName[] = ["ChartArea",
"Lock",
"Log",
"Mail",
"Message",
"Minus",
"MobileChat",
"MobileChat2",
@@ -216,6 +221,7 @@ export const IconList: IconName[] = ["ChartArea",
"Pivot",
"PivotLight",
"Plus",
"Popup",
"Public",
"PublicColor",
"PublicFilled",

View File

@@ -50,6 +50,7 @@ export const colors = {
light: new CustomProp('color-light', '#FFFFFF'),
dark: new CustomProp('color-dark', '#262633'),
darkText: new CustomProp('color-dark-text', '#494949'),
darkBg: new CustomProp('color-dark-bg', '#262633'),
slate: new CustomProp('color-slate', '#929299'),