PluginProbe
Presto Player / 4.4.0
Presto Player v4.4.0
4.5.0 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.4 4.2.3 4.2.2 4.2.0 4.2.1 trunk 1.10.0 1.10.1 1.10.2 1.11.0 1.12.0 1.13.0 1.14.0 1.14.1 1.5.10 1.5.11 1.5.12 1.5.13 All 126 releases
presto-player / src / admin / dashboard / hooks / useMediaLibrary.js
useMediaLibrary.js
65 lines 1.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 import { __ } from '@wordpress/i18n';
2
3 export const useMediaLibrary = ( updateCallback ) => {
4 const openMediaLibrary = ( fieldName ) => ( e ) => {
5 e.preventDefault();
6
7 const frame = wp.media( {
8 title: __( 'Select Image', 'presto-player' ),
9 button: {
10 text: __( 'Set Image', 'presto-player' ),
11 },
12 multiple: false,
13 library: {
14 type: 'image',
15 },
16 } );
17
18 frame.imageWasSelected = false;
19
20 frame.on( 'select', () => {
21 const attachment = frame
22 .state()
23 .get( 'selection' )
24 .first()
25 .toJSON();
26
27 const fileUrl = attachment.url;
28 frame.imageWasSelected = true;
29 updateCallback( { [ fieldName ]: fileUrl } );
30 } );
31
32 frame.open();
33 };
34
35 const getFilename = ( fileURL, maxLength = 30 ) => {
36 if ( ! fileURL ) {
37 return '';
38 }
39
40 try {
41 const url = new URL( fileURL );
42 const fullName = url.pathname.split( '/' ).pop();
43
44 if ( ! fullName ) {
45 return '';
46 }
47
48 if ( fullName.length <= maxLength ) {
49 return fullName;
50 }
51
52 const extIndex = fullName.lastIndexOf( '.' );
53 const name = fullName.substring( 0, extIndex );
54 const ext = fullName.substring( extIndex );
55
56 const truncated = name.substring( 0, maxLength - ext.length - 3 );
57 return `${ truncated }...${ ext }`;
58 } catch ( e ) {
59 return fileURL;
60 }
61 };
62
63 return { openMediaLibrary, getFilename };
64 };
65