@duplicati/ngclient 0.0.144 → 0.0.145
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{chunk-X3IA226Q.js → chunk-2F6NVETW.js} +1 -1
- package/{chunk-VC72SWC4.js → chunk-2QJC4PGQ.js} +1 -1
- package/{chunk-PT7UQJD4.js → chunk-2UCO57JQ.js} +1 -1
- package/chunk-2UGURIOT.js +1 -0
- package/{chunk-4YL5DZVH.js → chunk-43JMN2ZY.js} +1 -1
- package/{chunk-LZUM5XKC.js → chunk-4TDUWDRL.js} +1 -1
- package/{chunk-SCOG2I64.js → chunk-62QANGOE.js} +1 -1
- package/{chunk-XNVRJH42.js → chunk-6LTGTS6B.js} +1 -1
- package/{chunk-73RDJP55.js → chunk-6OPAGPKF.js} +1 -1
- package/{chunk-LEXA637O.js → chunk-7B43LCPI.js} +1 -1
- package/{chunk-KOVQRACM.js → chunk-7EBTJOD7.js} +1 -1
- package/{chunk-6GC5VKTI.js → chunk-7IQY6U5W.js} +1 -1
- package/chunk-A6VGO6B5.js +1 -0
- package/{chunk-GHFYBZHQ.js → chunk-AJTK6HBC.js} +1 -1
- package/chunk-B2D4QGDJ.js +1 -0
- package/chunk-BPJCKQYP.js +1 -0
- package/{chunk-UACX27D3.js → chunk-DDWLL7XA.js} +1 -1
- package/{chunk-GUH5TMOS.js → chunk-DELLEGXW.js} +1 -1
- package/{chunk-IHNX6WZQ.js → chunk-DFMGS3IN.js} +1 -1
- package/chunk-DFMPWF6R.js +1 -0
- package/chunk-DKTUN7FF.js +1 -0
- package/{chunk-KGJAK6OP.js → chunk-DLMKZACT.js} +1 -1
- package/{chunk-FFY3NRCC.js → chunk-DNDTLTUM.js} +1 -1
- package/{chunk-3UN32GIC.js → chunk-DVDTYV66.js} +1 -1
- package/{chunk-IGOZJJE3.js → chunk-E66CBA5F.js} +1 -1
- package/{chunk-JA7OQSO3.js → chunk-EBIM5FBM.js} +1 -1
- package/{chunk-GO22DJ44.js → chunk-ESUPNSKH.js} +1 -1
- package/{chunk-OTMW34HV.js → chunk-FCRM5DER.js} +1 -1
- package/chunk-FDCY62KM.js +1 -0
- package/chunk-FFEDQIYN.js +1 -0
- package/{chunk-XQ4CAUD4.js → chunk-FUOS2UGQ.js} +1 -1
- package/{chunk-BIETD4DI.js → chunk-FZHTJSDJ.js} +1 -1
- package/{chunk-BXRW2LGW.js → chunk-GB3UMYUD.js} +1 -1
- package/chunk-H7K35UUX.js +1 -0
- package/chunk-HI4XLHO3.js +1 -0
- package/{chunk-QDFCX6XE.js → chunk-HNWRQABR.js} +3 -3
- package/{chunk-J2MHNGNQ.js → chunk-IFW3O4YJ.js} +1 -1
- package/{chunk-CTEFMU6N.js → chunk-J3ONM4TQ.js} +1 -1
- package/{chunk-CDRDYQEV.js → chunk-KDYD6LMI.js} +1 -1
- package/{chunk-GCZWFRPZ.js → chunk-KGKIF5H4.js} +1 -1
- package/chunk-KLW6HEOS.js +1 -0
- package/{chunk-K3ZQ67VT.js → chunk-L6CWVBZ6.js} +1 -1
- package/chunk-LVP2TPMO.js +1 -0
- package/{chunk-5PSLWJTF.js → chunk-M6WWZKV7.js} +1 -1
- package/chunk-MAQO5X5Q.js +1 -0
- package/{chunk-GDBU3Z7P.js → chunk-MSLKIHQQ.js} +1 -1
- package/{chunk-UT6XGEMV.js → chunk-MVNLSG6Z.js} +1 -1
- package/{chunk-USU2EHJV.js → chunk-N5SC4SKW.js} +1 -1
- package/{chunk-QY6E755W.js → chunk-N6ABN43N.js} +1 -1
- package/{chunk-WWFNG47J.js → chunk-NJEX2N4Q.js} +1 -1
- package/{chunk-JIHMT35A.js → chunk-NJZSEKTD.js} +1 -1
- package/{chunk-J3BBLPAD.js → chunk-NOPMCS2Z.js} +1 -1
- package/{chunk-ACH476VA.js → chunk-NQ27E6KP.js} +1 -1
- package/{chunk-QGFC5ZUR.js → chunk-O64ZZGQZ.js} +1 -1
- package/{chunk-CZLLEVMJ.js → chunk-OMMUXRXE.js} +1 -1
- package/{chunk-AO4O42CM.js → chunk-OWDKOVPL.js} +1 -1
- package/{chunk-TJOWPBPB.js → chunk-PN3U7MRX.js} +1 -1
- package/{chunk-CFNP4FBG.js → chunk-POMLWQHO.js} +1 -1
- package/{chunk-BGUKMOKY.js → chunk-QDFDQHU3.js} +1 -1
- package/{chunk-7AMBMWZP.js → chunk-QHC3CY43.js} +1 -1
- package/{chunk-ARXKB7WH.js → chunk-QITXA3NT.js} +1 -1
- package/chunk-QYI4IMJE.js +8 -0
- package/{chunk-J5PSMGKZ.js → chunk-R5RIFWZO.js} +1 -1
- package/chunk-RPU4AJBK.js +1 -0
- package/chunk-RUFE3SMI.js +1 -0
- package/{chunk-WJPLJKPQ.js → chunk-RUXCS4ZK.js} +1 -1
- package/{chunk-7X7K5IXS.js → chunk-SFSB73YO.js} +1 -1
- package/{chunk-B5FUQFEQ.js → chunk-TDKBGGNK.js} +1 -1
- package/{chunk-6XBSQDXR.js → chunk-TIWH4NKT.js} +1 -1
- package/{chunk-XHUUCB2W.js → chunk-TKO3OH2C.js} +1 -1
- package/chunk-U5C62E46.js +1 -0
- package/chunk-UIIHBXLB.js +1 -0
- package/{chunk-OXOOR7I4.js → chunk-UIJYCGKA.js} +1 -1
- package/{chunk-ETCRT3EV.js → chunk-UKQFDBNO.js} +1 -1
- package/{chunk-CWBEE627.js → chunk-UP5EOICU.js} +1 -1
- package/{chunk-6WWCFRZ5.js → chunk-VHE3K2F5.js} +1 -1
- package/{chunk-66BSPEOQ.js → chunk-VTSUHAP5.js} +1 -1
- package/chunk-W6DRPPZU.js +1 -0
- package/{chunk-UW4GBMEP.js → chunk-WS76KLII.js} +1 -1
- package/{chunk-T4TFHAZT.js → chunk-XJZ5GM36.js} +1 -1
- package/{chunk-ZGAC2JKG.js → chunk-Z3EPZZGY.js} +1 -1
- package/{chunk-FVE45QKX.js → chunk-ZNWZFRFW.js} +1 -1
- package/index.html +2 -2
- package/{main-SUSCPR3H.js → main-Z5T5HH5Q.js} +1 -1
- package/package.json +1 -1
- package/styles-LRXGHWCZ.css +1 -0
- package/chunk-2CTSAUUN.js +0 -1
- package/chunk-2NU5Y4V7.js +0 -1
- package/chunk-2RB5RKNM.js +0 -1
- package/chunk-74NKDA4G.js +0 -1
- package/chunk-7WD3AN66.js +0 -1
- package/chunk-AB2L3URR.js +0 -1
- package/chunk-B7NRTB6T.js +0 -1
- package/chunk-C2L3SQU3.js +0 -1
- package/chunk-ERKYRXHP.js +0 -8
- package/chunk-HKZX6OB5.js +0 -1
- package/chunk-L2EO4M4B.js +0 -1
- package/chunk-ODVCGM2O.js +0 -1
- package/chunk-QFU6VJXV.js +0 -1
- package/chunk-QNOIURSX.js +0 -1
- package/chunk-UGLRUY6T.js +0 -1
- package/chunk-UUODEERG.js +0 -1
- package/chunk-WHKW5IYF.js +0 -1
- package/chunk-WRNQOX5R.js +0 -1
- package/chunk-ZVIRETHC.js +0 -1
- package/styles-EZGVWHZF.css +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as Ue}from"./chunk-K3ZQ67VT.js";import{a as se}from"./chunk-QY6E755W.js";import{a as ne}from"./chunk-UACX27D3.js";import{b as pe}from"./chunk-QGFC5ZUR.js";import{a as Ve}from"./chunk-OXOOR7I4.js";import{a as K}from"./chunk-GUH5TMOS.js";import{a as oe}from"./chunk-66BSPEOQ.js";import{a as xe}from"./chunk-CWBEE627.js";import{b as We,c as G,e as B,f as x,i as ze,j as V,l as Xe,o as W,q as z,r as X,s as Ye,t as Y}from"./chunk-USU2EHJV.js";import{b as R,d as N}from"./chunk-L2EO4M4B.js";import{A as Be,a as A,e as ve,g as k,l as Ae,p as ke,q as we,t as Ge}from"./chunk-WRNQOX5R.js";import{h as w}from"./chunk-J3BBLPAD.js";import{la as ie}from"./chunk-WJPLJKPQ.js";import{Ab as r,B as Oe,Bb as l,Cb as c,Dc as ae,Ec as $e,F as H,Fc as De,Gb as L,H as O,Hb as $,Jb as j,L as fe,Oc as le,P as he,Pc as v,Q,Qb as m,Ra as d,Rb as g,Sb as S,Tb as Ne,Ub as Pe,V as Ce,Wb as f,Yb as D,_ as p,bb as M,ea as h,fa as C,gb as Re,i as Se,ic as Ie,lc as q,nc as Me,o as Te,oa as _,oc as ye,qc as Z,rc as ee,sc as te,ub as y,vb as b,x as re,y as Ee,yc as be,zb as F,zc as Le}from"./chunk-QDFCX6XE.js";var He=new X,Ke=()=>He.group({passphrase:He.control("")}),_e=class a{#t=p(w);#e=p(P);#o=p(N);#n=p(R);encryptionForm=this.#e.encryptionForm;creatingTemporaryBackup=_(!1);settings=_([]);next(){let i=this.#e.destinationTargetUrl();if(!i)throw new Error("No target URL");this.creatingTemporaryBackup.set(!0);let e=this.encryptionForm.value?.passphrase??null,t=[];e?t.push({Name:"--passphrase",Value:e}):t.push({Name:"--no-encryption",Value:"true"}),this.settings().forEach(o=>{let n=o.Name?.trim();n&&n!=="--"&&(n.startsWith("--")||(n=`--${n}`),t.push({Name:n,Value:o.Value??""}))}),this.#t.postApiV1Backups({requestBody:{Backup:{TargetURL:i,Settings:t}},temporary:!0}).pipe(O(()=>this.creatingTemporaryBackup.set(!1))).subscribe({next:o=>{let n=o.ID;this.#o.navigate([`/restore-draft/${n}`])},error:o=>{console.error(o)}})}back(){this.#e.isFileRestore()?this.#o.navigate(["destination"],{relativeTo:this.#n.parent}):this.#e.exit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-restore-encryption"]],decls:16,vars:3,consts:()=>{let i;i=$localize`Enter backup passphrase if defined.`;let e;e=$localize`Password`;let t;t=$localize`Advanced options`;let o;o=$localize`${"\uFFFD#12\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_ICON: Back `;let n;return n=$localize`${"\uFFFD#15\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#15\uFFFD"}:CLOSE_TAG_SH_ICON: Continue `,[e,t,o,n,[3,"submit","formGroup"],["for","password"],["type","password","id","password","placeholder",i,"formControlName","passphrase"],["title",""],[3,"optionsChange","options","hasFreeTextSettings"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"]]},template:function(e,t){e&1&&(r(0,"form",4),f("submit",function(){return t.next()}),r(1,"sh-form-field")(2,"label",5),S(3,0),l(),c(4,"input",6),l(),r(5,"app-toggle-card"),L(6,7),S(7,1),$(),r(8,"app-options-list",8),te("optionsChange",function(n){return ee(t.settings,n)||(t.settings=n),n}),l()(),r(9,"div",9)(10,"button",10),f("click",function(){return t.back()}),m(11,2),c(12,"sh-icon"),g(),l(),r(13,"button",11),m(14,3),c(15,"sh-icon"),g(),l()()()),e&2&&(F("formGroup",t.encryptionForm),d(8),Z("options",t.settings),F("hasFreeTextSettings",!0))},dependencies:[Y,V,G,B,x,W,z,Ae,A,k,ne,Ue],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}"],changeDetection:0})};var Ze=()=>({standalone:!0});function et(a,i){a&1&&c(0,"sh-progress-bar",8)}function tt(a,i){if(a&1&&(q(0),ae(1,"bytes")),a&2){let e=D().$implicit;Me(" (",$e(1,1,e.FileSizes),") ")}}function it(a,i){a&1&&(r(0,"span",16),S(1,4),l())}function ot(a,i){if(a&1&&(r(0,"div",15),q(1),ae(2,"date"),y(3,tt,2,3),y(4,it,2,0,"span",16),l()),a&2){let e=i.$implicit;d(),ye(" ",e.Version,": ",De(2,4,e.Time,"medium")," "),d(2),b(e.FileSizes?3:-1),d(),b(e.IsFullBackup===!1?4:-1)}}function nt(a,i){a&1&&c(0,"sh-progress-bar",8)}function st(a,i){if(a&1&&(r(0,"app-file-tree",14)(1,"label",17),S(2,5),l(),c(3,"input",18),l()),a&2){let e=D(2);F("rootPaths",e.rootPaths())("initialNodes",e.initialNodes())("backupSettings",e.backupSettings())("multiSelect",!0)("showFiles",!0)}}function rt(a,i){if(a&1){let e=j();r(0,"sh-select",12),f("cleared",function(){h(e);let o=D();return C(o.abortLoading())}),r(1,"input",13),te("ngModelChange",function(o){h(e);let n=D();return ee(n.selectOption,o)||(n.selectOption=o),C(o)}),l(),Re(2,ot,5,7,"ng-template"),l(),y(3,nt,1,0,"sh-progress-bar",8),y(4,st,4,5,"app-file-tree",14)}if(a&2){let e=D();F("options",e.versionOptions())("isClearable",!1),d(),Z("ngModel",e.selectOption),F("ngModelOptions",Le(6,Ze)),d(2),b(e.isRepairing()||e.versionOptionsLoading()||e.loadingRootPath()?3:-1),d(),b(e.showFileTree()?4:-1)}}var ue=new X,Je=()=>ue.group({filesToRestore:ue.control(""),passphrase:ue.control(null)}),de=class a{#t=p(w);#e=p(P);#o=p(Ve);#n=p(oe);#i=p(N);#s=p(R);#l=p(ie);#a=null;#p=null;#r=_([]);selectFilesForm=this.#e.selectFilesForm;selectFilesFormSignal=this.#e.selectFilesFormSignal;selectOption=this.#e.selectOption;backupId=this.#e.backupId;versionOptionsLoading=this.#e.versionOptionsLoading;versionOptions=this.#e.versionOptions;isFileRestore=this.#e.isFileRestore;needsDatabaseRepair=le(()=>this.#e.backup()?.Backup?.IsTemporary??!0);showFileTree=_(!1);backupSettings=_(null);rootPaths=_([]);initialNodes=_([]);loadingRootPath=_(!1);isRepairing=le(()=>this.#r().length>0);loadedVersions=_({});loadingEffect=v(()=>{if(this.versionOptionsLoading())return;let e=this.versionOptions();if(e&&e?.length>0){let t=e[0].Version;this.selectOption.set(t.toString())}});backupSettingsEffect=v(()=>{let i=this.backupId(),e=this.selectOption(),t=this.isRepairing(),o=this.loadedVersions();if(!e||!i)return;let s=this.versionOptions()?.find(J=>J.Version===parseInt(e))?.Time??null;if(!s)return;let u=`${i}+${s}`,E=o[u];if(this.needsDatabaseRepair()&&(!E||t))return;let I={id:i+"",time:s};this.backupSettings.set(I),this.getRootPath(I)});repairEffect=v(()=>{if(!this.needsDatabaseRepair())return;let i=this.selectOption(),e=this.versionOptions();if(i){let t=e.find(s=>s.Version===parseInt(i));if(t===void 0)return;let o=this.backupId(),n=`${o}+${t.Time}`;if(this.#p===n||(this.#p=n,this.#r().includes(n)))return;this.#r.update(s=>[...s,n]),this.#t.postApiV1BackupByIdRepairupdate({id:o,requestBody:{only_paths:!0,time:t.Time}}).pipe(Q(this.abortLoading$),O(()=>{this.#p=null})).subscribe(s=>{let u=s.ID;this.#o.waitForTaskToComplete(u).pipe(H(1)).subscribe(()=>{this.#r.update(E=>E.filter(I=>I!==n)),this.loadedVersions.update(E=>(E[n]=!0,E))})})}});getRootPath(i){let e={id:i.id+"",time:i.time,prefixOnly:!0,folderContents:!1},t=i.id+"";this.isRepairing()||this.#a===t||(this.#a=t,this.loadingRootPath.set(!0),this.showFileTree.set(!1),this.#n.hasV2ListOperations()?this.#t.postApiV2BackupListFolder({requestBody:{BackupId:i.id,Time:i.time,Paths:null,PageSize:0,Page:0}}).pipe(Q(this.abortLoading$),O(()=>{this.showFileTree.set(!0),this.loadingRootPath.set(!1),this.#a=null})).subscribe({next:o=>{let n=(o.Data??[]).map(s=>s.Path??"");n.length>0?(this.initialNodes.set([]),this.rootPaths.set(n)):(this.initialNodes.set([]),this.rootPaths.set(["/"]))}}):this.#t.getApiV1BackupByIdFiles(e).pipe(Q(this.abortLoading$),O(()=>{this.showFileTree.set(!0),this.loadingRootPath.set(!1)})).subscribe({next:o=>{let n=o.Files.map(s=>s.Path??"");n.length>0?(this.initialNodes.set([]),this.rootPaths.set(n)):(this.initialNodes.set([]),this.rootPaths.set(["/"]))}}))}abortLoading$=new Se;abortLoading(){this.showFileTree.set(!1),this.loadingRootPath.set(!1),this.abortLoading$.next(!0)}displayFn(){let i=this.versionOptions();return e=>{if(!e)return"";let t=i?.find(o=>typeof o.Version=="number"&&o.Version.toString()===e);return t?`${t.Version}: ${this.#l.transform(t.Time,"medium")}`:""}}next(){this.#i.navigate(["options"],{relativeTo:this.#s.parent})}back(){this.#e.isFileRestore()?this.#i.navigate(["encryption"],{relativeTo:this.#s.parent}):this.#e.exit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-select-files"]],features:[be([ie])],decls:13,vars:3,consts:()=>{let i;i=$localize`Select files`;let e;e=$localize`${"\uFFFD#9\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#9\uFFFD"}:CLOSE_TAG_SH_ICON: ${"\uFFFD0\uFFFD"}:INTERPOLATION: `;let t;t=$localize`${"\uFFFD#12\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_ICON: Continue `;let o;o=$localize`Select an option...`;let n;n=$localize`(partial)`;let s;return s=$localize`Path`,[["formRef",""],i,e,t,n,s,[3,"submit","formGroup"],[1,"title-30"],[1,"indeterminate","primary"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"],["value","Version",3,"cleared","options","isClearable"],["type","text","placeholder",o,3,"ngModelChange","ngModel","ngModelOptions"],[3,"rootPaths","initialNodes","backupSettings","multiSelect","showFiles"],[1,"custom-option"],[1,"partial"],["for","path"],["type","text","id","path","formControlName","filesToRestore"]]},template:function(e,t){if(e&1){let o=j();r(0,"form",6,0),f("submit",function(){return h(o),C(t.next())}),r(2,"h3",7),S(3,1),l(),y(4,et,1,0,"sh-progress-bar",8)(5,rt,5,7),r(6,"div",9)(7,"button",10),f("click",function(){return h(o),C(t.back())}),m(8,2),c(9,"sh-icon"),g(),l(),r(10,"button",11),m(11,3),c(12,"sh-icon"),g(),l()()()}e&2&&(F("formGroup",t.selectFilesForm),d(4),b(t.versionOptionsLoading()?4:5),d(5),Ne(t.isFileRestore()?"Back":"Exit"),Pe(8))},dependencies:[Ye,V,G,B,x,ze,Y,W,z,se,k,A,Ge,ke,ie,xe],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.partial[_ngcontent-%COMP%]{color:var(--base-9);font-style:italic}"],changeDetection:0})};var P=class a{#t=p(N);#e=p(R);#o=p(oe);#n=p(ve);#i=p(w);backupId=_(null);backup=_(null);destinationTargetUrl=_(null);selectFilesForm=Je();optionsForm=Qe();encryptionForm=Ke();optionsFormSignal=pe(this.optionsForm.valueChanges);selectFilesFormSignal=pe(this.selectFilesForm.valueChanges);selectOption=_(null);versionOptionsLoading=_(!1);versionOptions=_([]);isSubmitting=_(!1);isFileRestore=_(!1);isFullWidthPage=_(!1);#s=_("");#l=_(null);#a=null;testSignal=this.#s.asReadonly();testErrorMessage=this.#l.asReadonly();#p=v(()=>{let i=this.destinationTargetUrl(),e=this.#s(),t=this.#a;this.#a=i,!(e==="testing"||t===null||t===i)&&(this.#s.set(""),this.#l.set(null))});init(i,e=!1){this.backupId.set(i),this.isFileRestore.set(e),e&&this.#t.navigate(["/restore-from-files/destination"]),e||this.getBackup(!0)}setTestState(i,e){this.#s.set(i),this.#l.set(e??null)}updateTargetUrl(i){this.destinationTargetUrl.set(i)}submit(){this.isSubmitting.set(!0);let i=this.backupId();this.backup()?.Backup?.IsTemporary??!1?this.#i.postApiV1BackupByIdCopytotemp({id:this.backupId()??""}).subscribe({next:t=>{this.#r(t.ID??"")},error:t=>this.showErrorDialog($localize`An error occurred while copying the backup to a temporary location: ${t.message}`)}):this.#r(i??"")}showErrorDialog(i){this.#n.open(K,{data:{title:$localize`Error occured`,message:i,confirmText:$localize`OK`,cancelText:void 0},closed:e=>{}})}#r(i){let e=this.optionsForm.value,t=this.selectFilesForm.value,o=this.selectOption(),n=this.versionOptions()?.find(s=>s.Version===(o&&parseInt(o)));this.#i.postApiV1BackupByIdRestore({id:i??"",requestBody:{paths:t.filesToRestore?.split("\0").map(s=>s.endsWith("/")||s.endsWith("\\")?`${s}*`:s)??[],passphrase:t.passphrase??null,time:n?.Time,restore_path:e.restoreFromPath,overwrite:e.handleExisting==="overwrite",permissions:e.permissions,skip_metadata:!e.includeMetadata}}).pipe(O(()=>this.isSubmitting.set(!1))).subscribe({next:s=>{this.#t.navigate([`./${s.ID}`,"progress"],{relativeTo:this.#e})},error:s=>{console.error("restore error",s)}})}exit(){this.#n.open(K,{data:{title:$localize`Confirm exit?`,message:$localize`Are you sure you want to exit?`,confirmText:$localize`Yes`,cancelText:$localize`Cancel`},closed:i=>{i&&(this.#_(),this.#t.navigate(["/"]))}})}getVersionOptions(){this.versionOptions()}loadFilesetsWithRetryv2(i,e=2){return this.#i.postApiV2BackupListFilesets({requestBody:{BackupId:i}}).pipe(Oe(t=>{let o=t?.error?.body?.StatusCode==="EncryptedStorageNoPassphrase",n=t?.error?.body?.StatusCode==="FolderMissing",s=t?.error?.body?.StatusCode==="EmptyRemoteFolder";return o||n||s||e===0?Te(()=>t):Ee(1e3).pipe(he(()=>this.loadFilesetsWithRetryv2(i,e-1)))}))}getBackup(i=!1){let e=this.backupId();this.versionOptionsLoading.set(!0),this.#o.hasV2ListOperations()?re([this.#i.getApiV1BackupById({id:e}),this.loadFilesetsWithRetryv2(e)]).pipe(H(1),O(()=>this.versionOptionsLoading.set(!1))).subscribe({next:([t,o])=>{if(o.Error)throw new Error(o.Error);if(!(t.Backup?.IsTemporary??!0)&&t?.Backup?.DBPathExists===!1){this.#n.open(K,{data:{title:$localize`Missing Local Database`,message:$localize`The local database for this backup is missing. Please repair or recreate the local database before restoring.`,confirmText:$localize`OK`,cancelText:void 0},closed:s=>{this.#t.navigate(["/backup",e,"database"])}});return}this.versionOptions.set((o.Data??[]).map(s=>({Version:s.Version??-1,IsFullBackup:s.IsFullBackup??void 0,Time:s.Time??"<missing>",FileCount:s.FileCount??void 0,FileSizes:s.FileSizes??void 0}))),this.backup.set(t)},error:t=>{let o=t?.error?.body?.StatusCode==="EncryptedStorageNoPassphrase",n=t?.error?.body?.StatusCode==="FolderMissing",s=t?.error?.body?.StatusCode==="EmptyRemoteFolder",u=$localize`An error occurred while loading the backup filesets: ${t.message}`;o&&(u=$localize`The remote storage is encrypted. Please enter the passphrase to access the backup.`),n&&(u=$localize`The backup storage folder was not found.`),s&&(u=$localize`The backup storage folder does not contain any filesets.`),this.#n.open(K,{data:{title:$localize`Failed to load backup filesets`,message:u,confirmText:$localize`OK`,cancelText:void 0},closed:E=>{this.#t.navigate([o?"/restore-from-files/encryption":"/restore-from-files/destination"])}})}}):re([this.#i.getApiV1BackupById({id:e}),this.#i.getApiV1BackupByIdFilesets({id:e}).pipe(fe(3))]).pipe(H(1),O(()=>this.versionOptionsLoading.set(!1))).subscribe({next:([t,o])=>{this.versionOptions.set(o.map(n=>({Version:n.Version??-1,IsFullBackup:(n.IsFullBackup??1)==1,Time:n.Time??"<missing>",FileCount:n.FileCount??void 0,FileSizes:n.FileSizes??void 0}))),this.backup.set(t)}})}#_(){this.selectFilesForm.reset(),this.optionsForm.reset()}static \u0275fac=function(e){return new(e||a)};static \u0275prov=Ce({token:a,factory:a.\u0275fac,providedIn:"root"})};var U=new X,Qe=()=>U.group({restoreFrom:U.control("orignal"),restoreFromPath:U.control(""),handleExisting:U.control("overwrite"),permissions:U.control(!1),includeMetadata:U.control(!0)}),me=class a{#t=p(P);#e=p(N);#o=p(R);optionsForm=this.#t.optionsForm;optionsFormSignal=this.#t.optionsFormSignal;isSubmitting=this.#t.isSubmitting;goBack(){this.#e.navigate(["select-files"],{relativeTo:this.#o.parent})}submit(){this.#t.submit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-advanced-options-settings"]],decls:42,vars:7,consts:()=>{let i;i=$localize`Restore options`;let e;e=$localize`Where do you want to restore files to?`;let t;t=$localize` Original location ${"\uFFFD#9\uFFFD\uFFFD/#9\uFFFD"}:TAG_INPUT:`;let o;o=$localize` Pick location ${"\uFFFD#12\uFFFD\uFFFD/#12\uFFFD"}:TAG_INPUT:`;let n;n=$localize`How do you want to handle existing files?`;let s;s=$localize` Overwrite ${"\uFFFD#22\uFFFD\uFFFD/#22\uFFFD"}:TAG_INPUT:`;let u;u=$localize` Save different versions with timestamp in file name ${"\uFFFD#25\uFFFD\uFFFD/#25\uFFFD"}:TAG_INPUT:`;let E;E=$localize`Metadata settings`;let I;I=$localize` Restore file metadata ${"\uFFFD#31\uFFFD\uFFFD/#31\uFFFD"}:TAG_INPUT:`;let J;J=$localize` Restore read/write permissions ${"\uFFFD#34\uFFFD\uFFFD/#34\uFFFD"}:TAG_INPUT:`;let ge;ge=$localize`${"\uFFFD#38\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#38\uFFFD"}:CLOSE_TAG_SH_ICON: Go back `;let Fe;return Fe=$localize`${"\uFFFD#41\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#41\uFFFD"}:CLOSE_TAG_SH_ICON: Submit `,[["formRef",""],i,e,t,o,n,s,u,E,I,J,ge,Fe,[3,"submit","formGroup"],[1,"title-30"],[3,"disallowToggle"],["title",""],[1,"raised","primary"],["type","radio","name","restoreFrom","value","orignal","formControlName","restoreFrom"],["type","radio","name","restoreFrom","value","pickLocation","formControlName","restoreFrom"],[3,"disabled","enableCreateFolder"],["for","path"],["type","text","id","path","formControlName","restoreFromPath"],["type","radio","name","handleExisting","value","overwrite","formControlName","handleExisting"],["type","radio","name","handleExisting","value","saveTimestamp","formControlName","handleExisting"],[1,"primary","raised"],["type","checkbox","formControlName","includeMetadata"],["type","checkbox","formControlName","permissions"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"]]},template:function(e,t){if(e&1){let o=j();r(0,"form",13,0),f("submit",function(){return h(o),C(t.submit())}),r(2,"h3",14),S(3,1),l(),r(4,"app-toggle-card",15),L(5,16),S(6,2),$(),r(7,"sh-radio",17),m(8,3),c(9,"input",18),g(),l(),r(10,"sh-radio",17),m(11,4),c(12,"input",19),g(),l(),r(13,"app-file-tree",20)(14,"label",21),q(15,"Path"),l(),c(16,"input",22),l()(),r(17,"app-toggle-card",15),L(18,16),S(19,5),$(),r(20,"sh-radio",17),m(21,6),c(22,"input",23),g(),l(),r(23,"sh-radio",17),m(24,7),c(25,"input",24),g(),l()(),r(26,"app-toggle-card"),L(27,16),S(28,8),$(),r(29,"sh-toggle",25),m(30,9),c(31,"input",26),g(),l(),r(32,"sh-toggle",25),m(33,10),c(34,"input",27),g(),l()(),r(35,"div",28)(36,"button",29),f("click",function(){return h(o),C(t.goBack())}),m(37,11),c(38,"sh-icon"),g(),l(),r(39,"button",30),m(40,12),c(41,"sh-icon"),g(),l()()()}if(e&2){let o;F("formGroup",t.optionsForm),d(4),F("disallowToggle",!0),d(9),F("disabled",((o=t.optionsFormSignal())==null?null:o.restoreFrom)!=="pickLocation")("enableCreateFolder",!0),d(4),F("disallowToggle",!0),d(22),Ie("loader",t.isSubmitting())}},dependencies:[Y,V,G,We,Xe,B,x,W,z,ne,se,Be,we,k,A],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}"],changeDetection:0})};export{Qe as a,me as b,Ke as c,_e as d,Je as e,de as f,P as g};
|
|
1
|
+
import{a as Ue}from"./chunk-L6CWVBZ6.js";import{a as se}from"./chunk-N6ABN43N.js";import{a as ne}from"./chunk-DDWLL7XA.js";import{b as pe}from"./chunk-O64ZZGQZ.js";import{a as Ve}from"./chunk-UIJYCGKA.js";import{a as K}from"./chunk-DELLEGXW.js";import{a as oe}from"./chunk-VTSUHAP5.js";import{a as xe}from"./chunk-UP5EOICU.js";import{b as We,c as G,e as B,f as x,i as ze,j as V,l as Xe,o as W,q as z,r as X,s as Ye,t as Y}from"./chunk-N5SC4SKW.js";import{b as R,d as N}from"./chunk-LVP2TPMO.js";import{A as Be,a as A,e as ve,g as k,l as Ae,p as ke,q as we,t as Ge}from"./chunk-H7K35UUX.js";import{h as w}from"./chunk-NOPMCS2Z.js";import{la as ie}from"./chunk-RUXCS4ZK.js";import{Ab as r,B as Oe,Bb as l,Cb as c,Dc as ae,Ec as $e,F as H,Fc as De,Gb as L,H as O,Hb as $,Jb as j,L as fe,Oc as le,P as he,Pc as v,Q,Qb as m,Ra as d,Rb as g,Sb as S,Tb as Ne,Ub as Pe,V as Ce,Wb as f,Yb as D,_ as p,bb as M,ea as h,fa as C,gb as Re,i as Se,ic as Ie,lc as q,nc as Me,o as Te,oa as _,oc as ye,qc as Z,rc as ee,sc as te,ub as y,vb as b,x as re,y as Ee,yc as be,zb as F,zc as Le}from"./chunk-HNWRQABR.js";var He=new X,Ke=()=>He.group({passphrase:He.control("")}),_e=class a{#t=p(w);#e=p(P);#o=p(N);#n=p(R);encryptionForm=this.#e.encryptionForm;creatingTemporaryBackup=_(!1);settings=_([]);next(){let i=this.#e.destinationTargetUrl();if(!i)throw new Error("No target URL");this.creatingTemporaryBackup.set(!0);let e=this.encryptionForm.value?.passphrase??null,t=[];e?t.push({Name:"--passphrase",Value:e}):t.push({Name:"--no-encryption",Value:"true"}),this.settings().forEach(o=>{let n=o.Name?.trim();n&&n!=="--"&&(n.startsWith("--")||(n=`--${n}`),t.push({Name:n,Value:o.Value??""}))}),this.#t.postApiV1Backups({requestBody:{Backup:{TargetURL:i,Settings:t}},temporary:!0}).pipe(O(()=>this.creatingTemporaryBackup.set(!1))).subscribe({next:o=>{let n=o.ID;this.#o.navigate([`/restore-draft/${n}`])},error:o=>{console.error(o)}})}back(){this.#e.isFileRestore()?this.#o.navigate(["destination"],{relativeTo:this.#n.parent}):this.#e.exit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-restore-encryption"]],decls:16,vars:3,consts:()=>{let i;i=$localize`Enter backup passphrase if defined.`;let e;e=$localize`Password`;let t;t=$localize`Advanced options`;let o;o=$localize`${"\uFFFD#12\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_ICON: Back `;let n;return n=$localize`${"\uFFFD#15\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#15\uFFFD"}:CLOSE_TAG_SH_ICON: Continue `,[e,t,o,n,[3,"submit","formGroup"],["for","password"],["type","password","id","password","placeholder",i,"formControlName","passphrase"],["title",""],[3,"optionsChange","options","hasFreeTextSettings"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"]]},template:function(e,t){e&1&&(r(0,"form",4),f("submit",function(){return t.next()}),r(1,"sh-form-field")(2,"label",5),S(3,0),l(),c(4,"input",6),l(),r(5,"app-toggle-card"),L(6,7),S(7,1),$(),r(8,"app-options-list",8),te("optionsChange",function(n){return ee(t.settings,n)||(t.settings=n),n}),l()(),r(9,"div",9)(10,"button",10),f("click",function(){return t.back()}),m(11,2),c(12,"sh-icon"),g(),l(),r(13,"button",11),m(14,3),c(15,"sh-icon"),g(),l()()()),e&2&&(F("formGroup",t.encryptionForm),d(8),Z("options",t.settings),F("hasFreeTextSettings",!0))},dependencies:[Y,V,G,B,x,W,z,Ae,A,k,ne,Ue],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}"],changeDetection:0})};var Ze=()=>({standalone:!0});function et(a,i){a&1&&c(0,"sh-progress-bar",8)}function tt(a,i){if(a&1&&(q(0),ae(1,"bytes")),a&2){let e=D().$implicit;Me(" (",$e(1,1,e.FileSizes),") ")}}function it(a,i){a&1&&(r(0,"span",16),S(1,4),l())}function ot(a,i){if(a&1&&(r(0,"div",15),q(1),ae(2,"date"),y(3,tt,2,3),y(4,it,2,0,"span",16),l()),a&2){let e=i.$implicit;d(),ye(" ",e.Version,": ",De(2,4,e.Time,"medium")," "),d(2),b(e.FileSizes?3:-1),d(),b(e.IsFullBackup===!1?4:-1)}}function nt(a,i){a&1&&c(0,"sh-progress-bar",8)}function st(a,i){if(a&1&&(r(0,"app-file-tree",14)(1,"label",17),S(2,5),l(),c(3,"input",18),l()),a&2){let e=D(2);F("rootPaths",e.rootPaths())("initialNodes",e.initialNodes())("backupSettings",e.backupSettings())("multiSelect",!0)("showFiles",!0)}}function rt(a,i){if(a&1){let e=j();r(0,"sh-select",12),f("cleared",function(){h(e);let o=D();return C(o.abortLoading())}),r(1,"input",13),te("ngModelChange",function(o){h(e);let n=D();return ee(n.selectOption,o)||(n.selectOption=o),C(o)}),l(),Re(2,ot,5,7,"ng-template"),l(),y(3,nt,1,0,"sh-progress-bar",8),y(4,st,4,5,"app-file-tree",14)}if(a&2){let e=D();F("options",e.versionOptions())("isClearable",!1),d(),Z("ngModel",e.selectOption),F("ngModelOptions",Le(6,Ze)),d(2),b(e.isRepairing()||e.versionOptionsLoading()||e.loadingRootPath()?3:-1),d(),b(e.showFileTree()?4:-1)}}var ue=new X,Je=()=>ue.group({filesToRestore:ue.control(""),passphrase:ue.control(null)}),de=class a{#t=p(w);#e=p(P);#o=p(Ve);#n=p(oe);#i=p(N);#s=p(R);#l=p(ie);#a=null;#p=null;#r=_([]);selectFilesForm=this.#e.selectFilesForm;selectFilesFormSignal=this.#e.selectFilesFormSignal;selectOption=this.#e.selectOption;backupId=this.#e.backupId;versionOptionsLoading=this.#e.versionOptionsLoading;versionOptions=this.#e.versionOptions;isFileRestore=this.#e.isFileRestore;needsDatabaseRepair=le(()=>this.#e.backup()?.Backup?.IsTemporary??!0);showFileTree=_(!1);backupSettings=_(null);rootPaths=_([]);initialNodes=_([]);loadingRootPath=_(!1);isRepairing=le(()=>this.#r().length>0);loadedVersions=_({});loadingEffect=v(()=>{if(this.versionOptionsLoading())return;let e=this.versionOptions();if(e&&e?.length>0){let t=e[0].Version;this.selectOption.set(t.toString())}});backupSettingsEffect=v(()=>{let i=this.backupId(),e=this.selectOption(),t=this.isRepairing(),o=this.loadedVersions();if(!e||!i)return;let s=this.versionOptions()?.find(J=>J.Version===parseInt(e))?.Time??null;if(!s)return;let u=`${i}+${s}`,E=o[u];if(this.needsDatabaseRepair()&&(!E||t))return;let I={id:i+"",time:s};this.backupSettings.set(I),this.getRootPath(I)});repairEffect=v(()=>{if(!this.needsDatabaseRepair())return;let i=this.selectOption(),e=this.versionOptions();if(i){let t=e.find(s=>s.Version===parseInt(i));if(t===void 0)return;let o=this.backupId(),n=`${o}+${t.Time}`;if(this.#p===n||(this.#p=n,this.#r().includes(n)))return;this.#r.update(s=>[...s,n]),this.#t.postApiV1BackupByIdRepairupdate({id:o,requestBody:{only_paths:!0,time:t.Time}}).pipe(Q(this.abortLoading$),O(()=>{this.#p=null})).subscribe(s=>{let u=s.ID;this.#o.waitForTaskToComplete(u).pipe(H(1)).subscribe(()=>{this.#r.update(E=>E.filter(I=>I!==n)),this.loadedVersions.update(E=>(E[n]=!0,E))})})}});getRootPath(i){let e={id:i.id+"",time:i.time,prefixOnly:!0,folderContents:!1},t=i.id+"";this.isRepairing()||this.#a===t||(this.#a=t,this.loadingRootPath.set(!0),this.showFileTree.set(!1),this.#n.hasV2ListOperations()?this.#t.postApiV2BackupListFolder({requestBody:{BackupId:i.id,Time:i.time,Paths:null,PageSize:0,Page:0}}).pipe(Q(this.abortLoading$),O(()=>{this.showFileTree.set(!0),this.loadingRootPath.set(!1),this.#a=null})).subscribe({next:o=>{let n=(o.Data??[]).map(s=>s.Path??"");n.length>0?(this.initialNodes.set([]),this.rootPaths.set(n)):(this.initialNodes.set([]),this.rootPaths.set(["/"]))}}):this.#t.getApiV1BackupByIdFiles(e).pipe(Q(this.abortLoading$),O(()=>{this.showFileTree.set(!0),this.loadingRootPath.set(!1)})).subscribe({next:o=>{let n=o.Files.map(s=>s.Path??"");n.length>0?(this.initialNodes.set([]),this.rootPaths.set(n)):(this.initialNodes.set([]),this.rootPaths.set(["/"]))}}))}abortLoading$=new Se;abortLoading(){this.showFileTree.set(!1),this.loadingRootPath.set(!1),this.abortLoading$.next(!0)}displayFn(){let i=this.versionOptions();return e=>{if(!e)return"";let t=i?.find(o=>typeof o.Version=="number"&&o.Version.toString()===e);return t?`${t.Version}: ${this.#l.transform(t.Time,"medium")}`:""}}next(){this.#i.navigate(["options"],{relativeTo:this.#s.parent})}back(){this.#e.isFileRestore()?this.#i.navigate(["encryption"],{relativeTo:this.#s.parent}):this.#e.exit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-select-files"]],features:[be([ie])],decls:13,vars:3,consts:()=>{let i;i=$localize`Select files`;let e;e=$localize`${"\uFFFD#9\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#9\uFFFD"}:CLOSE_TAG_SH_ICON: ${"\uFFFD0\uFFFD"}:INTERPOLATION: `;let t;t=$localize`${"\uFFFD#12\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#12\uFFFD"}:CLOSE_TAG_SH_ICON: Continue `;let o;o=$localize`Select an option...`;let n;n=$localize`(partial)`;let s;return s=$localize`Path`,[["formRef",""],i,e,t,n,s,[3,"submit","formGroup"],[1,"title-30"],[1,"indeterminate","primary"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"],["value","Version",3,"cleared","options","isClearable"],["type","text","placeholder",o,3,"ngModelChange","ngModel","ngModelOptions"],[3,"rootPaths","initialNodes","backupSettings","multiSelect","showFiles"],[1,"custom-option"],[1,"partial"],["for","path"],["type","text","id","path","formControlName","filesToRestore"]]},template:function(e,t){if(e&1){let o=j();r(0,"form",6,0),f("submit",function(){return h(o),C(t.next())}),r(2,"h3",7),S(3,1),l(),y(4,et,1,0,"sh-progress-bar",8)(5,rt,5,7),r(6,"div",9)(7,"button",10),f("click",function(){return h(o),C(t.back())}),m(8,2),c(9,"sh-icon"),g(),l(),r(10,"button",11),m(11,3),c(12,"sh-icon"),g(),l()()()}e&2&&(F("formGroup",t.selectFilesForm),d(4),b(t.versionOptionsLoading()?4:5),d(5),Ne(t.isFileRestore()?"Back":"Exit"),Pe(8))},dependencies:[Ye,V,G,B,x,ze,Y,W,z,se,k,A,Ge,ke,ie,xe],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}.partial[_ngcontent-%COMP%]{color:var(--base-9);font-style:italic}"],changeDetection:0})};var P=class a{#t=p(N);#e=p(R);#o=p(oe);#n=p(ve);#i=p(w);backupId=_(null);backup=_(null);destinationTargetUrl=_(null);selectFilesForm=Je();optionsForm=Qe();encryptionForm=Ke();optionsFormSignal=pe(this.optionsForm.valueChanges);selectFilesFormSignal=pe(this.selectFilesForm.valueChanges);selectOption=_(null);versionOptionsLoading=_(!1);versionOptions=_([]);isSubmitting=_(!1);isFileRestore=_(!1);isFullWidthPage=_(!1);#s=_("");#l=_(null);#a=null;testSignal=this.#s.asReadonly();testErrorMessage=this.#l.asReadonly();#p=v(()=>{let i=this.destinationTargetUrl(),e=this.#s(),t=this.#a;this.#a=i,!(e==="testing"||t===null||t===i)&&(this.#s.set(""),this.#l.set(null))});init(i,e=!1){this.backupId.set(i),this.isFileRestore.set(e),e&&this.#t.navigate(["/restore-from-files/destination"]),e||this.getBackup(!0)}setTestState(i,e){this.#s.set(i),this.#l.set(e??null)}updateTargetUrl(i){this.destinationTargetUrl.set(i)}submit(){this.isSubmitting.set(!0);let i=this.backupId();this.backup()?.Backup?.IsTemporary??!1?this.#i.postApiV1BackupByIdCopytotemp({id:this.backupId()??""}).subscribe({next:t=>{this.#r(t.ID??"")},error:t=>this.showErrorDialog($localize`An error occurred while copying the backup to a temporary location: ${t.message}`)}):this.#r(i??"")}showErrorDialog(i){this.#n.open(K,{data:{title:$localize`Error occured`,message:i,confirmText:$localize`OK`,cancelText:void 0},closed:e=>{}})}#r(i){let e=this.optionsForm.value,t=this.selectFilesForm.value,o=this.selectOption(),n=this.versionOptions()?.find(s=>s.Version===(o&&parseInt(o)));this.#i.postApiV1BackupByIdRestore({id:i??"",requestBody:{paths:t.filesToRestore?.split("\0").map(s=>s.endsWith("/")||s.endsWith("\\")?`${s}*`:s)??[],passphrase:t.passphrase??null,time:n?.Time,restore_path:e.restoreFromPath,overwrite:e.handleExisting==="overwrite",permissions:e.permissions,skip_metadata:!e.includeMetadata}}).pipe(O(()=>this.isSubmitting.set(!1))).subscribe({next:s=>{this.#t.navigate([`./${s.ID}`,"progress"],{relativeTo:this.#e})},error:s=>{console.error("restore error",s)}})}exit(){this.#n.open(K,{data:{title:$localize`Confirm exit?`,message:$localize`Are you sure you want to exit?`,confirmText:$localize`Yes`,cancelText:$localize`Cancel`},closed:i=>{i&&(this.#_(),this.#t.navigate(["/"]))}})}getVersionOptions(){this.versionOptions()}loadFilesetsWithRetryv2(i,e=2){return this.#i.postApiV2BackupListFilesets({requestBody:{BackupId:i}}).pipe(Oe(t=>{let o=t?.error?.body?.StatusCode==="EncryptedStorageNoPassphrase",n=t?.error?.body?.StatusCode==="FolderMissing",s=t?.error?.body?.StatusCode==="EmptyRemoteFolder";return o||n||s||e===0?Te(()=>t):Ee(1e3).pipe(he(()=>this.loadFilesetsWithRetryv2(i,e-1)))}))}getBackup(i=!1){let e=this.backupId();this.versionOptionsLoading.set(!0),this.#o.hasV2ListOperations()?re([this.#i.getApiV1BackupById({id:e}),this.loadFilesetsWithRetryv2(e)]).pipe(H(1),O(()=>this.versionOptionsLoading.set(!1))).subscribe({next:([t,o])=>{if(o.Error)throw new Error(o.Error);if(!(t.Backup?.IsTemporary??!0)&&t?.Backup?.DBPathExists===!1){this.#n.open(K,{data:{title:$localize`Missing Local Database`,message:$localize`The local database for this backup is missing. Please repair or recreate the local database before restoring.`,confirmText:$localize`OK`,cancelText:void 0},closed:s=>{this.#t.navigate(["/backup",e,"database"])}});return}this.versionOptions.set((o.Data??[]).map(s=>({Version:s.Version??-1,IsFullBackup:s.IsFullBackup??void 0,Time:s.Time??"<missing>",FileCount:s.FileCount??void 0,FileSizes:s.FileSizes??void 0}))),this.backup.set(t)},error:t=>{let o=t?.error?.body?.StatusCode==="EncryptedStorageNoPassphrase",n=t?.error?.body?.StatusCode==="FolderMissing",s=t?.error?.body?.StatusCode==="EmptyRemoteFolder",u=$localize`An error occurred while loading the backup filesets: ${t.message}`;o&&(u=$localize`The remote storage is encrypted. Please enter the passphrase to access the backup.`),n&&(u=$localize`The backup storage folder was not found.`),s&&(u=$localize`The backup storage folder does not contain any filesets.`),this.#n.open(K,{data:{title:$localize`Failed to load backup filesets`,message:u,confirmText:$localize`OK`,cancelText:void 0},closed:E=>{this.#t.navigate([o?"/restore-from-files/encryption":"/restore-from-files/destination"])}})}}):re([this.#i.getApiV1BackupById({id:e}),this.#i.getApiV1BackupByIdFilesets({id:e}).pipe(fe(3))]).pipe(H(1),O(()=>this.versionOptionsLoading.set(!1))).subscribe({next:([t,o])=>{this.versionOptions.set(o.map(n=>({Version:n.Version??-1,IsFullBackup:(n.IsFullBackup??1)==1,Time:n.Time??"<missing>",FileCount:n.FileCount??void 0,FileSizes:n.FileSizes??void 0}))),this.backup.set(t)}})}#_(){this.selectFilesForm.reset(),this.optionsForm.reset()}static \u0275fac=function(e){return new(e||a)};static \u0275prov=Ce({token:a,factory:a.\u0275fac,providedIn:"root"})};var U=new X,Qe=()=>U.group({restoreFrom:U.control("orignal"),restoreFromPath:U.control(""),handleExisting:U.control("overwrite"),permissions:U.control(!1),includeMetadata:U.control(!0)}),me=class a{#t=p(P);#e=p(N);#o=p(R);optionsForm=this.#t.optionsForm;optionsFormSignal=this.#t.optionsFormSignal;isSubmitting=this.#t.isSubmitting;goBack(){this.#e.navigate(["select-files"],{relativeTo:this.#o.parent})}submit(){this.#t.submit()}static \u0275fac=function(e){return new(e||a)};static \u0275cmp=M({type:a,selectors:[["app-advanced-options-settings"]],decls:42,vars:7,consts:()=>{let i;i=$localize`Restore options`;let e;e=$localize`Where do you want to restore files to?`;let t;t=$localize` Original location ${"\uFFFD#9\uFFFD\uFFFD/#9\uFFFD"}:TAG_INPUT:`;let o;o=$localize` Pick location ${"\uFFFD#12\uFFFD\uFFFD/#12\uFFFD"}:TAG_INPUT:`;let n;n=$localize`How do you want to handle existing files?`;let s;s=$localize` Overwrite ${"\uFFFD#22\uFFFD\uFFFD/#22\uFFFD"}:TAG_INPUT:`;let u;u=$localize` Save different versions with timestamp in file name ${"\uFFFD#25\uFFFD\uFFFD/#25\uFFFD"}:TAG_INPUT:`;let E;E=$localize`Metadata settings`;let I;I=$localize` Restore file metadata ${"\uFFFD#31\uFFFD\uFFFD/#31\uFFFD"}:TAG_INPUT:`;let J;J=$localize` Restore read/write permissions ${"\uFFFD#34\uFFFD\uFFFD/#34\uFFFD"}:TAG_INPUT:`;let ge;ge=$localize`${"\uFFFD#38\uFFFD"}:START_TAG_SH_ICON:arrow-left${"\uFFFD/#38\uFFFD"}:CLOSE_TAG_SH_ICON: Go back `;let Fe;return Fe=$localize`${"\uFFFD#41\uFFFD"}:START_TAG_SH_ICON:arrow-right${"\uFFFD/#41\uFFFD"}:CLOSE_TAG_SH_ICON: Submit `,[["formRef",""],i,e,t,o,n,s,u,E,I,J,ge,Fe,[3,"submit","formGroup"],[1,"title-30"],[3,"disallowToggle"],["title",""],[1,"raised","primary"],["type","radio","name","restoreFrom","value","orignal","formControlName","restoreFrom"],["type","radio","name","restoreFrom","value","pickLocation","formControlName","restoreFrom"],[3,"disabled","enableCreateFolder"],["for","path"],["type","text","id","path","formControlName","restoreFromPath"],["type","radio","name","handleExisting","value","overwrite","formControlName","handleExisting"],["type","radio","name","handleExisting","value","saveTimestamp","formControlName","handleExisting"],[1,"primary","raised"],["type","checkbox","formControlName","includeMetadata"],["type","checkbox","formControlName","permissions"],[1,"form-actions"],["shButton","","type","button",3,"click"],["shButton","","type","submit",1,"raised","primary"]]},template:function(e,t){if(e&1){let o=j();r(0,"form",13,0),f("submit",function(){return h(o),C(t.submit())}),r(2,"h3",14),S(3,1),l(),r(4,"app-toggle-card",15),L(5,16),S(6,2),$(),r(7,"sh-radio",17),m(8,3),c(9,"input",18),g(),l(),r(10,"sh-radio",17),m(11,4),c(12,"input",19),g(),l(),r(13,"app-file-tree",20)(14,"label",21),q(15,"Path"),l(),c(16,"input",22),l()(),r(17,"app-toggle-card",15),L(18,16),S(19,5),$(),r(20,"sh-radio",17),m(21,6),c(22,"input",23),g(),l(),r(23,"sh-radio",17),m(24,7),c(25,"input",24),g(),l()(),r(26,"app-toggle-card"),L(27,16),S(28,8),$(),r(29,"sh-toggle",25),m(30,9),c(31,"input",26),g(),l(),r(32,"sh-toggle",25),m(33,10),c(34,"input",27),g(),l()(),r(35,"div",28)(36,"button",29),f("click",function(){return h(o),C(t.goBack())}),m(37,11),c(38,"sh-icon"),g(),l(),r(39,"button",30),m(40,12),c(41,"sh-icon"),g(),l()()()}if(e&2){let o;F("formGroup",t.optionsForm),d(4),F("disallowToggle",!0),d(9),F("disabled",((o=t.optionsFormSignal())==null?null:o.restoreFrom)!=="pickLocation")("enableCreateFolder",!0),d(4),F("disallowToggle",!0),d(22),Ie("loader",t.isSubmitting())}},dependencies:[Y,V,G,We,Xe,B,x,W,z,ne,se,Be,we,k,A],styles:["[_nghost-%COMP%]{display:block}form[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:1.5rem}.form-actions[_ngcontent-%COMP%]{display:flex;justify-content:space-between}"],changeDetection:0})};export{Qe as a,me as b,Ke as c,_e as d,Je as e,de as f,P as g};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as w,g as U,x as z}from"./chunk-
|
|
1
|
+
import{a as w,g as U,x as z}from"./chunk-H7K35UUX.js";import{h as X}from"./chunk-NOPMCS2Z.js";import{la as y}from"./chunk-RUXCS4ZK.js";import"./chunk-FPPZ4BUR.js";import{Ab as i,Bb as a,Cb as G,Dc as x,Fc as A,H as b,Jb as M,Pc as k,Qb as $,Ra as l,Rb as B,Sb as _,Wb as D,Yb as g,_ as N,bb as h,ea as S,fa as u,hc as F,ic as v,lc as d,mc as m,oa as r,ub as O,vb as f,wb as T,xb as E,yb as C,zb as L}from"./chunk-HNWRQABR.js";import{a as R,b as P}from"./chunk-EUDKD2JW.js";function V(o,e){if(o&1&&(i(0,"li"),d(1),a()),o&2){let t=e.$implicit;l(),m(t)}}function K(o,e){if(o&1&&(i(0,"tr")(1,"td",12)(2,"code")(3,"ol",13),E(4,V,2,1,"li",null,T),a()()()()),o&2){let t=g().$implicit,n=g();l(),F("grid-column","1 / -1")("height","auto"),l(3),C(n.breakIntoLines(t.Exception))}}function j(o,e){if(o&1){let t=M();i(0,"tr",9),D("click",function(){let s=S(t).$index,c=g();return u(c.toggleRow(s))}),i(1,"td"),d(2),x(3,"date"),a(),i(4,"td",10),d(5),a(),i(6,"td"),d(7),a(),i(8,"td")(9,"button",11)(10,"sh-icon"),d(11,"caret-down"),a()()()(),O(12,K,6,4,"tr")}if(o&2){let t=e.$implicit,n=e.$index,s=g();l(2),m(t.Timestamp?A(3,6,t.Timestamp*1e3,"medium"):"-"),l(3),m(t.BackupID>=0?t.BackupID:"-"),l(2),m(t.Message),l(2),v("rotated-icon",n===s.openRowIndex()),l(3),f(n===s.openRowIndex()?12:-1)}}function q(o,e){o&1&&_(0,4,1)}function H(o,e){o&1&&_(0,4,2)}var J=["BackupID","Timestamp","Message","actions"],I=class o{#e=N(X);displayedColumns=r(J);openRowIndex=r(null);noMoreItems=r(!1);logsIsLoading=r(!1);logs=r([]);pagination=r({offsetTime:void 0,pagesize:10});paginationEffect=k(()=>{let e=this.pagination();this.getLogs()});ngOnInit(){this.getLogs()}getLogs(){this.logsIsLoading.set(!0);let e=this.pagination();this.#e.getApiV1LogdataLog({pagesize:e.pagesize,offset:e.offsetTime}).pipe(b(()=>this.logsIsLoading.set(!1))).subscribe({next:t=>{t.length===0&&this.noMoreItems.set(!0),this.logs.update(n=>[...n,...t])}})}toggleRow(e){this.openRowIndex.set(e===this.openRowIndex()?null:e)}breakIntoLines(e){return e?e.split(`
|
|
2
2
|
`):[]}loadMore(){let e=this.logs().at(-1)?.Timestamp;this.pagination.update(t=>P(R({},t),{offsetTime:e}))}static \u0275fac=function(t){return new(t||o)};static \u0275cmp=h({type:o,selectors:[["app-logs-stored"]],decls:18,vars:6,consts:()=>{let e;e=$localize`Timestamp`;let t;t=$localize`Backup ID`;let n;n=$localize`Message`;let s;s=$localize`No data available`;let c;return c=$localize`${"\uFFFD*16:1\uFFFD"}:START_BLOCK_IF: No more items ${"\uFFFD/*16:1\uFFFD"}:CLOSE_BLOCK_IF:${"\uFFFD*17:2\uFFFD"}:START_BLOCK_ELSE: Load more ${"\uFFFD/*17:2\uFFFD"}:CLOSE_BLOCK_ELSE:`,[e,t,n,s,c,[1,"type-b",3,"data","loading"],["table-header",""],["table-no-rows",""],["shButton","",1,"primary","raised",3,"click","disabled"],[3,"click"],[1,"id"],["shButton","","type","button",1,"outlined","small"],[2,"white-space","pre-wrap"],[1,"line-numbers-ol"]]},template:function(t,n){if(t&1){let s=M();i(0,"sh-table",5)(1,"tr",6)(2,"th"),_(3,0),a(),i(4,"th"),_(5,1),a(),i(6,"th"),_(7,2),a(),G(8,"th"),a(),E(9,j,13,9,null,null,T),i(11,"div",7),_(12,3),a()(),i(13,"footer")(14,"button",8),D("click",function(){return S(s),u(n.loadMore())}),$(15,4),O(16,q,1,0)(17,H,1,0),B(),a()()}if(t&2){let s=n.logs();F("grid-template-columns","1fr 1fr 1fr auto"),L("data",s)("loading",n.logsIsLoading()),l(9),C(s),l(5),L("disabled",n.logsIsLoading()||n.noMoreItems()),l(2),f(n.noMoreItems()?16:17)}},dependencies:[z,w,U,y],styles:["[_nghost-%COMP%]{display:block}h3[_ngcontent-%COMP%]{font:var(--title-30);margin:0 0 1.25rem}sh-table[_ngcontent-%COMP%]{--table-columns: auto auto 1fr auto}sh-table[_ngcontent-%COMP%] td.id[_ngcontent-%COMP%]{justify-content:center}sh-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:has(code){padding:1rem .75rem;overflow:hidden}sh-table[_ngcontent-%COMP%] td[_ngcontent-%COMP%]:has(code) code[_ngcontent-%COMP%]{background:color-mix(in srgb,var(--base-8),#000 70%);color:#fff;padding:2.5rem 2.5rem 2.5rem 1.5rem;border-radius:var(--shape-3);overflow:auto;white-space:pre}footer[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:center;padding:2rem 0 0}"],changeDetection:0})};export{I as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as u}from"./chunk-
|
|
1
|
+
import{a as u}from"./chunk-6LTGTS6B.js";import{h as m}from"./chunk-NOPMCS2Z.js";import{B as d,F as o,H as p,Pc as l,R as h,V as N,_ as r,n as c,oa as s,x as f}from"./chunk-HNWRQABR.js";var v=class a{#e=r(m);#o=r(u);serverState=this.#o.serverState;serverStateEffect=l(()=>{let t=this.#o.serverState();t?.LastNotificationUpdateID&&this.updateLastNotificationEventId(t?.LastNotificationUpdateID)});#s=-1;#a=s(!1);#t=s([]);#i=s([]);notifications=this.#t.asReadonly();init(){this.notifications().length===0&&this.getNotifications()}updateLastNotificationEventId(t){this.#s!==t&&(this.#s=t,this.getNotifications())}getNotifications(){this.#a.set(!0),this.#e.getApiV1Notifications().pipe(o(1),h(t=>this.#t.set(t)),p(()=>this.#a.set(!1))).subscribe()}getNofication(t){this.#e.getApiV1NotificationById({id:t}).pipe(o(1)).subscribe()}deleteNotification(t){let i=this.#t(),e=i[t];this.#i.set(i),i.splice(t,1),this.#t.set(i),this.#e.deleteApiV1NotificationById({id:e.ID}).pipe(o(1)).subscribe({error:()=>{this.#t.set(this.#i()),this.#i.set([])}})}deleteAllNotifications(){let t=this.#t();this.#i.set(t),this.#t.set([]);let i=t.map(e=>this.#e.deleteApiV1NotificationById({id:e.ID}).pipe(d(()=>c(e))));f(i).pipe(o(1)).subscribe({next:e=>{let b=e.filter(n=>n!=null&&"ID"in n);this.#t.set(b),this.#i.set([])},error:()=>{this.#t.set(this.#i()),this.#i.set([])}})}static \u0275fac=function(i){return new(i||a)};static \u0275prov=N({token:a,factory:a.\u0275fac,providedIn:"root"})};export{v as a};
|