@@ -33,6 +33,11 @@ import { getDefaultWidgetsShape } from '../shapes/widgets';
3333import { IMetadata } from '../types/metadata' ;
3434import { getDefaultMetadataShape } from '../shapes/metadata' ;
3535import { updateMetadata } from './metadata' ;
36+ import { EActivityType } from '../types/activity' ;
37+ import { addActivityItems } from './activity' ;
38+ import { updateBlocktank } from './blocktank' ;
39+ import { IBlocktank } from '../types/blocktank' ;
40+ import { IActivity } from '../types/activity' ;
3641
3742const dispatch = getDispatch ( ) ;
3843
@@ -396,6 +401,85 @@ export const performMetadataRestore = async ({
396401 return ok ( { backupExists : true } ) ;
397402} ;
398403
404+ export const performLdkActivityRestore = async ( {
405+ slashtag,
406+ selectedNetwork,
407+ } : {
408+ slashtag : Slashtag ;
409+ selectedNetwork ?: TAvailableNetworks ;
410+ } ) : Promise < Result < { backupExists : boolean } > > => {
411+ if ( ! selectedNetwork ) {
412+ selectedNetwork = getSelectedNetwork ( ) ;
413+ }
414+
415+ const backupRes = await getBackup < IActivity [ 'items' ] > ( {
416+ slashtag,
417+ backupCategory : EBackupCategories . ldkActivity ,
418+ selectedNetwork,
419+ } ) ;
420+ if ( backupRes . isErr ( ) ) {
421+ return err ( backupRes . error . message ) ;
422+ }
423+
424+ const backup = backupRes . value ;
425+
426+ if ( ! backup ) {
427+ return ok ( { backupExists : false } ) ;
428+ }
429+
430+ if (
431+ ! (
432+ Array . isArray ( backup ) &&
433+ backup . every ( ( i ) => i . activityType === EActivityType . lightning )
434+ )
435+ ) {
436+ return ok ( { backupExists : false } ) ;
437+ }
438+
439+ addActivityItems ( backup ) ;
440+ updateBackup ( { remoteLdkActivityBackupSynced : true } ) ;
441+
442+ // Restore success
443+ return ok ( { backupExists : true } ) ;
444+ } ;
445+
446+ export const performBlocktankRestore = async ( {
447+ slashtag,
448+ selectedNetwork,
449+ } : {
450+ slashtag : Slashtag ;
451+ selectedNetwork ?: TAvailableNetworks ;
452+ } ) : Promise < Result < { backupExists : boolean } > > => {
453+ if ( ! selectedNetwork ) {
454+ selectedNetwork = getSelectedNetwork ( ) ;
455+ }
456+
457+ const backupRes = await getBackup < Partial < IBlocktank > > ( {
458+ slashtag,
459+ backupCategory : EBackupCategories . blocktank ,
460+ selectedNetwork,
461+ } ) ;
462+ if ( backupRes . isErr ( ) ) {
463+ return err ( backupRes . error . message ) ;
464+ }
465+
466+ const backup = backupRes . value ;
467+
468+ if ( ! backup ) {
469+ return ok ( { backupExists : false } ) ;
470+ }
471+
472+ if ( ! ( 'orders' in backup && 'paidOrders' in backup ) ) {
473+ return ok ( { backupExists : false } ) ;
474+ }
475+
476+ updateBlocktank ( backup ) ;
477+ updateBackup ( { remoteLdkActivityBackupSynced : true } ) ;
478+
479+ // Restore success
480+ return ok ( { backupExists : true } ) ;
481+ } ;
482+
399483export const performFullRestoreFromLatestBackup = async (
400484 slashtag : Slashtag ,
401485) : Promise < Result < { backupExists : boolean } > > => {
@@ -430,7 +514,25 @@ export const performFullRestoreFromLatestBackup = async (
430514 } ) ;
431515 if ( metadataBackupRes . isErr ( ) ) {
432516 //Since this backup feature is not critical and mostly for user convenience there's no reason to throw an error here.
433- console . log ( 'Error backing up widgets' , metadataBackupRes . error . message ) ;
517+ console . log ( 'Error backing up metadata' , metadataBackupRes . error . message ) ;
518+ }
519+
520+ const ldkActivityRes = await performLdkActivityRestore ( {
521+ slashtag,
522+ selectedNetwork,
523+ } ) ;
524+ if ( ldkActivityRes . isErr ( ) ) {
525+ //Since this backup feature is not critical and mostly for user convenience there's no reason to throw an error here.
526+ console . log ( 'Error backing up ldkActivity' , ldkActivityRes . error . message ) ;
527+ }
528+
529+ const btBackupRes = await performBlocktankRestore ( {
530+ slashtag,
531+ selectedNetwork,
532+ } ) ;
533+ if ( btBackupRes . isErr ( ) ) {
534+ //Since this backup feature is not critical and mostly for user convenience there's no reason to throw an error here.
535+ console . log ( 'Error backing up blocktank' , btBackupRes . error . message ) ;
434536 }
435537
436538 // Restore success
0 commit comments