We need to introduce s new thread permission that limits who is able to manage the pins for a thread. At the moment, this is only granted to Admins, so there's a couple of things that need to be done
here:
1. Update the baseAdminPriviledges so new chats with admins will have the correct, updated permissions
2. Run a migration to cover existing threads
3. Include the necessary migration to create the new `pinned_messages` table from the previous diff.
The general overview is to update the `roles` table for Admins, and then call `updateRolesAndPermissionsForAllThreads()` which should handle updating the permissions for each of the threads given the new roles. I feel like a check against `roles.name == "Admin"` is consistent with how we generally check how a role is an Admin role: https://github.com/CommE2E/comm/blob/master/lib/shared/thread-utils.js#L1039.
The migration was discussed in the [[ https://linear.app/comm/issue/ENG-3181/introduce-a-new-thread-permission-for-pinning-unpinning-messages | Linear ]] task.
Depends on D6924