@@ -47,9 +47,6 @@ import {
47
47
CheckPermissions ,
48
48
request ,
49
49
} from '@strapi/helper-plugin'
50
- import { generateOptions } from '@strapi/plugin-i18n/admin/src/components/CMEditViewInjectedComponents/CMEditViewCopyLocale/utils'
51
- import useContentTypePermissions from '@strapi/plugin-i18n/admin/src/hooks/useContentTypePermissions'
52
- import selectI18NLocales from '@strapi/plugin-i18n/admin/src/selectors/selectI18nLocales'
53
50
import _ from 'lodash'
54
51
import { getTrad } from '../../utils'
55
52
import permissions from '../../permissions'
@@ -73,9 +70,12 @@ const CenteredTypography = styled(Typography)`
73
70
74
71
const CMEditViewTranslateLocale = ( ) => {
75
72
const [ { query } ] = useQueryParams ( )
76
- const locales = useSelector ( selectI18NLocales )
73
+ const locales = useSelector ( ( state ) => state . i18n_locales . locales )
77
74
const { layout, modifiedData, slug } = useCMEditViewDataManager ( )
78
- const { readPermissions } = useContentTypePermissions ( slug )
75
+ const readPermissions =
76
+ ( useSelector (
77
+ ( state ) => state . rbacProvider . collectionTypesRelatedPermissions
78
+ ) [ slug ] || [ ] ) [ 'plugin::content-manager.explorer.read' ] || [ ]
79
79
80
80
const defaultLocale = locales . find ( ( loc ) => loc . isDefault )
81
81
const currentLocale = get ( query , 'plugins.i18n.locale' , defaultLocale . code )
@@ -90,6 +90,8 @@ const CMEditViewTranslateLocale = () => {
90
90
return null
91
91
}
92
92
93
+ console . log ( readPermissions )
94
+
93
95
return (
94
96
< CheckPermissions permissions = { permissions . translate } >
95
97
< Content
@@ -113,12 +115,22 @@ const Content = ({
113
115
const { allLayoutData, initialData, slug, onChange } =
114
116
useCMEditViewDataManager ( )
115
117
116
- const options = generateOptions (
117
- appLocales ,
118
- currentLocale ,
119
- localizations ,
120
- readPermissions
121
- )
118
+ const options = appLocales
119
+ . filter ( ( { code } ) => {
120
+ return (
121
+ code !== currentLocale &&
122
+ localizations . map ( ( { locale } ) => locale ) . includes ( code ) &&
123
+ readPermissions . some ( ( { properties } ) =>
124
+ get ( properties , 'locales' , [ ] ) . includes ( code )
125
+ )
126
+ )
127
+ } )
128
+ . map ( ( { name, code } ) => {
129
+ return {
130
+ label : name ,
131
+ value : localizations . find ( ( { locale } ) => code === locale ) . id ,
132
+ }
133
+ } )
122
134
123
135
const toggleNotification = useNotification ( )
124
136
const { formatMessage } = useIntl ( )
0 commit comments