3 lines
15 KiB
JavaScript
3 lines
15 KiB
JavaScript
import{m as h,v as m,I as p,c as i}from"./index-XmYygNaN.chunk.mjs";import{t as s,ae as d,_ as C,g as f,N as y,a1 as k}from"./vue.runtime.esm-Ct3_M7aQ.chunk.mjs";import{N as u,l as r,aj as n,q as g,k as v,f as N,o as c}from"./index-BMeBqg0T.chunk.mjs";import{a as L}from"./NcTextField-o_8gWurX-D9H3ZKW0.chunk.mjs";import{L as _,N as F,O as S,A as w,x,n as b,Q as A,R as $,M}from"./icons-VGG7keIQ.chunk.mjs";import{P as B,a as P,f as I}from"./PhotosFiltersInput-V84ZfLNi.chunk.mjs";import{S as l}from"./index-x9vhq81Z.chunk.mjs";import{N as O,a as V}from"./NcSelect-CjUzohn5-BzxyFHzp.chunk.mjs";import{F as E}from"./FetchCollectionContentMixin-BXizDLoQ.chunk.mjs";const T="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20id='mdi-account-group-outline'%20viewBox='0%200%2024%2024'%3e%3cpath%20d='M12,5A3.5,3.5%200%200,0%208.5,8.5A3.5,3.5%200%200,0%2012,12A3.5,3.5%200%200,0%2015.5,8.5A3.5,3.5%200%200,0%2012,5M12,7A1.5,1.5%200%200,1%2013.5,8.5A1.5,1.5%200%200,1%2012,10A1.5,1.5%200%200,1%2010.5,8.5A1.5,1.5%200%200,1%2012,7M5.5,8A2.5,2.5%200%200,0%203,10.5C3,11.44%203.53,12.25%204.29,12.68C4.65,12.88%205.06,13%205.5,13C5.94,13%206.35,12.88%206.71,12.68C7.08,12.47%207.39,12.17%207.62,11.81C6.89,10.86%206.5,9.7%206.5,8.5C6.5,8.41%206.5,8.31%206.5,8.22C6.2,8.08%205.86,8%205.5,8M18.5,8C18.14,8%2017.8,8.08%2017.5,8.22C17.5,8.31%2017.5,8.41%2017.5,8.5C17.5,9.7%2017.11,10.86%2016.38,11.81C16.5,12%2016.63,12.15%2016.78,12.3C16.94,12.45%2017.1,12.58%2017.29,12.68C17.65,12.88%2018.06,13%2018.5,13C18.94,13%2019.35,12.88%2019.71,12.68C20.47,12.25%2021,11.44%2021,10.5A2.5,2.5%200%200,0%2018.5,8M12,14C9.66,14%205,15.17%205,17.5V19H19V17.5C19,15.17%2014.34,14%2012,14M4.71,14.55C2.78,14.78%200,15.76%200,17.5V19H3V17.07C3,16.06%203.69,15.22%204.71,14.55M19.29,14.55C20.31,15.22%2021,16.06%2021,17.07V19H24V17.5C24,15.76%2021.22,14.78%2019.29,14.55M12,16C13.53,16%2015.24,16.5%2016.23,17H7.77C8.76,16.5%2010.47,16%2012,16Z'%20/%3e%3c/svg%3e",K={name:"CollaboratorsSelectionForm",components:{Close:x,AccountGroupOutline:w,ContentCopy:S,Check:F,Earth:_,NcButton:u,NcListItemIcon:V,NcSelect:O},mixins:[E],props:{albumName:{type:String,required:!0},collaborators:{type:Array,default:()=>[]},allowPublicLink:{type:Boolean,default:!0}},data(){return{searchText:null,availableCollaborators:{},selectedCollaboratorsKeys:[],currentSearchResults:[],loadingCollaborators:!1,randomId:Math.random().toString().substring(2,10),publicLinkCopied:!1,collaboratorTypes:l,config:{minSearchStringLength:parseInt(OC.config["sharing.minSearchStringLength"],10)||0}}},computed:{searchResults(){return this.currentSearchResults.filter(({id:t})=>t!==f()?.uid).map(t=>({...t,key:`${t.type}:${t.id}`,iconSvg:t.type===l.Group?T:void 0})).filter(({key:t})=>!this.selectedCollaboratorsKeys.includes(t))},listableSelectedCollaboratorsKeys(){return this.selectedCollaboratorsKeys.filter(t=>this.availableCollaborators[t].type!==l.Link)},selectedCollaborators(){return this.selectedCollaboratorsKeys.map(t=>this.availableCollaborators[t])},isPublicLinkSelected(){return this.selectedCollaboratorsKeys.includes(`${l.Link}`)},publicLink(){return this.availableCollaborators[l.Link]},publicLinkURL(){return`${window.location.protocol}//${window.location.host}${C(`apps/photos/public/${this.publicLink.id}`)}`},albumFileName(){return this.$store.getters.getAlbumName(this.albumName)}},watch:{collaborators(t){this.populateCollaborators(t)}},mounted(){this.populateCollaborators(this.collaborators)},methods:{async searchCollaborators(t){if(t!==void 0&&(t=t.trim(),!(t.length<this.config.minSearchStringLength)))try{this.loadingCollaborators=!0;const a=await v.get(d("core/autocomplete/get"),{params:{search:t,itemType:"share-recipients",shareTypes:[l.User,l.Group]}});this.currentSearchResults=a.data.ocs.data.map(e=>{switch(e.source){case"users":return{id:e.id,label:e.label,type:l.User};case"groups":return{id:e.id,label:e.label,type:l.Group};default:throw new Error(`Invalid collaborator source ${e.source}`)}}),this.availableCollaborators={...this.availableCollaborators,...this.currentSearchResults.reduce(this.indexCollaborators,{})}}catch(a){this.errorFetchingCollaborators=a,r.error(this.t("photos","Failed to fetch collaborators list."),{error:a}),n(this.t("photos","Failed to fetch collaborators list."))}finally{this.loadingCollaborators=!1}},populateCollaborators(t){const a=t.reduce(this.indexCollaborators,{});this.selectedCollaboratorsKeys=Object.keys(a),this.availableCollaborators={3:{id:"",label:this.t("photos","Public link"),type:l.Link},...this.availableCollaborators,...a}},indexCollaborators(t,a){return{...t,[`${a.type}${a.type===l.Link?"":":"}${a.type===l.Link?"":a.id}`]:a}},async createPublicLinkForAlbum(){this.selectEntity(`${l.Link}`),await this.updateAlbumCollaborators(),await this.fetchCollection(this.albumFileName,g)},async deletePublicLink(){this.unselectEntity(`${l.Link}`),this.availableCollaborators[3]={id:"",label:this.t("photos","Public link"),type:l.Link},this.publicLinkCopied=!1,await this.updateAlbumCollaborators()},async updateAlbumCollaborators(){try{await this.$store.dispatch("updateCollection",{collectionFileName:this.albumFileName,properties:{collaborators:this.selectedCollaborators}})}catch(t){r.error("[PublicAlbumContent] Error updating album",{error:t}),n(this.t("photos","Failed to update album."))}},async copyPublicLink(){await navigator.clipboard.writeText(this.publicLinkURL),this.publicLinkCopied=!0,setTimeout(()=>{this.publicLinkCopied=!1},1e4)},selectEntity(t){this.searchText=null,!this.selectedCollaboratorsKeys.includes(t)&&this.selectedCollaboratorsKeys.push(t)},unselectEntity(t){const a=this.selectedCollaboratorsKeys.indexOf(t);a!==-1&&this.selectedCollaboratorsKeys.splice(a,1)},t:s}};var R=function(){var t=this,a=t._self._c;return a("div",{staticClass:"manage-collaborators"},[a("h2",{staticClass:"manage-collaborators__title"},[t._v(" "+t._s(t.t("photos","Add collaborators"))+" ")]),a("form",{staticClass:"manage-collaborators__form",on:{submit:function(e){e.preventDefault()}}},[a("NcSelect",{attrs:{"input-id":"sharing-search-input","input-label":t.t("photos","Add people or groups who can edit your album"),loading:t.loadingCollaborators,label:"label",filterable:!1,placeholder:t.t("photos","Search people or groups"),"clear-search-on-blur":()=>!1,"user-select":!0,"append-to-body":!1,options:t.searchResults},on:{search:t.searchCollaborators,"option:selected":({key:e})=>t.selectEntity(e)},model:{value:t.searchText,callback:function(e){t.searchText=e},expression:"searchText"}},[t._v(" "+t._s(t.t("photos","No recommendations. Start typing."))+" ")])],1),a("ul",{staticClass:"manage-collaborators__selection"},t._l(t.listableSelectedCollaboratorsKeys,function(e){return a("li",{key:e,staticClass:"manage-collaborators__selection__item"},[a("NcListItemIcon",{attrs:{id:t.availableCollaborators[e].id,"display-name":t.availableCollaborators[e].label,name:t.availableCollaborators[e].label,user:t.availableCollaborators[e].id,"is-no-user":t.availableCollaborators[e].type!==t.collaboratorTypes.User}},[t.availableCollaborators[e].type===t.collaboratorTypes.Group?a("AccountGroupOutline",{attrs:{title:t.t("photos","Group")}}):t._e(),a("NcButton",{attrs:{type:"tertiary","aria-label":t.t("photos","Remove {collaboratorLabel} from the collaborators list",{collaboratorLabel:t.availableCollaborators[e].label})},on:{click:function(o){return t.unselectEntity(e)}}},[a("Close",{attrs:{slot:"icon",size:20},slot:"icon"})],1)],1)],1)}),0),a("div",{staticClass:"actions"},[t.allowPublicLink?a("div",{staticClass:"actions__public-link"},[t.isPublicLinkSelected&&t.publicLink.id!==""?[a("NcButton",{staticClass:"manage-collaborators__public-link-button",attrs:{"aria-label":t.t("photos","Copy the public link"),title:t.publicLinkURL},on:{click:t.copyPublicLink},scopedSlots:t._u([{key:"icon",fn:function(){return[t.publicLinkCopied?a("Check"):a("ContentCopy")]},proxy:!0}],null,!1,845538853)},[t.publicLinkCopied?[t._v(" "+t._s(t.t("photos","Public link copied!"))+" ")]:[t._v(" "+t._s(t.t("photos","Copy public link"))+" ")]],2),a("NcButton",{attrs:{type:"tertiary","aria-label":t.t("photos","Delete the public link")},on:{click:t.deletePublicLink}},[a("Close",{attrs:{slot:"icon"},slot:"icon"})],1)]:a("NcButton",{staticClass:"manage-collaborators__public-link-button",attrs:{disabled:t.isPublicLinkSelected&&t.publicLink.id==="","aria-label":t.t("photos","Create public link share")},on:{click:t.createPublicLinkForAlbum}},[a("Earth",{attrs:{slot:"icon"},slot:"icon"}),t._v(" "+t._s(t.t("photos","Share via public link"))+" ")],1)],2):t._e(),a("div",{staticClass:"actions__slot"},[t._t("default",null,{collaborators:t.selectedCollaborators})],2)])])},z=[],U=b(K,R,z,!1,null,"16cfe5e0");const G=U.exports,j={name:"AlbumForm",components:{MapMarkerOutline:M,AccountMultiplePlusOutline:$,SendOutline:A,NcButton:u,NcLoadingIcon:N,NcTextField:L,CollaboratorsSelectionForm:G,PhotosFiltersInput:P,PhotosFiltersDisplay:B},props:{album:{type:Object,default:null},filtersValue:{type:Object,default:()=>({})},displayBackButton:{type:Boolean,default:!1}},data(){return{showCollaboratorView:!1,albumName:"",albumLocation:"",albumFilters:I.reduce((t,a)=>({...t,[a.id]:[]}),{}),loading:!1}},computed:{editMode(){return this.album!==null},sharingEnabled(){return OC.Share!==void 0},albumFileName(){return this.$store.getters.getAlbumName(this.albumName)},albumNameValidationError(){const t=this.$store.getters.albums[this.albumFileName];if(t!==void 0&&this.album!==t&&!this.loading)return s("files","This name is already in use.");try{m(this.albumName)}catch(a){if(!(a instanceof p))throw a;switch(a.reason){case i.Character:return s("files",'"{char}" is not allowed inside a filename.',{char:a.segment});case i.ReservedName:return;case i.Extension:return;default:return s("files","Invalid filename.")}}},canSubmit(){return this.albumName!==""&&this.albumNameValidationError===void 0&&!this.loading}},mounted(){this.editMode?(this.albumName=this.album?.basename,this.albumLocation=this.album?.attributes.location??"",this.albumFilters={...this.albumFilters,...structuredClone(this.album?.attributes.filters??{})}):this.albumFilters={...this.albumFilters,...structuredClone(this.filtersValue)},this.$nextTick(()=>{this.$refs.nameInput.$el.getElementsByTagName("input")[0].focus()})},methods:{submit(t=[]){this.canSubmit&&(this.editMode?this.handleUpdateAlbum():this.handleCreateAlbum(t))},async handleCreateAlbum(t=[]){try{this.loading=!0;const a=y({basename:this.albumName,filename:c+"/"+this.albumName,lastmod:"",size:0,type:"directory",etag:null,props:{displayname:this.albumName,resourcetype:{},nbItems:0,location:this.albumLocation,"last-photo":-1,date:h().format("MMMM YYYY"),collaborators:t,filters:this.filtersValue,source:k(`dav/${this.albumFileName}`)}},c);let e=await this.$store.dispatch("createCollection",{collection:a});if(e===void 0)return;const o={};this.albumLocation!==""&&(o.location=this.albumLocation),(this.albumLocation!==""||t.length!==0)&&(o.collaborators=t),Object.keys(this.filtersValue).length>0&&(o.filters=this.filtersValue),e=await this.$store.dispatch("updateCollection",{collectionFileName:this.albumFileName,properties:o}),this.$emit("done",{album:e})}finally{this.loading=!1}},async handleUpdateAlbum(){try{this.loading=!0;let t=this.album?.clone();const a=[];if(this.album!==null&&this.album.basename!==this.albumName&&(a.push("name"),t=await this.$store.dispatch("renameCollection",{collectionFileName:this.album.root+this.album.path,newBaseName:this.albumName}),t===this.album))return;this.album!==null&&this.album.attributes.location!==this.albumLocation&&(a.push("location"),t=await this.$store.dispatch("updateCollection",{collectionFileName:t.root+t.path,properties:{location:this.albumLocation}})),this.album!==null&&JSON.stringify(this.album.attributes.filters)!==JSON.stringify(this.albumFilters)&&(a.push("filters"),t=await this.$store.dispatch("updateCollection",{collectionFileName:t.root+t.path,properties:{filters:this.albumFilters}})),this.$emit("done",{album:t,changes:a})}finally{this.loading=!1}},selectFilter(t){this.albumFilters[t.filterId].push(t.value)},deselectFilter(t){const a=this.albumFilters[t.filterId].indexOf(t.value);a!==-1&&this.albumFilters[t.filterId].splice(a,1)},back(){this.$emit("back")},t:s}};var D=function(){var t=this,a=t._self._c;return t.showCollaboratorView?a("CollaboratorsSelectionForm",{attrs:{"album-name":t.albumName,"allow-public-link":!1},scopedSlots:t._u([{key:"default",fn:function({collaborators:e}){return[a("span",{staticClass:"left-buttons"},[a("NcButton",{attrs:{type:"tertiary"},on:{click:function(o){t.showCollaboratorView=!1}}},[t._v(" "+t._s(t.t("photos","Back"))+" ")])],1),a("span",{staticClass:"right-buttons"},[a("NcButton",{attrs:{type:"primary",disabled:!t.canSubmit},on:{click:function(o){return t.submit(e)}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?a("NcLoadingIcon",{attrs:{size:20}}):a("SendOutline",{attrs:{size:20}})]},proxy:!0}],null,!0)},[t._v(" "+t._s(t.editMode?t.t("photos","Save"):t.t("photos","Create album"))+" ")])],1)]}}])}):a("form",{staticClass:"album-form",on:{submit:function(e){return e.preventDefault(),t.submit()}}},[a("div",{staticClass:"form-inputs"},[a("NcTextField",{ref:"nameInput",attrs:{type:"text",name:"name","helper-text":t.albumNameValidationError,error:t.albumNameValidationError!==void 0,required:!0,label:t.t("photos","Name of the album")},model:{value:t.albumName,callback:function(e){t.albumName=typeof e=="string"?e.trim():e},expression:"albumName"}}),a("NcTextField",{attrs:{value:t.albumLocation,name:"location",type:"text",label:t.t("photos","Location of the album")},on:{"update:value":function(e){t.albumLocation=e}},scopedSlots:t._u([{key:"default",fn:function(){return[a("MapMarkerOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,3863723734)})],1),a("PhotosFiltersInput",{attrs:{"selected-filters":t.albumFilters},on:{"select-filter":t.selectFilter}}),a("PhotosFiltersDisplay",{attrs:{"selected-filters":t.albumFilters},on:{"deselect-filter":t.deselectFilter}}),a("div",{staticClass:"form-buttons"},[a("span",{staticClass:"left-buttons"},[t.displayBackButton?a("NcButton",{attrs:{type:"tertiary"},on:{click:t.back}},[t._v(" "+t._s(t.t("photos","Back"))+" ")]):t._e()],1),a("span",{staticClass:"right-buttons"},[t.sharingEnabled&&!t.editMode?a("NcButton",{attrs:{type:"secondary",disabled:!t.canSubmit},on:{click:function(e){t.showCollaboratorView=!0}},scopedSlots:t._u([{key:"icon",fn:function(){return[a("AccountMultiplePlusOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,1381680579)},[t._v(" "+t._s(t.t("photos","Add collaborators"))+" ")]):t._e(),a("NcButton",{attrs:{type:"primary",disabled:!t.canSubmit},on:{click:function(e){return t.submit()}},scopedSlots:t._u([{key:"icon",fn:function(){return[t.loading?a("NcLoadingIcon",{attrs:{size:20}}):a("SendOutline",{attrs:{size:20}})]},proxy:!0}],null,!1,2348760288)},[t._v(" "+t._s(t.editMode?t.t("photos","Save"):t.t("photos","Create album"))+" ")])],1)])],1)},H=[],Y=b(j,D,H,!1,null,"9aed9c8b");const lt=Y.exports;export{lt as A,G as C};
|
|
//# sourceMappingURL=AlbumForm-B5HQDBP6.chunk.mjs.map
|