PluginProbe
BeyondWords – AI audio for publishers / 7.2.0
BeyondWords – AI audio for publishers v7.2.0
7.2.0 7.1.0 trunk 4.0.0 4.0.1 4.0.2 4.0.3 4.0.4 4.0.5 4.0.6 4.1.0 4.1.1 4.1.2 4.2.0 4.2.1 4.2.2 4.2.3 4.2.4 4.3.0 4.4.0 4.5.0 4.5.1 4.6.0 4.6.1 4.6.2 All 44 releases
← All changes | src/settings/store/index.js +8 -5 7.1.0 → 7.2.0 View file →
@@ -48,8 +48,11 @@
48 48 // Private to this store — no registered `actions`; only resolvers dispatch.
49 49 const set = ( key, value ) => ( { type: 'SET', key, value } );
50 50 const setBy = ( key, arg, value ) => ( { type: 'SET_BY', key, arg, value } );
51 51
52 +// The REST proxies pass API error bodies through as objects; UI code `.map()`s lists.
53 +const toList = ( value ) => ( Array.isArray( value ) ? value : [] );
54 +
52 55 const resolvers = {
53 56 async getSettings() {
54 57 const value = await apiFetch( { path: '/beyondwords/v1/settings' } );
55 58 return set( 'settings', value );
@@ -55,27 +58,27 @@
55 58 return set( 'settings', value );
56 59 },
57 60 async getLanguages() {
58 61 const value = await apiFetch( { path: '/beyondwords/v1/languages' } );
59 - return set( 'languages', value );
62 + return set( 'languages', toList( value ) );
60 63 },
61 64 async getVoices( languageCode ) {
62 65 const value = await apiFetch( {
63 66 path: `/beyondwords/v1/languages/${ languageCode }/voices`,
64 67 } );
65 - return setBy( 'voices', languageCode, value || [] );
68 + return setBy( 'voices', languageCode, toList( value ) );
66 69 },
67 70 async getScriptTemplates() {
68 71 const value = await apiFetch( {
69 72 path: '/beyondwords/v1/summarization-settings-templates',
70 73 } );
71 - return set( 'scriptTemplates', value );
74 + return set( 'scriptTemplates', toList( value ) );
72 75 },
73 76 async getVideoTemplates() {
74 77 const value = await apiFetch( {
75 78 path: '/beyondwords/v1/video-settings-templates',
76 79 } );
77 - return set( 'videoTemplates', value );
80 + return set( 'videoTemplates', toList( value ) );
78 81 },
79 82 async getVideoSizes( projectId ) {
80 83 if ( ! projectId ) {
81 84 return setBy( 'videoSizes', projectId, [] );
@@ -82,9 +85,9 @@
82 85 }
83 86 const r = await apiFetch( {
84 87 path: `/beyondwords/v1/projects/${ projectId }/video-settings`,
85 88 } );
86 - return setBy( 'videoSizes', projectId, r?.sizes ?? [] );
89 + return setBy( 'videoSizes', projectId, toList( r?.sizes ) );
87 90 },
88 91 // The project's default `language` pre-selects the Language dropdown.
89 92 async getProject( projectId ) {
90 93 if ( ! projectId ) {