You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
32 KiB

  1. (()=>{var e,i,s,n={958:(e,i,s)=>{"use strict";var n=s(53334),a=s(85471),r=s(9165),o=s(21777),l=s(19051),d=s(87485),c=s(85168),u=s(61338),p=s(35810),f=s(71225),h=s(63814),g=s(40715),m=s(74692),y=s.n(m),b=s(57505),A=s(29333),v=s(4604),w=s(11275),_=s(6695),C=s(77764),T=s(81222),S=s(88289),I=s(5212),L=s(1822);const x=(0,L.c)();async function F(e){const t=(0,L.l)(),i=await x.stat(`${(0,L.g)()}${e}`,{details:!0,data:t});return(0,L.r)(i.data)}var O=s(35947);const H=(0,O.YK)().setApp("systemtags").detectUser().build();s(12555);var E=s(71654);const V={userVisible:!0,userAssignable:!0,canAssign:!0};function M(e){return e.map(({props:e})=>Object.fromEntries(Object.entries(e).map(([e,t])=>[(0,E.A)(e),"displayName"===(0,E.A)(e)?String(t):t])))}function N(e){if("name"in e&&!("displayName"in e))return{...e};const t={...e};return t.name=t.displayName,delete t.displayName,t}var k=s(60669);const D=(0,h.dC)("dav"),P=(0,k.UU)(D);function B(e){P.setHeaders({"X-Requested-With":"XMLHttpRequest",requesttoken:e??""})}(0,o.zo)(B),B((0,o.do)());const $='<?xml version="1.0"?>\n<d:propfind xmlns:d="DAV:" xmlns:oc="http://owncloud.org/ns" xmlns:nc="http://nextcloud.org/ns">\n\t<d:prop>\n\t\t<oc:id />\n\t\t<oc:display-name />\n\t\t<oc:user-visible />\n\t\t<oc:user-assignable />\n\t\t<oc:can-assign />\n\t\t<d:getetag />\n\t\t<nc:color />\n\t</d:prop>\n</d:propfind>';async function U(e){const t="/systemtags-relations/files/"+e;try{const{data:e}=await P.getDirectoryContents(t,{data:$,details:!0,glob:"/systemtags-relations/files/*/*"});return M(e)}catch(e){throw H.error((0,n.t)("systemtags","Failed to load tags for file"),{error:e}),new Error((0,n.t)("systemtags","Failed to load tags for file"))}}async function j(e,t){const i="/systemtags-relations/files/"+t+"/"+e.id,s=N(e);try{await P.customRequest(i,{method:"PUT",data:s})}catch(e){throw H.error((0,n.t)("systemtags","Failed to set tag for file"),{error:e}),new Error((0,n.t)("systemtags","Failed to set tag for file"))}}const R=a.Ay.extend({name:"SystemTags",components:{NcLoadingIcon:S.A,NcSelectTags:I.A},props:{fileId:{type:Number,required:!0},disabled:{type:Boolean,default:!1}},data:()=>({sortedTags:[],selectedTags:[],loadingTags:!1,loading:!1}),watch:{fileId:{immediate:!0,async handler(){this.loadingTags=!0;try{this.selectedTags=await U(this.fileId)}catch(e){(0,c.Qg)((0,n.t)("systemtags","Failed to load selected tags")),H.error("Failed to load selected tags",{error:e})}this.loadingTags=!1}}},async created(){try{const e=await async function(){try{const{data:e}=await P.getDirectoryContents("/systemtags",{data:$,details:!0,glob:"/systemtags/*"});return M(e)}catch(e){throw H.error((0,n.t)("systemtags","Failed to load tags"),{error:e}),new Error((0,n.t)("systemtags","Failed to load tags"))}}(),t=await async function(){const e=(0,h.Jv)("/apps/systemtags/lastused");try{const{data:t}=await l.Ay.get(e);return t.map(Number)}catch(e){throw H.error((0,n.t)("systemtags","Failed to load last used tags"),{error:e}),new Error((0,n.t)("systemtags","Failed to load last used tags"))}}(),i=[],s=[];for(const n of e)t.includes(n.id)?i.push(n):s.push(n);const a=(e,i)=>t.indexOf(e.id)-t.indexOf(i.id);i.sort(a),this.sortedTags=[...i,...s]}catch(e){(0,c.Qg)((0,n.t)("systemtags","Failed to load tags")),H.error("Failed to load tags",{error:e})}},mounted(){(0,u.B1)("systemtags:node:updated",this.onTagUpdated)},methods:{t:n.t,createOption(e){for(const t of this.sortedTags){const{displayName:i,...s}=t;if(i===e&&Object.entries(s).every(([e,t])=>V[e]===t))return t}return{...V,displayName:e}},handleInput(e){this.selectedTags=e.filter(e=>Boolean(e.id))},async handleSelect(e){const t=e[e.length-1];if(!t.id)return;const i=t;this.loading=!0;try{await j(i,this.fileId);const e=(e,t)=>e.id===i.id?-1:t.id===i.id?1:0;this.sortedTags.sort(e)}catch(e){(0,c.Qg)((0,n.t)("systemtags","Failed to select tag")),H.error("Failed to select tag",{error:e})}this.loading=!1,this.updateAndDispatchNodeTagsEvent(this.fileId)},async handleCreate(e){this.loading=!0;try{const t=await async function(e,t){const i=N(e),s=await async function(e){const t=N(e);try{const
  2. //# sourceMappingURL=files-sidebar.js.map?v=32ad081e90a1cfa52414