Ability to create share url slug (#4550)
* 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
This commit is contained in:
@@ -7,7 +7,10 @@ import {
|
||||
Scopes,
|
||||
DataType,
|
||||
Default,
|
||||
AllowNull,
|
||||
Is,
|
||||
} from "sequelize-typescript";
|
||||
import { SHARE_URL_SLUG_REGEX } from "@shared/utils/urlHelpers";
|
||||
import Collection from "./Collection";
|
||||
import Document from "./Document";
|
||||
import Team from "./Team";
|
||||
@@ -85,6 +88,14 @@ class Share extends IdModel {
|
||||
@Column
|
||||
views: number;
|
||||
|
||||
@AllowNull
|
||||
@Is({
|
||||
args: SHARE_URL_SLUG_REGEX,
|
||||
msg: "Must be only alphanumeric and dashes",
|
||||
})
|
||||
@Column
|
||||
urlId: string | null | undefined;
|
||||
|
||||
// getters
|
||||
|
||||
get isRevoked() {
|
||||
@@ -92,7 +103,9 @@ class Share extends IdModel {
|
||||
}
|
||||
|
||||
get canonicalUrl() {
|
||||
return `${this.team.url}/s/${this.id}`;
|
||||
return this.urlId
|
||||
? `${this.team.url}/s/${this.urlId}`
|
||||
: `${this.team.url}/s/${this.id}`;
|
||||
}
|
||||
|
||||
// associations
|
||||
|
||||
Reference in New Issue
Block a user