1
- import { Card } from '@automattic/components' ;
1
+ import page from '@automattic/calypso-router' ;
2
+ import { Gridicon , Card } from '@automattic/components' ;
2
3
import { Purchases } from '@automattic/data-stores' ;
3
4
import { DataViews , View , filterSortAndPaginate } from '@wordpress/dataviews' ;
4
- import { LocalizeProps } from 'i18n-calypso' ;
5
+ import { LocalizeProps , useTranslate } from 'i18n-calypso' ;
5
6
import { useMemo , useState } from 'react' ;
6
7
import { MembershipSubscription } from 'calypso/lib/purchases/types' ;
7
8
import {
@@ -27,13 +28,31 @@ export function PurchasesDataViews( props: {
27
28
translate : LocalizeProps [ 'translate' ] ;
28
29
} ) {
29
30
const { purchases } = props ;
31
+ const translate = useTranslate ( ) ;
30
32
const [ currentView , setView ] = useState ( purchasesDataView ) ;
31
33
const purchasesDataFields = usePurchasesFieldDefinitions ( purchasesDataView . fields ) ;
32
34
33
35
const { data : adjustedPurchases , paginationInfo } = useMemo ( ( ) => {
34
36
return filterSortAndPaginate ( purchases , currentView , purchasesDataFields ) ;
35
37
} , [ purchases , currentView , purchasesDataFields ] ) ;
36
38
39
+ const actions = useMemo (
40
+ ( ) => [
41
+ {
42
+ id : 'manage-purchase' ,
43
+ label : translate ( 'Manage this purchase' , { textOnly : true } ) ,
44
+ isPrimary : true ,
45
+ icon : < Gridicon icon = "chevron-right" /> ,
46
+ callback : ( items : Purchases . Purchase [ ] ) => {
47
+ const siteUrl = items [ 0 ] . domain ;
48
+ const subscriptionId = items [ 0 ] . id ;
49
+ page ( `/me/purchases/${ siteUrl } /${ subscriptionId } ` ) ;
50
+ } ,
51
+ } ,
52
+ ] ,
53
+ [ translate ]
54
+ ) ;
55
+
37
56
const getItemId = ( item : Purchases . Purchase ) => {
38
57
return item . id . toString ( ) ;
39
58
} ;
@@ -45,7 +64,7 @@ export function PurchasesDataViews( props: {
45
64
view = { currentView }
46
65
onChangeView = { setView }
47
66
defaultLayouts = { { table : { } } }
48
- actions = { undefined }
67
+ actions = { actions }
49
68
getItemId = { getItemId }
50
69
paginationInfo = { paginationInfo }
51
70
/>
0 commit comments