Share link implementation for followers

This commit is contained in:
Inga Kirschnick
2023-02-22 16:00:04 +01:00
parent 4fab75f0e2
commit 3ad942f17b
5 changed files with 64 additions and 47 deletions

View File

@ -31,6 +31,7 @@ class CorpusDisplay extends RessourceDisplay {
this.setStatus(corpus.status);
this.setTitle(corpus.title);
this.setNumTokens(corpus.num_tokens);
this.setShareLink();
}
onPatch(patch) {
@ -117,4 +118,28 @@ class CorpusDisplay extends RessourceDisplay {
new Date(creationDate).toLocaleString("en-US")
);
}
setShareLink() {
let generateShareLinkButton = this.displayElement.querySelector('#generate-share-link-button');
let copyShareLinkButton = this.displayElement.querySelector('#copy-share-link-button');
let shareLinkInput = this.displayElement.querySelector('#share-link-input');
// let permissionSelect = this.displayElement.querySelector('#permission-select');
let expirationDate = this.displayElement.querySelector('#expiration');
generateShareLinkButton.addEventListener('click', () => {
// Utils.generateCorpusShareLinkRequest(`${this.corpusId}`, permissionSelect.value, expirationDate.value)
Utils.generateCorpusShareLinkRequest(`${this.corpusId}`, expirationDate.value)
.then((shareLink) => {
shareLinkInput.parentElement.classList.remove('hide');
shareLinkInput.value = shareLink;
});
});
copyShareLinkButton.addEventListener('click', () => {
shareLinkInput.select();
navigator.clipboard.writeText(shareLinkInput.value);
app.flash(`Copied!`, 'success');
});
}
}

View File

@ -778,9 +778,11 @@ class Utils {
});
}
static generateCorpusShareLinkRequest(corpusId, permission, expiration) {
// static generateCorpusShareLinkRequest(corpusId, permission, expiration) {
static generateCorpusShareLinkRequest(corpusId, expiration) {
return new Promise((resolve, reject) => {
const data = {permission: permission, expiration: expiration};
// const data = {permission: permission, expiration: expiration};
const data = {expiration: expiration};
fetch(`/corpora/${corpusId}/generate-corpus-share-link`, {method: 'POST', headers: {Accept: 'text/plain'}, body: JSON.stringify(data)})
.then(
(response) => {