diff --git a/apps/files_sharing/src/actions/openInFilesAction.spec.ts b/apps/files_sharing/src/actions/openInFilesAction.spec.ts index 96b96145f319f..6f80078d63e62 100644 --- a/apps/files_sharing/src/actions/openInFilesAction.spec.ts +++ b/apps/files_sharing/src/actions/openInFilesAction.spec.ts @@ -89,6 +89,6 @@ describe('Open in files action execute tests', () => { // Silent action expect(exec).toBe(null) expect(goToRouteMock).toBeCalledTimes(1) - expect(goToRouteMock).toBeCalledWith(null, { fileid: 1, view: 'files' }, { dir: '/Foo', openfile: 'true' }) + expect(goToRouteMock).toBeCalledWith(null, { fileid: '1', view: 'files' }, { dir: '/Foo', openfile: 'true' }) }) }) diff --git a/apps/files_sharing/src/actions/openInFilesAction.ts b/apps/files_sharing/src/actions/openInFilesAction.ts index 6909ee143c012..f01b62c81eee5 100644 --- a/apps/files_sharing/src/actions/openInFilesAction.ts +++ b/apps/files_sharing/src/actions/openInFilesAction.ts @@ -21,7 +21,7 @@ */ import type { Node } from '@nextcloud/files' -import { registerFileAction, FileAction, DefaultType } from '@nextcloud/files' +import { registerFileAction, FileAction, DefaultType, FileType } from '@nextcloud/files' import { translate as t } from '@nextcloud/l10n' import { sharesViewId, sharedWithYouViewId, sharedWithOthersViewId, sharingByLinksViewId } from '../views/shares' @@ -41,10 +41,20 @@ export const action = new FileAction({ ].includes(view.id), async exec(node: Node) { + const isFolder = node.type === FileType.Folder + window.OCP.Files.Router.goToRoute( null, // use default route - { view: 'files', fileid: node.fileid }, - { dir: node.dirname, openfile: 'true' }, + { + view: 'files', + fileid: String(node.fileid), + }, + { + // If this node is a folder open the folder in files + dir: isFolder ? node.path : node.dirname, + // otherwise if this is a file, we should open it + openfile: isFolder ? undefined : 'true', + }, ) return null }, diff --git a/cypress/e2e/files_sharing/files-shares-view.cy.ts b/cypress/e2e/files_sharing/files-shares-view.cy.ts new file mode 100644 index 0000000000000..283b95d9d3ba9 --- /dev/null +++ b/cypress/e2e/files_sharing/files-shares-view.cy.ts @@ -0,0 +1,59 @@ +/*! + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import type { User } from '@nextcloud/cypress' +import { createShare } from './filesSharingUtils.ts' +import { getRowForFile } from '../files/FilesUtils.ts' + +describe('files_sharing: Files view', { testIsolation: true }, () => { + let user: User + let sharee: User + + beforeEach(() => { + cy.createRandomUser().then(($user) => { + user = $user + }) + cy.createRandomUser().then(($user) => { + sharee = $user + }) + }) + + /** + * Regression test of https://github.com/nextcloud/server/issues/46108 + */ + it('opens a shared folder when clicking on it', () => { + cy.mkdir(user, '/folder') + cy.uploadContent(user, new Blob([]), 'text/plain', '/folder/file') + cy.login(user) + cy.visit('/apps/files') + + // share the folder + createShare('folder', sharee.userId, { read: true, download: true }) + // visit the own shares + cy.visit('/apps/files/sharingout') + // see the shared folder + getRowForFile('folder').should('be.visible') + // click on the folder should open it in files + getRowForFile('folder').findByRole('button', { name: 'folder' }).click() + // See the URL has changed + cy.url().should('match', /apps\/files\/files\/.+dir=\/folder/) + // Content of the shared folder + getRowForFile('file').should('be.visible') + + cy.logout() + // Now for the sharee + cy.login(sharee) + + // visit shared files view + cy.visit('/apps/files/sharingin') + // see the shared folder + getRowForFile('folder').should('be.visible') + // click on the folder should open it in files + getRowForFile('folder').findByRole('button', { name: 'folder' }).click() + // See the URL has changed + cy.url().should('match', /apps\/files\/files\/.+dir=\/folder/) + // Content of the shared folder + getRowForFile('file').should('be.visible') + }) +}) diff --git a/dist/files_sharing-init.js b/dist/files_sharing-init.js index 60ad1308985e6..ea70d4954ddc8 100644 --- a/dist/files_sharing-init.js +++ b/dist/files_sharing-init.js @@ -1,3 +1,3 @@ /*! For license information please see files_sharing-init.js.LICENSE.txt */ -(()=>{"use strict";var e,t,i,n={67597:(e,t,i)=>{var n=i(31346),r=i(53334);const s='',a='',o='';var l=i(63814),d=i(21777),h=i(26287),u=i(35947);const c=(0,u.YK)().setApp("files_sharing").detectUser().build();var p;const v="/files/".concat(null===(p=(0,d.HW)())||void 0===p?void 0:p.uid),g={"Content-Type":"application/json"},m=async function(e){try{var t;if(void 0!==(null==e?void 0:e.remote_id)){const t=(await i.e(857).then(i.bind(i,10857))).default;e.mimetype=t.getType(e.name),e.item_type=e.mimetype?"file":"folder",e.item_permissions=n.aX.NONE,e.permissions=n.aX.NONE,e.uid_owner=e.owner,e.displayname_owner=e.owner}const r="folder"===(null==e?void 0:e.item_type),s=!0===(null==e?void 0:e.has_preview),a=r?n.vd:n.ZH,o=e.file_source||e.id,d=(null==e?void 0:e.path)||e.file_target||e.name,h=(0,l.dC)("dav/".concat(v,"/").concat(d).replaceAll(/\/\//gm,"/"));let u=null!=e&&e.item_mtime?new Date(1e3*e.item_mtime):void 0;return(null==e?void 0:e.stime)>((null==e?void 0:e.item_mtime)||0)&&(u=new Date(1e3*e.stime)),new a({id:o,source:h,owner:null==e?void 0:e.uid_owner,mime:(null==e?void 0:e.mimetype)||"application/octet-stream",mtime:u,size:null==e?void 0:e.item_size,permissions:(null==e?void 0:e.item_permissions)||(null==e?void 0:e.permissions),root:v,attributes:{...e,"has-preview":s,"owner-id":null==e?void 0:e.uid_owner,"owner-display-name":null==e?void 0:e.displayname_owner,"share-types":null==e?void 0:e.share_type,favorite:null!=e&&null!==(t=e.tags)&&void 0!==t&&t.includes(window.OC.TAG_FAVORITE)?1:0}})}catch(e){return c.error("Error while parsing OCS entry",{error:e}),null}},w=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,l.KT)("apps/files_sharing/api/v1/shares");return h.A.get(t,{headers:g,params:{shared_with_me:e,include_tags:!0}})},f=async function(){var e;let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];const a=[];(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&a.push(w(!0),function(){const e=(0,l.KT)("apps/files_sharing/api/v1/remote_shares");return h.A.get(e,{headers:g,params:{include_tags:!0}})}()),t&&a.push(w()),i&&a.push(function(){const e=(0,l.KT)("apps/files_sharing/api/v1/shares/pending");return h.A.get(e,{headers:g,params:{include_tags:!0}})}(),function(){const e=(0,l.KT)("apps/files_sharing/api/v1/remote_shares/pending");return h.A.get(e,{headers:g,params:{include_tags:!0}})}()),r&&a.push(function(){const e=(0,l.KT)("apps/files_sharing/api/v1/deletedshares");return h.A.get(e,{headers:g,params:{include_tags:!0}})}());const o=(await Promise.all(a)).map((e=>e.data.ocs.data)).flat();let u=(await Promise.all(o.map(m))).filter((e=>null!==e));var c,p;return s.length>0&&(u=u.filter((e=>{var t;return s.includes(null===(t=e.attributes)||void 0===t?void 0:t.share_type)}))),u=(c=u,p="source",Object.values(c.reduce((function(e,t){return(e[t[p]]=e[t[p]]||[]).push(t),e}),{}))).map((e=>{const t=e[0];return t.attributes["share-types"]=e.map((e=>e.attributes["share-types"])),t})),{folder:new n.vd({id:0,source:(0,l.dC)("dav"+v),owner:(null===(e=(0,d.HW)())||void 0===e?void 0:e.uid)||null}),contents:u}},A="shareoverview",y="sharingin",_="sharingout",C="sharinglinks",b="deletedshares",T="pendingshares";var x=i(61338),H=i(65659);const S=new n.hY({id:"accept-share",displayName:e=>(0,r.zw)("files_sharing","Accept share","Accept shares",e.length),iconSvgInline:()=>H,enabled:(e,t)=>e.length>0&&t.id===T,async exec(e){try{const t=!!e.attributes.remote,i=(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await h.A.post(i),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0});(0,n.Gg)(S);const E=new n.hY({id:"open-in-files",displayName:()=>(0,r.Tl)("files","Open in Files"),iconSvgInline:()=>"",enabled:(e,t)=>[A,y,_,C].includes(t.id),exec:async e=>(window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:e.fileid},{dir:e.dirname,openfile:"true"}),null),order:-1e3,default:n.m9.HIDDEN});(0,n.Gg)(E);const O=new n.hY({id:"reject-share",displayName:e=>(0,r.zw)("files_sharing","Reject share","Reject shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>t.id===T&&0!==e.length&&!e.some((e=>e.attributes.remote_id&&e.attributes.share_type===window.OC.Share.SHARE_TYPE_REMOTE_GROUP)),async exec(e){try{const t=!!e.attributes.remote,i=(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await h.A.delete(i),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:2,inline:()=>!0});(0,n.Gg)(O);const L=new n.hY({id:"restore-share",displayName:e=>(0,r.zw)("files_sharing","Restore share","Restore shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>e.length>0&&t.id===b,async exec(e){try{const t=(0,l.KT)("apps/files_sharing/api/v1/deletedshares/{id}",{id:e.attributes.id});return await h.A.post(t),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0});(0,n.Gg)(L);var M=i(77905),V=i(49981);const N=(0,u.YK)().setApp("files").detectUser().build(),P=new n.hY({id:"details",displayName:()=>(0,r.Tl)("files","Open details"),iconSvgInline:()=>V,enabled:e=>{var t,i,r;return 1===e.length&&!!e[0]&&!(null===(t=window)||void 0===t||null===(t=t.OCA)||void 0===t||null===(t=t.Files)||void 0===t||!t.Sidebar)&&null!==(i=(null===(r=e[0].root)||void 0===r?void 0:r.startsWith("/files/"))&&e[0].permissions!==n.aX.NONE)&&void 0!==i&&i},async exec(e,t,i){try{return await window.OCA.Files.Sidebar.open(e.path),window.OCP.Files.Router.goToRoute(null,{view:t.id,fileid:e.fileid},{...window.OCP.Files.Router.query,dir:i},!0),null}catch(e){return N.error("Error while opening sidebar",{error:e}),!1}},order:-50});var R,k,B=i(85072),I=i.n(B),Y=i(97825),j=i.n(Y),F=i(77659),G=i.n(F),Z=i(55056),K=i.n(Z),U=i(10540),D=i.n(U),W=i(41113),q=i.n(W),z=i(8132),X={};X.styleTagTransform=q(),X.setAttributes=K(),X.insert=G().bind(null,"head"),X.domAPI=j(),X.insertStyleElement=D(),I()(z.A,X),z.A&&z.A.locals&&z.A.locals;const J=!0===(null===(R=window)||void 0===R||null===(k=R.matchMedia)||void 0===k||null===(k=k.call(R,"(prefers-color-scheme: dark)"))||void 0===k?void 0:k.matches)||null!==document.querySelector("[data-themes*=dark]"),$=e=>void 0!==e.attributes.remote_id,Q=new n.hY({id:"sharing-status",displayName(e){var t,i,n;const s=e[0],a=Object.values((null==s||null===(t=s.attributes)||void 0===t?void 0:t["share-types"])||{}).flat(),o=null==s||null===(i=s.attributes)||void 0===i?void 0:i["owner-id"];return a.length>0||o!==(null===(n=(0,d.HW)())||void 0===n?void 0:n.uid)||$(s)?(0,r.Tl)("files_sharing","Shared"):""},title(e){var t,i,n,s,a;const o=e[0],l=null==o||null===(t=o.attributes)||void 0===t?void 0:t["owner-id"],h=null==o||null===(i=o.attributes)||void 0===i?void 0:i["owner-display-name"];return Array.isArray(null===(n=o.attributes)||void 0===n?void 0:n["share-types"])&&(null===(s=o.attributes)||void 0===s?void 0:s["share-types"].length)>1?(0,r.Tl)("files_sharing","Shared multiple times with different people"):l&&(l!==(null===(a=(0,d.HW)())||void 0===a?void 0:a.uid)||$(o))?(0,r.Tl)("files_sharing","Shared by {ownerDisplayName}",{ownerDisplayName:h}):(0,r.Tl)("files_sharing","Show sharing options")},iconSvgInline(e){var t,i,n,r,h;const u=e[0],c=Object.values((null==u||null===(t=u.attributes)||void 0===t?void 0:t["share-types"])||{}).flat();if(Array.isArray(null===(i=u.attributes)||void 0===i?void 0:i["share-types"])&&(null===(n=u.attributes)||void 0===n?void 0:n["share-types"].length)>1)return a;if(c.includes(M.Z.SHARE_TYPE_LINK)||c.includes(M.Z.SHARE_TYPE_EMAIL))return o;if(c.includes(M.Z.SHARE_TYPE_GROUP)||c.includes(M.Z.SHARE_TYPE_REMOTE_GROUP))return s;if(c.includes(M.Z.SHARE_TYPE_CIRCLE))return'';const p=null==u||null===(r=u.attributes)||void 0===r?void 0:r["owner-id"];return p&&(p!==(null===(h=(0,d.HW)())||void 0===h?void 0:h.uid)||$(u))?function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=J?"/avatar/{userId}/32/dark":"/avatar/{userId}/32",n=(0,l.Jv)(t?i:i+"?guestFallback=true",{userId:e});return'\n\t\t\n\t')}(p,$(u)):a},enabled(e){var t,i,r;if(1!==e.length)return!1;const s=e[0],a=null==s||null===(t=s.attributes)||void 0===t?void 0:t["owner-id"];return!!Array.isArray(null===(i=s.attributes)||void 0===i?void 0:i["share-types"])||!(!a||a===(null===(r=(0,d.HW)())||void 0===r?void 0:r.uid)&&!$(s))||0!=(s.permissions&n.aX.SHARE)},async exec(e,t,i){var r,s;return 0!=(e.permissions&n.aX.READ)?(null===(r=window.OCA)||void 0===r||null===(r=r.Files)||void 0===r||null===(r=r.Sidebar)||void 0===r||null===(s=r.setActiveTab)||void 0===s||s.call(r,"sharing"),P.exec(e,t,i)):null},inline:()=>!0});(0,n.Gg)(Q),(()=>{const e=(0,n.bh)();e.register(new n.Ss({id:A,name:(0,r.Tl)("files_sharing","Shares"),caption:(0,r.Tl)("files_sharing","Overview of shared files."),emptyTitle:(0,r.Tl)("files_sharing","No shares"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared or have been shared with you will show up here"),icon:a,order:20,columns:[],getContents:()=>f()})),e.register(new n.Ss({id:y,name:(0,r.Tl)("files_sharing","Shared with you"),caption:(0,r.Tl)("files_sharing","List of files that are shared with you."),emptyTitle:(0,r.Tl)("files_sharing","Nothing shared with you yet"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders others shared with you will show up here"),icon:'',order:1,parent:A,columns:[],getContents:()=>f(!0,!1,!1,!1)})),e.register(new n.Ss({id:_,name:(0,r.Tl)("files_sharing","Shared with others"),caption:(0,r.Tl)("files_sharing","List of files that you shared with others."),emptyTitle:(0,r.Tl)("files_sharing","Nothing shared yet"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared will show up here"),icon:s,order:2,parent:A,columns:[],getContents:()=>f(!1,!0,!1,!1)})),e.register(new n.Ss({id:C,name:(0,r.Tl)("files_sharing","Shared by link"),caption:(0,r.Tl)("files_sharing","List of files that are shared by link."),emptyTitle:(0,r.Tl)("files_sharing","No shared links"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared by link will show up here"),icon:o,order:3,parent:A,columns:[],getContents:()=>f(!1,!0,!1,!1,[window.OC.Share.SHARE_TYPE_LINK])})),e.register(new n.Ss({id:b,name:(0,r.Tl)("files_sharing","Deleted shares"),caption:(0,r.Tl)("files_sharing","List of shares you left."),emptyTitle:(0,r.Tl)("files_sharing","No deleted shares"),emptyCaption:(0,r.Tl)("files_sharing","Shares you have left will show up here"),icon:'',order:4,parent:A,columns:[],getContents:()=>f(!1,!1,!1,!0)})),e.register(new n.Ss({id:T,name:(0,r.Tl)("files_sharing","Pending shares"),caption:(0,r.Tl)("files_sharing","List of unapproved shares."),emptyTitle:(0,r.Tl)("files_sharing","No pending shares"),emptyCaption:(0,r.Tl)("files_sharing","Shares you have received but not approved will show up here"),icon:'',order:5,parent:A,columns:[],getContents:()=>f(!1,!1,!0,!1)}))})(),(0,n.Yc)("nc:share-attributes",{nc:"http://nextcloud.org/ns"}),(0,n.Yc)("oc:share-types",{oc:"http://owncloud.org/ns"}),(0,n.Yc)("ocs:share-permissions",{ocs:"http://open-collaboration-services.org/ns"})},8132:(e,t,i)=>{i.d(t,{A:()=>o});var n=i(71354),r=i.n(n),s=i(76314),a=i.n(s)()(r());a.push([e.id,".action-items>.files-list__row-action-sharing-status{direction:rtl;padding-right:0 !important}svg.sharing-status__avatar{height:32px !important;width:32px !important;max-height:32px !important;max-width:32px !important;border-radius:32px;overflow:hidden}","",{version:3,sources:["webpack://./apps/files_sharing/src/actions/sharingStatusAction.scss"],names:[],mappings:"AAsBA,qDAEC,aAAA,CAEG,0BAAA,CAGJ,2BACC,sBAAA,CACA,qBAAA,CACA,0BAAA,CACA,yBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n // Only when rendered inline, when not enough space, this is put in the menu\n.action-items > .files-list__row-action-sharing-status {\n\t// put icon at the end of the button\n\tdirection: rtl;\n\t// align icons with textless inline actions\n padding-right: 0 !important;\n}\n\nsvg.sharing-status__avatar {\n\theight: 32px !important;\n\twidth: 32px !important;\n\tmax-height: 32px !important;\n\tmax-width: 32px !important;\n\tborder-radius: 32px;\n\toverflow: hidden;\n}\n"],sourceRoot:""}]);const o=a}},r={};function s(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,s),i.loaded=!0,i.exports}s.m=n,e=[],s.O=(t,i,n,r)=>{if(!i){var a=1/0;for(h=0;h=r)&&Object.keys(s.O).every((e=>s.O[e](i[l])))?i.splice(l--,1):(o=!1,r0&&e[h-1][2]>r;h--)e[h]=e[h-1];e[h]=[i,n,r]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var i in t)s.o(t,i)&&!s.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce(((t,i)=>(s.f[i](e,t),t)),[])),s.u=e=>e+"-"+e+".js?v=6797210df0f1d53f94c4",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},i="nextcloud:",s.l=(e,n,r,a)=>{if(t[e])t[e].push(n);else{var o,l;if(void 0!==r)for(var d=document.getElementsByTagName("script"),h=0;h{o.onerror=o.onload=null,clearTimeout(p);var r=t[e];if(delete t[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach((e=>e(n))),i)return i(n)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=c.bind(null,o.onerror),o.onload=c.bind(null,o.onload),l&&document.head.appendChild(o)}},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),s.j=5928,(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var i=t.getElementsByTagName("script");if(i.length)for(var n=i.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=i[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{s.b=document.baseURI||self.location.href;var e={5928:0};s.f.j=(t,i)=>{var n=s.o(e,t)?e[t]:void 0;if(0!==n)if(n)i.push(n[2]);else{var r=new Promise(((i,r)=>n=e[t]=[i,r]));i.push(n[2]=r);var a=s.p+s.u(t),o=new Error;s.l(a,(i=>{if(s.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var r=i&&("load"===i.type?"missing":i.type),a=i&&i.target&&i.target.src;o.message="Loading chunk "+t+" failed.\n("+r+": "+a+")",o.name="ChunkLoadError",o.type=r,o.request=a,n[1](o)}}),"chunk-"+t,t)}},s.O.j=t=>0===e[t];var t=(t,i)=>{var n,r,a=i[0],o=i[1],l=i[2],d=0;if(a.some((t=>0!==e[t]))){for(n in o)s.o(o,n)&&(s.m[n]=o[n]);if(l)var h=l(s)}for(t&&t(i);ds(67597)));a=s.O(a)})(); -//# sourceMappingURL=files_sharing-init.js.map?v=fc2df12f385680f48a9d \ No newline at end of file +(()=>{"use strict";var e,t,i,n={67597:(e,t,i)=>{var n=i(31346),r=i(53334);const s='',a='',o='';var l=i(63814),d=i(21777),h=i(26287),u=i(35947);const c=(0,u.YK)().setApp("files_sharing").detectUser().build();var p;const v="/files/".concat(null===(p=(0,d.HW)())||void 0===p?void 0:p.uid),g={"Content-Type":"application/json"},m=async function(e){try{var t;if(void 0!==(null==e?void 0:e.remote_id)){const t=(await i.e(857).then(i.bind(i,10857))).default;e.mimetype=t.getType(e.name),e.item_type=e.mimetype?"file":"folder",e.item_permissions=n.aX.NONE,e.permissions=n.aX.NONE,e.uid_owner=e.owner,e.displayname_owner=e.owner}const r="folder"===(null==e?void 0:e.item_type),s=!0===(null==e?void 0:e.has_preview),a=r?n.vd:n.ZH,o=e.file_source||e.id,d=(null==e?void 0:e.path)||e.file_target||e.name,h=(0,l.dC)("dav/".concat(v,"/").concat(d).replaceAll(/\/\//gm,"/"));let u=null!=e&&e.item_mtime?new Date(1e3*e.item_mtime):void 0;return(null==e?void 0:e.stime)>((null==e?void 0:e.item_mtime)||0)&&(u=new Date(1e3*e.stime)),new a({id:o,source:h,owner:null==e?void 0:e.uid_owner,mime:(null==e?void 0:e.mimetype)||"application/octet-stream",mtime:u,size:null==e?void 0:e.item_size,permissions:(null==e?void 0:e.item_permissions)||(null==e?void 0:e.permissions),root:v,attributes:{...e,"has-preview":s,"owner-id":null==e?void 0:e.uid_owner,"owner-display-name":null==e?void 0:e.displayname_owner,"share-types":null==e?void 0:e.share_type,favorite:null!=e&&null!==(t=e.tags)&&void 0!==t&&t.includes(window.OC.TAG_FAVORITE)?1:0}})}catch(e){return c.error("Error while parsing OCS entry",{error:e}),null}},w=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,l.KT)("apps/files_sharing/api/v1/shares");return h.A.get(t,{headers:g,params:{shared_with_me:e,include_tags:!0}})},f=async function(){var e;let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];const a=[];(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&a.push(w(!0),function(){const e=(0,l.KT)("apps/files_sharing/api/v1/remote_shares");return h.A.get(e,{headers:g,params:{include_tags:!0}})}()),t&&a.push(w()),i&&a.push(function(){const e=(0,l.KT)("apps/files_sharing/api/v1/shares/pending");return h.A.get(e,{headers:g,params:{include_tags:!0}})}(),function(){const e=(0,l.KT)("apps/files_sharing/api/v1/remote_shares/pending");return h.A.get(e,{headers:g,params:{include_tags:!0}})}()),r&&a.push(function(){const e=(0,l.KT)("apps/files_sharing/api/v1/deletedshares");return h.A.get(e,{headers:g,params:{include_tags:!0}})}());const o=(await Promise.all(a)).map((e=>e.data.ocs.data)).flat();let u=(await Promise.all(o.map(m))).filter((e=>null!==e));var c,p;return s.length>0&&(u=u.filter((e=>{var t;return s.includes(null===(t=e.attributes)||void 0===t?void 0:t.share_type)}))),u=(c=u,p="source",Object.values(c.reduce((function(e,t){return(e[t[p]]=e[t[p]]||[]).push(t),e}),{}))).map((e=>{const t=e[0];return t.attributes["share-types"]=e.map((e=>e.attributes["share-types"])),t})),{folder:new n.vd({id:0,source:(0,l.dC)("dav"+v),owner:(null===(e=(0,d.HW)())||void 0===e?void 0:e.uid)||null}),contents:u}},A="shareoverview",y="sharingin",_="sharingout",C="sharinglinks",b="deletedshares",T="pendingshares";var x=i(61338),S=i(65659);const H=new n.hY({id:"accept-share",displayName:e=>(0,r.zw)("files_sharing","Accept share","Accept shares",e.length),iconSvgInline:()=>S,enabled:(e,t)=>e.length>0&&t.id===T,async exec(e){try{const t=!!e.attributes.remote,i=(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await h.A.post(i),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0});(0,n.Gg)(H);const E=new n.hY({id:"open-in-files",displayName:()=>(0,r.Tl)("files","Open in Files"),iconSvgInline:()=>"",enabled:(e,t)=>[A,y,_,C].includes(t.id),async exec(e){const t=e.type===n.pt.Folder;return window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:String(e.fileid)},{dir:t?e.path:e.dirname,openfile:t?void 0:"true"}),null},order:-1e3,default:n.m9.HIDDEN});(0,n.Gg)(E);const O=new n.hY({id:"reject-share",displayName:e=>(0,r.zw)("files_sharing","Reject share","Reject shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>t.id===T&&0!==e.length&&!e.some((e=>e.attributes.remote_id&&e.attributes.share_type===window.OC.Share.SHARE_TYPE_REMOTE_GROUP)),async exec(e){try{const t=!!e.attributes.remote,i=(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await h.A.delete(i),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:2,inline:()=>!0});(0,n.Gg)(O);const L=new n.hY({id:"restore-share",displayName:e=>(0,r.zw)("files_sharing","Restore share","Restore shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>e.length>0&&t.id===b,async exec(e){try{const t=(0,l.KT)("apps/files_sharing/api/v1/deletedshares/{id}",{id:e.attributes.id});return await h.A.post(t),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0});(0,n.Gg)(L);var M=i(77905),V=i(49981);const N=(0,u.YK)().setApp("files").detectUser().build(),P=new n.hY({id:"details",displayName:()=>(0,r.Tl)("files","Open details"),iconSvgInline:()=>V,enabled:e=>{var t,i,r;return 1===e.length&&!!e[0]&&!(null===(t=window)||void 0===t||null===(t=t.OCA)||void 0===t||null===(t=t.Files)||void 0===t||!t.Sidebar)&&null!==(i=(null===(r=e[0].root)||void 0===r?void 0:r.startsWith("/files/"))&&e[0].permissions!==n.aX.NONE)&&void 0!==i&&i},async exec(e,t,i){try{return await window.OCA.Files.Sidebar.open(e.path),window.OCP.Files.Router.goToRoute(null,{view:t.id,fileid:e.fileid},{...window.OCP.Files.Router.query,dir:i},!0),null}catch(e){return N.error("Error while opening sidebar",{error:e}),!1}},order:-50});var R,k,B=i(85072),I=i.n(B),Y=i(97825),j=i.n(Y),F=i(77659),G=i.n(F),Z=i(55056),K=i.n(Z),U=i(10540),D=i.n(U),W=i(41113),q=i.n(W),z=i(8132),X={};X.styleTagTransform=q(),X.setAttributes=K(),X.insert=G().bind(null,"head"),X.domAPI=j(),X.insertStyleElement=D(),I()(z.A,X),z.A&&z.A.locals&&z.A.locals;const J=!0===(null===(R=window)||void 0===R||null===(k=R.matchMedia)||void 0===k||null===(k=k.call(R,"(prefers-color-scheme: dark)"))||void 0===k?void 0:k.matches)||null!==document.querySelector("[data-themes*=dark]"),$=e=>void 0!==e.attributes.remote_id,Q=new n.hY({id:"sharing-status",displayName(e){var t,i,n;const s=e[0],a=Object.values((null==s||null===(t=s.attributes)||void 0===t?void 0:t["share-types"])||{}).flat(),o=null==s||null===(i=s.attributes)||void 0===i?void 0:i["owner-id"];return a.length>0||o!==(null===(n=(0,d.HW)())||void 0===n?void 0:n.uid)||$(s)?(0,r.Tl)("files_sharing","Shared"):""},title(e){var t,i,n,s,a;const o=e[0],l=null==o||null===(t=o.attributes)||void 0===t?void 0:t["owner-id"],h=null==o||null===(i=o.attributes)||void 0===i?void 0:i["owner-display-name"];return Array.isArray(null===(n=o.attributes)||void 0===n?void 0:n["share-types"])&&(null===(s=o.attributes)||void 0===s?void 0:s["share-types"].length)>1?(0,r.Tl)("files_sharing","Shared multiple times with different people"):l&&(l!==(null===(a=(0,d.HW)())||void 0===a?void 0:a.uid)||$(o))?(0,r.Tl)("files_sharing","Shared by {ownerDisplayName}",{ownerDisplayName:h}):(0,r.Tl)("files_sharing","Show sharing options")},iconSvgInline(e){var t,i,n,r,h;const u=e[0],c=Object.values((null==u||null===(t=u.attributes)||void 0===t?void 0:t["share-types"])||{}).flat();if(Array.isArray(null===(i=u.attributes)||void 0===i?void 0:i["share-types"])&&(null===(n=u.attributes)||void 0===n?void 0:n["share-types"].length)>1)return a;if(c.includes(M.Z.SHARE_TYPE_LINK)||c.includes(M.Z.SHARE_TYPE_EMAIL))return o;if(c.includes(M.Z.SHARE_TYPE_GROUP)||c.includes(M.Z.SHARE_TYPE_REMOTE_GROUP))return s;if(c.includes(M.Z.SHARE_TYPE_CIRCLE))return'';const p=null==u||null===(r=u.attributes)||void 0===r?void 0:r["owner-id"];return p&&(p!==(null===(h=(0,d.HW)())||void 0===h?void 0:h.uid)||$(u))?function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=J?"/avatar/{userId}/32/dark":"/avatar/{userId}/32",n=(0,l.Jv)(t?i:i+"?guestFallback=true",{userId:e});return'')}(p,$(u)):a},enabled(e){var t,i,r;if(1!==e.length)return!1;const s=e[0],a=null==s||null===(t=s.attributes)||void 0===t?void 0:t["owner-id"];return!!Array.isArray(null===(i=s.attributes)||void 0===i?void 0:i["share-types"])||!(!a||a===(null===(r=(0,d.HW)())||void 0===r?void 0:r.uid)&&!$(s))||0!=(s.permissions&n.aX.SHARE)},async exec(e,t,i){var r,s;return 0!=(e.permissions&n.aX.READ)?(null===(r=window.OCA)||void 0===r||null===(r=r.Files)||void 0===r||null===(r=r.Sidebar)||void 0===r||null===(s=r.setActiveTab)||void 0===s||s.call(r,"sharing"),P.exec(e,t,i)):null},inline:()=>!0});(0,n.Gg)(Q),(()=>{const e=(0,n.bh)();e.register(new n.Ss({id:A,name:(0,r.Tl)("files_sharing","Shares"),caption:(0,r.Tl)("files_sharing","Overview of shared files."),emptyTitle:(0,r.Tl)("files_sharing","No shares"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared or have been shared with you will show up here"),icon:a,order:20,columns:[],getContents:()=>f()})),e.register(new n.Ss({id:y,name:(0,r.Tl)("files_sharing","Shared with you"),caption:(0,r.Tl)("files_sharing","List of files that are shared with you."),emptyTitle:(0,r.Tl)("files_sharing","Nothing shared with you yet"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders others shared with you will show up here"),icon:'',order:1,parent:A,columns:[],getContents:()=>f(!0,!1,!1,!1)})),e.register(new n.Ss({id:_,name:(0,r.Tl)("files_sharing","Shared with others"),caption:(0,r.Tl)("files_sharing","List of files that you shared with others."),emptyTitle:(0,r.Tl)("files_sharing","Nothing shared yet"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared will show up here"),icon:s,order:2,parent:A,columns:[],getContents:()=>f(!1,!0,!1,!1)})),e.register(new n.Ss({id:C,name:(0,r.Tl)("files_sharing","Shared by link"),caption:(0,r.Tl)("files_sharing","List of files that are shared by link."),emptyTitle:(0,r.Tl)("files_sharing","No shared links"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared by link will show up here"),icon:o,order:3,parent:A,columns:[],getContents:()=>f(!1,!0,!1,!1,[window.OC.Share.SHARE_TYPE_LINK])})),e.register(new n.Ss({id:b,name:(0,r.Tl)("files_sharing","Deleted shares"),caption:(0,r.Tl)("files_sharing","List of shares you left."),emptyTitle:(0,r.Tl)("files_sharing","No deleted shares"),emptyCaption:(0,r.Tl)("files_sharing","Shares you have left will show up here"),icon:'',order:4,parent:A,columns:[],getContents:()=>f(!1,!1,!1,!0)})),e.register(new n.Ss({id:T,name:(0,r.Tl)("files_sharing","Pending shares"),caption:(0,r.Tl)("files_sharing","List of unapproved shares."),emptyTitle:(0,r.Tl)("files_sharing","No pending shares"),emptyCaption:(0,r.Tl)("files_sharing","Shares you have received but not approved will show up here"),icon:'',order:5,parent:A,columns:[],getContents:()=>f(!1,!1,!0,!1)}))})(),(0,n.Yc)("nc:share-attributes",{nc:"http://nextcloud.org/ns"}),(0,n.Yc)("oc:share-types",{oc:"http://owncloud.org/ns"}),(0,n.Yc)("ocs:share-permissions",{ocs:"http://open-collaboration-services.org/ns"})},8132:(e,t,i)=>{i.d(t,{A:()=>o});var n=i(71354),r=i.n(n),s=i(76314),a=i.n(s)()(r());a.push([e.id,".action-items>.files-list__row-action-sharing-status{direction:rtl;padding-right:0 !important}svg.sharing-status__avatar{height:32px !important;width:32px !important;max-height:32px !important;max-width:32px !important;border-radius:32px;overflow:hidden}","",{version:3,sources:["webpack://./apps/files_sharing/src/actions/sharingStatusAction.scss"],names:[],mappings:"AAsBA,qDAEC,aAAA,CAEG,0BAAA,CAGJ,2BACC,sBAAA,CACA,qBAAA,CACA,0BAAA,CACA,yBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n // Only when rendered inline, when not enough space, this is put in the menu\n.action-items > .files-list__row-action-sharing-status {\n\t// put icon at the end of the button\n\tdirection: rtl;\n\t// align icons with textless inline actions\n padding-right: 0 !important;\n}\n\nsvg.sharing-status__avatar {\n\theight: 32px !important;\n\twidth: 32px !important;\n\tmax-height: 32px !important;\n\tmax-width: 32px !important;\n\tborder-radius: 32px;\n\toverflow: hidden;\n}\n"],sourceRoot:""}]);const o=a}},r={};function s(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,s),i.loaded=!0,i.exports}s.m=n,e=[],s.O=(t,i,n,r)=>{if(!i){var a=1/0;for(h=0;h=r)&&Object.keys(s.O).every((e=>s.O[e](i[l])))?i.splice(l--,1):(o=!1,r0&&e[h-1][2]>r;h--)e[h]=e[h-1];e[h]=[i,n,r]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var i in t)s.o(t,i)&&!s.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce(((t,i)=>(s.f[i](e,t),t)),[])),s.u=e=>e+"-"+e+".js?v=6797210df0f1d53f94c4",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},i="nextcloud:",s.l=(e,n,r,a)=>{if(t[e])t[e].push(n);else{var o,l;if(void 0!==r)for(var d=document.getElementsByTagName("script"),h=0;h{o.onerror=o.onload=null,clearTimeout(p);var r=t[e];if(delete t[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach((e=>e(n))),i)return i(n)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=c.bind(null,o.onerror),o.onload=c.bind(null,o.onload),l&&document.head.appendChild(o)}},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),s.j=5928,(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.g.document;if(!e&&t&&(t.currentScript&&(e=t.currentScript.src),!e)){var i=t.getElementsByTagName("script");if(i.length)for(var n=i.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=i[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{s.b=document.baseURI||self.location.href;var e={5928:0};s.f.j=(t,i)=>{var n=s.o(e,t)?e[t]:void 0;if(0!==n)if(n)i.push(n[2]);else{var r=new Promise(((i,r)=>n=e[t]=[i,r]));i.push(n[2]=r);var a=s.p+s.u(t),o=new Error;s.l(a,(i=>{if(s.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var r=i&&("load"===i.type?"missing":i.type),a=i&&i.target&&i.target.src;o.message="Loading chunk "+t+" failed.\n("+r+": "+a+")",o.name="ChunkLoadError",o.type=r,o.request=a,n[1](o)}}),"chunk-"+t,t)}},s.O.j=t=>0===e[t];var t=(t,i)=>{var n,r,a=i[0],o=i[1],l=i[2],d=0;if(a.some((t=>0!==e[t]))){for(n in o)s.o(o,n)&&(s.m[n]=o[n]);if(l)var h=l(s)}for(t&&t(i);ds(67597)));a=s.O(a)})(); +//# sourceMappingURL=files_sharing-init.js.map?v=978e225d53ee423a052c \ No newline at end of file diff --git a/dist/files_sharing-init.js.map b/dist/files_sharing-init.js.map index b70d9fc705fd5..25e45363614af 100644 --- a/dist/files_sharing-init.js.map +++ b/dist/files_sharing-init.js.map @@ -1 +1 @@ -{"version":3,"file":"files_sharing-init.js?v=fc2df12f385680f48a9d","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/services/SharingService.ts","webpack:///nextcloud/apps/files_sharing/src/views/shares.ts","webpack:///nextcloud/apps/files_sharing/src/actions/acceptShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/rejectShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/restoreShareAction.ts","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack://nextcloud/./apps/files_sharing/src/actions/sharingStatusAction.scss?3ea7","webpack:///nextcloud/apps/files_sharing/src/actions/sharingStatusAction.ts","webpack:///nextcloud/apps/files_sharing/src/init.ts","webpack:///nextcloud/apps/files_sharing/src/actions/sharingStatusAction.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","import { Folder, File, Permission } from '@nextcloud/files';\nimport { generateOcsUrl, generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport logger from './logger';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nconst headers = {\n 'Content-Type': 'application/json',\n};\nconst ocsEntryToNode = async function (ocsEntry) {\n try {\n // Federated share handling\n if (ocsEntry?.remote_id !== undefined) {\n const mime = (await import('mime')).default;\n // This won't catch files without an extension, but this is the best we can do\n ocsEntry.mimetype = mime.getType(ocsEntry.name);\n ocsEntry.item_type = ocsEntry.mimetype ? 'file' : 'folder';\n // Need to set permissions to NONE for federated shares\n ocsEntry.item_permissions = Permission.NONE;\n ocsEntry.permissions = Permission.NONE;\n ocsEntry.uid_owner = ocsEntry.owner;\n // TODO: have the real display name stored somewhere\n ocsEntry.displayname_owner = ocsEntry.owner;\n }\n const isFolder = ocsEntry?.item_type === 'folder';\n const hasPreview = ocsEntry?.has_preview === true;\n const Node = isFolder ? Folder : File;\n // If this is an external share that is not yet accepted,\n // we don't have an id. We can fallback to the row id temporarily\n const fileid = ocsEntry.file_source || ocsEntry.id;\n // Generate path and strip double slashes\n const path = ocsEntry?.path || ocsEntry.file_target || ocsEntry.name;\n const source = generateRemoteUrl(`dav/${rootPath}/${path}`.replaceAll(/\\/\\//gm, '/'));\n // Prefer share time if more recent than item mtime\n let mtime = ocsEntry?.item_mtime ? new Date((ocsEntry.item_mtime) * 1000) : undefined;\n if (ocsEntry?.stime > (ocsEntry?.item_mtime || 0)) {\n mtime = new Date((ocsEntry.stime) * 1000);\n }\n return new Node({\n id: fileid,\n source,\n owner: ocsEntry?.uid_owner,\n mime: ocsEntry?.mimetype || 'application/octet-stream',\n mtime,\n size: ocsEntry?.item_size,\n permissions: ocsEntry?.item_permissions || ocsEntry?.permissions,\n root: rootPath,\n attributes: {\n ...ocsEntry,\n 'has-preview': hasPreview,\n // Also check the sharingStatusAction.ts code\n 'owner-id': ocsEntry?.uid_owner,\n 'owner-display-name': ocsEntry?.displayname_owner,\n 'share-types': ocsEntry?.share_type,\n favorite: ocsEntry?.tags?.includes(window.OC.TAG_FAVORITE) ? 1 : 0,\n },\n });\n }\n catch (error) {\n logger.error('Error while parsing OCS entry', { error });\n return null;\n }\n};\nconst getShares = function (shared_with_me = false) {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares');\n return axios.get(url, {\n headers,\n params: {\n shared_with_me,\n include_tags: true,\n },\n });\n};\nconst getSharedWithYou = function () {\n return getShares(true);\n};\nconst getSharedWithOthers = function () {\n return getShares();\n};\nconst getRemoteShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getPendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getRemotePendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getDeletedShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\n/**\n * Group an array of objects (here Nodes) by a key\n * and return an array of arrays of them.\n */\nconst groupBy = function (nodes, key) {\n return Object.values(nodes.reduce(function (acc, curr) {\n (acc[curr[key]] = acc[curr[key]] || []).push(curr);\n return acc;\n }, {}));\n};\nexport const getContents = async (sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes = []) => {\n const promises = [];\n if (sharedWithYou) {\n promises.push(getSharedWithYou(), getRemoteShares());\n }\n if (sharedWithOthers) {\n promises.push(getSharedWithOthers());\n }\n if (pendingShares) {\n promises.push(getPendingShares(), getRemotePendingShares());\n }\n if (deletedshares) {\n promises.push(getDeletedShares());\n }\n const responses = await Promise.all(promises);\n const data = responses.map((response) => response.data.ocs.data).flat();\n let contents = (await Promise.all(data.map(ocsEntryToNode)))\n .filter((node) => node !== null);\n if (filterTypes.length > 0) {\n contents = contents.filter((node) => filterTypes.includes(node.attributes?.share_type));\n }\n // Merge duplicate shares and group their attributes\n // Also check the sharingStatusAction.ts code\n contents = groupBy(contents, 'source').map((nodes) => {\n const node = nodes[0];\n node.attributes['share-types'] = nodes.map(node => node.attributes['share-types']);\n return node;\n });\n return {\n folder: new Folder({\n id: 0,\n source: generateRemoteUrl('dav' + rootPath),\n owner: getCurrentUser()?.uid || null,\n }),\n contents,\n };\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport AccountClockSvg from '@mdi/svg/svg/account-clock.svg?raw';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw';\nimport AccountSvg from '@mdi/svg/svg/account.svg?raw';\nimport DeleteSvg from '@mdi/svg/svg/delete.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { getContents } from '../services/SharingService';\nexport const sharesViewId = 'shareoverview';\nexport const sharedWithYouViewId = 'sharingin';\nexport const sharedWithOthersViewId = 'sharingout';\nexport const sharingByLinksViewId = 'sharinglinks';\nexport const deletedSharesViewId = 'deletedshares';\nexport const pendingSharesViewId = 'pendingshares';\nexport default () => {\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: sharesViewId,\n name: t('files_sharing', 'Shares'),\n caption: t('files_sharing', 'Overview of shared files.'),\n emptyTitle: t('files_sharing', 'No shares'),\n emptyCaption: t('files_sharing', 'Files and folders you shared or have been shared with you will show up here'),\n icon: AccountPlusSvg,\n order: 20,\n columns: [],\n getContents: () => getContents(),\n }));\n Navigation.register(new View({\n id: sharedWithYouViewId,\n name: t('files_sharing', 'Shared with you'),\n caption: t('files_sharing', 'List of files that are shared with you.'),\n emptyTitle: t('files_sharing', 'Nothing shared with you yet'),\n emptyCaption: t('files_sharing', 'Files and folders others shared with you will show up here'),\n icon: AccountSvg,\n order: 1,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(true, false, false, false),\n }));\n Navigation.register(new View({\n id: sharedWithOthersViewId,\n name: t('files_sharing', 'Shared with others'),\n caption: t('files_sharing', 'List of files that you shared with others.'),\n emptyTitle: t('files_sharing', 'Nothing shared yet'),\n emptyCaption: t('files_sharing', 'Files and folders you shared will show up here'),\n icon: AccountGroupSvg,\n order: 2,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false),\n }));\n Navigation.register(new View({\n id: sharingByLinksViewId,\n name: t('files_sharing', 'Shared by link'),\n caption: t('files_sharing', 'List of files that are shared by link.'),\n emptyTitle: t('files_sharing', 'No shared links'),\n emptyCaption: t('files_sharing', 'Files and folders you shared by link will show up here'),\n icon: LinkSvg,\n order: 3,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false, [window.OC.Share.SHARE_TYPE_LINK]),\n }));\n Navigation.register(new View({\n id: deletedSharesViewId,\n name: t('files_sharing', 'Deleted shares'),\n caption: t('files_sharing', 'List of shares you left.'),\n emptyTitle: t('files_sharing', 'No deleted shares'),\n emptyCaption: t('files_sharing', 'Shares you have left will show up here'),\n icon: DeleteSvg,\n order: 4,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, false, true),\n }));\n Navigation.register(new View({\n id: pendingSharesViewId,\n name: t('files_sharing', 'Pending shares'),\n caption: t('files_sharing', 'List of unapproved shares.'),\n emptyTitle: t('files_sharing', 'No pending shares'),\n emptyCaption: t('files_sharing', 'Shares you have received but not approved will show up here'),\n icon: AccountClockSvg,\n order: 5,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, true, false),\n }));\n};\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { registerFileAction, FileAction } from '@nextcloud/files';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CheckSvg from '@mdi/svg/svg/check.svg?raw';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'accept-share',\n displayName: (nodes) => n('files_sharing', 'Accept share', 'Accept shares', nodes.length),\n iconSvgInline: () => CheckSvg,\n enabled: (nodes, view) => nodes.length > 0 && view.id === pendingSharesViewId,\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/pending/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { registerFileAction, FileAction, DefaultType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { sharesViewId, sharedWithYouViewId, sharedWithOthersViewId, sharingByLinksViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'open-in-files',\n displayName: () => t('files', 'Open in Files'),\n iconSvgInline: () => '',\n enabled: (nodes, view) => [\n sharesViewId,\n sharedWithYouViewId,\n sharedWithOthersViewId,\n sharingByLinksViewId,\n // Deleted and pending shares are not\n // accessible in the files app.\n ].includes(view.id),\n async exec(node) {\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files', fileid: node.fileid }, { dir: node.dirname, openfile: 'true' });\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.HIDDEN,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { registerFileAction, FileAction } from '@nextcloud/files';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CloseSvg from '@mdi/svg/svg/close.svg?raw';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'reject-share',\n displayName: (nodes) => n('files_sharing', 'Reject share', 'Reject shares', nodes.length),\n iconSvgInline: () => CloseSvg,\n enabled: (nodes, view) => {\n if (view.id !== pendingSharesViewId) {\n return false;\n }\n if (nodes.length === 0) {\n return false;\n }\n // disable rejecting group shares from the pending list because they anyway\n // land back into that same list after rejecting them\n if (nodes.some(node => node.attributes.remote_id\n && node.attributes.share_type === window.OC.Share.SHARE_TYPE_REMOTE_GROUP)) {\n return false;\n }\n return true;\n },\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.delete(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 2,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { FileAction, registerFileAction } from '@nextcloud/files';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport ArrowULeftTopSvg from '@mdi/svg/svg/arrow-u-left-top.svg?raw';\nimport axios from '@nextcloud/axios';\nimport { deletedSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'restore-share',\n displayName: (nodes) => n('files_sharing', 'Restore share', 'Restore shares', nodes.length),\n iconSvgInline: () => ArrowULeftTopSvg,\n enabled: (nodes, view) => nodes.length > 0 && view.id === deletedSharesViewId,\n async exec(node) {\n try {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares/{id}', {\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, View, FileAction, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n if (!nodes[0]) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node, view, dir) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n await window.OCA.Files.Sidebar.open(node.path);\n // Silently update current fileid\n window.OCP.Files.Router.goToRoute(null, { view: view.id, fileid: node.fileid }, { ...window.OCP.Files.Router.query, dir }, true);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n});\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./sharingStatusAction.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./sharingStatusAction.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Node, View, registerFileAction, FileAction, Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { Type } from '@nextcloud/sharing';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport CircleSvg from '../../../../core/img/apps/circles.svg?raw';\nimport { action as sidebarAction } from '../../../files/src/actions/sidebarAction';\nimport { generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport './sharingStatusAction.scss';\nconst isDarkMode = window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches === true\n || document.querySelector('[data-themes*=dark]') !== null;\nconst generateAvatarSvg = (userId, isGuest = false) => {\n const url = isDarkMode ? '/avatar/{userId}/32/dark' : '/avatar/{userId}/32';\n const avatarUrl = generateUrl(isGuest ? url : url + '?guestFallback=true', { userId });\n return `\n\t\t\n\t`;\n};\nconst isExternal = (node) => {\n return node.attributes.remote_id !== undefined;\n};\nexport const action = new FileAction({\n id: 'sharing-status',\n displayName(nodes) {\n const node = nodes[0];\n const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat();\n const ownerId = node?.attributes?.['owner-id'];\n if (shareTypes.length > 0\n || (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return t('files_sharing', 'Shared');\n }\n return '';\n },\n title(nodes) {\n const node = nodes[0];\n const ownerId = node?.attributes?.['owner-id'];\n const ownerDisplayName = node?.attributes?.['owner-display-name'];\n // Mixed share types\n if (Array.isArray(node.attributes?.['share-types']) && node.attributes?.['share-types'].length > 1) {\n return t('files_sharing', 'Shared multiple times with different people');\n }\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return t('files_sharing', 'Shared by {ownerDisplayName}', { ownerDisplayName });\n }\n return t('files_sharing', 'Show sharing options');\n },\n iconSvgInline(nodes) {\n const node = nodes[0];\n const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat();\n // Mixed share types\n if (Array.isArray(node.attributes?.['share-types']) && node.attributes?.['share-types'].length > 1) {\n return AccountPlusSvg;\n }\n // Link shares\n if (shareTypes.includes(Type.SHARE_TYPE_LINK)\n || shareTypes.includes(Type.SHARE_TYPE_EMAIL)) {\n return LinkSvg;\n }\n // Group shares\n if (shareTypes.includes(Type.SHARE_TYPE_GROUP)\n || shareTypes.includes(Type.SHARE_TYPE_REMOTE_GROUP)) {\n return AccountGroupSvg;\n }\n // Circle shares\n if (shareTypes.includes(Type.SHARE_TYPE_CIRCLE)) {\n return CircleSvg;\n }\n const ownerId = node?.attributes?.['owner-id'];\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return generateAvatarSvg(ownerId, isExternal(node));\n }\n return AccountPlusSvg;\n },\n enabled(nodes) {\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n const ownerId = node?.attributes?.['owner-id'];\n const isMixed = Array.isArray(node.attributes?.['share-types']);\n // If the node is shared multiple times with\n // different share types to the current user\n if (isMixed) {\n return true;\n }\n // If the node is shared by someone else\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return true;\n }\n return (node.permissions & Permission.SHARE) !== 0;\n },\n async exec(node, view, dir) {\n // You need read permissions to see the sidebar\n if ((node.permissions & Permission.READ) !== 0) {\n window.OCA?.Files?.Sidebar?.setActiveTab?.('sharing');\n return sidebarAction.exec(node, view, dir);\n }\n return null;\n },\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { registerDavProperty } from '@nextcloud/files';\nimport registerSharingViews from './views/shares';\nimport './actions/acceptShareAction';\nimport './actions/openInFilesAction';\nimport './actions/rejectShareAction';\nimport './actions/restoreShareAction';\nimport './actions/sharingStatusAction';\nregisterSharingViews();\nregisterDavProperty('nc:share-attributes', { nc: 'http://nextcloud.org/ns' });\nregisterDavProperty('oc:share-types', { oc: 'http://owncloud.org/ns' });\nregisterDavProperty('ocs:share-permissions', { ocs: 'http://open-collaboration-services.org/ns' });\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.action-items>.files-list__row-action-sharing-status{direction:rtl;padding-right:0 !important}svg.sharing-status__avatar{height:32px !important;width:32px !important;max-height:32px !important;max-width:32px !important;border-radius:32px;overflow:hidden}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/actions/sharingStatusAction.scss\"],\"names\":[],\"mappings\":\"AAsBA,qDAEC,aAAA,CAEG,0BAAA,CAGJ,2BACC,sBAAA,CACA,qBAAA,CACA,0BAAA,CACA,yBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n // Only when rendered inline, when not enough space, this is put in the menu\\n.action-items > .files-list__row-action-sharing-status {\\n\\t// put icon at the end of the button\\n\\tdirection: rtl;\\n\\t// align icons with textless inline actions\\n padding-right: 0 !important;\\n}\\n\\nsvg.sharing-status__avatar {\\n\\theight: 32px !important;\\n\\twidth: 32px !important;\\n\\tmax-height: 32px !important;\\n\\tmax-width: 32px !important;\\n\\tborder-radius: 32px;\\n\\toverflow: hidden;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + \"6797210df0f1d53f94c4\" + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5928;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5928: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(67597)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","rootPath","concat","_getCurrentUser","getCurrentUser","uid","headers","ocsEntryToNode","async","ocsEntry","_ocsEntry$tags","undefined","remote_id","mime","default","mimetype","getType","name","item_type","item_permissions","Permission","NONE","permissions","uid_owner","owner","displayname_owner","isFolder","hasPreview","has_preview","Node","Folder","File","fileid","file_source","id","path","file_target","source","generateRemoteUrl","replaceAll","mtime","item_mtime","Date","stime","size","item_size","root","attributes","share_type","favorite","tags","includes","window","OC","TAG_FAVORITE","error","logger","getShares","shared_with_me","arguments","length","url","generateOcsUrl","axios","get","params","include_tags","getContents","_getCurrentUser2","sharedWithOthers","pendingShares","deletedshares","filterTypes","promises","push","getRemoteShares","getPendingShares","getRemotePendingShares","getDeletedShares","data","Promise","all","map","response","ocs","flat","contents","filter","node","nodes","key","_node$attributes","Object","values","reduce","acc","curr","folder","sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","action","FileAction","displayName","n","iconSvgInline","CheckSvg","enabled","view","exec","isRemote","remote","shareBase","post","emit","execBatch","dir","this","order","inline","registerFileAction","t","OCP","Files","Router","goToRoute","dirname","openfile","DefaultType","HIDDEN","some","Share","SHARE_TYPE_REMOTE_GROUP","delete","InformationSvg","_window","_ref","_nodes$0$root","OCA","Sidebar","startsWith","open","query","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","isDarkMode","_window$matchMedia","matchMedia","call","matches","document","querySelector","isExternal","_node$attributes2","shareTypes","ownerId","title","_node$attributes3","_node$attributes4","_node$attributes5","_node$attributes6","ownerDisplayName","Array","isArray","_node$attributes7","_node$attributes8","_node$attributes9","_node$attributes10","_getCurrentUser3","AccountPlusSvg","Type","SHARE_TYPE_LINK","SHARE_TYPE_EMAIL","LinkSvg","SHARE_TYPE_GROUP","AccountGroupSvg","SHARE_TYPE_CIRCLE","userId","isGuest","avatarUrl","generateUrl","generateAvatarSvg","_node$attributes11","_node$attributes12","_getCurrentUser4","SHARE","_window$OCA","_window$OCA$setActive","READ","setActiveTab","sidebarAction","Navigation","getNavigation","register","View","caption","emptyTitle","emptyCaption","icon","columns","parent","registerSharingViews","registerDavProperty","nc","oc","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files_sharing-init.js?v=978e225d53ee423a052c","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/services/SharingService.ts","webpack:///nextcloud/apps/files_sharing/src/views/shares.ts","webpack:///nextcloud/apps/files_sharing/src/actions/acceptShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/rejectShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/restoreShareAction.ts","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack://nextcloud/./apps/files_sharing/src/actions/sharingStatusAction.scss?3ea7","webpack:///nextcloud/apps/files_sharing/src/actions/sharingStatusAction.ts","webpack:///nextcloud/apps/files_sharing/src/init.ts","webpack:///nextcloud/apps/files_sharing/src/actions/sharingStatusAction.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","import { Folder, File, Permission } from '@nextcloud/files';\nimport { generateOcsUrl, generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport logger from './logger';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nconst headers = {\n 'Content-Type': 'application/json',\n};\nconst ocsEntryToNode = async function (ocsEntry) {\n try {\n // Federated share handling\n if (ocsEntry?.remote_id !== undefined) {\n const mime = (await import('mime')).default;\n // This won't catch files without an extension, but this is the best we can do\n ocsEntry.mimetype = mime.getType(ocsEntry.name);\n ocsEntry.item_type = ocsEntry.mimetype ? 'file' : 'folder';\n // Need to set permissions to NONE for federated shares\n ocsEntry.item_permissions = Permission.NONE;\n ocsEntry.permissions = Permission.NONE;\n ocsEntry.uid_owner = ocsEntry.owner;\n // TODO: have the real display name stored somewhere\n ocsEntry.displayname_owner = ocsEntry.owner;\n }\n const isFolder = ocsEntry?.item_type === 'folder';\n const hasPreview = ocsEntry?.has_preview === true;\n const Node = isFolder ? Folder : File;\n // If this is an external share that is not yet accepted,\n // we don't have an id. We can fallback to the row id temporarily\n const fileid = ocsEntry.file_source || ocsEntry.id;\n // Generate path and strip double slashes\n const path = ocsEntry?.path || ocsEntry.file_target || ocsEntry.name;\n const source = generateRemoteUrl(`dav/${rootPath}/${path}`.replaceAll(/\\/\\//gm, '/'));\n // Prefer share time if more recent than item mtime\n let mtime = ocsEntry?.item_mtime ? new Date((ocsEntry.item_mtime) * 1000) : undefined;\n if (ocsEntry?.stime > (ocsEntry?.item_mtime || 0)) {\n mtime = new Date((ocsEntry.stime) * 1000);\n }\n return new Node({\n id: fileid,\n source,\n owner: ocsEntry?.uid_owner,\n mime: ocsEntry?.mimetype || 'application/octet-stream',\n mtime,\n size: ocsEntry?.item_size,\n permissions: ocsEntry?.item_permissions || ocsEntry?.permissions,\n root: rootPath,\n attributes: {\n ...ocsEntry,\n 'has-preview': hasPreview,\n // Also check the sharingStatusAction.ts code\n 'owner-id': ocsEntry?.uid_owner,\n 'owner-display-name': ocsEntry?.displayname_owner,\n 'share-types': ocsEntry?.share_type,\n favorite: ocsEntry?.tags?.includes(window.OC.TAG_FAVORITE) ? 1 : 0,\n },\n });\n }\n catch (error) {\n logger.error('Error while parsing OCS entry', { error });\n return null;\n }\n};\nconst getShares = function (shared_with_me = false) {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares');\n return axios.get(url, {\n headers,\n params: {\n shared_with_me,\n include_tags: true,\n },\n });\n};\nconst getSharedWithYou = function () {\n return getShares(true);\n};\nconst getSharedWithOthers = function () {\n return getShares();\n};\nconst getRemoteShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getPendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getRemotePendingShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\nconst getDeletedShares = function () {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n};\n/**\n * Group an array of objects (here Nodes) by a key\n * and return an array of arrays of them.\n */\nconst groupBy = function (nodes, key) {\n return Object.values(nodes.reduce(function (acc, curr) {\n (acc[curr[key]] = acc[curr[key]] || []).push(curr);\n return acc;\n }, {}));\n};\nexport const getContents = async (sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes = []) => {\n const promises = [];\n if (sharedWithYou) {\n promises.push(getSharedWithYou(), getRemoteShares());\n }\n if (sharedWithOthers) {\n promises.push(getSharedWithOthers());\n }\n if (pendingShares) {\n promises.push(getPendingShares(), getRemotePendingShares());\n }\n if (deletedshares) {\n promises.push(getDeletedShares());\n }\n const responses = await Promise.all(promises);\n const data = responses.map((response) => response.data.ocs.data).flat();\n let contents = (await Promise.all(data.map(ocsEntryToNode)))\n .filter((node) => node !== null);\n if (filterTypes.length > 0) {\n contents = contents.filter((node) => filterTypes.includes(node.attributes?.share_type));\n }\n // Merge duplicate shares and group their attributes\n // Also check the sharingStatusAction.ts code\n contents = groupBy(contents, 'source').map((nodes) => {\n const node = nodes[0];\n node.attributes['share-types'] = nodes.map(node => node.attributes['share-types']);\n return node;\n });\n return {\n folder: new Folder({\n id: 0,\n source: generateRemoteUrl('dav' + rootPath),\n owner: getCurrentUser()?.uid || null,\n }),\n contents,\n };\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport AccountClockSvg from '@mdi/svg/svg/account-clock.svg?raw';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw';\nimport AccountSvg from '@mdi/svg/svg/account.svg?raw';\nimport DeleteSvg from '@mdi/svg/svg/delete.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { getContents } from '../services/SharingService';\nexport const sharesViewId = 'shareoverview';\nexport const sharedWithYouViewId = 'sharingin';\nexport const sharedWithOthersViewId = 'sharingout';\nexport const sharingByLinksViewId = 'sharinglinks';\nexport const deletedSharesViewId = 'deletedshares';\nexport const pendingSharesViewId = 'pendingshares';\nexport default () => {\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: sharesViewId,\n name: t('files_sharing', 'Shares'),\n caption: t('files_sharing', 'Overview of shared files.'),\n emptyTitle: t('files_sharing', 'No shares'),\n emptyCaption: t('files_sharing', 'Files and folders you shared or have been shared with you will show up here'),\n icon: AccountPlusSvg,\n order: 20,\n columns: [],\n getContents: () => getContents(),\n }));\n Navigation.register(new View({\n id: sharedWithYouViewId,\n name: t('files_sharing', 'Shared with you'),\n caption: t('files_sharing', 'List of files that are shared with you.'),\n emptyTitle: t('files_sharing', 'Nothing shared with you yet'),\n emptyCaption: t('files_sharing', 'Files and folders others shared with you will show up here'),\n icon: AccountSvg,\n order: 1,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(true, false, false, false),\n }));\n Navigation.register(new View({\n id: sharedWithOthersViewId,\n name: t('files_sharing', 'Shared with others'),\n caption: t('files_sharing', 'List of files that you shared with others.'),\n emptyTitle: t('files_sharing', 'Nothing shared yet'),\n emptyCaption: t('files_sharing', 'Files and folders you shared will show up here'),\n icon: AccountGroupSvg,\n order: 2,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false),\n }));\n Navigation.register(new View({\n id: sharingByLinksViewId,\n name: t('files_sharing', 'Shared by link'),\n caption: t('files_sharing', 'List of files that are shared by link.'),\n emptyTitle: t('files_sharing', 'No shared links'),\n emptyCaption: t('files_sharing', 'Files and folders you shared by link will show up here'),\n icon: LinkSvg,\n order: 3,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false, [window.OC.Share.SHARE_TYPE_LINK]),\n }));\n Navigation.register(new View({\n id: deletedSharesViewId,\n name: t('files_sharing', 'Deleted shares'),\n caption: t('files_sharing', 'List of shares you left.'),\n emptyTitle: t('files_sharing', 'No deleted shares'),\n emptyCaption: t('files_sharing', 'Shares you have left will show up here'),\n icon: DeleteSvg,\n order: 4,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, false, true),\n }));\n Navigation.register(new View({\n id: pendingSharesViewId,\n name: t('files_sharing', 'Pending shares'),\n caption: t('files_sharing', 'List of unapproved shares.'),\n emptyTitle: t('files_sharing', 'No pending shares'),\n emptyCaption: t('files_sharing', 'Shares you have received but not approved will show up here'),\n icon: AccountClockSvg,\n order: 5,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, true, false),\n }));\n};\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { registerFileAction, FileAction } from '@nextcloud/files';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CheckSvg from '@mdi/svg/svg/check.svg?raw';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'accept-share',\n displayName: (nodes) => n('files_sharing', 'Accept share', 'Accept shares', nodes.length),\n iconSvgInline: () => CheckSvg,\n enabled: (nodes, view) => nodes.length > 0 && view.id === pendingSharesViewId,\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/pending/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { registerFileAction, FileAction, DefaultType, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { sharesViewId, sharedWithYouViewId, sharedWithOthersViewId, sharingByLinksViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'open-in-files',\n displayName: () => t('files', 'Open in Files'),\n iconSvgInline: () => '',\n enabled: (nodes, view) => [\n sharesViewId,\n sharedWithYouViewId,\n sharedWithOthersViewId,\n sharingByLinksViewId,\n // Deleted and pending shares are not\n // accessible in the files app.\n ].includes(view.id),\n async exec(node) {\n const isFolder = node.type === FileType.Folder;\n window.OCP.Files.Router.goToRoute(null, // use default route\n {\n view: 'files',\n fileid: String(node.fileid),\n }, {\n // If this node is a folder open the folder in files\n dir: isFolder ? node.path : node.dirname,\n // otherwise if this is a file, we should open it\n openfile: isFolder ? undefined : 'true',\n });\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.HIDDEN,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { registerFileAction, FileAction } from '@nextcloud/files';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CloseSvg from '@mdi/svg/svg/close.svg?raw';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'reject-share',\n displayName: (nodes) => n('files_sharing', 'Reject share', 'Reject shares', nodes.length),\n iconSvgInline: () => CloseSvg,\n enabled: (nodes, view) => {\n if (view.id !== pendingSharesViewId) {\n return false;\n }\n if (nodes.length === 0) {\n return false;\n }\n // disable rejecting group shares from the pending list because they anyway\n // land back into that same list after rejecting them\n if (nodes.some(node => node.attributes.remote_id\n && node.attributes.share_type === window.OC.Share.SHARE_TYPE_REMOTE_GROUP)) {\n return false;\n }\n return true;\n },\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.delete(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 2,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { FileAction, registerFileAction } from '@nextcloud/files';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport ArrowULeftTopSvg from '@mdi/svg/svg/arrow-u-left-top.svg?raw';\nimport axios from '@nextcloud/axios';\nimport { deletedSharesViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'restore-share',\n displayName: (nodes) => n('files_sharing', 'Restore share', 'Restore shares', nodes.length),\n iconSvgInline: () => ArrowULeftTopSvg,\n enabled: (nodes, view) => nodes.length > 0 && view.id === deletedSharesViewId,\n async exec(node) {\n try {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares/{id}', {\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, View, FileAction, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n if (!nodes[0]) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node, view, dir) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n await window.OCA.Files.Sidebar.open(node.path);\n // Silently update current fileid\n window.OCP.Files.Router.goToRoute(null, { view: view.id, fileid: node.fileid }, { ...window.OCP.Files.Router.query, dir }, true);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n});\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./sharingStatusAction.scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./sharingStatusAction.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Node, View, registerFileAction, FileAction, Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { Type } from '@nextcloud/sharing';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport CircleSvg from '../../../../core/img/apps/circles.svg?raw';\nimport { action as sidebarAction } from '../../../files/src/actions/sidebarAction';\nimport { generateUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport './sharingStatusAction.scss';\nconst isDarkMode = window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches === true\n || document.querySelector('[data-themes*=dark]') !== null;\nconst generateAvatarSvg = (userId, isGuest = false) => {\n const url = isDarkMode ? '/avatar/{userId}/32/dark' : '/avatar/{userId}/32';\n const avatarUrl = generateUrl(isGuest ? url : url + '?guestFallback=true', { userId });\n return `\n\t\t\n\t`;\n};\nconst isExternal = (node) => {\n return node.attributes.remote_id !== undefined;\n};\nexport const action = new FileAction({\n id: 'sharing-status',\n displayName(nodes) {\n const node = nodes[0];\n const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat();\n const ownerId = node?.attributes?.['owner-id'];\n if (shareTypes.length > 0\n || (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return t('files_sharing', 'Shared');\n }\n return '';\n },\n title(nodes) {\n const node = nodes[0];\n const ownerId = node?.attributes?.['owner-id'];\n const ownerDisplayName = node?.attributes?.['owner-display-name'];\n // Mixed share types\n if (Array.isArray(node.attributes?.['share-types']) && node.attributes?.['share-types'].length > 1) {\n return t('files_sharing', 'Shared multiple times with different people');\n }\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return t('files_sharing', 'Shared by {ownerDisplayName}', { ownerDisplayName });\n }\n return t('files_sharing', 'Show sharing options');\n },\n iconSvgInline(nodes) {\n const node = nodes[0];\n const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat();\n // Mixed share types\n if (Array.isArray(node.attributes?.['share-types']) && node.attributes?.['share-types'].length > 1) {\n return AccountPlusSvg;\n }\n // Link shares\n if (shareTypes.includes(Type.SHARE_TYPE_LINK)\n || shareTypes.includes(Type.SHARE_TYPE_EMAIL)) {\n return LinkSvg;\n }\n // Group shares\n if (shareTypes.includes(Type.SHARE_TYPE_GROUP)\n || shareTypes.includes(Type.SHARE_TYPE_REMOTE_GROUP)) {\n return AccountGroupSvg;\n }\n // Circle shares\n if (shareTypes.includes(Type.SHARE_TYPE_CIRCLE)) {\n return CircleSvg;\n }\n const ownerId = node?.attributes?.['owner-id'];\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return generateAvatarSvg(ownerId, isExternal(node));\n }\n return AccountPlusSvg;\n },\n enabled(nodes) {\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n const ownerId = node?.attributes?.['owner-id'];\n const isMixed = Array.isArray(node.attributes?.['share-types']);\n // If the node is shared multiple times with\n // different share types to the current user\n if (isMixed) {\n return true;\n }\n // If the node is shared by someone else\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return true;\n }\n return (node.permissions & Permission.SHARE) !== 0;\n },\n async exec(node, view, dir) {\n // You need read permissions to see the sidebar\n if ((node.permissions & Permission.READ) !== 0) {\n window.OCA?.Files?.Sidebar?.setActiveTab?.('sharing');\n return sidebarAction.exec(node, view, dir);\n }\n return null;\n },\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { registerDavProperty } from '@nextcloud/files';\nimport registerSharingViews from './views/shares';\nimport './actions/acceptShareAction';\nimport './actions/openInFilesAction';\nimport './actions/rejectShareAction';\nimport './actions/restoreShareAction';\nimport './actions/sharingStatusAction';\nregisterSharingViews();\nregisterDavProperty('nc:share-attributes', { nc: 'http://nextcloud.org/ns' });\nregisterDavProperty('oc:share-types', { oc: 'http://owncloud.org/ns' });\nregisterDavProperty('ocs:share-permissions', { ocs: 'http://open-collaboration-services.org/ns' });\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.action-items>.files-list__row-action-sharing-status{direction:rtl;padding-right:0 !important}svg.sharing-status__avatar{height:32px !important;width:32px !important;max-height:32px !important;max-width:32px !important;border-radius:32px;overflow:hidden}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/actions/sharingStatusAction.scss\"],\"names\":[],\"mappings\":\"AAsBA,qDAEC,aAAA,CAEG,0BAAA,CAGJ,2BACC,sBAAA,CACA,qBAAA,CACA,0BAAA,CACA,yBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n // Only when rendered inline, when not enough space, this is put in the menu\\n.action-items > .files-list__row-action-sharing-status {\\n\\t// put icon at the end of the button\\n\\tdirection: rtl;\\n\\t// align icons with textless inline actions\\n padding-right: 0 !important;\\n}\\n\\nsvg.sharing-status__avatar {\\n\\theight: 32px !important;\\n\\twidth: 32px !important;\\n\\tmax-height: 32px !important;\\n\\tmax-width: 32px !important;\\n\\tborder-radius: 32px;\\n\\toverflow: hidden;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + \"6797210df0f1d53f94c4\" + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5928;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5928: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(67597)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","rootPath","concat","_getCurrentUser","getCurrentUser","uid","headers","ocsEntryToNode","async","ocsEntry","_ocsEntry$tags","undefined","remote_id","mime","default","mimetype","getType","name","item_type","item_permissions","Permission","NONE","permissions","uid_owner","owner","displayname_owner","isFolder","hasPreview","has_preview","Node","Folder","File","fileid","file_source","id","path","file_target","source","generateRemoteUrl","replaceAll","mtime","item_mtime","Date","stime","size","item_size","root","attributes","share_type","favorite","tags","includes","window","OC","TAG_FAVORITE","error","logger","getShares","shared_with_me","arguments","length","url","generateOcsUrl","axios","get","params","include_tags","getContents","_getCurrentUser2","sharedWithOthers","pendingShares","deletedshares","filterTypes","promises","push","getRemoteShares","getPendingShares","getRemotePendingShares","getDeletedShares","data","Promise","all","map","response","ocs","flat","contents","filter","node","nodes","key","_node$attributes","Object","values","reduce","acc","curr","folder","sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","action","FileAction","displayName","n","iconSvgInline","CheckSvg","enabled","view","exec","isRemote","remote","shareBase","post","emit","execBatch","dir","this","order","inline","registerFileAction","t","type","FileType","OCP","Files","Router","goToRoute","String","dirname","openfile","DefaultType","HIDDEN","some","Share","SHARE_TYPE_REMOTE_GROUP","delete","InformationSvg","_window","_ref","_nodes$0$root","OCA","Sidebar","startsWith","open","query","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","isDarkMode","_window$matchMedia","matchMedia","call","matches","document","querySelector","isExternal","_node$attributes2","shareTypes","ownerId","title","_node$attributes3","_node$attributes4","_node$attributes5","_node$attributes6","ownerDisplayName","Array","isArray","_node$attributes7","_node$attributes8","_node$attributes9","_node$attributes10","_getCurrentUser3","AccountPlusSvg","Type","SHARE_TYPE_LINK","SHARE_TYPE_EMAIL","LinkSvg","SHARE_TYPE_GROUP","AccountGroupSvg","SHARE_TYPE_CIRCLE","userId","isGuest","avatarUrl","generateUrl","generateAvatarSvg","_node$attributes11","_node$attributes12","_getCurrentUser4","SHARE","_window$OCA","_window$OCA$setActive","READ","setActiveTab","sidebarAction","Navigation","getNavigation","register","View","caption","emptyTitle","emptyCaption","icon","columns","parent","registerSharingViews","registerDavProperty","nc","oc","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file