1- import { siteBySlugQuery , siteSettingsQuery } from '@automattic/api-queries' ;
2- import { DateRangePicker } from '@automattic/date-range-picker' ;
1+ import { siteBySlugQuery } from '@automattic/api-queries' ;
32import { useSuspenseQuery } from '@tanstack/react-query' ;
4- import { useParams , useRouter } from '@tanstack/react-router' ;
5- import { __ } from '@wordpress/i18n' ;
6- import { useCallback } from 'react' ;
7- import Breadcrumbs from '../../../app/breadcrumbs' ;
8- import { useDateRange } from '../../../app/hooks/use-date-range' ;
9- import { useLocale } from '../../../app/locale' ;
3+ import { useParams } from '@tanstack/react-router' ;
104import {
115 agencySiteRoute ,
126 agencySiteBackupsRoute ,
@@ -15,145 +9,33 @@ import {
159 agencySiteBackupRestoreRoute ,
1610 agencySiteBackupDownloadRoute ,
1711} from '../../../app/router/agency' ;
18- import { PageHeader } from '../../../components/page-header' ;
19- import PageLayout from '../../../components/page-layout' ;
20- import { BackupNotices } from '../../../sites/backups/backup-notices' ;
21- import { BackupNowButton } from '../../../sites/backups/backup-now-button' ;
22- import { BackupsBrowser , useIsBackupsSmallViewport } from '../../../sites/backups/backups-browser' ;
23- import { useBackupState } from '../../../sites/backups/use-backup-state' ;
24- import type { ActivityLogEntry } from '@automattic/api-core' ;
12+ import { BackupsPage } from '../../../sites/backups/backups-page' ;
13+ import { useBackupsNavigation } from '../../../sites/backups/use-backups-navigation' ;
2514
2615export default function AgencySiteBackupsListPage ( ) {
2716 const { siteSlug } = agencySiteRoute . useParams ( ) ;
28- const router = useRouter ( ) ;
29- const locale = useLocale ( ) ;
17+ const { data : site } = useSuspenseQuery ( siteBySlugQuery ( siteSlug ) ) ;
18+ const searchParams = agencySiteBackupsRoute . useSearch ( ) ;
3019
3120 const routeParams = useParams ( { strict : false , shouldThrow : false } ) as
3221 | { rewindId ?: string }
3322 | undefined ;
3423 const rewindId = routeParams ?. rewindId ;
35- const searchParams = agencySiteBackupsRoute . useSearch ( ) ;
36-
37- const { data : site } = useSuspenseQuery ( siteBySlugQuery ( siteSlug ) ) ;
3824
39- const { data : siteSettings } = useSuspenseQuery ( {
40- ... siteSettingsQuery ( site . ID ) ,
41- select : ( s ) => ( {
42- gmtOffset : Number ( s ?. gmt_offset ) || 0 ,
43- timezoneString : s ?. timezone_string || undefined ,
44- } ) ,
25+ const navigation = useBackupsNavigation ( {
26+ siteSlug ,
27+ indexRoute : agencySiteBackupsIndexRoute ,
28+ detailRoute : agencySiteBackupDetailRoute ,
29+ restoreRoute : agencySiteBackupRestoreRoute ,
30+ downloadRoute : agencySiteBackupDownloadRoute ,
4531 } ) ;
46- const { gmtOffset, timezoneString } = siteSettings ;
47-
48- const backupState = useBackupState ( site . ID ) ;
49-
50- const { dateRange, handleDateRangeChange } = useDateRange ( {
51- timezoneString,
52- gmtOffset,
53- defaultDays : 30 ,
54- } ) ;
55-
56- const navigateToBackup = useCallback (
57- ( selected : ActivityLogEntry | null ) => {
58- router . navigate (
59- selected
60- ? {
61- to : agencySiteBackupDetailRoute . fullPath ,
62- params : { siteSlug, rewindId : selected . rewind_id } ,
63- search : ( query : Record < string , string > ) => query ,
64- }
65- : {
66- to : agencySiteBackupsIndexRoute . fullPath ,
67- params : { siteSlug } ,
68- search : ( query : Record < string , string > ) => query ,
69- }
70- ) ;
71- } ,
72- [ router , siteSlug ]
73- ) ;
74-
75- const handleRequestRestore = ( selected : ActivityLogEntry ) => {
76- router . navigate ( {
77- to : agencySiteBackupRestoreRoute . fullPath ,
78- params : { siteSlug, rewindId : selected . rewind_id } ,
79- } ) ;
80- } ;
81-
82- const handleRequestDownload = ( selected : ActivityLogEntry ) => {
83- router . navigate ( {
84- to : agencySiteBackupDownloadRoute . fullPath ,
85- params : { siteSlug, rewindId : selected . rewind_id } ,
86- } ) ;
87- } ;
88-
89- const handleGranularDownloadReady = ( selected : ActivityLogEntry , downloadId : number ) => {
90- router . navigate ( {
91- to : agencySiteBackupDownloadRoute . fullPath ,
92- params : { siteSlug, rewindId : selected . rewind_id } ,
93- search : { downloadId } ,
94- } ) ;
95- } ;
96-
97- const handleDateRangeChangeWrapper = ( next : { start : Date ; end : Date } ) => {
98- handleDateRangeChange ( next ) ;
99- navigateToBackup ( null ) ;
100- } ;
101-
102- const isMobileDetailsView = useIsBackupsSmallViewport ( ) && ! ! rewindId ;
103-
104- const actions = (
105- < >
106- { /* This div is required to fix a layout width issue when the DateRangePicker is placed together with the BackupNowButton. */ }
107- < div >
108- < DateRangePicker
109- start = { dateRange . start }
110- end = { dateRange . end }
111- gmtOffset = { gmtOffset }
112- timezoneString = { timezoneString }
113- locale = { locale }
114- defaultFallbackPreset = "last-30-days"
115- onChange = { handleDateRangeChangeWrapper }
116- />
117- </ div >
118- < BackupNowButton site = { site } backupState = { backupState } />
119- </ >
120- ) ;
12132
12233 return (
123- < PageLayout
124- header = {
125- < PageHeader
126- title = { isMobileDetailsView ? __ ( 'Backup details' ) : __ ( 'Backups' ) }
127- description = { __ (
128- 'Access and restore your site backups, powered by Jetpack VaultPress Backup.'
129- ) }
130- prefix = { isMobileDetailsView ? < Breadcrumbs length = { 2 } /> : undefined }
131- actions = { isMobileDetailsView ? undefined : actions }
132- />
133- }
134- notices = {
135- ! isMobileDetailsView && backupState . status !== 'idle' ? (
136- < BackupNotices
137- backupState = { backupState }
138- site = { site }
139- timezoneString = { timezoneString }
140- gmtOffset = { gmtOffset }
141- />
142- ) : undefined
143- }
144- >
145- < BackupsBrowser
146- site = { site }
147- rewindId = { rewindId }
148- dateRange = { dateRange }
149- timezoneString = { timezoneString }
150- gmtOffset = { gmtOffset }
151- searchParams = { searchParams }
152- onSelectBackup = { navigateToBackup }
153- onRequestRestore = { handleRequestRestore }
154- onRequestDownload = { handleRequestDownload }
155- onGranularDownloadReady = { handleGranularDownloadReady }
156- />
157- </ PageLayout >
34+ < BackupsPage
35+ site = { site }
36+ navigation = { navigation }
37+ rewindId = { rewindId }
38+ searchParams = { searchParams }
39+ />
15840 ) ;
15941}
0 commit comments