riyadhafraa
d90893848d
notes(#454): per-recipient view/edit folder sharing
- Schema: noteFolderShares.permission ('view'|'edit', default 'view').
- Server: resolveFolderEditAccess + emitFolderChanged helpers.
- POST/PATCH/DELETE/checklist now allow folder editors.
- Editors stamp notes with folder owner's userId; labels validated
against owner; PATCH editors blocked from unfile (folderId=null)
and cross-folder moves to non-matching owners.
- emitFolderChanged fires for owner AND editor mutations across
create / patch (old + new folder) / delete / checklist toggle.
- PUT /shares accepts both legacy recipientUserIds and new
recipients:[{userId,permission}]; diffs add/update/remove/perm-flip.
- GET /shares, /shared-with-me, /shared-notes return permission /
myPermission / readOnly.
- Client:
- notes-api types: FolderSharePermission, myPermission on
SharedFolder/SharedFolderView, permission on FolderShareRecipient,
readOnly:boolean on SharedFolderNote.
- useUpdateFolderShares takes recipients[].
- useCreate/Update/DeleteNote also invalidate ['note-folders'] so
actor's shared-folder rail badge stays fresh.
- FolderShareDialog: per-row checkbox + segmented View/Edit toggle.
- SharedFolderView: editor mode mounts Composer + NoteCard with
full edit/delete/archive affordances; Send hidden in editor
context (Composer + NoteCard hideSend prop) since /send is
owner-only.
- folders-rail: per-folder permission badge.
- socket: note-folder-shared also invalidates ['notes'] +
['note-folders'] for fanout to owner / other editors.
- Locales: shareDescriptionPerm, permissionView/Edit, canEdit
(en + ar).
- Pre-existing executive-meetings.ts type errors are out of scope.
2026-05-10 11:07:15 +00:00
..
2026-04-22 10:53:54 +00:00
2026-05-03 19:01:50 +00:00
2026-04-27 11:46:39 +00:00
2026-05-01 18:57:48 +00:00
2026-05-04 06:13:12 +00:00
2026-04-20 11:12:58 +00:00
2026-04-20 12:28:25 +00:00
2026-04-20 12:33:56 +00:00
2026-04-20 15:31:30 +00:00
2026-04-21 06:57:47 +00:00
2026-04-21 06:57:47 +00:00
2026-04-21 10:17:41 +00:00
2026-04-21 12:45:31 +00:00
2026-04-21 13:35:00 +00:00
2026-04-21 17:32:28 +00:00
2026-04-21 17:34:45 +00:00
2026-04-21 17:37:46 +00:00
2026-04-21 17:50:23 +00:00
2026-04-21 18:00:59 +00:00
2026-04-21 18:00:59 +00:00
2026-04-21 18:02:45 +00:00
2026-04-22 06:42:23 +00:00
2026-04-22 10:57:10 +00:00
2026-04-27 09:06:23 +00:00
2026-04-27 11:11:43 +00:00
2026-04-27 11:28:14 +00:00
2026-04-28 08:02:41 +00:00
2026-04-28 09:03:59 +00:00
2026-04-28 20:58:08 +00:00
2026-04-28 21:03:02 +00:00
2026-04-29 06:28:41 +00:00
2026-04-29 06:28:41 +00:00
2026-04-29 06:28:41 +00:00
2026-04-29 07:09:50 +00:00
2026-04-29 10:46:32 +00:00
2026-04-29 10:46:32 +00:00
2026-04-29 10:46:32 +00:00
2026-04-29 12:22:40 +00:00
2026-04-29 12:22:40 +00:00
2026-04-29 13:24:16 +00:00
2026-04-29 14:52:25 +00:00
2026-04-29 17:36:32 +00:00
2026-04-29 17:36:32 +00:00
2026-04-29 18:22:49 +00:00
2026-04-29 18:35:49 +00:00
2026-04-29 18:51:11 +00:00
2026-04-29 18:57:26 +00:00
2026-04-29 19:13:34 +00:00
2026-04-29 19:13:34 +00:00
2026-04-29 19:28:13 +00:00
2026-04-30 05:52:39 +00:00
2026-04-30 06:39:45 +00:00
2026-04-30 07:25:15 +00:00
2026-04-30 09:28:56 +00:00
2026-04-30 09:57:18 +00:00
2026-04-30 11:20:30 +00:00
2026-04-30 12:20:50 +00:00
2026-04-30 12:47:50 +00:00
2026-04-30 12:47:50 +00:00
2026-04-30 18:07:52 +00:00
2026-04-30 18:07:52 +00:00
2026-04-30 18:29:42 +00:00
2026-05-01 07:43:38 +00:00
2026-05-01 08:18:29 +00:00
2026-05-01 08:18:29 +00:00
2026-05-01 08:18:29 +00:00
2026-05-01 09:01:21 +00:00
2026-05-01 13:12:00 +00:00
2026-05-01 14:23:01 +00:00
2026-05-01 15:03:18 +00:00
2026-05-01 15:03:18 +00:00
2026-05-01 15:24:59 +00:00
2026-05-01 15:24:59 +00:00
2026-05-01 18:00:00 +00:00
2026-05-01 18:23:29 +00:00
2026-05-01 18:37:16 +00:00
2026-05-01 18:46:35 +00:00
2026-05-01 18:57:48 +00:00
2026-05-01 19:55:39 +00:00
2026-05-01 19:55:39 +00:00
2026-05-01 19:55:39 +00:00
2026-05-01 21:30:16 +00:00
2026-05-01 21:30:16 +00:00
2026-05-02 08:39:00 +00:00
2026-05-02 09:03:03 +00:00
2026-05-02 09:34:57 +00:00
2026-05-02 10:32:39 +00:00
2026-05-03 06:22:54 +00:00
2026-05-03 08:01:55 +00:00
2026-05-03 09:35:43 +00:00
2026-05-03 09:35:43 +00:00
2026-05-03 09:47:11 +00:00
2026-05-03 10:00:45 +00:00
2026-05-03 10:06:28 +00:00
2026-05-03 10:09:29 +00:00
2026-05-03 10:51:13 +00:00
2026-05-03 10:51:13 +00:00
2026-05-03 11:19:56 +00:00
2026-05-03 11:33:43 +00:00
2026-05-03 11:49:10 +00:00
2026-05-03 11:49:10 +00:00
2026-05-03 11:53:52 +00:00
2026-05-03 12:05:52 +00:00
2026-05-03 12:05:52 +00:00
2026-05-03 12:05:55 +00:00
2026-05-03 12:39:01 +00:00
2026-05-03 12:39:01 +00:00
2026-05-03 12:48:03 +00:00
2026-05-03 12:48:03 +00:00
2026-05-03 12:49:15 +00:00
2026-05-03 12:49:59 +00:00
2026-05-03 12:59:13 +00:00
2026-05-03 13:54:24 +00:00
2026-05-03 14:34:29 +00:00
2026-05-03 15:06:14 +00:00
2026-05-03 15:26:38 +00:00
2026-05-03 15:26:38 +00:00
2026-05-03 15:55:29 +00:00
2026-05-03 15:55:29 +00:00
2026-05-03 16:02:10 +00:00
2026-05-03 17:43:07 +00:00
2026-05-03 17:43:07 +00:00
2026-05-03 18:37:48 +00:00
2026-05-03 19:17:44 +00:00
2026-05-03 19:27:11 +00:00
2026-05-03 19:38:33 +00:00
2026-05-04 06:34:58 +00:00
2026-05-04 06:44:02 +00:00
2026-05-04 07:03:37 +00:00
2026-05-04 07:15:12 +00:00
2026-05-04 07:50:43 +00:00
2026-05-04 08:09:03 +00:00
2026-05-04 10:59:48 +00:00
2026-05-04 11:57:42 +00:00
2026-05-04 13:02:49 +00:00
2026-05-04 13:06:45 +00:00
2026-05-04 13:22:13 +00:00
2026-05-04 13:22:13 +00:00
2026-05-04 14:06:03 +00:00
2026-05-04 14:20:12 +00:00
2026-05-04 15:57:11 +00:00
2026-05-04 16:01:59 +00:00
2026-05-04 16:04:55 +00:00
2026-05-04 16:09:18 +00:00
2026-05-04 16:09:18 +00:00
2026-05-04 16:09:18 +00:00
2026-05-04 16:15:49 +00:00
2026-05-04 16:22:41 +00:00
2026-05-04 17:50:11 +00:00
2026-05-04 17:55:36 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:22:12 +00:00
2026-05-05 07:27:21 +00:00
2026-05-05 07:35:42 +00:00
2026-05-05 07:35:42 +00:00
2026-05-05 07:41:57 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 07:51:36 +00:00
2026-05-05 09:47:06 +00:00
2026-05-05 13:25:49 +00:00
2026-05-05 14:18:33 +00:00
2026-05-05 14:25:31 +00:00
2026-05-06 07:08:39 +00:00
2026-05-06 08:48:23 +00:00
2026-05-06 09:25:10 +00:00
2026-05-06 10:19:47 +00:00
2026-05-07 07:52:50 +00:00
2026-05-07 07:52:50 +00:00
2026-05-07 07:52:50 +00:00
2026-05-07 08:39:14 +00:00
2026-05-07 08:55:19 +00:00
2026-05-07 09:13:11 +00:00
2026-05-07 10:09:56 +00:00
2026-05-07 10:09:56 +00:00
2026-05-07 15:04:10 +00:00
2026-05-07 15:10:51 +00:00
2026-05-09 10:40:30 +00:00
2026-05-10 07:23:51 +00:00
2026-05-10 07:23:51 +00:00
2026-05-10 07:33:02 +00:00
2026-05-10 08:55:52 +00:00
2026-05-10 09:28:51 +00:00
2026-05-10 09:42:53 +00:00
2026-05-10 11:07:15 +00:00
2026-05-01 14:58:31 +00:00
2026-05-01 22:03:02 +00:00
2026-05-01 11:18:40 +00:00
2026-04-27 11:46:39 +00:00
2026-05-05 14:31:00 +00:00
2026-04-21 06:35:39 +00:00
2026-05-04 11:12:09 +00:00
2026-05-04 09:40:36 +00:00
2026-05-04 09:40:36 +00:00
2026-05-04 09:59:03 +00:00
2026-05-04 08:22:32 +00:00
2026-05-04 09:24:37 +00:00
2026-04-20 11:26:01 +00:00
2026-04-21 18:17:39 +00:00
2026-04-22 08:13:45 +00:00
2026-05-03 14:19:06 +00:00
2026-05-03 19:11:49 +00:00
2026-05-04 07:29:50 +00:00
2026-05-05 07:41:57 +00:00
2026-04-27 11:46:39 +00:00