* feat: share url slug
* feat: add col urlId
* feat: allow updating urlId
* fix: typo
* fix: migrations
* fix: urlId model validation
* fix: input label
* fix: debounce slug request
* feat: link preview
* fix: send slug variant in response if available
* fix: temporary redirect to slug variant if available
* fix: move up the custom link field
* fix: process and display backend err
* fix: reset custom link state on popover close and remove isCopied
* fix: document link preview
* fix: set urlId when available
* fix: keep unique(urlId, teamId)
* fix: codeql
* fix: get rid of preview type
* fix: width not needed for block elem
* fix: migrations
* fix: array not required
* fix: use val
* fix: validation on shareId and test
* fix: allow clearing urlId
* fix: do not escape
* fix: unique error text
* fix: keep team
* feat: allow personal gmail accounts to be used to sign into teams with an existing invite
* address comments
* add comment for appDomain
* address comments
* Allow Document to be fetched without Slug
Fixes#3423
This PR refactors the `Document.findByPk` method to not require the
`slug` portion of the urlID.
Before this function accepted two different 'formats' for the ID.
- The `uuid` ID of the Document
- The full `urlID` which looked something like
`some-document-1234567890`
However the `some-document` slug portion of this identifier wasn't
actually used when looking for a document.
We now allow searching by JUST the postfix of the `urlID`, in the above
example that is `1234567890`.
We do this via a new Regex pattern to match on that just looks for the
right looking id alone, without the prefix.
This codepath looks the same as when we find it by the full `urlID`
besides the different regex that we match on.
The issue #3423 mentions that this should apply to all the API
endpoints. I believe that this `findByPk` method is all that should be
needed for that change. But if this is incorrect, OR you would like more
test coverage on the API endpoints as a more 'end to end test' please
let me know!
* Change original regex to make the slug optional
This has the, I believe to be good, side-effect of making the same logic
apply to `Collection` as well. Since `Collection` was always doing the
same stripping of the slug before the lookup I believe it should be just
as safe to do there.
We don't have to touch the code in Collections but we add a test of this
behavior there as well.
* No reason to rename this now that we aren't doing two matches
Remove menu hover styles on mobile
Fixed duplicate hover+active behavior on editor menus
Fixed editor menus visibly scroll to the top when reopened
Fixed some minor editor spacing issues
Renamed shred routeHelpers -> urlHelpers